Learning』民のための実装攻略ノートです。『ゼロつく1』学習の補助となるように適宜解説を加えています。本と一緒に読んでください。関数やクラスとして実装される処理の塊を細かく分解して、1つずつ処理を確認しながらゆっくりと組んでいきます。この記事は、6.1.5項「AdaGrad」の内容になります。AdaGradを説明し、Pythonで実装します。その学習過程を確認します。AdaGradSGDでは、学習率を全ての要素に対して等しく与えました。AdaGradとは、各要素に適応した学習率を用いることを考えた手法です。\mathbf{W}}$とすると、AdaGradは次の式になります。$$ここで$\mathbf{h}$は過去の勾配を2乗和として保持する項です(後で確認します)。$\odot$は行列の要素ごとの掛け算を表します。勾配によって更新した$\mathbf{h}$を用いてパラメータを更新します。$$$\frac{1}{\sqrt{\mathbf{h}}}$によって、過去の勾配の情報を用いてパラメータの各要素に適合した学習率に調整します。式(6.5),(6.6)について、$j,k$要素に注目すると次の式になります。$$ちなみに$\leftarrow$は、右辺の計算によって左辺の変数に更新することを表しています。不気味であれば右肩に括弧付きの数字で更新回数を示すことで、次のように等式でも表せます。w_{jk}^{(t-1)}$を更新することを表しています。右肩の記号が恐ろしければ矢印の方で理解しましょう。w_{jk}^{(t-1)}}$が0でないと式が成立しないことになるという不都合があるだけのことです。式(6.5),(6.6)についてもう少し考えてみましょう。\Bigr)^2$と表せます。次に2回目の更新を考えます。\Bigr)^2$ですね。