徒然なる日々を送るソフトウェアデベロッパーの記録(2)

技術上思ったことや感じたことを気ままに記録していくブログです。さくらから移設しました。

ゼロから作る DeepLearning ❸ フレームワーク編を読んで

ゼロから作るDeep Learning ❸ ―フレームワーク編

ゼロから作るDeep Learning ❸ ―フレームワーク編

  • 作者:斎藤 康毅
  • 発売日: 2020/04/20
  • メディア: 単行本(ソフトカバー)

ゼロから作るシリーズの第3弾は、自動微分可能なフレームワークをゼロから作成するというものです。
全体で60ステップからなっており、最初は変数や関数のクラスを定義するところから始まり、
最後は LSTM の実装とそれをつかった予測のグラフ化で終わっています。

自動微分可能とは、合成関数を構成する個々の関数の微分は手で与えるとして、chain rule を自動的に
適用して全体の微分を求められるように工夫したフレームワークのことを指しています。
forward 演算時に自動的に合成関数の構成を記録する(リンクを構成する)ことで、ユーザが
別途その情報を入力しなくてもよいように工夫されています。(本書では Define-by-Run と
呼んでいます。)

微分計算は主に
y = F(x)
y.backward()
dx = x.grad
のように行われ、dx が補正に使用されます。

ゼロから作るシリーズは大学1年次の数学程度の知識で DeepLearning が理解できるように
工夫されていますが、本書は特に解説およびコラムが丁寧に展開されており、数学でつまづき
がちな箇所にもしっかり解説が行われています。
ゼロから作るシリーズの中では一番解説が細かくされているように感じました。

本編はステップ60で終わっていますが、サポートページの GitHub には examples フォルダが
あり、VAE, GAN と言った最近の DeepLearning の話題についても実装があります。
ただし、VAE や GAN に対する説明は書いていないので、dezero における実装方法を参照と
考え、内容については別途文献を参照したほうがよさそうです。

なお、本書で作成したフレームワーク dezero は PyPI に登録されており、
pip install dezero
(Anaconda 環境)または
pip3 install dezero
(非 Anaconda 環境)で利用可能です。CuPy がインストールされていれば GPU
利用可能です。