まったりAI勉強記

AI(人工知能)について、特にゆかりがあるわけでもない社会人が、まったりとAIについて勉強していく勉強日記です。

【ひとり読書会】PyTorch&深層学習プログラミング(第20回)

どうも、カタミチです。

さて、今日も「最短コースでわかる PyTorch&深層学習プログラミング」のひとり読書会、やっていきますかねー。

今日も線形回帰問題の続きですね。

 

3-8. 勾配計算

前回は、損失関数として「平均2乗誤差:mse」を定義してlossという変数にぶち込んだんでしたね。計算グラフも育ってきました。で、今回は勾配計算です。

ここは楽なところですね。単にbackward関数を噛ませればいいだけです。繰り返しますが、数学的には微分式を出すのに結構苦労しますよね。それをこの一文で済ませることができるのは、ライブラリのいいところですかねー。

勾配値(.grid)の出力結果は、とりあえず参考まで、という感じですかね。

 

3-9. パラメータ修正

最後に、勾配降下計算ですね。学習率を「lr」は「learning rate」の頭文字を取ってるというのが、ここで明らかになりました(ふむふむ)

で、コードはこんな感じ。

今回は学習率は0.001にしてあるみたいですね。このハイパーパラメータも、高度には結構工夫できるんでしたね。後半になるときっとその辺りも出てくると思いますが、ひとまず0.001で…と。

次に「with」文が出てきてますね。この書き方は始めてみましたが、どうやらこの一文が無いとエラーになってしまうようです。…ちょっとハマりそうなところですね、これは。

で、勾配降下の式。「-=」の書き方は、プログラム言語に馴染みがないと違和感が出そうですが、左辺自身から右辺を引いた結果を返す式ですね。勾配降下の式そのまんまです。

最後に微分の初期化処理も仕込んで…

これでひと通りの式が完成ですね。

一応、WとB、それからそれぞれの微分結果の変数の値を見てみると…

こうなりましたねー。

微分結果は初期化したので、しっかり0になってますね。

 

ということで

式についてはここまでで準備完了ですかね。あとはループをグルグルとぶん回す!って事になりますかね。あと一息なので頑張っていきますかねー。

ではまた。