【学習率を調整する】AdaGradとRMSPropをExcelに実装して比較してみた。前へ次へ検索RSSFeedlyホーム>Excelで機械学習>Excelで試してみる【学習率を調整する】AdaGradとRMSPropをExcelに実装して比較してみた。深層学習における最適化アルゴリズムの定番である勾配降下法についてExcelに実装してきましたが、AdaGradが抜けていました。【Excelでアルゴリズムを実装】最終兵器Adamを使って最小二乗法を解いてみる今回は、学習率を調整するという点でRMSPropと大変良く似ているAdaGradをExcelで試してみて、RMSPropとの違いを明らかにしたいと思います。Σ{yi-(axi+b)}2が最も小さくなるようなaとbを求めます。Udemyの関連講座リンクリンクAdaGradとRMSPropは学習率の調整方法が異なる学習が進むにつれて学習率を強制的に小さくするAdaGradRMSPropの更新式は次式でした。Bn+1+ε)×∂Qn+1(a,b)/∂bAdaGradでは青字部分を抜いて、次のようになります。Bn+1)×∂Qn+1(a,b)/∂b主な違いは、An+1とBn+1の計算を加重平均から単純な和に変えたことです。これは些細な違いに見えますが、その思想は全く異なります。双方に通じる基本的な考え方は、勾配Qの大きさによって学習率ηを自動調整したいということです。そのためにRMSPropでは、勾配が大きい時には学習率を小さめにして、パラメータの変化の振幅を抑えにかかります。対してAdaGradでは、学習の初期には大きく学習するが、後半は小さな学習になるはずなので、学習率を徐々に小さくしましょうという考え方です。AdaGradとRMSPropの違いをアナロジーでこの違いは次のアナロジーでも説明できます。従業員1,000名、平均年齢50歳の会社があるとします。全社員の年齢を足すと50,000歳です。RMSPropのやり方は、1,000人のうち毎年100人の高齢社員を退職させ、代わりに100人の若手を採用するようなものです。することによって、毎年少しずつ合計年齢は下がります。対してAdaGradのやり方は、定年がなく退職者がいない一方、若手は毎年100人採用するようなものです。すると、この会社の合計年齢は毎年着実に上がります。RMSProp社では、年齢(勾配)の低い社員が増えるので学習率が上がります。AdaGrad社では、どんどん高齢社員が増えるので学習率がどんどん下がります。RMSProp社でも新卒が採れずに高齢の中途しか採れなくなると、平均年齢が上がって学習率が下がります。このように、社員をどんどん入れ替え社会情勢に合わせて学習率を変えられるのがRMSProp、社会情勢を無視して社員がゾンビ化し学習率がどんどん下がっていくのがAdaGradと言えます。そんな例えをするとAdaGradは良くないアルゴリズムのように聞こえますが、うまく収束する優秀なアルゴリズムと言われているようです。設計者が決めなければいけないハイパーパラメータが1つしかなく、2つあるRMSPropより使い勝手が良いとも言われています。AdaGradをExcelに実装するそれでは実際にExcelに実装して確かめてみましょう。アルゴリズムの式に従って、次のように入力しました。クリックすると拡大しますクリックすると拡大します100個のデータをランダムに採択しているため毎回結果は異なりますが、6,476回目で収束した例を示します。収束の挙動をRMAPropとグラフで比較するこの時、過去の勾配を足している二乗和Aiはどのような挙動を示しているのでしょうか?An+1=An+(∂Qn+1(a,b)/∂a)2の値の推移は次のようになっていました。最初の30回くらいの更新期間中に急速に400万くらいまで立ち上がり、その後はパラメータaが収束するまでゆっくりと増え続けています。最初に急速に立ち上がるのはAiの初期値をゼロにしているためでもありますが、同時に最初の30回の間の勾配が大きく、急速にパラメータが調整されたことを示しています。その後も二乗和Aiは増加し続け、学習率は一度も大きくなることなく小さくなり続けます。これをRMSPropの挙動と比べてみましょう。下図は5,846回目で収束した様子です。この間の二乗和Aiの挙動は次のようになります。最初の頃に急速に立ち上がるのはAdaGradと同じですが、170回目くらいでピークアウトし、その後は急速に小さくなります。コロナが感染爆発して、その後、急速にピークアウトするようです。これはAiの初期値をゼロにしているためで、感染が行き渡るまでは増え続け、集団免疫になると急速に減り始めます。学習率はAiの平方根で割られますので、Aiが小さくなるということは学習率を大きくする方向に働きますが、その頃の学習率は小さくなっているため打ち消し合ってほとんど大きくなりません。RMSPropの学習率の推移は、次のようになりました。最初の勾配が大きい時には学習率を小さくしてパラメータの振幅を抑え、後半の微調整期間では学習率をいい感じの大きさに調整しています。対してAdaGradの学習率の推移は、次のようになっていました。最初の頃に学習率が大きいのはAiをゼロからスタートさせているためで、30回くらいで落ち着いてからは徐々に学習率が小さくなっています。AdamGradの学習率は大きく、パラメータごとに異なるこれは学習後半は学習率は小さくて良いはずだという理由からですが、すべてのパラメータの学習率を一律に小さくするのではなく、個々の累積勾配量を元に小さくしているので、パラメータごとに小さくなるスピードは異なります。(AdaGrad)と呼ばれるようです。今回試してみて気づいたのは、AdaGradで設定する学習率ηは大きくしないといけないということです。RMSPropではη=0.007で設定しましたが、AdaGradではη=1で設定した時が一番うまく収束しました。これは、勾配の累積二乗和のルートで学習率が割られるため、大きくないと学習率が小さくなり過ぎて学習しなくなってしまうためです。RMSPropは勾配の二乗の加重平均ですので、このようなことはありません。AI数学-文系でも理解できる!高校から始めるデータ分析、AIのための数学-データ分析、機械学習に関わる数学に絞り、効率的に学習できるようカリキュラムを構成しました。文系でも理解できるよう丁寧な説明をしています。Pythonエンジニア育成推進協会認定スクールによる高品質な数学コースです。–1000人以上が受講している(株)キカガクの『脱ブラックボックスセミナー』が遂に登場!機械学習の参考書を「閉じてしまった人」への再入門に最適な講座です。微分・線形代数といった数学の基礎からPythonでの実装まで短時間で習得しましょう。永遠の旅人よろしければシェアお願いしますTwitterFacebookLinkedInB!HatenaLINELINE紙の図面をVisioを使って作図する手順を具体例を使ってゼロから丁寧に解説Next【2通りの方法】最小二乗法を行列演算で解く方法をわかりやすく解説Prevリンクリンク関連記事RMSProp法のアルゴリズムをExcelに実装して具体例を解いてみた。...サポートベクターマシンをExcelに実装して2クラス分類問題を解いてみた。...ナイーブベイズ分類器の計算方法を具体例でわかりやすく解説します。...ベイズ推定とMAP推定の違いを高校野球の勝率予測でわかりやすく解説2030年夏の甲子園、PL学園が圧倒的な強さで春夏連覇しました。【区間推定の使い方】タイヤの摩耗を具体例にわかりやすく解説します。TOP28【作業分析6】MMCモデル|最適なトラックドック数をSimpyでシミュレーション【作業分析5】トラックの待機台数の多さを人の表情でアニメーション(2)カンボジアの物流でお困りのことがあればお気軽にご相談下さい。学生時代にアジアの雑踏にハマる。誰もが羨むメーカーを退職し「旅するように働く」ことを目指し物流業界に転職。理工学と経営学のダブル修士。2023年1月からカンボジアのオートレスビーチ在住。