深度学习-权重衰减
权重衰减(weight decay)是应对过拟合方法的常用方法。
方法
权重衰减等价于$L_2$范数正则化(regularization)。正则化是通过模型损失函数添加惩罚项来使得训练后的模型参数值较小,是应对过拟合的常用方法。
$L_2$范数正则化在模型原来的损失函数基础上添加$L_2$范数称惩罚项。从而得到训练所需最小的函数。$L_2$范数惩罚项是模型权重参数每个元素的平方和与一个正的常数的乘积。以线性回归为例:
$$l(w_1,w_2,b) = \frac{1}{n}\sum_{i=1}^{n} \frac{1}{2}(x_1^{(i)}+x_2^{(i)}+b-y^{(i)})^2$$
其中$w_1,w_2$为权重参数,$b$是偏置参数,样本$i$的输入为$x^{(i)}, x^{(i)}$,标签为$y^{(i)}$,样本数为$n$。将权重参数用向量$w=[w_1,w_2]$表示,带$L_2$范数惩罚项的新函数为
$$l(w_1,w_2,b)+\frac{k}{2n}||w||^2$$
其中超参数$k>0$。当权重参数均为0时,惩罚项最小。当$k$较大时,惩罚项在损失函数中的比重较大,这通常会使学到的权重参数的元素接近于0。当$k$设为0时,惩罚项完全不起作用。上述式子中$L_2$范数平法$||w||^2$展开后得到$w_1^2+w_2^2$。有了$L_2$范数的惩罚项后,在小批量的随机梯度下降中,权重$w_1,w_2$的迭代方式改为:
$$w_1 \leftarrow (1-\frac{n\lambda}{|\beta|})w_1-\frac{\eta}{|\beta|}\sum_{i\in\beta}x_1^{(i)}(x_1^{(i)}w_1+x_2^{(i)}w_2+b-y^{(i)}$$
$$w_2 \leftarrow (1-\frac{n\lambda}{|\beta|})w_2-\frac{\eta}{|\beta|}\sum_{i\in\beta}x_2^{(i)}(x_1^{(i)}w_1+x_2^{(i)}w_2+b-y^{(i)}$$
$L_2$范数正则化让权重$w_1$和$w_2$先自乘小于1的数,再减去惩罚项中的梯度。因此,$L_2$范数正则化又称权重衰减。权重衰减通过惩罚绝对值较大的模型参数为需要学习的模型增加了限制,这可能对过拟合有效。在实际中,有事也在惩罚项中添加偏差元素的平方和。
高维线性回归
使用下列函数生成样本标签:
$$y = 0.05 + \sum_{i=1}^p 0.01x_i+\varepsilon$$
其中噪音项$\varepsilon$服从N(0,1),p为维度。
1 | import gluonbook as gb |
实现
1 | import gluonbook as gb |
当未使用权重衰减(lambd=0)时,训练集上的误差远小于测试集
L2 norm of w: 11.61194
使用权重衰减(lambd=3)时,训练误差虽然提高,但是测试集上的误差下降,过拟合得到一定程度上缓解,此时权重参数更接近0。
L2 norm of w: 0.046675965
权重衰减的Gluon实现
1 | import gluonbook as gb |






