0章「まえがき」
1章「Python入門」
2章「パーセプトロン」
3章「ニューラルネットワーク」
4章「ニューラルネットワークの学習」
5章「誤差逆伝播法」(今回はここ!)
4章「ニューラルネットワークの学習」では、
と定義されていた。
前回はサラッと流したが、
改めて考えれば、
一般的にいう「学習」(*1)とは、ぜんぜん意味が違うことに気づく。
機械学習も、コンピュータが勝手に学習してなんでもできるようになる、
という勘違いが一部にあり、
それがひいては、
AIはなんでもできるような話になってしまうのだが、
ここでいう学習とは極めて限定的な定義なのだ。
そして、
その定義に基づいた学習の手順は、
次の4つからなる。
今回、この章では、
手順2の誤差逆伝播法を、
「計算グラフ」という手法を使って、ていねいに解説している。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/02/F0996EF3-F74A-4211-BA94-DC58F98E546C.jpeg?resize=500%2C264&ssl=1)
計算グラフの例。グラフといっても図形的。
視覚的に理解が可能という計算グラフは、
文系頭にもすんなり入ってくる。
キモである
「局所的な計算」や、
合成関数の微分の「連鎖律」が、
計算グラフではひじょうにわかりやすい。
さらに、
ニューラルネットワークの機能ごとに、
「層(レイヤ)」にまとめ、
それを、
「クラス」で実装するのもポイントだ(p10ー11に解説あり)。
なお、ここらへんの考え方は、
『オブジェクト指向でなぜつくるのか第2版」
に詳しい。
![](https://i0.wp.com/uncle-kanazawa.com/wp-content/uploads/2020/02/927A2AAF-E95F-49A5-80C8-2E32FEE6F19C.jpeg?resize=375%2C500&ssl=1)
オブジェクト指向は、IT系の試験には頻出項目。
最終的に、
各種レイヤを組み合わせ、
2層のニューラルネットワークを実装する。
この膨大な(わたしにとって)コードを読み解くのは宿題にして、
レイヤとして「モジュール化」(*2)することで、
5層、10 層、20 層・・・と大きなネットワークを
まるでレゴブロックを組み立てるように、
かんたんにつくることができる、
というのはすごいと思った。
さて、
3〜5章にわたってくわしく解説されてきた
ニューラルネットワーク。
量は多いが読み返すたびに気づきがある。
何度も何度も読み返したい。