RMSProp法のアルゴリズムをExcelに実装して具体例を解いてみた。

2022年11月6日

最小二乗法のパラメータを最適化するためのアルゴリズムとして、最急降下法確率的勾配降下法モーメンタム法と見てきました。

>> 【例題をExcelでわかりやすく】最急降下法で単回帰の最小二乗法を解いてみる

>> 【Excelでアルゴリズムを実装】確率的勾配降下法を使って最小二乗法を解いてみる

>> 【Excelでアルゴリズムを実装】モーメンタム法を使って最小二乗法を解いてみる

 

【円安の今こそチャンス!】

親日国カンボジアであなたの会社の商品を販売してみませんか?

食品/飲料ヘルスケアコスメ流通のスモールスタートを管理人がサポートします。

Royal Palace in Phnom Penh (2015)

学習率を調整して振幅を抑える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)/∂aQi(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に実装して具体例を解いてみた。

 

Udemyの関連講座

データ分析シリーズ① AI数学-文系でも理解できる!高校から始めるデータ分析、AIのための数学-

データ分析、機械学習に関わる数学に絞り、効率的に学習できるようカリキュラムを構成しました。文系でも理解できるよう丁寧な説明をしています。Pythonエンジニア育成推進協会認定スクールによる高品質な数学コースです。

 

本当にわかる、AI時代の数学【超初心者からの数学入門】

数学アレルギーでも大丈夫/やさしく丁寧な解説/コード無し キーワード:基礎/数学/行列/線形代数/ベクトル/微分/データサイエンス/AI/機械学習/ディープラーニング/データドリブン/人工知能

 

【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 –

1000人以上が受講している(株)キカガクの『脱ブラックボックスセミナー』が遂に登場!機械学習の参考書を「閉じてしまった人」への再入門に最適な講座です。微分・線形代数といった数学の基礎からPythonでの実装まで短時間で習得しましょう。