11
30分でわかる Adam echizen_tm Apr.29, 2015

30minutes Adam

Embed Size (px)

DESCRIPTION

30minutes Adam

Citation preview

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)

θt =θt−1 −α E[g] / E[g2 ]

θ

f ()gα

学習したいパラメータ

目的関数

勾配

学習率

期待値

�  この更新式の特徴 �  abs(更新幅)が学習率α以下になる �  更新幅が自動で調整される

(学習率を減衰させる必要がない) �  勾配の向きがあまりかわらない →          が1に近い値

�  勾配の向きがよくかわる →          が小さくなる

Adamのやりたいこと

θt =θt−1 −α E[g] / E[g2 ]

E[g] / E[g2 ]

E[g] / E[g2 ]

期待値計算をどうするか? �  普通に平均を取ると初期の値が良くない感じになる

�  たいてい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

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

t

期待値計算をどうするか? �  指数移動平均は本当の期待値とどのくらい違うの?

E mt = (1−β) β t−igii=1

t

∑"

#$

%

&'

≅ E[gt ](1−β) β t−i

i=1

t

= E[gt ]( β t−i

i=1

t

∑ − β t−i

i=0

t−1

∑ )

= E[gt ](1−βt )

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

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

mt = β1mt−1 + (1−β1)gtvt = β2vt−1 + (1−β2 )gt

2

m̂t =mt / (1−β1t )

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

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

勾配の計算

指数移動平均の計算

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

パラメータの更新

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

�           でパラメータを更新

�  期待値計算に指数移動平均を使う �  指数移動平均のバイアスを打ち消す工夫がある

E[g] / E[g2 ]