动手学深度学习 权重衰减 学习笔记
范数与权重衰减
引入概念:
-
范数: 0 范数:向量中非零元素的个数。 1 范数: 向量中各个元素绝对值之和。 2 范数: 向量中各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数。 p 范数:为 x 向量(或矩阵)各个元素绝对值 p 次方和的 1/p 次方。 公式 为 ∣ ∣ x ∣ ∣ p = ∑ i ∣ x i ∣ p p ||x||_p=sqrt[p]{sum_i|x_i|^p} ∣∣x∣∣p=pi∑∣xi∣p 正则化:在保留数据特征的前提下,对数据进行些许“惩罚”,减少过拟合现象出现的可能。
L 2 正则化 L_2正则化 L2正则化,也称作权重衰减,就是我们这章的主题。
权重衰减的基本思想
作为前提,我们针对线性模型认为其权重向量的大小反映模型的复杂度,因此我们希望权重向量更小,并将权重向量的 L 2 L_2 L2范数作为惩罚项加入到原有的损失函数中,将损失函数调整为预测损失与惩罚项之和。 我们的损失由下式给出:
L ( w , b ) = 1 n ∑ i = 1 n 1 2 ( w ⊤ x ( i ) + b − y ( i ) ) 2 . L(mathbf{w}, b) = frac{1}{n}sum_{i=1}^n frac{1}{2}left(mathbf{w}^ op mathbf{x}^{(i)} + b - y^{(i)} ight)^2. L(w,b)=n1i=1∑n21(w⊤x(i)+b−y(i))2.
回想一下, x ( i ) mathbf{x}^{(i)} x(i)是样本 i i i的特征, y ( i ) y^{(i)} y(i)是样本 i i i的标签, ( w , b ) (mathbf{w}, b) (w,b)是权重和偏置参数。为了惩罚权重向量的大小,我们必须以某种方式在损失函数中添加 ∥ w ∥ 2 | mathbf{w} |^2 ∥w∥2,但是模型应该如何平衡这个新的额外惩罚的损失?实际上,我们通过正则化常数 λ lambda λ来描述这种权衡,这是一个非负超参数,我们使用验证数据拟合:
L ( w , b ) + λ 2 ∥ w ∥ 2 , L(mathbf{w}, b) + frac{lambda}{2} |mathbf{w}|^2, L(w,b)+2λ∥w∥2,
对于 λ = 0 lambda = 0 λ=0,我们恢复了原来的损失函数。对于 λ > 0 lambda > 0 λ>0,我们限制 ∥ w ∥ | mathbf{w} | ∥w∥的大小。这里我们仍然除以 2 2 2:当我们取一个二次函数的导数时, 2 2 2和 1 / 2 1/2 1/2会抵消,以确保更新表达式看起来既漂亮又简单。你可能会想知道为什么我们使用平方范数而不是标准范数(即欧几里得距离)?我们这样做是为了便于计算。通过平方 L 2 L_2 L2范数,我们去掉平方根,留下权重向量每个分量的平方和。这使得惩罚的导数很容易计算:导数的和等于和的导数。
L 2 L_2 L2范数对过大的权重向量施加巨大惩罚,这就使得最终优化出来的权重分布会更加均匀。而在某些场景下,特征权重之间会有巨大差距,那时再使用 L 1 L_1 L1权重会是更好的选择,这种情况叫做“特征选择”。 由此,我们给出权重 w w w的更新公式 w ← ( 1 − η λ ) w − η ∣ B ∣ ∑ i ∈ B x ( i ) ( w ⊤ x ( i ) + b − y ( i ) ) . egin{aligned} mathbf{w} & leftarrow left(1- etalambda ight) mathbf{w} - frac{eta}{|mathcal{B}|} sum_{i in mathcal{B}} mathbf{x}^{(i)} left(mathbf{w}^ op mathbf{x}^{(i)} + b - y^{(i)} ight). end{aligned} w←(1−ηλ)w−∣B∣ηi∈B∑x(i)(w⊤x(i)+b−y(i)).