Summarize Timeline Top Qs Fact Check
基本的な確率的勾配降下法に対して多くの改良が提案されている。特に、機械学習において、ステップサイズ(学習率)の調整は重要問題として認識されている。学習率を大きくしすぎると発散し、小さくしすぎると収束まで遅くなる。
1951年に Herbert Robbins と Sutton Monro が発表[ 8] 。学習率をイテレーション回数の逆数で減衰させる方法。Robbins-Monro法とも言われる。
η
t
=
η
0
t
{\displaystyle \eta _{t}={\frac {\eta _{0}}{t}}}
1983年に Yurii Nesterov が発表[ 9] 。
x
0
=
w
0
x
t
=
w
t
−
1
−
η
∇
Q
i
(
w
t
−
1
)
w
t
=
x
t
+
t
−
1
t
+
2
(
x
t
−
x
t
−
1
)
{\displaystyle {\begin{aligned}x_{0}&=w_{0}\\x_{t}&=w_{t-1}-\eta \nabla Q_{i}(w_{t-1})\\w_{t}&=x_{t}+{\frac {t-1}{t+2}}(x_{t}-x_{t-1})\end{aligned}}}
1986年にデビッド・ラメルハート らがバックプロパゲーション と共に提案した方法[ 10] 。
Δ
w
:=
η
∇
Q
i
(
w
)
+
α
Δ
w
w
:=
w
−
Δ
w
{\displaystyle {\begin{aligned}\Delta w&:=\eta \nabla Q_{i}(w)+\alpha \Delta w\\w&:=w-\Delta w\end{aligned}}}
1988年に David Ruppert が提案した方法[ 11] 。
w
¯
=
1
t
∑
i
=
1
t
w
i
{\displaystyle {\bar {w}}={\frac {1}{t}}\sum _{i=1}^{t}w_{i}}
を計算し、最終的にパラメータの平均値を学習結果とする。
2009年に John Langford らが発表した方法[ 12] 。L1 正則化 を含む場合、確率的勾配降下法だとパラメータが 0 になりにくいが、K 回毎にパラメータの大きさが θ 以下であれば、0にする方法。
2009年に Lin Xiao が発表した方法[ 13] [ 14] 。目的関数が下記のように汎化能力を高めるために L1 正則化 を含む場合、確率的勾配降下法だとパラメータが 0 になりにくく、そのための対策をした方法。以下、この手法では Q(w) には
λ
‖
w
‖
1
{\displaystyle \lambda \|w\|_{1}}
を含めずに、L1 正則化の効果を実現する。
Q
(
w
)
+
λ
‖
w
‖
1
{\displaystyle Q(w)+\lambda \|w\|_{1}}
まず、勾配の平均を計算する。
g
¯
t
=
1
t
∑
t
′
=
1
t
∇
Q
(
w
)
t
′
{\displaystyle {\overline {g}}_{t}={\frac {1}{t}}\sum _{t'=1}^{t}\nabla Q(w)_{t'}}
その上で、パラメータの更新は以下の通り。ここでパラメータの初期値は0としている。
w
i
:=
{
0
if
|
g
¯
t
,
i
|
≤
λ
,
−
t
γ
(
g
¯
t
,
i
−
λ
sgn
(
g
¯
t
,
i
)
)
otherwise.
{\displaystyle w_{i}:={\begin{cases}0&{\text{if }}|{\overline {g}}_{t,i}|\leq \lambda ,\\-{\dfrac {\sqrt {t}}{\gamma }}\left({\overline {g}}_{t,i}-\lambda \operatorname {sgn}({\overline {g}}_{t,i})\right)&{\text{otherwise.}}\end{cases}}}
L1 正則化と L2 正則化を
Q
(
w
)
+
λ
‖
w
‖
1
+
σ
2
‖
w
‖
2
2
{\displaystyle Q(w)+\lambda \|w\|_{1}+{\frac {\sigma }{2}}\|w\|_{2}^{2}}
の形で混ぜる場合は、このようになる。
w
i
:=
{
0
if
|
g
¯
t
,
i
|
≤
λ
,
−
1
σ
(
g
¯
t
,
i
−
λ
sgn
(
g
¯
t
,
i
)
)
otherwise.
{\displaystyle w_{i}:={\begin{cases}0&{\text{if }}|{\overline {g}}_{t,i}|\leq \lambda ,\\-{\dfrac {1}{\sigma }}\left({\overline {g}}_{t,i}-\lambda \operatorname {sgn}({\overline {g}}_{t,i})\right)&{\text{otherwise.}}\end{cases}}}
以下のように、
λ
{\displaystyle \lambda }
を少しずつ大きくしていくと、疎になる度合いを徐々に高めていける。
λ
=
λ
0
+
ρ
/
t
{\displaystyle \lambda =\lambda _{0}+\rho /{\sqrt {t}}}
2011年に John Duchi らが発表した方法[ 15] 。
∘
{\displaystyle \circ }
はアダマール積 (要素ごとの積)。下記計算、全てパラメータごと(要素ごと)に計算する。
ϵ
{\displaystyle \epsilon }
は無限大に発散させないための正の小さな定数。
r
0
=
ϵ
r
t
=
r
t
−
1
+
∇
Q
i
(
w
)
∘
∇
Q
i
(
w
)
η
t
=
η
0
r
t
w
t
+
1
=
w
t
−
η
t
∘
∇
Q
i
(
w
)
{\displaystyle {\begin{aligned}r_{0}&=\epsilon \\r_{t}&=r_{t-1}+\nabla Q_{i}(w)\circ \nabla Q_{i}(w)\\\eta _{t}&={\frac {\eta _{0}}{\sqrt {r_{t}}}}\\w_{t+1}&=w_{t}-\eta _{t}\circ \nabla Q_{i}(w)\end{aligned}}}
正則化双対平均化法と AdaGrad を組み合わせる方法が、AdaGrad の発表と共に2011年に出ている[ 14] 。
u
:=
u
+
∇
Q
(
w
)
r
:=
r
+
∇
Q
i
(
w
)
∘
∇
Q
i
(
w
)
w
i
:=
{
0
if
|
u
i
|
/
t
≤
λ
,
−
sgn
(
u
i
)
η
t
r
i
(
|
u
i
|
t
−
λ
)
otherwise.
{\displaystyle {\begin{aligned}u&:=u+\nabla Q(w)\\r&:=r+\nabla Q_{i}(w)\circ \nabla Q_{i}(w)\\w_{i}&:={\begin{cases}0&{\text{if }}|u_{i}|/t\leq \lambda ,\\-\operatorname {sgn}(u_{i}){\dfrac {\eta t}{\sqrt {r_{i}}}}\left({\dfrac {|u_{i}|}{t}}-\lambda \right)&{\text{otherwise.}}\end{cases}}\end{aligned}}}
2012年に Tijmen Tieleman らが発表した方法[ 16] 。AdaGrad の変形。勾配の2乗の指数移動平均 を取るように変更。
β
=
0.9
{\displaystyle \beta =0.9}
などを使用。
r
t
=
β
r
t
−
1
+
(
1
−
β
)
∇
Q
i
(
w
)
∘
∇
Q
i
(
w
)
η
t
=
η
0
r
t
+
ϵ
w
t
+
1
=
w
t
−
η
t
∘
∇
Q
i
(
w
)
{\displaystyle {\begin{aligned}r_{t}&=\beta r_{t-1}+(1-\beta )\nabla Q_{i}(w)\circ \nabla Q_{i}(w)\\\eta _{t}&={\frac {\eta _{0}}{\sqrt {r_{t}+\epsilon }}}\\w_{t+1}&=w_{t}-\eta _{t}\circ \nabla Q_{i}(w)\end{aligned}}}
2012年に Matthew D. Zeiler が発表した方法[ 17] 。AdaGrad や RMSProp の変形。初期学習率のハイパーパラメータがなくなっている。
r
t
=
β
r
t
−
1
+
(
1
−
β
)
∇
Q
i
(
w
)
∘
∇
Q
i
(
w
)
v
t
=
s
t
+
ϵ
r
t
+
ϵ
∘
∇
Q
i
(
w
)
s
t
+
1
=
β
s
t
+
(
1
−
β
)
v
t
∘
v
t
w
t
+
1
=
w
t
−
v
t
{\displaystyle {\begin{aligned}r_{t}&=\beta r_{t-1}+(1-\beta )\nabla Q_{i}(w)\circ \nabla Q_{i}(w)\\v_{t}&={\frac {{\sqrt {s_{t}}}+\epsilon }{{\sqrt {r_{t}}}+\epsilon }}\circ \nabla Q_{i}(w)\\s_{t+1}&=\beta s_{t}+(1-\beta )v_{t}\circ v_{t}\\w_{t+1}&=w_{t}-v_{t}\end{aligned}}}
2014年に Jascha Sohl-Dickstein らが発表した方法[ 18] 。確率的勾配降下法と記憶制限準ニュートン法 の L-BFGS を組み合わせた方法。二次収束するようになり、収束が AdaGrad などよりも速くなった。
2015年に Diederik P. Kingma らが発表した方法[ 19] 。AdaGrad, RMSProp, AdaDelta の変形。AdaGrad や Sum of Functions Optimizer よりも収束が速くなった。ハイパーパラメータは
α
=
0.001
,
β
1
=
0.9
,
β
2
=
0.999
,
ϵ
=
10
−
8
{\displaystyle \alpha =0.001,\beta _{1}=0.9,\beta _{2}=0.999,\epsilon =10^{-8}}
を推奨。イテレーション回数 t は 1 から始める。
m
0
=
v
0
=
0
m
t
=
β
1
m
t
−
1
+
(
1
−
β
1
)
∇
Q
i
(
w
)
v
t
=
β
2
v
t
−
1
+
(
1
−
β
2
)
∇
Q
i
(
w
)
∘
∇
Q
i
(
w
)
m
^
t
=
m
t
1
−
β
1
t
v
^
t
=
v
t
1
−
β
2
t
w
t
=
w
t
−
1
−
α
m
^
t
v
^
t
+
ϵ
{\displaystyle {\begin{aligned}m_{0}&=v_{0}=0\\m_{t}&=\beta _{1}m_{t-1}+(1-\beta _{1})\nabla Q_{i}(w)\\v_{t}&=\beta _{2}v_{t-1}+(1-\beta _{2})\nabla Q_{i}(w)\circ \nabla Q_{i}(w)\\{\hat {m}}_{t}&={\frac {m_{t}}{1-\beta _{1}^{t}}}\\{\hat {v}}_{t}&={\frac {v_{t}}{1-\beta _{2}^{t}}}\\w_{t}&=w_{t-1}-\alpha {\frac {{\hat {m}}_{t}}{{\sqrt {{\hat {v}}_{t}}}+\epsilon }}\end{aligned}}}
2019年のICLRでLiangchen Luoらが発表した方法[ 20] 。
Adamに学習率の制限(Bound)を加え、ステップごとにSGDへ連続的に変化させることによって、Adamの収束速度とSGDの汎化性能の両立を目指した。論文中でのハイパーパラメータと学習率の下限・上限は
α
=
0.001
,
β
1
=
0.9
,
β
2
=
0.999
,
η
l
(
t
)
=
0.1
−
0.1
(
1
−
β
2
)
t
+
1
,
η
u
(
t
)
=
0.1
+
0.1
(
1
−
β
2
)
t
{\displaystyle \alpha =0.001,\beta _{1}=0.9,\beta _{2}=0.999,\eta _{l}(t)=0.1-{\frac {0.1}{(1-\beta _{2})t+1}},\eta _{u}(t)=0.1+{\frac {0.1}{(1-\beta _{2})t}}}
であり、Adamと同様にt=1から始める。
m
0
=
v
0
=
0
g
t
=
∇
Q
i
(
w
)
m
t
=
β
1
m
t
−
1
+
(
1
−
β
1
)
g
t
v
t
=
β
2
v
t
−
1
+
(
1
−
β
2
)
g
t
2
,
and
V
t
=
diag
(
v
t
)
η
^
t
=
Clip
(
α
V
t
,
η
l
(
t
)
,
η
u
(
t
)
)
w
t
=
w
t
−
1
−
η
^
t
t
∘
m
t
{\displaystyle {\begin{aligned}m_{0}&=v_{0}=0\\g_{t}&=\nabla Q_{i}(w)\\m_{t}&=\beta _{1}m_{t-1}+(1-\beta _{1})g_{t}\\v_{t}&=\beta _{2}v_{t-1}+(1-\beta _{2})g_{t}^{2},{\text{and }}V_{t}={\text{diag}}(v_{t})\\{\hat {\eta }}_{t}&={\text{Clip}}({\frac {\alpha }{\sqrt {V_{t}}}},\eta _{l}(t),\eta _{u}(t))\\w_{t}&=w_{t-1}-{\frac {{\hat {\eta }}_{t}}{\sqrt {t}}}\circ m_{t}\end{aligned}}}