30分でわかる

Adam
echizen_tm
Apr.29, 2015

概要
—  Adam
— 
— 
— 
— 
— 

Adamとは(1p)
SGDの更新式(1p)
Adamのやりたいこと(2p)
期待値計算をどうするか?(3p)
Adamの更新式(1p)

—  まとめ

Adamとは
—  state of the artなオンライン学習器
—  AdaGrad+RMSPropのようなもの(らしい)
—  実装が簡単
—  性能が高い(経験的にはAdaGradよりよさそう)
—  論文に推奨パラメータが書いてある
—  正則化項は入っていない

SGDの更新式
gt = ∇θ ft (θ t−1 )

θ t = θ t−1 − α gt
θ
f ()
g
α

学習したいパラメータ
目的関数
勾配
学習率

Adamのやりたいこと
gt = ∇θ ft (θ t−1 )
2

θ t = θ t−1 − α E[g] / E[g ]
期待値

θ
f ()
g
α

学習したいパラメータ
目的関数
勾配
学習率

Adamのやりたいこと
2

θ t = θ t−1 − α E[g] / E[g ]
—  この更新式の特徴
—  abs(更新幅)が学習率α以下になる
—  更新幅が自動で調整される
(学習率を減衰させる必要がない)
—  勾配の向きがあまりかわらない
→          が1に近い値
E[g] / E[g 2 ]
—  勾配の向きがよくかわる
→          が小さくなる
E[g] / E[g 2 ]

期待値計算をどうするか?
—  普通に平均を取ると初期の値が良くない感じになる
—  たいていm=0とかではじめるので
データがずっと同じ値(例えば100)でも
m_1 = (0 + 100) / 2 = 50
m_2 = (0 + 100 + 100) / 3 = 66.6…
m_3 = (0 + 100 + 100 + 100) / 4 = 75

—  みたいな感じになってしまう

(最初の0がしばらく影響する)

期待値計算をどうするか?
—  指数移動平均(Exponential Moving Average)
—  初期のデータの重みが指数的に小さくなるタイプの
重み付き平均

mt = β mt−1 − (1− β )gt
t

mt = (1− β )∑ β gi
t−i

i=1

期待値計算をどうするか?
—  指数移動平均は本当の期待値とどのくらい違うの?
t
"
%
t−i
E $mt = (1− β )∑ β gi '
#
&
i=1
t

≅ E[gt ](1− β )∑ β

t−i

i=1
t

t−1

= E[gt ](∑ β t−i − ∑ β t−i )
i=1

i=0
t

= E[gt ](1− β )

これだけのバイアスが
かかっている

Adamの更新式
gt = ∇θ ft (θ t−1 )

勾配の計算

mt = β1mt−1 + (1− β1 )gt
2
t

vt = β2 vt−1 + (1− β2 )g
t
ˆ
mt = mt / (1− β1 )

vˆt = vt / (1− β2t )

θ t = θ t−1 − α mˆ t / vˆt

指数移動平均の計算

指数移動平均の
バイアスを打ち消す

パラメータの更新

まとめ
—  Adamというオンライン学習器を紹介した
— 
— 
— 

         でパラメータを更新
E[g]
/ E[g 2 ]
期待値計算に指数移動平均を使う
指数移動平均のバイアスを打ち消す工夫がある

Sign up to vote on this title
UsefulNot useful