Upload
toshiyuki-maezawa
View
2.957
Download
0
Embed Size (px)
DESCRIPTION
30minutes Adam
Citation preview
Adamとは � state of the artなオンライン学習器
� AdaGrad+RMSPropのようなもの(らしい)
� 実装が簡単
� 性能が高い(経験的にはAdaGradよりよさそう)
� 論文に推奨パラメータが書いてある
� 正則化項は入っていない
� この更新式の特徴 � 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
勾配の計算
指数移動平均の計算
指数移動平均の バイアスを打ち消す
パラメータの更新