0章「まえがき」
1章「Python入門」
2章「パーセプトロン」
3章「ニューラルネットワーク」
4章「ニューラルネットワークの学習」
5章「誤差逆伝播法」(今回はここ!)
4章「ニューラルネットワークの学習」では、
と定義されていた。
前回はサラッと流したが、
改めて考えれば、
一般的にいう「学習」(*1)とは、ぜんぜん意味が違うことに気づく。
機械学習も、コンピュータが勝手に学習してなんでもできるようになる、
という勘違いが一部にあり、
それがひいては、
AIはなんでもできるような話になってしまうのだが、
ここでいう学習とは極めて限定的な定義なのだ。
そして、
その定義に基づいた学習の手順は、
次の4つからなる。
今回、この章では、
手順2の誤差逆伝播法を、
「計算グラフ」という手法を使って、ていねいに解説している。

計算グラフの例。グラフといっても図形的。
視覚的に理解が可能という計算グラフは、
文系頭にもすんなり入ってくる。
キモである
「局所的な計算」や、
合成関数の微分の「連鎖律」が、
計算グラフではひじょうにわかりやすい。
さらに、
ニューラルネットワークの機能ごとに、
「層(レイヤ)」にまとめ、
それを、
「クラス」で実装するのもポイントだ(p10ー11に解説あり)。
なお、ここらへんの考え方は、
『オブジェクト指向でなぜつくるのか第2版」
に詳しい。

オブジェクト指向は、IT系の試験には頻出項目。
最終的に、
各種レイヤを組み合わせ、
2層のニューラルネットワークを実装する。
この膨大な(わたしにとって)コードを読み解くのは宿題にして、
レイヤとして「モジュール化」(*2)することで、
5層、10 層、20 層・・・と大きなネットワークを
まるでレゴブロックを組み立てるように、
かんたんにつくることができる、
というのはすごいと思った。
さて、
3〜5章にわたってくわしく解説されてきた
ニューラルネットワーク。
量は多いが読み返すたびに気づきがある。
何度も何度も読み返したい。