Deep learning: Dropout, DropConnect

from:https://www.jianshu.com/p/b349c4c82da3

Dropout

训练神经网络模型时,如果训练样本比较少,为了防止模型过拟合,可以使用Dropout来一定程度的减少过拟合。Dropout是Hinton 在2012年提出来的。

Dropout是指在模型训练时随机的让隐层节点的权重变成0,暂时认为这些节点不是网络结构的一部分,但是会把它们的权重保留下来(不更新)上图帮助理解。

我使用的是Matlab的Deeplearning 的工具包https://github.com/rasmusbergpalm/DeepLearnToolbox, 我只使用的是简单地单隐层的感知机,数据是MNIST手写数字识别,该数据一共有60000个训练样本和10000个测试样本。图片大小是28 * 28,网络结构的层数是[784 512 10],100次迭代,minibatch大小是100,我做了在没有dropout和有dropout的实验对比。dropout的值是0.5,即以0.5的概率随机参数隐层节点。
代码如下:

load mnist_uint8
train_x = double(train_x(1:60000,:)) / 255; train_y = double(train_y(1:60000,:)); test_x = double(test_x(1:10000,:)) / 255; test_y = double(test_y(1:10000,:)); [train_x ,mu, sigma] = zscore(train_x); test_x = normalize(test_x, mu,sigma); %% without dropout rand(0); nn = nnsetup([ 784 512 10]); opts.numepochs = 100; opts.batchsize = 100; [nn, L] = nntrain(nn, train_x, train_y, opts); [er, bad] = nntest(nn, test_x, test_y); str = sprintf('testing error rate is : %f', er); disp(str); %% with dropout rand(0); nn = nnsetup([784 512 10]); nn.dropoutFraction = 0.5; opts.batchsize = 100; opts.numepochs = 100; nn = nntrain(nn, train_x, train_y, opts); [er, bad] = nntest(nn, test_x, test_y); str = sprintf('test error rate is : %f', er); disp(str); 

实验结果是:
test error rate is : 0.035200
With dropout, test error rate is : 0.031400

参考资料:

  • 论文:《Improving neural networks by preventing co-adaptation of featuredetectors》
  • https://github.com/rasmusbergpalm/DeepLearnToolbox
  • Deep learning:四十一(Dropout简单理解)

DropConnect

神经网络一般在大规模标签数据分类表现的很好,但是一帮需要更多的层数和更多的神经元,单数如果没有规范化的话,数百万和数十亿的参数很可能导致模型的过拟合。
现有的Regularization方法:

  • $l_1$ 或者 $l_2$ 惩罚
  • 贝叶斯的方法
  • 早停
  • 以上提到的Dropout方法[Hinton et al.2012]

DropConnect与Dropout不同的地方是在训练神经网络模型过程中,它不是随机的将隐层节点的输出变成0,而是将节点中的每个与其相连的输入权值以1-p的概率变成0。(一个是输出一个是输入)

在MNITS数据集上的实验结果,分别是no-Drop,dropout和dropconnect的对比。

DropConnect的主页有源码可下载:DropConnect project page

参考资料

  • 《Regularization of Neural Networks using DropConnect》
  • Deep learning:四十六(DropConnect简单理解)
  • DropConnect slides
  • DropConnect project page

转载于:https://www.cnblogs.com/bonelee/p/10605024.html

Dropout, DropConnect ——一个对输出,一个对输入相关推荐

  1. ACMNO.21 C语言-逆序输出 输入10个数字,然后逆序输出。 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0

    题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 提示 数组?堆栈 ...

  2. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字

    题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二 ...

  3. 4、题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出。 * * 输入格式:测试输入包含若干测试用例,每个测试用例的格式为 第1行:N 第2行:N名学生的成绩,相邻两数字用一个

    题目: /* 4.题目要求:读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式:测试输入包含若干测试用例,每个测试用例的格式为   第1行:N   第2行:N名学生的成绩,相邻两数字用一 ...

  4. 1、存在如下数列1、1、2、4、7、13、24、44、81、149......现要求该数列第n项的值(n从O开始算)。 程序运行结果: 1/2 输入:4 输出:7 输入:9 输出:149

    ** 题目 ** /* 1.存在如下数列1.1.2.4.7.13.24.44.81.149-现要求该数列第n项的值(n从O开始算). 程序运行结果: 1/2 输入:4 输出:7 输入:9 输出:149 ...

  5. boost::math模块具有输出和输入方面以及字符串流的非有限示例

    boost::math模块具有输出和输入方面以及字符串流的非有限示例 实现功能 C++实现代码 实现功能 boost::math模块具有输出和输入方面以及字符串流的非有限示例 C++实现代码 #inc ...

  6. boost::math模块具有输出和输入方面的非有限环回的简要基本测试

    boost::math模块具有输出和输入方面的非有限环回的简要基本测试 实现功能 C++实现代码 实现功能 boost::math模块具有输出和输入方面的非有限环回的简要基本测试 C++实现代码 #i ...

  7. 给定一个不多于5位的正整数,判断它是几位数,并输出。 输入

    /给定一个不多于5位的正整数,判断它是几位数,并输出. 输入 一个不多于5位的正整数. 输出 输出正整数的位数,单独占一行. 样例输入 Copy 111 样例输出 Copy 3 来源/分类/ #inc ...

  8. C语言switch输入月份输出季节,输入年月,输出月份有几天(分别用了if——else和switch)...

    首先是switch做的 class Program { static void Main(string[] args) {/* 题目要求:请用户输入年份,输入月份,输出该月的天数. 思路:一年中月份的 ...

  9. c++之头文件基本输出,输入,名字空间,引用,内联函数,函数重载,缺省参数

    c++之头文件,基本输出,输入,名字空间,引用,内联函数,函数重载,缺省参数 文章目录 c++之头文件,基本输出,输入,名字空间,引用,内联函数,函数重载,缺省参数 前言 一.头文件,基本输出,输入 ...

最新文章

  1. UIView的几个枚举定义
  2. 开关机自动执行脚本方法[以及切换用户执行命令方法]
  3. Java基本流程控制语句
  4. 杀java_java怎么杀掉java进程
  5. js微信小程序页面左上角返回跳转指定页面
  6. 客服中心智能化技术和应用研究报告(2021年)
  7. 阿里云linux绑定域名
  8. ironpython停止更新_IronPython死而复生
  9. iptables -F 后断开连接
  10. 手机访问电脑虚拟服务器,User Agent Switcher插件使用教程【电脑模拟手机访问网站】...
  11. 编程实战(2)——Python解微分方程方法总结
  12. 字节跳动Java金三银四解析:阿里巴巴技术专家之作
  13. 年薪40万的腾讯实习生作息表流出,我才知道什么叫人间真实
  14. MAC地址漂移和应对(二)
  15. Minieye-M3 防撞预警产品硬件系统方案---基于AR0132RGB+MTK架构
  16. c语言 习题错题知识点(1) (关键字 合法数据类型 逗号运算符)
  17. 婴儿奶瓶温度计的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. [渝粤教育] 西南科技大学 经济型数控系统设计 在线考试复习资料
  19. openedge-hub模块启动源码浅析——百度BIE边缘侧openedge项目源码阅读(1)
  20. Go 文件操作(创建、打开、读、写)

热门文章

  1. mac环境下安装Gradle及配置
  2. Jmeter之Bean shell使用(一)
  3. 试玩UML(User Mode Linux)
  4. 五. H.264的码流封装格式
  5. ldd查看可执行程序的依赖库
  6. 2015内蒙古计算机考试成绩,2015年新疆公务员考试笔试成绩计算机加分说明
  7. php处理微信返回xml数据,php将微信返回的xml格式转换成数组
  8. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇
  9. itext转html为pdf 锚点,ITEXT输出pdf..docx
  10. python2中的unicode_在python2中的编码