1. 容量、过拟合、欠拟合(为什么需要正则化?)
机器学习两个重要过程分别是训练和预测,在训练过程中,学习的目标是降低训练误差,然而,降低训练误差只是为了达到目标采取的手段,真正的目标是预测,是预测误差,也称泛化误差很小。泛化的含义是在先前未观测到的输入上表现良好的能力。
训练后可能达到的效果有三种:
A. 训练误差大,泛化误差也大
B. 训练误差小,泛化误差大
C. 训练误差小,泛化误差也小
第一种是欠拟合、第二种是过拟合,第三种才是我们希望的状态。
模型的容量是指模型拟合各种函数的能力。训练得到的模型容量是表示容量,而预测表征的容量才是有效容量。两个容量都偏小是欠拟合状态,算法迭代不够,学习不到位;训练误差小,而泛化误差大是过拟合状态,迭代过头了,或者数据集太小,参数拟合太细节化了。
解决欠拟合需要增加参数或者增加迭代次数;解决过拟合需要弱化一些次要参数或者丰富训练数据集。
个人总结了解决过拟合的方法有:增加数据集数量、对训练数据做数据增强、参数惩罚、dropout,这一系列方法都能降低泛化误差。修改学习算法,降低泛化误差而非训练误差的过程称为正则化。
2. L2参数正则化
参数范数惩罚是在目标函数上添加一个惩罚项,组成新的目标函数进行优化。为什么这样做能起到正则化的作用呢?推导如下:
L2参数正则化添加的惩罚项 是w的二阶范数平方乘惩罚系数
未加惩罚项前的目标函数 ,假设 为最优目标函数,此时,在 处针对w做 的二阶泰勒展示,可得:
梯度为
这里需要注意的是, 表示所有的参数,包括权重w和偏执b,但是只对权重做正则化,因为每一个偏执是单一变量,不对其做正则化也不会导致太大方差,做了反而可能出现欠拟合。
加入新的目标函数为
梯度为
假设 为最优参数,在最优参数位置梯度为0,因此
转换后
H是目标函数在 处的Hessian矩阵,H为实对称矩阵,因此,H可以分解成 ,且Q为标准正交基,因此,且,
根据特征分解的性质, 是特征值组成的对角矩阵(diag(λ1,λ2,…)),而I是单位矩阵,因此:
对于特征值以及其对应的特征向量,该维权重
因此,权重衰减是按照H的特征向量方向,按照的比例缩放。特征分解中已经提到特征值越大,说明该维特征对模型的影响越明显,越主要,而越大,越接近于1,该维权重保存越完整,越小,该维特征越次要,越接近于0,权重衰减越厉害。
因此,L2的目标是对能显著减小目标函数方向上的权重保留完整,在无助于目标减小的方向上权重衰减明显。
3. L1正则化
如上L2权重衰减的理论依据很充分,但是L2几乎保留了所有的参数,而L1正则化能让权重稀疏化。L1正则化是在目标函数上加w的L1范数组成新的目标函数。新的目标函数为
其中
对新的目标函数进行泰勒二次近似,可得
对 梯度为
在最小目标函数处
由于权重大于等于0,因此
当
当
也就是设定了一个界限,小于这个界限的权重全部衰减为0,大于这个界限的权重取高出界限的部分为新的权重。为Hessian矩阵的对i行i列,也就是目标函数对求二阶导。
权重矩阵的稀疏性由α控制,α越大,被衰减为0的权重越多,矩阵稀疏性越强,α越小,保留下来的权重越多。
无论是L2还是L1,其中的α都是模型的超参数,超参数是非训练得到的,因此,它可以自定义,也可以通过某种规则制定或调解,但调节过程在训练之外。