一、过拟合和欠拟合
正则化是防止过拟合的一种方法,因此要想知道正则化是怎样的那么必须先去认识什么是过拟合:
二、正则化方法
1、L1正则(Lasso)
正则化的实现方法其实就是在代价函数后面加上正则化项
对于lasso它的正则化系数为:
下文中Co代表代价函数:
先计算它的导数:
上式中sgn(w)表示w的符号,w更新方程:
比原始的更新规则多出了η * λ * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,相当于给w加上限制避免过拟合。
一般我们在使用L1正则化时会产生稀疏矩阵(大多数为0的矩阵),其原因如下:
首先我们的目的是求出代价函数的最小值,那么有由公式可以画出L1正则图像:
我们会发现其大多数交点都会在轴上,也就是w=0所以对于L1来说会产生稀疏矩阵。
2、L2正则(Ridge)
R(w) 为:
:
所以代价函数变为:
同理我们对他进行求导,得到w更新方程:
在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−ηλ/n ,因为η、λ、n都是正的,所以 1−ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。(梯度下降计算,其中η为学习率)
我们也可以得到L2的图:
可见交点一般不会出现在轴上,所以不会产生稀疏矩阵。
3、Elasitc Net算法(弹性网络算法)
同时使用L1和L2正则,0 <= λ <= 1。λ=0 对应 L2 惩罚,λ=1 对应 L1。