AI数学基础18——常见的正则化方法
1,L2 regularization(权重衰减)L2正则化就是在代价函数后面再加上一个正则化项λ ,使得权重在更新的时候,乘以一个小于1的因子(1-a(λ/m)),这个可以防止W过大。正则化项里面有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。
过拟合的时候,拟合函数的系数往往非常大。过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大
L2 Regularization 防止了系数W过大,也就防止了拟合函数导数值过大,也就防止了函数导数值波动过大,也就解决了过拟合问题。
L2正则化是训练深度学习模型中最常用的一种解决过拟合问题的方法。
2,L1 regularization,L1正则化的正则项是所有权重w的绝对值的和,乘以λ/n(这里不像L2正则化项那样,需要再乘以1/2);消除过拟合的原因与L2类似。使用频率没有L2正则化高。
3,Dropout正则化
L1、L2正则化是通过修改代价函数来实现的,而Dropout则是通过修改神经网络本身来实现的。
Dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。
运用了dropout的训练过程,相当于训练了很多个只有半数隐层单元的神经网络(后面简称为“半数网络”),每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么少数的错误分类结果就不会对最终结果造成大的影响。
dropout率的选择:经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多
具体细节,推荐Alex和Hinton的论文《ImageNet Classification with Deep Convolutional Neural Networks》
4,数据集扩增(data augmentation)
在深度学习方法中,更多的训练数据,意味着可以用更深的网络,训练出更好的模型。
但是很多时候,收集更多的数据意味着需要耗费更多的人力物力,非常困难。
所以,可以在原始数据上做些改动,得到更多的数据,以图片数据集举例,可以做各种变换,如:
1,水平翻转或任意角度旋转;2,裁剪;3,添加噪声
更多数据意味着什么?
用50000个MNIST的样本训练SVM得出的accuracy94.48%,用5000个MNIST的样本训练NN得出accuracy为93.24%,所以更多的数据可以使算法表现得更好。在机器学习中,算法本身并不能决出胜负,不能武断地说这些算法谁优谁劣,因为数据对算法性能的影响很大。
5,提前停止训练神经网络(Early Stop)
在一个适中的迭代次数,W不是很大的时候,dev set error接近最小,train set error适中的时候,提前停止训练,如下图所示
参考文献:Andrew Ng《Prractical aspects of Deep learning》1.1~1.8