【花书阅读笔记】第七章正则化 第二部分

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

提前终止

在训练过程中训练集误差逐渐降低,但是测试集误差逐渐升高

我们只要返回验证集误差最低的参数设置,可以获得验证集误差更低的模型。

提前终止(early stopping):当算法停止时,我们返回的这些参数不是最新的参数。当验证集上的误差在指定的循环次数内没有进一步改善时, 算法就会终止。


令 n 为评估间隔的步数。 令 p 为“耐心 (patience)",即观察到较坏的验证集表现 pp 次后终止。 令 θo\theta_{o} 为初始参数。
θθo\boldsymbol{\theta} \leftarrow \boldsymbol{\theta}_{o}
i0i \leftarrow 0
j0j \leftarrow 0
vv \leftarrow \infty
θθ\theta^{*} \leftarrow \theta
iii^{*} \leftarrow i
while j<pj<p do 运行训余算法 nn 步,更新 θ\theta
ii+ni \leftarrow i+n
vv^{\prime} \leftarrow ValidationSetError (θ)(\boldsymbol{\theta})
if v<vv^{\prime}<v then
j0j \leftarrow 0
$\boldsymbol{\theta}^{} \leftarrow \boldsymbol{\theta} $
$i^{
} \leftarrow i $
vvv \leftarrow v^{\prime}
else
jj+1j \leftarrow j+1
end if
end while
最佳参数为 θ,\theta^{*}, 最佳训练步数为 ii^{*}


提前终止是一种非常不显眼的正则化形式,它几乎不需要改变基本训练过程、目标函数或一组允许的参数值。权重衰减很容易地使网络陷入局部极小值。

考虑二次近似函数JJ:
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)
梯度为
wJ^(w)=H(ww) \nabla_{w} \hat{J}(\boldsymbol{w})=\boldsymbol{H}\left(\boldsymbol{w}-\boldsymbol{w}^{*}\right)
下降的效果是:
w(τ)=w(τ1)ϵwJ^(w(τ1))=w(τ1)ϵH(w(τ1)w)w(τ)w=(IϵH)(w(τ1)w) \begin{aligned} \boldsymbol{w}^{(\tau)} &=\boldsymbol{w}^{(\tau-1)}-\epsilon \nabla_{\boldsymbol{w}} \hat{J}\left(\boldsymbol{w}^{(\tau-1)}\right) \\ &=\boldsymbol{w}^{(\tau-1)}-\epsilon \boldsymbol{H}\left(\boldsymbol{w}^{(\tau-1)}-\boldsymbol{w}^{*}\right) \\ \boldsymbol{w}^{(\tau)}-\boldsymbol{w}^{*} &=(\boldsymbol{I}-\epsilon \boldsymbol{H})\left(\boldsymbol{w}^{(\tau-1)}-\boldsymbol{w}^{*}\right) \end{aligned}
现在利用HH的特征分解H=QΛQ\boldsymbol{H}=\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top}得到:
$$

w{(\tau)}-w{} =\left(I-\epsilon Q \Lambda Q{\top}\right)\left(w{(\tau-1)}-w^{}\right) \

Q{\top}\left(w{(\tau)}-w^{}\right) =(I-\epsilon \Lambda) Q{\top}\left(w{(\tau-1)}-w^{}\right)

$$
假定 w(0)=0w^{(0)}=0 并且 ϵ\epsilon 选择得足够小以保证 1ϵλi<1,\left|1-\epsilon \lambda_{i}\right|<1, 经过 τ\tau 次参数更新后轨迹如下:

Qw(τ)=[I(IϵΛ)τ]Qw \boldsymbol{Q}^{\top} \boldsymbol{w}^{(\tau)}=\left[\boldsymbol{I}-(\boldsymbol{I}-\epsilon \boldsymbol{\Lambda})^{\tau}\right] \boldsymbol{Q}^{\top} \boldsymbol{w}^{*}
在$ L^2$正则化的时候,我们可以得到
Qw~=(Λ+αI)1ΛQwQw~=[I(Λ+αI)1α]Qw \begin{array}{l} \boldsymbol{Q}^{\top} \tilde{\boldsymbol{w}}=(\boldsymbol{\Lambda}+\alpha \boldsymbol{I})^{-1} \boldsymbol{\Lambda} \boldsymbol{Q}^{\top} \boldsymbol{w}^{*} \\ \boldsymbol{Q}^{\top} \tilde{\boldsymbol{w}}=\left[\boldsymbol{I}-(\boldsymbol{\Lambda}+\alpha \boldsymbol{I})^{-1} \alpha\right] \boldsymbol{Q}^{\top} \boldsymbol{w}^{*} \end{array}
我们发现只需要满足:
(IϵΛ)τ=(Λ+αI)1α (\boldsymbol{I}-\epsilon \boldsymbol{\Lambda})^{\tau}=(\boldsymbol{\Lambda}+\alpha \boldsymbol{I})^{-1} \alpha
那么L2L^2正则与提前终止的结果等价

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9KIiQSY-1596801134927)(image-20200807173548463.png)]

Bagging

Bagging (bootstrap aggregating)通过结合几个模型降低泛化误差。

主要的想法是通过训练几个不同的模型,然后让所有模型一起决策样例输出。这种技术成为集成方法。

假设我们有kk个模型, 在每个模型上的误差是ϵi\epsilon_i, 这个误差的的零均值方差是E[ϵi2]=v\mathbb{E}\left[\epsilon_{i}^{2}\right]=v, 且不同的误差之间的协方差是E[ϵiϵj]=c\mathbb{E}\left[\epsilon_{i} \epsilon_{j}\right]=c。 集成模型后的平均误差变为了1kiϵi\frac{1}{k} \sum_{i} \epsilon_{i}。而此时的零均方误差期望是:
E[(1kiϵi)2]=1k2E[i(ϵi2+jiϵiϵj)]=1kv+k1kc \begin{aligned} \mathbb{E}\left[\left(\frac{1}{k} \sum_{i} \epsilon_{i}\right)^{2}\right] &=\frac{1}{k^{2}} \mathbb{E}\left[\sum_{i}\left(\epsilon_{i}^{2}+\sum_{j \neq i} \epsilon_{i} \epsilon_{j}\right)\right] \\ &=\frac{1}{k} v+\frac{k-1}{k} c \end{aligned}
此时我们发现如果模型相关性越小,降低的均方误差越小。也就是说如果不同模型全部相同,那么均方误差将没有下降。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7BFQA50E-1596801134940)(image-20200807175925062.png)]

图为不同模型对数据集检测的差别,如果综合不同模型将会增大模型鲁棒性。

Dropout

dropout 可以被认为是集成大量深层神经网络的Bagging方法。dropout表示从基础网络中除去非输出单元后的子网络。

【花书阅读笔记】第七章正则化 第二部分

图中演示的是一个小的网络dropout的过程,其中有很多没有构成连接的网络。但通常在较大网络中,这种情况不怎么会出现。