関数(6.2)とその勾配をそれぞれ関数として定義しておきます。(値を2つ出力!)元の関数は作図に、勾配はもちろんパラメータの更新に利用します。ちなみにこの関数を等高線図にすると次のようになります。タイトルplt.show()関数(6.2)の等高線グラフ原点がこの関数の最小値になります。原点付近が横に広くなだらかに(勾配が小さく)なっていることが確認できます。これまでと同様に、パラメータ(変数)params、パラメータごとの勾配gradsのディクショナリ変数を作成して、パラメータ名をキーとして値を格納します。学習率を指定して、AdaGradクラスのインスタンスを作成します。AdaGrad(lr=lr)試行回数を指定して、学習を行います。パラメータの更新値を記録するためのリスト型の変数を用意しておきます。値の追加は.append()を使います。y_history.append(params['y'])勾配を計算し、gradsに格納している値をそれぞれ上書きします。AdaGradクラスの更新メソッド.update()にparamsとgradsを指定して、パラメータを更新します。更新値の推移を先ほどの等高線グラフに重ねて確認しましょう。メモplt.show()学習率:1.5,試行回数:30SGDよりも、最小値の点に向かって効率的な経路を辿っています(図6-6)。学習率や試行回数を変更して試してみましょう!学習率:0.95,試行回数:30ハイパーパラメータをSGDのときと同じの値にすると、最小値まで辿り着けませんでした。対象となる関数によって結果は変わります。学習率:30,試行回数:10SGDでは学習率が大きいと発散してしまいましたが、AdaGradでは$\frac{1}{\sqrt{\mathbf{h}}}$の調整機能によって発散せずに最小値に辿り着いています。以上で、各要素の学習係数を適応的に調整して学習を行うAdaGradを実装できました。Learning』オライリー・ジャパン,2016年.おわりに次は本で名前だけ出てきたRSMPropをやります。この手法を知っておいた方が、Adamを理解しやすいためです。あと実はマスターデータの方にはRSMPropの実装例があります。これがなければ流石に飛ばしました。00:04何かおかしな内容があれば、ご指摘いただけるととても嬉しいです。【R】円周の作図5.3:正射影ベクトルの導出【『スタンフォード線形代数入門』のノート】スポンサーリンクはてなブログをはじめよう!anemptyarchiveさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。