最終兵器AdamのアルゴリズムをExcelに実装して具体例を解いてみた。
勾配降下法の最良アルゴリズムAdam
AI君の頭の良さは、式の中のパラメータの調整具合にかかっています。
そして良いパラメータかどうかを判断するために、損失関数を使います。
式で予測した値が実際の値(正解)と比べてどのくらい違うかを示す関数です。
この損失関数の値が一番小さくなるようなパラメータを求められれば、そのパラメータは最適といえます。
そして、そのためのアルゴリズム(方法)を過去数回に渡って紹介してきました。
>> 【例題をExcelでわかりやすく】最急降下法で単回帰の最小二乗法を解いてみる
>> 【Excelでアルゴリズムを実装】確率的勾配降下法を使って最小二乗法を解いてみる
>> 【Excelでアルゴリズムを実装】モーメンタム法を使って最小二乗法を解いてみる
>> 【Excelでアルゴリズムを実装】RMSPropを使って最小二乗法を解いてみる
今回はいよいよ最終章で、これまでの方法をいいとこどりをしたアルゴリズムを紹介します。
その名もAdam(Adaptive Moment Estimation)です。
Adamのアルゴリズムはモーメンタム法とRMSProp法の合成
Adamはモーメンタム法とRMSPropを理解できている人にとっては簡単です。
これらのいいとこどりをしているだけで、何も新しいことはありません。
でも機械学習/人工知能/ディープラーニングなどを使って仕事をしている人たちにとっては、知らない人はいないほど有名でよく使われているアルゴリズムです。
早速、どのように組み合わせているのかを見ていきましょう。
説明を簡単にするために、パラメータaの更新方法についてだけ見ていきます。
パラメータが増えても、同じようにするだけですので。
モーメンタム法では次式でパラメータaを更新しました。
an+1=an-η{前回の∂Qn(a,b)/∂a×β+今回の∂Qn+1(a,b)/∂a×(1-β)}
これが、RMSPropでは次のような2式でした。
An+1=βAn+(1-β)(∂Qn+1(a,b)/∂a)2
an+1=an-η/√( An+1+ε)×∂Qn+1(a,b)/∂a
このRMSPropの式の最後の青字の箇所の代わりに、モーメンタム法の青字の箇所を入れます。
すると、
An+1=βAn+(1-β)(∂Qn+1(a,b)/∂a)2
an+1=an-η/√( An+1+ε)× {前回の∂Qn(a,b)/∂a×β+今回の∂Qn+1(a,b)/∂a×(1-β)}
となりました。
これがAdamの更新式です。
簡単ですね。
よく見ると、1式目と2式目の両式に同じβが含まれています。
でもこれらは別物です。
ですのでβ1、β2として区別しておきましょう。
すると、
An+1=β2An+(1-β2)(∂Qn+1(a,b)/∂a)2
an+1=an-η/√( An+1+ε)× {前回の∂Qn(a,b)/∂a×β1+今回の∂Qn+1(a,b)/∂a×(1-β1)}
これがAdamのすべてです。
理解が怪しい人はモーメンタム法やRMSPropの解説をもう一度読み返してみて下さい。
AdamをExcelに実装する
それでは実際にExcelで実装してみましょう。
前回、RMSPropで行ったのと同じ例題でやってみます。
更新式をExcelシートに入力する場合の概略設計は次の通りです。
実際の入力関数は下記のようにしました。
シートが横に長いので2つに分けます。
初期値a=b=10から出発して、2,498回目で収束しました。
収束する様子はこのような感じです。
オーバーシュートもせず、綺麗にムダなく収束値に向かっていますね。
他アルゴリズムと比べた収束の様子をグラフで確認
でも他のアルゴリズムと比べると、どれくらい性能がいいのでしょうか?
確率的勾配降下法、モーメンタム法、RMSPropとスケールを合せて比べてみましょう。
確率的勾配降下法
モーメンタム法
RMSProp
Adam
一目瞭然、Adamが一番ですね。
今までの最高だったRMSPropよりも少ない更新回数で、しかも綺麗な軌道を描いて収束しました。