ニューラルネットワークを理解する #14 「勾配降下法以外のパラメータ更新方法について③」 Adam

 前回からの続きです。

今回紹介するものは本では詳細な説明は省かれていたので、参考論文からまとめていきます。

参考:Adam: A Method for Stochastic Optimization


最適化手法③ Adam

これまでに紹介してきたMomentumとAdaGradを融合させたようなものがAdamという手法です。
この方法は、勾配の第一モーメントと第二モーメントの推定値から、異なるパラメータに対する個々の適応学習率を計算する。
論文から訳したメソッドの説明です。
学習率を調整するという点は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がバイアスと呼ばれるもので、学習率の補正を行う役割を持ちます。
これがないと最初の学習率が非常に大きくなる場合があるらしく、それを抑えるために存在する変数のようです。
より安定した挙動を担保するためにあるようですね。

ちょっと長くなったので実際の計算は次回やってみましょう。


コメント