ゼロから作る DeepLearning ❸ フレームワーク編を読んで
ゼロから作る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 も
利用可能です。