第七章 深度学习中的正则化
官网链接
2020-2-9 深度学习笔记7 - 深度学习中的正则化1(参数范数惩罚和范数惩罚约束)
2020-2-12 深度学习笔记7 - 深度学习中的正则化2(欠约束,数据集增强,噪声鲁棒性,输出目标注入噪声)
在半监督学习的框架下, P ( x ) P(x) P(x)产生的未标记样本和 P ( x , y ) P(x, y) P(x,y)中的标记样本都用于估计 P ( y ∣ x ) P(y \mid x) P(y∣x)或者根据 x x x预测 y y y。
在深度学习的背景下,半监督学习通常指的是学习一个表示 h = f ( x ) h = f(x) h=f(x)。 学习表示的目的是使相同类中的样本有类似的表示。
无监督学习可以为如何在表示空间聚集样本提供有用线索。 在输入空间紧密聚集的样本应该被映射到类似的表示。 在许多情况下,新空间上的线性分类器可以达到较好的泛化。 这种方法的一个经典变种是使用主成分分析作为分类前(在投影后的数据上分类)的预处理步骤。
我们可以构建这样一个模型,其中生成模型
P ( x ) P(x) P(x)或 P ( x , y ) P(x, y) P(x,y)与判别模型
P ( y ∣ x ) P(y \mid x) P(y∣x)共享参数,而不用分离无监督和监督部分。
多任务学习是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。当模型的一部分被多个额外的任务共享时,这部分将被约束为良好的值,通常会带来更好的泛化能力。
下图展示了多任务学习的一种普遍形式。不同的监督任务共享相同的输入 x x x和中间表示层 h ( share ) h^{(\text{share})} h(share),能学习共同的因素池。
该模型通常可以分为两类相关的参数:
(1)具体任务的参数(只能从各自任务的样本中实现良好的泛化),如图中的上层。
(2)所有任务共享的通用参数(从所有任务的汇集数据中获益),如图中的下层。
因为共享参数,其统计强度可大大提高(共享参数的样本数量相对于单任务模式增加的比例),并能改善泛化和泛化误差的范围。
从深度学习的观点看,底层的先验知识为:能解释数据变化的因素中,某些因素是跨多个任务共享的。
由于神经网络强大的表示能力,当训练次数过多时会经常遭遇过拟合,即训练误差会随时间推移减少,而验证集误差会再次上升。
上图学习曲线显示负对数似然损失如何随时间变化(表示为遍历数据集的训练迭代数,或轮数(epochs))。在这个例子中,我们在MNIST上训练了一个maxout网络。我们可以观察到训练目标随时间持续减小,但验证集上的平均损失最终会再次增加,形成不对称的U形曲线。
这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。这种策略被称为提前终止
(early stopping)。
这可能是深度学习中最常用的正则化形式。它的流行主要是因为有效性和简单性。
提前终止是一种非常不显眼的正则化形式,几乎不需要改变基本训练过程、目标函数。而使用权重衰减则必须小心不能使用太多的权重衰减,否则容易陷入局部极小点。
【提前终止算法】
输入:n为评估间隔步数,p为patience(即观察到次更差的验证集表现后终止), θ 0 \theta_0 θ0为初始参数
过程:
1: 初始化 θ ← θ 0 \theta \leftarrow \theta_0 θ←θ0, i ← 0 i \leftarrow 0 i←0, j ← 0 j \leftarrow 0 j←0, v ← ∞ v \leftarrow \infty v←∞, θ ∗ ← θ \theta^* \leftarrow \theta θ∗←θ , i ∗ ← i i^* \leftarrow i i∗←i
2: w h i l e ( j < p ) d o while (j < p) do while(j<p)do
3: 运行训练算法n步,更新 θ 0 \theta_0 θ0。
4: i ← i + n i \leftarrow i + n i←i+n , v ’ ← V a l i d a t i o n S e t E r r o r ( θ ) v’ \leftarrow ValidationSetError(\theta) v’←ValidationSetError(θ)
5: i f ( v ’ < v ) if {(v’ < v)} if(v’<v) t h e n then then
6: j ← 0 j \leftarrow 0 j←0 , θ ∗ ← θ \theta^* \leftarrow \theta θ∗←θ , i ∗ ← i i^* \leftarrow i i∗←i , v ← v ’ v \leftarrow v’ v←v’
7: e l s e else else
8: j ← j + 1 j \leftarrow j + 1 j←j+1
9: e n d i f endif endif
10: e n d w h i l e end while endwhile
输出:最佳参数 θ ∗ \theta^* θ∗,最佳训练步数 i ∗ i^* i∗
提前终止的优点
提前终止相当于L2正则化
事实上,在二次误差的简单线性模型和简单的梯度下降情况下,我们可以展示提前终止相当于L2正则化。
提前终止为何具有正则化效果?其真正机制可理解为将优化过程的参数空间限制在初始参数值的小邻域内。假如学习率为 ϵ \epsilon ϵ,进行 τ \tau τ次训练迭代,则 1 ϵ τ \frac 1{\epsilon \tau} ϵτ1等价于权重衰减系数 α \alpha α。我们下面进行证明。
我们考虑二次误差的简单线性模型,采用梯度下降法,参数 θ = w \theta = w θ=w,代价函数 J J J在最优值 w ∗ w^* w∗附近作泰勒级数二阶展开近似: J ^ ( θ ) = J ( w ∗ ) + 1 2 ( w − w ∗ ) T H ( w − w ∗ ) \hat J(\theta) = J(w^*) + \frac 12 (w- w^*)^T H (w - w^*) J^(θ)=J(w∗)+21(w−w∗)TH(w−w∗)
其中 H H H是 J J J关于 w w w在点 w ∗ w^* w∗的Hessian。由于 w ∗ w^* w∗是全局最小点, H H H是半正定对称矩阵,因此可以对角化,即存在正交矩阵 Q Q Q使得 H = Q Λ Q T H = Q \Lambda Q^T H=QΛQT。进一步, Q Q Q是特征向量的一组标准正交基, Λ \Lambda Λ是(对角元素是 H H H特征值的)对角矩阵。
在局部泰勒级数逼近下,梯度由下式给出: ∇ w J ^ ( w ) = H ( w − w ∗ ) ∇_w\hat J(w)=H(w−w^∗) ∇wJ^(w)=H(w−w∗)
将权重参数初始化为原点,即 w ( 0 ) = 0 w^{(0)} =0 w(0)=0,梯度下降法由下面公式给出:
w ( τ ) = w ( τ − 1 ) − ϵ ∇ w J ^ ( w ( τ − 1 ) ) = w ( τ − 1 ) − ϵ H ( w ( τ − 1 ) − w ∗ ) w^{(τ)}=w^{(τ−1)}−ϵ∇_w\hat J(w^{(τ−1)})=w^{(τ−1)}−ϵH(w^{(τ−1)}−w^∗) w(τ)=w(τ−1)−ϵ∇wJ^(w(τ−1))=w(τ−1)−ϵH(w(τ−1)−w∗) w ( τ ) − w ∗ = ( I − ϵ H ) ( w ( τ − 1 ) − w ∗ ) w^{(τ)}−w^∗=(I−ϵH)(w^{(τ−1)}−w^∗) w(τ)−w∗=(I−ϵH)(w(τ−1)−w∗)
利用 H H H的正交分解 H = Q Λ Q T H = Q \Lambda Q^T H=QΛQT,得到: w ( τ ) − w ∗ = ( I − ϵ Q Λ Q T ) ( w ( τ − 1 ) − w ∗ ) w^{(τ)}−w^∗=(I−ϵQ \Lambda Q^T)(w^{(τ−1)}−w^∗) w(τ)−w∗=(I−ϵQΛQT)(w(τ−1)−w∗) Q T ( w ( τ ) − w ∗ ) = ( I − ϵ Λ ) Q T ( w ( τ − 1 ) − w ∗ ) = . . . . . . = ( I − ϵ Λ ) τ Q T ( w 0 − w ∗ ) Q^T (w^{(\tau)} - w^*) = (I - \epsilon \Lambda)Q^T ( w^{(\tau-1)} - w^* )=......= (I - \epsilon \Lambda)^{\tau}Q^T ( w^0 - w^* ) QT(w(τ)−w∗)=(I−ϵΛ)QT(w(τ−1)−w∗)=......=(I−ϵΛ)τQT(w0−w∗)
假定 w ( 0 ) = 0 w^{(0)} = 0 w(0)=0并且 ϵ \epsilon ϵ选择得足够小以保证 ∣ 1 − ϵ λ i ∣ < 1 |1 - \epsilon \lambda_i |<1 ∣1−ϵλi∣<1,经过 τ \tau τ次参数迭代后轨迹如下: Q T w ( τ ) = [ I − ( I − ϵ Λ ) τ ] Q T w ∗ Q^T w^{(\tau)} = [I - (I - \epsilon \Lambda)^\tau] Q^T w^* QTw(τ)=[I−(I−ϵΛ)τ]QTw∗
我们回顾本章第1节中L2正则化的形式(书上公式7.13): Q T w ~ = ( Λ + α I ) − 1 Λ Q T w ∗ Q^T\tilde w= ( \Lambda+ \alpha I) ^{-1} \Lambda Q^T w^* QTw~=(Λ+αI)−1ΛQTw∗,注意到 ( Λ + α I ) − 1 ( Λ + α I ) = I ( \Lambda+ \alpha I) ^{-1}( \Lambda+ \alpha I)=I (Λ+αI)−1(Λ+αI)=I,即 ( Λ + α I ) − 1 Λ = I − ( Λ + α I ) − 1 α ( \Lambda+ \alpha I) ^{-1}\Lambda=I-( \Lambda+ \alpha I)^{-1}\alpha (Λ+αI)−1Λ=I−(Λ+αI)−1α,于是有: Q T w ~ = [ I − ( Λ + α I ) − 1 α ] Q T w ∗ Q^T \tilde w = [I - (\Lambda + \alpha I)^{-1} \alpha] Q^T w^* QTw~=[I−(Λ+αI)−1α]QTw∗
对比这两个式子右端,如果满足 ( I − ϵ Λ ) τ = ( Λ + α I ) − 1 α , (I−ϵΛ)^τ=(Λ+αI)^{−1}α, (I−ϵΛ)τ=(Λ+αI)−1α,
那么L2正则化和提前终止是等价的(在目标函数的二阶近似下)。
使用log(1+x)的级数展开 l o g ( 1 + x ) = x − x 2 2 + . . . . . . + ( − 1 ) n − 1 x n n . . . log(1+x)=x-\frac{{x}^2}2+......+\frac{(-1)^{n-1}x^n}n... log(1+x)=x−2x2+......+n(−1)n−1xn...该等式即 τ l o g ( I − ϵ Λ ) = − l o g ( I + 1 α Λ ) τlog(I−ϵΛ)=-log (I+\frac1αΛ) τlog(I−ϵΛ)=−log(I+α1Λ) τ ( − ϵ Λ − . . . ) = − ( 1 α Λ − . . . ) τ(−ϵΛ-...)=-(\frac1αΛ-...) τ(−ϵΛ−...)=−(α1Λ−...)
如果所有 λ i \lambda_i λi是小的(即 ϵ λ i ≪ 1 \epsilon \lambda_i \ll 1 ϵλi≪1且 λ i α ≪ 1 \frac{\lambda_i }{ \alpha }\ll 1 αλi≪1),那么 τ ≈ 1 ϵ α , α ≈ 1 τ ϵ τ≈\frac1{ϵα},α≈\frac1{τϵ} τ≈ϵα1,α≈τϵ1
小结——提前终止与正则化对比
参数范数惩罚或约束是相对于固定区域或点,例如L2正则化是对参数偏离固定值进行惩罚。但有时我们需要对模型参数之间的相关性进行惩罚,使模型参数尽量接近或者相等。