正则化的目的
减少泛化误差而不是训练误差,另外一种解释就是降低模型的复杂度。
常见的正则化的手段有:参数惩罚、dropout 、噪声注入、提前终止。
参数惩罚
L2正则
L2正则也被称为权重衰减,通过在目标函数添加L2范数平方项,使得权重更接近原点。
L2正则形式为:(这里不考虑偏执项)
与之对应的梯度为:
则权重更新就变成了
没有加入L2正则项的权重更新方式对比
从直观上比较发现,每次梯度更新前,权重都有一个收缩。
这种单步权重对于网络训练的影响可以参考下面的数学推导:
假设没有L2权重时的最小训练误差为w0,
利用泰勒级数展开就有:
H 为w=w0处计算的Hessian矩阵。在w0处由于是最优解梯度为0。J(w)的梯度为:
加入正则项的梯度为:
=0
求解得到
H 是实对称矩阵,可以分解成对角举证和标准正交基Q。根据上面的例子缩放因子可以定义为
从缩放因子考虑当这个时候的w会保持原来的大小。
当 对应的w分量几乎为0.
从这个点分析L2正则化会抑制不重要的特征使其趋向于0,而对于主要特征没有影响,这样就降低模型的复杂度。
L1正则
L1的形式为:
对应的梯度为:
则类似于L2正则化的泰勒级数展开
根据求解导数可以得到:
则可以根据wi分三种情况考虑:
wi>0:
wi = 0 则直接为0 不用讨论
wi < 0:
由于
则观察上面大于0和小于0可以发现wi的最优解都趋向于0。所以在L1正则上会产生更稀疏的解。
L1和L2的比较
- L1容易产生稀疏的解(观察下图在菱角处容易产生最优解为0。
- L2保证解接近0的维度比较多,降低模型的复杂性。
dropout
模型参数过多,但是训练样本太少的时候容易出现过拟合,同时参数过多训练耗时。
dropout作为训练的一个trick提供选择使用,在每次训练的时候通过忽略一部分的特征检测器(让一部分的隐藏层为0),可以明显减少过拟合的情况。
噪声注入
噪声注入目的就是增加网络的抗噪声性能,从而增加泛化性。噪声可以在网络的不同层加入。
其实数据增强就是一种输入层加入噪声的手段,通过随机旋转,翻转。色彩变化等。
由于标签也可能存在一定的错误,可以将标签进行平滑,也是一种强化泛化的手段。
提前终止
通过观察验证集上的评估指标,如果评估指标开始降低了就可以提前停止了,是炼丹中比较简单的手段。