どうも、カタミチです。
さて、今日も「最短コースでわかる PyTorch&深層学習プログラミング」のひとり読書会、やっていきますかねー。
今回から微分の話ですね。
2-3. 自動微分機能
この節はどうやら、流れの説明だけのようですね。
PyTorchでは、偏微分計算のことを「勾配計算」という言い方をするようです。勾配って言葉から連想されるのは「勾配降下法」ですが、計算に勾配降下法を使うのが前提…ってことですかね。確かに、ディープラーニングのロジックの根幹は勾配降下法を用いたものでしたね。
ちなみに勾配降下法は、繰り返し計算で「近似解」を導くやり方でしたね。対して、繰り返し計算ではなく一気に正確な値が求まるのが「解析解」ってやつでした。(参考:【ひとり読書会】ディープラーニングの数学(第17回) - まったりAI勉強記)
勾配降下法については「ディープラーニングの数学」でだいぶやったので、理論もバッチリ!…なはず(思い出し)。PyTorchでは、勾配計算したい変数をテンソル変数として定義するようです。勾配計算したい変数…ってのはつまり重みのことですかね。
さて、テンソル変数を定義したら次に、テンソル変数間で演算をするようですが、値の計算と同時に「計算グラフ」が生成されているようです。この機能のことを「Define by Run」と呼ぶようです。…「Define by Run」って言葉、逐次実行のインタープリタ的なイメージで理解していたんですが、ちょっと違うのかもしれません。このあたりは、おいおい分かってきそうですかねー。
あとやっておくべきなのが「計算グラフの可視化」。計算自体の処理には不要らしいのですが、何が行われているのかを目で確かめられるのでしっかり仕込んでおきたいですね。
勾配計算にはbackward関数という関数を使うようです。backwardってことは「後方へ」ってことですかね。「誤差逆伝播法」のニュアンスなのかなー。このへんも、実際の計算見ればイメージつきますかね。
勾配計算の結果はPyTorchでは勾配値と呼ばれるようです。用語として覚えておきますかねー。勾配値は、利用が終わったら初期化する必要があるようです。ここも、コード追って理由を理解していくとしますかねー。
ということで
今回はコードは一切出てきませんでしたが、次節で今回の内容を実践するようなので、そこで理解を深める感じですかねー。ひとまず流れを理解したつもりになった…ところで次回に続く、って感じですかねー。
ではまた。