防止训练深度网络中出现过拟合现象

在进行训练深度网络时,如果数据量(训练样本)比较小,或者网络结构过于复杂,是很容易出现过拟合现象。先解释下什么是过拟合现象,一般数据集会分为训练集,验证集,和测试集,如果在训练集上的正确率和验证集上的差值较大(即方差过大),就可以认定训练过程出现了过拟合现象。关于过拟合现象的解决,网络上和书籍中都有不少介绍,在这里本人是学习Andrew Ng的学习视频和台湾的Hung-yi Lee课件总结的。PS:这两人的资源网上很容易弄到,我就不放传送门了。

开始正题了,过拟合现象的防止,大体而言是有四种,分别是Early Stopping,Regularization,Dropout及Network Structure。

        Early Stopping:这种方法就是针对过拟合定义来提出的一种,过拟合现象是在训练集和验证集上的差值过大,如果能够让训练集和验证集在差值最小的点(迭代代数)停止训练,那不就能避免了过拟合了木?实际上这种方法理论可行,但是实际不好操作。因为(1)在训练过程中,不知道什么时候差值最小,就是很难找到最小点(2)如果提前停止训练,虽然是降低了方差(过拟合的数学描述),但是会使得训练集上的正确率还是很高,可能得不到预期要求。(不会插图,蛋痛的很)

Regularization:这种方法是当前应用非常多的方法,它分为L1,L2正则化。实际中操作就是在最后面的Lost Function后面再添加一项,添加的就是网络全部权重w的函数的一个均值,函数分为权重w的一范数和二范数两种,根据所选择的不同,分为L1,L2正则化。至于为什么通过添加一项,就可以防止过拟合现象,理论公式推导视频或者资料很多,我就简单说下个人的大致想法。由于Lost Function中有w,在进行网络的BP过程中,权重W会衰减的更快,无论是正还是负值,都会向0进行靠近。当一个网络中较多权重w比较靠近0时,那么网络中的大部分节点就处于抑制状态(相当于该节点可以删去),从而使网络的结构变得简单了,从而降低了网络的拟合能力,改善了过拟合现象。

Dropout:这种方法也是经常用的方法,也是个人比较喜欢的。它的基本思想就是在训练过程中,使节点已一定概率关闭(相当于删除)。由于在不同的节点进行关闭,就会形成不同的网络结构,从而增强了网络的结构多样性,改善过拟合现象。它的优点不仅仅会改善过拟合,而且会加速训练过程,因为使得训练过程的运算量减少了。顺便提下,在训练的过程中,是设置概率进行关闭,但是在进行前向预测的时候,设置的概率应该为1,即让所有的节点进行工作。

Network Structure:这种方法就是改变网络的结构,比如层次,每一层节点等来改善过拟合现象。一般出现过拟合现象,可以理解为数据相对于网络过少了,反过来就是网络相对于数据过于复杂了。那么可以通过减少网络的深度,减少节点数量等调整,进行改善。至于多少层,多少个节点,这个也没有统一定义,得根据你的数据量,分布等诸多因素进行的。

现在四种基本介绍了,也只是一个大体介绍,内部还有比较多的公式推导,得需要大家自己推推(网上很多的)。补充几点(1)前面说了,网络过拟合也是数据相对网络过少,如果能扩大数据集,那肯定是最好的,如果资源有限,那就找找数据集处理的方法,可以进行一定的改善。(2)Andrew的课程在网易云课堂上有,可以搜“深度学习工程师微专业”。(3)那个台湾大学(台湾交通大学??)的Hung-yi Lee课件,网上应该搜的到,如果没有请私信我,我可以发给你

附:如需转载,请注明出处             Dreamer  2017/9/25                  

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值