RMSProp法のアルゴリズムをExcelに実装して具体例を解いてみた。
最小二乗法のパラメータを最適化するためのアルゴリズムとして、最急降下法、確率的勾配降下法、モーメンタム法と見てきました。
>> 【例題をExcelでわかりやすく】最急降下法で単回帰の最小二乗法を解いてみる
>> 【Excelでアルゴリズムを実装】確率的勾配降下法を使って最小二乗法を解いてみる
>> 【Excelでアルゴリズムを実装】モーメンタム法を使って最小二乗法を解いてみる
学習率を調整して振幅を抑えるRMSProp法
最急降下法はパラメータを更新する度にすべてのサンプルデータを使うために計算負荷が高いことと、局所的最適解で止まってしまうという欠点がありました。
それを改良するために確率的勾配降下法が出てきましたが、振幅が大きくなかなか最適解に収束しないという欠点があり、モーメンタム法が生まれました。
RMSProp法(Root Mean Squared Propagation)も振幅を抑えるための改良版です。
最急降下法と確率的勾配降下法を思い出すと、いずれも勾配と真逆の方向にある比率(学習率)を掛けた距離だけパラメータを動かすのでした。
ただそうすると、勾配がプラスからマイナスに変わるような時には大きく振動してしまいます。
この振動を小さくするために、前回の勾配も考慮してパラメータを動かしましょうというのがモーメンタム法の考え方です。
RMSProp法では、学習率を調整して振幅を抑えます。
今までは学習率を0.004などの値に固定していましたが、勾配が大きな時には学習率が小さくなるように調整するのです。
RMSProp法のアルゴリズム
確率的勾配降下法では
an+1=an-η∂Qn+1(a,b)/∂a
bn+1=bn-η∂Qn+1(a,b)/∂b
の式に従ってパラメータaとbを更新しました。
この式の中のηが学習率で、∂Qi(a,b)/∂aと∂Qi(a,b)/∂bが勾配です。
∂Qi(a,b)/∂aと∂Qi(a,b)/∂bが大きくなったらηが小さくなるような仕組みを組み込んだのがRMSPropです。
感覚的には∂Qi(a,b)/∂aや∂Qi(a,b)/∂bが分母に入った係数をηに掛ければ良さそうですね。
RMSPropの式は次のようになります。
【aの更新式】
An+1=βAn+(1-β)(∂Qn+1(a,b)/∂a)2
an+1=an-η/√( An+1+ε)×∂Qn+1(a,b)/∂a
【bの更新式】
Bn+1=βBn+(1-β)(∂Qn+1(a,b)/∂b)2
bn+1=bn-η/√( Bn+1+ε)×∂Qn+1(a,b)/∂b
一見難しそうに見えますが、よく見るとそうでもありません。
aもbも更新式は一緒ですので、aの式を見てみましょう。
第2式と確率的勾配降下法の更新式との違いは、1/√( An+1+ε)が入っていることだけです。
この項で安全率ηを調整しているといえます。
An+1は第1式で計算されますが、∂Qi(a,b)/∂aの二乗の移動平均を計算しているだけです。
∂Qi(a,b)/∂aの二乗はつまり勾配の二乗ですので、勾配が大きくなればAn+1は大きくなります。
εはAn+1が万が一ゼロになっても割り算ができるように入れておくだけの10-12などのとても小さな数ですので、計算結果にはほとんど影響はありません。
つまり、勾配が大きくなったら安全率ηが小さくなるような調整がこの式でできるのです。
RMSProp法をExcelに実装する
それではExcelで実際に試してみましょう。
今回も単回帰で、xとyのサンプルデータが100組あるとします。
この中から1組ずつ選んでaの勾配∂Q/∂aとbの勾配∂Q/∂bを計算するところは確率的勾配降下法やモーメンタム法と同じです。
RMSProp法の更新式は次のようにExcelに入力します。
aの更新もbの更新も同じですので、aの更新式とExcel入力箇所の関係を示します。
Aiの初期値A0はゼロに設定しています。
具体的には次のように関数を入力します。
初期値a=b=10からスタートして、3,812回目で収束しました。
グラフで振幅が抑えられていることを確認
グラフにすると次の通りです。
ほとんど振動せずに、ムダな回り道もせずに収束していることが分かります。
同じデータを確率的勾配降下法とモーメンタム法で解いたらどうなるでしょうか?
確率的勾配降下法では11,343回目、モーメンタム法では7,974回目で収束しました。
スケールを合せてグラフで比べてみると次のようになります。
確率的勾配降下法
モーメンタム法
RMSProp法
RMSProp法では振動が大幅に抑えられて、速やかに収束に向かうことが確認できました。
でも、これより凄い改良版があります。
モーメンタム法とRMSPropのいいとこどりをした方法です。
興味のある方は、こちらもどうぞ。
最終兵器AdamのアルゴリズムをExcelに実装して具体例を解いてみた。