17章基礎からのニューラルネットワーク

 本章では、これまでの章で用いてきたモデルの深層部への旅を始める。本章で説明することはこれまでと見てきたことと一部重複するが、今回はより実装の詳細を詳しく述べる。逆に、なぜそうしているのかなどの現実的な側面は繰り返さない。

 ここでは、基本的なテンソルへのインデックス参照だけを用いて、すべてを1から書いていく。ニューラルネットを基礎から作り上げ、逆伝播を実装し、PyTorchでloss.backwardを呼び出したときに何が起こっているのかを理解できるようにする。さらに、独自のautograd.Functionの子クラスに独自の順方向、逆方向演算を定義することで、PyTorchを拡張できることを説明する。

17.1 ニューラルネットワーク層を1から作る

 まずはじめに、基本的なニューラルネットワークでどのように行列乗算が使われているかを復習しよう。ここではすべてを1から書くので、最初は(PyTorchのテンソルへのインデックス参照以外には)Pythonの基本機能のみを用いる。その後、Pythonの基本機能のみで書いた部分の動作を確認をしてから、PyTorchの機能で置き換えていく。

17.1.1 ニューロンのモデリング

 ニューロンは、一定数の入力を受け取るが、それらに対応した重みを内部に保持している。入力に重みを付けて足し合わせ、さらに内部に保持したバイアスを加える。数式で書くと次のようになる。

 ここで、入力は、重みは、バイアスは ...

Get PyTorchとfastaiではじめるディープラーニング ―エンジニアのためのAIアプリケーション開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.