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

来源:互联网 发布:淘宝曲度腰椎治疗仪 编辑:程序博客网 时间:2024/05/21 11:15

在进行训练深度网络时,如果数据量(训练样本)比较小,或者网络结构过于复杂,是很容易出现过拟合现象。先解释下什么是过拟合现象,一般数据集会分为训练集,验证集,和测试集,如果在训练集上的正确率和验证集上的差值较大(即方差过大),就可以认定训练过程出现了过拟合现象。关于过拟合现象的解决,网络上和书籍中都有不少介绍,在这里本人是学习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                  

原创粉丝点击