Chapter 7 notes

【花书阅读笔记】第七章:深度学习中的正则化 Part I

参数范数惩罚

许多正则方法是对目标函数JJ添加了一个惩罚范数Ω(θ)\Omega(\theta)
J~(θ;X,y)=J(θ;X,y)+αΩ(θ) \tilde{J}(\boldsymbol{\theta} ; \boldsymbol{X}, \boldsymbol{y})=J(\boldsymbol{\theta} ; \boldsymbol{X}, \boldsymbol{y})+\alpha \Omega(\boldsymbol{\theta})
其中 α[0,)\alpha \in[0, \infty) 是权衡范数惩罚项 Ω\Omega 和标准目标函数 J(X;θ)J(X ; \theta) 相对贡献的超参数。 将 \alpha 设为 0 表示没有正则化。 α\alpha 越大,对应正则化惩罚越大。

在探究不同范数的正则化表现之前,我们需要说明一下,在神经网络中,参数包括每一层仿射变换的权重和偏置,我们通常只对权重做惩罚而不对偏置做正则惩罚。

L2L^{2} 参数正则化

**权重衰减(weight decay)**的 L 2 参数范数惩罚:

通过向目标函数添加一个正则项Ω(θ)=12w22\Omega(\boldsymbol{\theta})=\frac{1}{2}\|\boldsymbol{w}\|_{2}^{2},使权重更加接近原点。

这样一个模型具有以下总的目标函数:
J~(w;X,y)=α2ww+J(w;X,y) \tilde{J}(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})=\frac{\alpha}{2} \boldsymbol{w}^{\top} \boldsymbol{w}+J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})
与之对应的梯度为
wJ~(w;X,y)=αw+wJ(w;X,y) \nabla_{w} \tilde{J}(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})=\alpha \boldsymbol{w}+\nabla_{w} J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})
使用单步梯度下降更新权重,即执行以下更新:
wwϵ(αw+wJ(w;X,y)) \boldsymbol{w} \leftarrow \boldsymbol{w}-\epsilon\left(\alpha \boldsymbol{w}+\nabla_{w} J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})\right)
每步执行通常的梯度更新之前先收缩权重向量(将权重向量乘以一个常数因子)

w=argminwJ(w)\boldsymbol{w}^{*}=\arg \min _{\boldsymbol{w}} J(\boldsymbol{w})

则假设目标函数是二次的,比如以均方误差作为拟合的线性回归情况,近似的 J^(θ)\hat{J}(\theta)
J^(θ)=J(w)+12(ww)H(ww) \hat{J}(\boldsymbol{\theta})=J\left(\boldsymbol{w}^{*}\right)+\frac{1}{2}\left(\boldsymbol{w}-\boldsymbol{w}^{*}\right)^{\top} \boldsymbol{H}\left(\boldsymbol{w}-\boldsymbol{w}^{*}\right)
其中 H 是 J 在 w 处计算的 Hessian 矩阵 (关于 w)\left.\boldsymbol{H} \text { 是 } J \text { 在 } \boldsymbol{w}^{*} \text { 处计算的 Hessian 矩阵 (关于 } \boldsymbol{w}\right)。 因为 ww^{*} 是 J 的一个最优点,我们可以得出 H 是半正定的结论。

J^\hat{J}在取最小值附近的梯度是
wJ^(w)=H(ww) \nabla_{w} \hat{J}(\boldsymbol{w})=\boldsymbol{H}\left(\boldsymbol{w}-\boldsymbol{w}^{*}\right)
为了研究惩罚项的影响, 我们在(6)中添加权重衰减的梯度,我们使用变量 ω~\tilde{\omega}表示此时的最优点:
αw~+H(w~w)=0(H+αI)w~=Hww~=(H+αI)1Hw \begin{array}{c} \alpha \tilde{\boldsymbol{w}}+\boldsymbol{H}\left(\tilde{\boldsymbol{w}}-\boldsymbol{w}^{*}\right)=0 \\ (\boldsymbol{H}+\alpha \boldsymbol{I}) \tilde{\boldsymbol{w}}=\boldsymbol{H} \boldsymbol{w}^{*} \\ \tilde{\boldsymbol{w}}=(\boldsymbol{H}+\alpha \boldsymbol{I})^{-1} \boldsymbol{H} \boldsymbol{w}^{*} \end{array}
当 \alpha 趋向于 0 时,正则化的解 w~\tilde{w} 会趋向 ww^{*}

因为HH对称,所以可以分解,于是有H=QΛQ\boldsymbol{H}=\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top},可得:
w~=(QΛQ+αI)1QΛQw=[Q(Λ+αI)Q]1QΛQw=Q(Λ+αI)1ΛQw \begin{aligned} \tilde{\boldsymbol{w}} &=\left(\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top}+\alpha \boldsymbol{I}\right)^{-1} \boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top} \boldsymbol{w}^{*} \\ &=\left[\boldsymbol{Q}(\boldsymbol{\Lambda}+\alpha \boldsymbol{I}) \boldsymbol{Q}^{\top}\right]^{-1} \boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top} \boldsymbol{w}^{*} \\ &=\boldsymbol{Q}(\boldsymbol{\Lambda}+\alpha \boldsymbol{I})^{-1} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top} \boldsymbol{w}^{*} \end{aligned}
由此我们可以看到,HH的特征值被缩放到原来的λiλi+α\frac{\lambda_{i}}{\lambda_{i}+\alpha}倍。

所以沿着 H 特征值较大的方向 (如 λiα)\left.\lambda_{i} \gg \alpha\right) 正则化的影响较小。而 λiα\lambda_{i} \ll \alpha 的分量将 会收缩到几乎为零。这种效应如图所示。

Chapter 7 notes

**只有在显著减小目标函数方向上的参数会保留得相对完好。**在无助于目标函数减小的方向(对应 Hessian 矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。

线性回归的例子

添加了L2L^2正则之后,线性回归的代价函数变为了
(Xwy)(Xwy)+12αww (\boldsymbol{X} \boldsymbol{w}-\boldsymbol{y})^{\top}(\boldsymbol{X} \boldsymbol{w}-\boldsymbol{y})+\frac{1}{2} \alpha \boldsymbol{w}^{\top} \boldsymbol{w}
于是方程的解变为:
w=(XX+αI)1Xy \boldsymbol{w}=\left(\boldsymbol{X}^{\top} \boldsymbol{X}+\alpha \boldsymbol{I}\right)^{-1} \boldsymbol{X}^{\top} \boldsymbol{y}
L 2 正则化能让学习算法 ‘‘感知’’ 到具有较高方差的输入 x,因与输出目标的协方差较小(相对增加方差)的特征的权重将会收缩。

L1 参数正则化

对模型参数 w 的 L 1 正则化被定义为:
Ω(θ)=w1=iwi \Omega(\boldsymbol{\theta})=\|\boldsymbol{w}\|_{1}=\sum_{i}\left|w_{i}\right|
于是我们得到的目标函数为:
J~(w;X,y)=αw1+J(w;X,y) \tilde{J}(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})=\alpha\|\boldsymbol{w}\|_{1}+J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})
对应梯度为:
wJ~(w;X,y)=αsign(w)+wJ(w;X,y) \nabla_{w} \tilde{J}(w ; \boldsymbol{X}, \boldsymbol{y})=\alpha \operatorname{sign}(\boldsymbol{w})+\nabla_{\boldsymbol{w}} J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})
其中sign(ω)\text{sign}(\omega)是取ω\omega各个元素正负号。

考虑简单的具有二次代价函数的线性模型,梯度为:
wJ^(w)=H(ww) \nabla_{w} \hat{J}(\boldsymbol{w})=\boldsymbol{H}\left(\boldsymbol{w}-\boldsymbol{w}^{*}\right)

我们可以将 L 1 正则化目标函数的二次近似分解成关于参数的求和:
J^(w;X,y)=J(w;X,y)+i[12Hi,i(wiwi)2+αwi] \hat{J}(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})=J\left(\boldsymbol{w}^{*} ; \boldsymbol{X}, \boldsymbol{y}\right)+\sum_{i}\left[\frac{1}{2} H_{i, i}\left(w_{i}-w_{i}^{*}\right)^{2}+\alpha\left|w_{i}\right|\right]
我们将进一步简化假设Hessian是对角的,即H=diag([H1,1,,Hn,n])\boldsymbol{H}=\operatorname{diag}\left(\left[H_{1,1}, \ldots, H_{n, n}\right]\right),其中每个Hi,i>0H_{i, i}>0.

如下列形式的解析解(对每一维 i)可以最小化这个近似代价函数:
wi=sign(wi)max{wiαHi,i,0} w_{i}=\operatorname{sign}\left(w_{i}^{*}\right) \max \left\{\left|w_{i}^{*}\right|-\frac{\alpha}{H_{i, i}}, 0\right\}
对每个 i,i, 考虑 wi>0w_{i}^{*}>0 的情形 , 会有两种可能结果 :

  1. wiαHi,iw_{i}^{*} \leq \frac{\alpha}{H_{i, i}} 的情况。正则化后目标中的 wiw_{i} 最优值是 wi=0w_{i}=0_{\circ} 这是因为在方向 iiJ(w;X,y)J(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y})J^(w;X,y)\hat{J}(\boldsymbol{w} ; \boldsymbol{X}, \boldsymbol{y}) 的贡献被抵消, L1L^{1} 正则化项将 wiw_{i} 推至 0

  2. wi>αHi,iw_{i}^{*}>\frac{\alpha}{H_{i, i}} 的情况。在这种情况下,正则化不会将 wiw_{i} 的最优值推至 0,0, 而仅仅 在那个方向上移动 αHi,i\frac{\alpha}{H_{i, i}} 的距顏。

wi<0w_{i}^{*}<0 的情况与之类似,但是 L1L^{1} 惩计项使 wiw_{i} 更接近 0( 增加 αHi,i)0\left(\text { 增加 } \frac{\alpha}{H_{i, i}}\right) 或者为 00_{\circ}

相比L2, L1 产生的正则化更为稀疏(sparse), 次数稀疏表示L1有更多参数为0.

数据集增强

让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练。当然,在实践中,我们拥有的数据量是很有限的。解决这个问题的一种方法是创建假数据并添加到训练集中。

对象识别

图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。即使模型已使用卷积和池化技术(第九章)对部分平移保持不变,沿训练图像每个方向平移几个像素的操作通常可以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。但必须小心的是如同6,9,对象的变化会导致类别变化。

多任务学习

多任务学习 (Caruana, 1993) 是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。

以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。但必须小心的是如同6,9,对象的变化会导致类别变化。

多任务学习

多任务学习 (Caruana, 1993) 是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。

Chapter 7 notes