まったりAI勉強記

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

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

どうも、カタミチです。

さて、今日も「最短コースでわかる 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章に突入だ〜

ではまた。