どうも、カタミチです。
さて、今日も「最短コースでわかる PyTorch&深層学習プログラミング」のひとり読書会、やっていきますかねー。
今日で2章も終わりですね。気合い入れて行きましょう〜
2-5. シグモイド関数の勾配計算
さて、前節は2次関数の勾配計算でしたが、今節はシグモイド関数の勾配計算のようですね。勾配計算に慣れるためにも、しっかり見ていきますかねー。
さて、とりあえずコード書いてみましょう。
グラフを見る限り、シグモイド関数がしっかり書けているようですね。何行か書いていますが、前節の2次関数と違うのはこの部分だけです。
sigmoid = torch.nn.Sigmoid()
y = sigmoid(x)
シグモイド関数は、PyTorchに標準で用意されているようです。「nn」ってのは、どうやらニューラルネットワークってことのようですね。
で、前回と同じく最終結果をスカラー化するために合計したうえで、計算グラフの可視化をします。
はい、こんな感じですね。
実行してみましょう…どん!
「AccumulatedGrad」と「SumBackward0」は前回と一緒ですね。真ん中にある「SigmoidBackward」ってやつだけが違います。つまり、この部分が\(y\)の\(x\)に関する式の部分…ってことになりますかねー。
で、前回同様、勾配計算と行きましょう。
はい、どうやら今回も、ちゃんと微分…つまり勾配計算ができているようですね。
でもって最後に…
初期化しておくんでしたね!
コラム
さて、本節はここで終わりなんですが、コラムが3本続いています。1本目のコラムは「数学用語としてのテンソル」ってことで、2-2節の時に参考にしました。ちなみに、4階テンソルは、画像データを扱う場合に使うようです。
2本目のコラムは「「勾配」と「傾き」と「微分」の関係」というもの。前著「ディープラーニングの数学」で学んだ微分の考え方について、簡単に触れられていました。
3本目のコラムは「ChainerとPyTorchの関係」という節。2019年12月5日に開発停止してしまった「Chainer」というフレームワークの「Define by Run」という考え方が、PyTorchの今の仕様を開発したと言われている…という内容でした。Chainerって名前だけは何度か聞いたことあったんですが、開発終了してたんですね。知らなかった…。
ということで
2章もここで終わりですね。ふと、電子書籍ページ数のところを見てみると「20%」とありました。まだまだ最序盤だと思っていたのですが、ここまでで全体の約1/5来たことになりますね。…まぁ、目次やらなんやらがあるので、実際には20%行かないくらいかもしれませんが(汗)。
ともあれ、西遊記で言うと玄奘三蔵に無事に助けられて、仲間になった…と言ったところですかねー(また西遊記に例えてる)。
次は、猪八戒を仲間にすべく、3章に突入だ〜
ではまた。