重新认识过拟合于解决方法
重新认识过拟合
过拟合的主要原因就是训练集样本太少或样本中存在噪声。如果是样本太少的原因,那直接增加训练样本就好了,但是训练样本不是你想加就能加的呀。所以我们能做的就是使用正则化技术来防止模型学到训练样本中的噪声,从而降低过拟合的可能性,增加模型的鲁棒性。
训练 样本中存在噪声
京东面试题
L2正则化
L2 规范化是一种最为常用的正则化手段 —— 有时候被称为权重衰减(weight decay)。L2 规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项。
\(C=C_{0}+\frac{\lambda}{2 n} \sum_{w} w^{2}\)
在训练神经网络时,我们知道我们的训练目的就是优化权重,而且是使用反向传播和梯度下降来优化的;那么加入正则化项之后权重是如何优化的呢?将上述加L2正则项的代价函数对参数w进行求导:
\(\frac{\partial C}{\partial w}=\frac{\partial C_{0}}{\partial w}+\frac{\lambda}{n} w\)
\(\begin{aligned} w & \rightarrow w-\eta \frac{\partial C_{0}}{\partial w}-\frac{\eta \lambda}{n} w \\ &=\left(1-\frac{\eta \lambda}{n}\right) w-\eta \frac{\partial C_{0}}{\partial w} \end{aligned}\)
这和正常的梯度下降学习规则相同,只是多了一个因子 [公式] 重新调整了权重w,这种调整称为权重衰减。 粗看,这样会导致权重会不断下降到 0。但是实际不是这样的,因为如果在原始代价函数中造成下降的话其他的项可能会让权重增加。
那么规范化因子 [公式] 如何设置呢?根据调节因子 [公式] ,我们知道,如果训练数据很多时,也就是n比较大,那么调节因子将接近1,从而使得权重衰减效果不明显,导致规范化效果降低。因此,我们可以针对大数据集将规范化参数设置大一点,对小数据集将规范化参数设置的小一些。【zhihu】
因此,我们可以看出,不管是L1还是L2正则,他们的基本思想就是希望通过限制权重的大小,使得模型不能拟合任意的噪声数据,从而达到防止过拟合的目的。 因为更小的权重意味着网络的行为不会因为我们随便改变了一个输入而改变太大。这会让规范化网络学习局部噪声的影响更加困难。将它看做是一种让单个的证据不会影响网络输出太多的方式。相对的,规范化网络学习去对整个训练集中经常出现的证据进行反应。对比看,大权重的网络可能会因为输入的微小改变而产生比较大的行为改变。所以一个无规范化的网络可以使用大的权重来学习包含训练数据中的噪声的大量信息的复杂模型。简言之,规范化网络受限于根据训练数据中常⻅的模式来构造相对简单的模型,而能够抵抗训练数据中的噪声的特性影响。我们的想法就是这可以让我们的网络对看到的现象进行真实的学习,并能够根据已经学到的知识更好地进行泛化。
L1和L2正则也有不同之处,L1正则会让参数变得更稀疏,而L2不会。所谓参数变得稀疏是指会有更多的参数变为0,这样可以达到类似特征选取的功能。而之所以L2不会让参数变得稀疏的原因是因为参数很小时,比如0.001,它的平方基本可以忽略,于是模型也就不会进一步的让其变得更小而调整为0。其次,L2正则项可导,L1正则项不可导,这样使得带L2正则项的损失函数更方便更容易优化,而带L1正则项的损失函数的优化就比较复杂。
另外,值得注意的是规范化中并没有对偏置项进行规范化,因为即使对偏置进行规范化操作也并不会对结果改变太多,所以,在某种程度上,对不对偏置进行规范化其实就是一种习惯了。然》而,需要注意的是,有一个大的偏置并不会像大的权重那样会让神经元对输入太过敏感。所以我们不需要对大的偏置所带来的学习训练数据的噪声太过担心。同时,允许大的偏置能够让网络更加灵活 —— 因为,大的偏置让神经元更加容易饱和,这有时候是我们所要达到的效果。所以,我们通常不会对偏置进行规范化。
dropout
BN
TODO