权重衰减来解决过拟合问题

过拟合是因为模型过于复杂使得噪声都训练数据集中的噪声都拟合进去了,从而导致训练出来的模型泛化能力变差。(训练误差减小而泛化误差增大)

为了解决过拟合现象,使用权重衰减的方法,就是将原来的损失函数加上一个权重范数。

L( w,b)+\frac{\lambda }{2}\left \| w \right \|^{2}

思路:通过加上一个权重范数来降低模型的复杂程度,从而解决过拟合问题。

1.为什么加上权重范数就能降低模型的复杂程度,因为权重范数越小模型的复杂程度就越小。

2.为什么权重越小模型复杂度越小,可以通过激活函数sigmoid函数来理解。

权重衰减来解决过拟合问题_第1张图片

权重和偏置组成的函数(wx+b)作为激活函数的自变量,从图中可以看出激活函数的自变量在0附近时,越符合线性,越远离0时,越符合非线性,线性的复杂度是小于非线性的复杂度的。故权重的值会使模型复杂度减小。

3.为什么加入权重范数项就会使权重的值变小?观察下图

权重衰减来解决过拟合问题_第2张图片

 右上椭圆是没加权重范数的情况是L(w,b),左下的虚线同心圆是权重的2范数。为什么是圆,可以从权重的平方考虑,平方就是圆,很好理解。最终目的是损失函数加上权重范数的和最小,当图中w*大时,w*的范数也很大,很明显不符合要求。为了符合要求w*会被往原点拉,直到损失函数值与权重w范数的和最小时停止拉,就是w~那个点。可以明显看出w~是比w*小的,故加入权重范数项会使权重减小。

总结:加入权重范数→权重减小→模型复杂度降低→过拟合程度降低

你可能感兴趣的:(pytorch)