Abstract
本文为了提高深度神经网络的训练效率,提出了逐层权重衰减(layer-wise weight decay)。
本文方法通过逐层设置权重衰减稀疏的不同值,使反向传播梯度的尺度与权重衰减的尺度之比在整个网络中保持恒定。这种设置可以避免过拟合或欠拟合,适当地训练所有层,无需逐层调整系数。
该方法可在不改变网络模型的情况下提升现有DNN的性能。
1 Introduction
很多机器学习研究中,主要通过正则化避免过拟合。在深度学习中,通常使用三种正则化:dropout、数据增强、权重衰减。
本文提出的方法中,不需要任何试错过程就可以设置权重衰减系数,将其公式化,使其在训练时以相同的速率对网络的所有层进行正则化。
权重衰减正则化通过将其加入目标函数来降低网络中连接权重的
L
2
L_2
L2范数。加之前将范数乘以一个事先设定的系数。在正确训练网络时,调整这个系数是很重要的,因为一个很小的系数会导致过拟合,而一个很大的系数会导致欠拟合。 直觉上对所有曾进行同等对待是合理的,同时避免了手动调整每个系数所需的巨大计算成本。但这忽略了反向传播梯度和权重衰减之间的关系。
典型训练方法中,网络通过梯度和权重衰减两个方面进行更新,如图1所示。
图1:采用常数权重衰减系数的问题。反向传播梯度的尺度取决于上层权重的尺度,而权重衰减的尺度只取决于自身权重的尺度。因此,对于每一层,两者的比例是不同的,这导致了过拟合或欠拟合取决于层。
重点关注蓝色折线表示的第一个可训练层的更新,正如红色折线所示,由于反向传播,梯度的尺度取决于上层权重的尺度。相反,权重衰减的尺度仅取决于自身权重的尺度,如图中的蓝色折线所示。这两者之间的比例对于每一层来说都是不同的,这就导致了在某些层上的过拟合或者在另一些层上的欠拟合。因此,需要平衡梯度和权重衰减的尺度。
本文提出了逐层的权重衰减来有效地训练深度神经网络。该方法通过逐层设置不同的权重衰减系数的值,使得反向传播梯度的尺度和权重衰减的尺度在网络中的比例是恒定的。通过这种设置,可以对所有层进行适当的训练,而不必逐层调整系数。
2 Proposed Method
2.1 Overview
SGD梯度更新方法中,网络中的连接权重通过下式更新:
W
l
t
+
1
=
W
l
t
−
η
(
∂
E
∂
W
l
∣
W
l
t
+
λ
W
l
t
)
(1)
W_l^{t+1}=W_l^t-\eta(\frac{\partial E}{\partial W_l}|_{W_l^t}+\lambda W_l^t)\tag{1}
Wlt+1=Wlt−η(∂Wl∂E∣Wlt+λWlt)(1)
其中
W
l
t
W_l^t
Wlt表示
t
t
t次更新后第
l
l
l层的连接权重,
η
\eta
η是学习率,
E
E
E是训练时用于最小化的目标函数,
λ
\lambda
λ时权重衰减系数(正则化强度)。
W
l
t
W_l^t
Wlt用于第
l
l
l层的前向传播和反向传播,如图2所示。
图2:第 l l l层的前向传播和反向传播
Eq.1中的更新包含一个梯度项
∂
E
∂
W
l
\frac{\partial E}{\partial W_l}
∂Wl∂E,一个正则化项
λ
W
l
t
\lambda W_l^t
λWlt。梯度通过反向传播计算,其规模取决于
W
k
t
(
k
>
l
)
W_k^t(k>l)
Wkt(k>l)的规模。相对地,权重衰减的规模只取决于
W
l
t
W_l^t
Wlt。因此,对于每一层,梯度的尺度和权重衰减的规模比例是不同的。如果对所有层都使用相同的
λ
\lambda
λ,对一些特定曾来说,衰减可能会过强或过弱,导致网络的过拟合或欠拟合。
为避免这个问题,利用逐层权重衰减,梯度的尺度和权重衰减的尺度之间的比值在整个网络中应当是恒定的:
W
l
t
+
1
=
W
l
t
−
η
(
∂
E
∂
W
l
∣
W
l
t
+
λ
l
W
l
t
)
(2)
W_l^{t+1}=W_l^t-\eta(\frac{\partial E}{\partial W_l}|_{W_l^t}+\lambda_lW_l^t)\tag{2}
Wlt+1=Wlt−η(∂Wl∂E∣Wlt+λlWlt)(2)
λ
l
=
scale
(
∂
E
∂
W
l
)
scale
(
W
l
)
λ
(3)
\lambda_l=\frac{\text{scale}(\frac{\partial E}{\partial W_l})}{\text{scale}(W_l)}\lambda\tag{3}
λl=scale(Wl)scale(∂Wl∂E)λ(3)
其中
λ
l
(
l
=
1
,
⋯
,
L
)
\lambda_l\ (l=1,\cdots,L)
λl (l=1,⋯,L)是逐层的权重衰减系数,
scale
(
∗
)
\text{scale}(*)
scale(∗)代表计算向量或矩阵的规模的函数。除了逐层设置权重衰减以外,本文方法和现有方法的训练网络方法相同。
2.2 Data-Dependent Layer-Wise Weight Decay
训练过程中,每次更新里,
λ
l
\lambda_l
λl通过Eq.3计算。定义
scale
(
W
)
=
ave
(
∣
W
∣
)
\text{scale}(W)=\text{ave}(|W|)
scale(W)=ave(∣W∣),其中
ave
(
∗
)
\text{ave}(*)
ave(∗)计算
∗
*
∗的平均值。系数过于可变会影响优化性能,因此为了缓解这个问题,将
λ
l
\lambda_l
λl的上下界设置为
λ
l
=
max
(
ρ
m
i
n
,
min
(
ρ
m
a
x
,
scale
(
∂
E
∂
W
l
)
scale
(
W
l
)
)
)
λ
(4)
\lambda_l=\max(\rho_{min},\min(\rho_{max},\frac{\text{scale}(\frac{\partial E}{\partial W_l})}{\text{scale}(W_l)}))\lambda\tag{4}
λl=max(ρmin,min(ρmax,scale(Wl)scale(∂Wl∂E)))λ(4)
其中
ρ
m
a
x
λ
\rho_{max}\lambda
ρmaxλ和
ρ
m
i
n
λ
\rho_{min}\lambda
ρminλ是
λ
l
\lambda_l
λl的上下界。实验中设置
ρ
m
a
x
=
1
,
ρ
m
i
n
=
1
0
−
4
\rho_{max}=1, \rho_{min}=10^{-4}
ρmax=1,ρmin=10−4,提升训练过程20%的计算开销。
2.3 Data-Independent Layer-Wise Weight Decay
初始化网络时,
W
W
W通常设置为零平均值随机数,因此可以自然地定义
scale
(
W
)
=
std
(
W
)
\text{scale}(W)=\text{std}(W)
scale(W)=std(W),其中
std
(
∗
)
\text{std}(*)
std(∗)表示元素的标准差。将其带入Eq.3,可以得到:
λ
l
=
std
(
∂
E
∂
W
l
)
std
(
W
l
)
λ
(5)
\lambda_l=\frac{\text{std}(\frac{\partial E}{\partial W_l})}{\text{std}(W_l)}\lambda\tag{5}
λl=std(Wl)std(∂Wl∂E)λ(5)
为了计算Eq.5中的
λ
l
\lambda_l
λl,需要估计原始网络中的
std
(
∂
E
∂
W
l
)
\text{std}(\frac{\partial E}{\partial W_l})
std(∂Wl∂E)和
std
(
W
l
)
\text{std}(W_l)
std(Wl)。
std
(
W
l
)
\text{std}(W_l)
std(Wl)可在模型参数初始化时决定,容易获得。为了简化描述,将
∂
E
∂
∗
\frac{\partial E}{\partial *}
∂∗∂E记作
Δ
∗
\Delta *
Δ∗。
如图2所示,令
x
l
x_l
xl和
y
l
y_l
yl表示第
l
l
l层的输入和输出,应有
x
l
+
1
=
y
l
x_{l+1}=y_l
xl+1=yl。
前向传播、反向传播可以写作:
y
l
=
W
l
x
l
(6)
y_l=W_lx_l\tag{6}
yl=Wlxl(6)
Δ
x
l
=
W
l
T
Δ
y
l
(7)
\Delta x_l=W_l^T\Delta y_l\tag{7}
Δxl=WlTΔyl(7)
Δ
W
l
=
x
l
T
Δ
y
l
(8)
\Delta W_l=x_l^T\Delta y_l\tag{8}
ΔWl=xlTΔyl(8)
根据反向传播可以得到:
var
(
Δ
W
l
)
=
var
(
x
l
T
Δ
y
l
)
=
var
(
x
l
)
var
(
Δ
y
l
)
(9)
\text{var}(\Delta W_l)=\text{var}(x_l^T\Delta y_l)=\text{var}(x_l)\text{var}(\Delta y_l)\tag{9}
var(ΔWl)=var(xlTΔyl)=var(xl)var(Δyl)(9)
其中
var
(
∗
)
\text{var}(*)
var(∗)是计算一个矩阵或向量的所有元素的方差的函数。这里假设
x
l
x_l
xl和
Δ
y
l
\Delta y_l
Δyl是相互独立的,且均值为0。
最近的初始化方法通过网络将
var
(
x
l
)
\text{var}(x_l)
var(xl)变为一个常数,因此这里将
var
(
x
l
)
\text{var}(x_l)
var(xl)视作一个常数值。相反,
var
(
Δ
y
l
)
\text{var}(\Delta y_l)
var(Δyl)可以计算为
var
(
Δ
y
l
)
=
var
(
Δ
x
l
+
1
)
=
M
l
+
1
var
(
W
l
+
1
)
var
(
Δ
y
l
+
1
)
=
β
l
+
1
var
(
Δ
y
l
+
1
)
,
where
β
k
=
m
k
var
(
W
k
)
\begin{align} \text{var}(\Delta y_l)=\text{var}(\Delta x_{l+1})&=M_{l+1}\text{var}(W_{l+1})\text{var}(\Delta y_{l+1}) \\ &=\beta_{l+1}\text{var}(\Delta y_{l+1}), \ \text{where}\ \beta_k=m_k\text{var}(W_k)\tag{10} \end{align}
var(Δyl)=var(Δxl+1)=Ml+1var(Wl+1)var(Δyl+1)=βl+1var(Δyl+1), where βk=mkvar(Wk)(10)
其中
M
k
M_k
Mk是第
k
k
k层的输入和所有输出的连接数,
β
k
\beta_k
βk表示连续连续两层的反向传播梯度的方差之间的比率。迭代地计算Eq.10,可以得到:
KaTeX parse error: Can't use function '$' in math mode at position 2: $̲\text{var}(\Del…
将Eq.11代入Eq.9,
var
(
Δ
W
l
)
\text{var}(\Delta W_l)
var(ΔWl)可以变为:
var
(
Δ
W
l
)
=
var
(
x
l
)
⋅
γ
l
var
(
Δ
y
L
)
=
C
⋅
γ
l
(13)
\text{var}(\Delta W_l)=\text{var}(x_l)\cdot \gamma_l\text{var}(\Delta y_L)=C\cdot\gamma_l\tag{13}
var(ΔWl)=var(xl)⋅γlvar(ΔyL)=C⋅γl(13)
其中
C
C
C等价于
var
(
x
l
)
var
(
Δ
y
L
)
\text{var}(x_l)\text{var}(\Delta y_L)
var(xl)var(ΔyL),可以被视为一个常量,因为本文认为
var
(
x
l
)
\text{var}(x_l)
var(xl)是个常量。将Eq.13代入Eq.5,可以获得:
λ
l
=
std
(
Δ
W
l
)
std
(
W
l
)
λ
=
var
(
Δ
W
l
)
var
(
W
l
)
λ
=
C
⋅
γ
l
var
(
W
l
)
λ
(14)
\lambda_l=\frac{\text{std}(\Delta W_l)}{\text{std}(W_l)}\lambda=\sqrt{\frac{\text{var}(\Delta W_l)}{\text{var}(W_l)}}\lambda=\sqrt{\frac{C\cdot\gamma_l}{\text{var}(W_l)}}\lambda\tag{14}
λl=std(Wl)std(ΔWl)λ=var(Wl)var(ΔWl)λ=var(Wl)C⋅γlλ(14)
由于上述方程含有两个常数值
C
C
C和
γ
l
\gamma_l
γl,利用
λ
L
\lambda_L
λL作为权重衰减的基系数对方程进行变形:
λ
l
=
λ
L
⋅
λ
l
λ
L
=
λ
L
⋅
C
⋅
γ
l
var
(
W
l
)
λ
C
⋅
γ
L
var
(
W
l
)
λ
=
λ
L
var
(
W
L
)
var
(
W
l
)
γ
l
(15)
\lambda_l=\lambda_L\cdot\frac{\lambda_l}{\lambda_L}=\lambda_L\cdot\frac{\sqrt{\frac{C\cdot\gamma_l}{\text{var}(W_l)}}\lambda}{\sqrt{\frac{C\cdot\gamma_L}{\text{var}(W_l)}}\lambda}=\lambda_L\sqrt{\frac{\text{var}(W_L)}{\text{var}(W_l)}\gamma_l}\tag{15}
λl=λL⋅λLλl=λL⋅var(Wl)C⋅γLλvar(Wl)C⋅γlλ=λLvar(Wl)var(WL)γl(15)
使用Eq.15,便可以在不训练数据时为网络的每一层计算
λ
l
\lambda_l
λl,因为我们认为
var
(
x
l
)
\text{var}(x_l)
var(xl)是,并通过估计
λ
l
\lambda_l
λl和
λ
L
\lambda_L
λL的比例来从Eq.14估计
λ
l
\lambda_l
λl。网络的正则化强度可以通过设置
λ
L
\lambda_L
λL来调节。
2.4 Effects of Drop-Out
本节展示drop-out并不会影响Eq.15的逐层权重衰减。由于显然drop-out显然不会影响逐层权重衰减,因此关注梯度的规模,即Eq.9中的
var
(
x
l
)
\text{var}(x_l)
var(xl)和
var
(
Δ
y
l
)
\text{var}(\Delta y_l)
var(Δyl)。假设第
l
l
l层的隐藏层结点被drop-out的概率是
p
p
p,
var
(
Δ
y
)
\text{var}(\Delta y)
var(Δy)可以改写为:
var
(
Δ
y
l
)
=
(
1
−
p
)
M
l
+
1
var
(
W
l
+
1
)
var
(
Δ
y
l
+
1
∗
)
(16)
\text{var}(\Delta y_l)=(1-p)M_{l+1}\text{var}(W_{l+1})\text{var}(\Delta y_{l+1}^*)\tag{16}
var(Δyl)=(1−p)Ml+1var(Wl+1)var(Δyl+1∗)(16)
其中,
y
l
∗
y_l^*
yl∗表示带有drop-out的第
l
l
l层输出结果。由于被drop-out的神经元会被视为0,且保留的隐藏层神经元会被
×
1
/
(
1
−
p
)
\times 1/(1-p)
×1/(1−p),因此可以将
var
(
Δ
y
l
+
1
∗
)
\text{var}(\Delta y_{l+1}^*)
var(Δyl+1∗)变形为:
var
(
Δ
y
l
+
1
∗
)
=
ave
(
(
Δ
y
l
+
1
∗
)
2
)
=
(
1
−
p
)
⋅
ave
(
(
1
1
−
p
Δ
y
l
+
1
)
2
)
+
p
⋅
ave
(
0
2
)
=
1
1
−
p
(
(
Δ
y
l
+
1
)
2
)
=
1
1
−
p
var
(
Δ
y
l
+
1
)
\begin{align} \text{var}(\Delta y_{l+1}^*)&=\text{ave}((\Delta y_{l+1}^*)^2)\\ &=(1-p)\cdot\text{ave}((\frac{1}{1-p}\Delta y_{l+1})^2)+p\cdot\text{ave}(0^2) \\ &=\frac{1}{1-p}((\Delta y_{l+1})^2)=\frac{1}{1-p}\text{var}(\Delta y_{l+1})\tag{17} \end{align}
var(Δyl+1∗)=ave((Δyl+1∗)2)=(1−p)⋅ave((1−p1Δyl+1)2)+p⋅ave(02)=1−p1((Δyl+1)2)=1−p1var(Δyl+1)(17)
将Eq.17代入Eq.16,可以得到和Eq.10相同的等式,意味着drop-out不会对
var
(
Δ
y
l
)
\text{var}(\Delta y_l)
var(Δyl)产生影响。
2.5 Effects of Pooling Layer
在2.3节只考虑了卷积层和全连接层中带有可训练的权重,但是池化层在很多情况下也被使用。即使池化层不会对 var ( x l ) \text{var}(x_l) var(xl)产生很大的影响,但其不会对 var ( Δ y l ) \text{var}(\Delta y_l) var(Δyl)有影响。因此,Eq.10中的 β l \beta_l βl在池化层也要被定义。本节定义 β l \beta_l βl在最大池化层和平均池化层中的数值。令 p p p和 s s s分别为池化大小和步长。
2.5.1 Max-pooling
最大池化层中,将局部区域内的最大输入值进行前向传播,并且在反向传播中只有对应的神经元接收到 Δ x l \Delta x_l Δxl,局部区域内的其他单元的 Δ x l \Delta x_l Δxl设置为0。如果假设 Δ x l \Delta x_l Δxl的平均值是0,那么 var ( Δ x l ) \text{var}(\Delta x_l) var(Δxl)会被缩放至 1 / s 2 1/s^2 1/s2的规模。随着 p p p大于 s s s,接收 Δ x l \Delta x_l Δxl的神经元占的比例变小,但是本文忽略了这种影响,为简单期间,使用了上述定义。
2.5.2 Average-pooling
与最大池化不同,平均池化中所有的神经元都接收 Δ x l \Delta x_l Δxl。然而,在反向传播中, Δ x l \Delta x_l Δxl被缩放为 M l / N l M_l/N_l Ml/Nl,因为 x l x_l xl中每个神经元以 1 / N l 1/N_l 1/Nl的权重连接到 y l y_l yl中的 M l M_l Ml个神经元中。因此,平均池化层的 β l \beta_l βl应被设为 ( M l / N l ) 2 (M_l/N_l)^2 (Ml/Nl)2。例如,当 p = s p=s p=s时, N l = p 2 N_l=p^2 Nl=p2, M l = 1 M_l=1 Ml=1,因此 β l \beta_l βl设置为 1 / p 4 1/p^4 1/p4。
2.6 Rescaling Invariance of Layer-Wise Weight Decay
从理论上验证本文的方法,将证明本文提出的逐层权重衰减对于网络的逐层重新重新标度(rescaling)是不变的。
网络的重新标度也被称为重参数化(reparameterization),是通过重新标度连接权重而不改变网络计算的函数的一种变换。
如果使用某种激活函数
f
f
f,如恒等函数或ReLU,满足对任意的正标量
α
\alpha
α,这种尺度变换都可以轻松得到。图3展示了分层重标度的一个例子,是最简单的重标度之一。
图3:网络的逐层重标度。
当我们将 W l − 1 W_{l-1} Wl−1重标度为 α W l − 1 \alpha W_{l-1} αWl−1,将 W l W_l Wl重标度为 1 α W l \frac{1}{\alpha}W_l α1Wl,那么 x l + 1 x_{l+1} xl+1的值就不会改变。缩放不影响网络的功能性,训练过程中也不应该影响网络的更新。如果重标度过程影响了更新,意味着网络如何更新权重依赖于每个权重的尺度,导致训练过程的不稳定性。本文将表明,如果使用常数权重衰减,正则化的强度将受到重标度的影响,而如果使用逐层权重衰减,正则化的强度时不变的。注意到本文关注的是梯度和权重衰减之间的平衡,这与现有工作只关注梯度的尺度不同。
假设网络如图3所示进行重标度。由于任何逐层重标度都可以用这种重标度的组合来表示,因此研究这种重标度足以在所提出的方法中显示重标度不变性。
令
x
l
′
x_l'
xl′和
W
l
′
W_l'
Wl′为第
l
l
l层重标度后的输入值和连接权重,由此得到
Δ
W
l
−
1
′
=
x
′
l
−
1
T
Δ
y
l
−
1
′
=
x
l
−
1
T
(
1
α
Δ
y
l
−
1
)
=
1
α
Δ
W
l
−
1
(18)
\Delta W_{l-1}'={x'}_{l-1}^T\Delta y_{l-1}'=x_{l-1}^T(\frac{1}{\alpha}\Delta y_{l-1})=\frac{1}{\alpha}\Delta W_{l-1}\tag{18}
ΔWl−1′=x′l−1TΔyl−1′=xl−1T(α1Δyl−1)=α1ΔWl−1(18)
Δ
W
l
′
=
x
′
l
T
Δ
y
l
′
=
α
x
l
T
Δ
y
l
=
α
Δ
W
l
(19)
\Delta W_l'={x'}_l^T\Delta y_l'=\alpha x_l^T\Delta y_l=\alpha\Delta W_l\tag{19}
ΔWl′=x′lTΔyl′=αxlTΔyl=αΔWl(19)
将上述两个等式代入Eq.1,在权重衰减不变的情况下得到重标网络的更新值:
Δ
W
l
−
1
′
+
λ
W
l
−
1
′
=
1
α
Δ
W
l
−
1
+
λ
α
W
l
−
1
(20)
\Delta W_{l-1}'+\lambda W_{l-1}'=\frac{1}{\alpha}\Delta W_{l-1}+\lambda\alpha W_{l-1}\tag{20}
ΔWl−1′+λWl−1′=α1ΔWl−1+λαWl−1(20)
Δ
W
l
′
+
λ
W
l
=
α
Δ
W
l
+
λ
α
W
l
(21)
\Delta W_l'+\lambda W_l=\alpha\Delta W_l+\frac{\lambda}{\alpha}W_l\tag{21}
ΔWl′+λWl=αΔWl+αλWl(21)
基于此,可以得到在逐层权重衰减下重新缩放后网络的更新值:
Δ
W
l
−
1
′
+
λ
l
−
1
′
W
l
−
1
′
=
1
α
Δ
W
l
−
1
+
λ
l
−
1
α
2
α
W
l
−
1
=
1
α
(
W
l
−
1
+
λ
l
−
1
W
l
−
1
)
∝
W
l
−
1
+
λ
l
−
1
W
l
−
1
\begin{align} \Delta W_{l-1}'+\lambda_{l-1}'W_{l-1}'&=\frac{1}{\alpha}\Delta W_{l-1}+\frac{\lambda_{l-1}}{\alpha^2}\alpha W_{l-1}\\ &=\frac{1}{\alpha}(W_{l-1}+\lambda_{l-1}W_{l-1})∝ W_{l-1}+\lambda_{l-1}W_{l-1}\tag{24} \end{align}
ΔWl−1′+λl−1′Wl−1′=α1ΔWl−1+α2λl−1αWl−1=α1(Wl−1+λl−1Wl−1)∝Wl−1+λl−1Wl−1(24)
Δ
W
l
′
+
λ
l
′
W
l
′
=
α
Δ
W
l
+
α
2
λ
l
α
W
l
=
α
(
Δ
W
l
+
λ
l
W
l
)
∝
Δ
W
l
+
λ
l
W
l
\begin{align} \Delta W_l'+\lambda_l'W_l'&=\alpha\Delta W_l+\frac{\alpha^2\lambda_l}{\alpha}W_l \\ &=\alpha(\Delta W_l+\lambda_l W_l)∝\Delta W_l+\lambda_lW_l\tag{25} \end{align}
ΔWl′+λl′Wl′=αΔWl+αα2λlWl=α(ΔWl+λlWl)∝ΔWl+λlWl(25)
这个等式表明权重衰减的强度不改变重标度。这种不变性源于对梯度尺度的充分考虑,而梯度尺度又受到上层权重尺度的影响。虽然更新的尺度需要通过自适应的学习率或其他一些复杂的优化来补偿,但结论是,逐层权重衰减不受网络尺度变化的影响。