どうも、カタミチです。
さて、今日も「最短コースでわかる PyTorch&深層学習プログラミング」のひとり読書会、やっていきますかねー。
今日も線形回帰問題の続きですね。
3-8. 勾配計算
前回は、損失関数として「平均2乗誤差:mse」を定義してlossという変数にぶち込んだんでしたね。計算グラフも育ってきました。で、今回は勾配計算です。
ここは楽なところですね。単にbackward関数を噛ませればいいだけです。繰り返しますが、数学的には微分式を出すのに結構苦労しますよね。それをこの一文で済ませることができるのは、ライブラリのいいところですかねー。
勾配値(.grid)の出力結果は、とりあえず参考まで、という感じですかね。
3-9. パラメータ修正
最後に、勾配降下計算ですね。学習率を「lr」は「learning rate」の頭文字を取ってるというのが、ここで明らかになりました(ふむふむ)。
で、コードはこんな感じ。
今回は学習率は0.001にしてあるみたいですね。このハイパーパラメータも、高度には結構工夫できるんでしたね。後半になるときっとその辺りも出てくると思いますが、ひとまず0.001で…と。
次に「with」文が出てきてますね。この書き方は始めてみましたが、どうやらこの一文が無いとエラーになってしまうようです。…ちょっとハマりそうなところですね、これは。
で、勾配降下の式。「-=」の書き方は、プログラム言語に馴染みがないと違和感が出そうですが、左辺自身から右辺を引いた結果を返す式ですね。勾配降下の式そのまんまです。
最後に微分の初期化処理も仕込んで…
これでひと通りの式が完成ですね。
一応、WとB、それからそれぞれの微分結果の変数の値を見てみると…
こうなりましたねー。
微分結果は初期化したので、しっかり0になってますね。
ということで
式についてはここまでで準備完了ですかね。あとはループをグルグルとぶん回す!って事になりますかね。あと一息なので頑張っていきますかねー。
ではまた。