前回からの続きです。
今回紹介するものは本では詳細な説明は省かれていたので、参考論文からまとめていきます。
参考:Adam: A Method for Stochastic Optimization
最適化手法③ Adam
これまでに紹介してきたMomentumとAdaGradを融合させたようなものがAdamという手法です。
この方法は、勾配の第一モーメントと第二モーメントの推定値から、異なるパラメータに対する個々の適応学習率を計算する。
論文から訳したメソッドの説明です。
学習率を調整するという点はAdaGradと同じですがモーメントというよく分からんものが出てきましたね。
それぞれ以下のような意味のようです。
学習率を調整するという点はAdaGradと同じですがモーメントというよく分からんものが出てきましたね。
それぞれ以下のような意味のようです。
一次モーメント:平均を表す。この場合は勾配の推定された平均値。
二次モーメント:分散を表す。この場合は勾配の推定された分散。
二次モーメント:分散を表す。この場合は勾配の推定された分散。
実際のアルゴリズムを見てみましょう。
Adamのアルゴリズム
変数
α:学習率
β1, β2 : モーメントを調節するための値(0~1)
ε: 限りなく小さな値(0除算を防ぐための変数)
θt : 目的関数のパラメータ
gt : 勾配
mt : 一次モーメント
vt : 二次モーメント
(tは試行回数、なのでmt-1は一つ前のmt)
定義
mt ← β1 * mt-1 + (1 - β1) * gt
vt ← β2 * vt-1 + (1 - β2) * gt ^ 2
^mt ← mt / (1 - β1 ^ t)
^vt ← vt / (1 - β2 ^ t)
θt ← θt-1 - α * ^mt / (√^vt + ε)
確かにこれまで見てきたMoemntumとAdaGradと似ていますね。
このアルゴリズムは、勾配(mt)と二乗勾配(vt)の指数移動平均を更新し、ハイパーパラメータβ1、β2∈[0, 1]は、これらの移動平均の指数減衰率を制御する。
指数移動平均というのを計算しているんですね。
EMA(Exponential Moving Average)指数平滑移動平均
ここで紹介したのは分かりやすさ優先のアルゴリズムのようで、より改善したアルゴリズムが以下。
バイアスでの補正
β1, β2がバイアスと呼ばれるもので、学習率の補正を行う役割を持ちます。
これがないと最初の学習率が非常に大きくなる場合があるらしく、それを抑えるために存在する変数のようです。
より安定した挙動を担保するためにあるようですね。
ちょっと長くなったので実際の計算は次回やってみましょう。
コメント
コメントを投稿