正则化和dropout
转自:http://blog.csdn.net/u010194274/article/details/62898332
1. 过拟合
先来说说什么是过拟合,在Andrew Ng的ML课程中有这么一段描述。
使用一次曲线拟合房价,发现效果并不好,出现欠拟合,是high bias,训练数据不够充分。使用二次曲线拟合房价,刚好合适。使用高阶曲线拟合,每个点都很完美,这时过拟合出现了,产生了high variance,过度训练数据,使得泛化性能很差。用Bengio在Deep Learning中的这个图来阐述什么是过拟合。
明显地,随着模型的优化,training error(训练误差)和generalization error(泛化误差)都下降,但到了一定程度之后,training error还在下降,而generalization error却上升了。
那么有哪些方法来防止过拟合呢,机器学习中最常见的是正则化,另外神经网络中使用drop out,同时early stopping也有使用。
2. Regularization
正则化的本质是约束要优化的参数。一般形式如下,
其中,后面这项为惩罚项,根据惩罚项的不同形式,又分为L0,L1,L2范数。
正则化其实是对解空间的一个限制,用下面的两个图来说明。
蓝色的区域是解空间,而红色的区域是正则化。蓝色的曲线的每个环上的点对应的损失函数都相等,通过正则化使得解空间被限制在红色区域。左图的是L2范数,所以正则域是圆。右图是L1范数,正则域是正方形。
1. L0范数
L0范数是指参数矩阵W中含有零元素的个数,L0范数限制了参数的个数不会过多,这也就简化了模型,当然也就能防止过拟合。
2. L1范数
L1范数是参数矩阵W中元素的绝对值之和,L1范数相对于L0范数不同点在于,L0范数求解是NP问题,而L1范数是L0范数的最优凸近似,求解较为容易。L1常被称为LASSO.
3. L2范数
L2范数是参数矩阵W中元素的平方之和,这使得参数矩阵中的元素更稀疏,与前两个范数不同的是,它不会让参数变为0,而是使得参数大部分都接近于0。L1追求稀疏化,从而丢弃了一部分特征(参数为0),而L2范数只是使参数尽可能为0,保留了特征。L2被称为Rigde.
3. dropout
dropout是在神经网络里面使用的方法,以此来防止过拟合。通过在反向传播误差更新权值时候随机选择一部分权值不更新,相当于随机删除一部分hidden units(不是真实删除了,只是暂时不使用这部分units),通过这样的方法就能防止过拟合。
从概念上去理解dropout防止过拟合的原因,可以把units的个数看成是模型的复杂度,units个数越多,那么模型越复杂,过于复杂的模型会带来过拟合,这是我们之前从房价预测上得出的结果。那么相反地,units的个数被我们减少了,那么就能防止过度训练。从另一个角度上说,每次随机的“删除”一些units,相当于得到了不同的网络结构,不同的units进行合作得到训练参数,这有点类似于bagging的过程。然而最后用作预测的时候,又会使用全部的units,相当于组合了所有的模型,因此dropout过程防止了训练中出现的参数拟合过度问题,同时还能组合训练得到的模型,从而获得一个更好的组合模型。
4. early stopping
对这两种方法比较容易理解,过拟合不就是训练过度呗,那我训练次数少一点,在overfitting之前停止训练就行了,这就是early stopping吧。

浙公网安备 33010602011771号