ここのところ、機械学習の勉強をしています。ニューラルネットワーク、ディープラーニングも出てきます。これについては前、調べたことがあって、そのとき自分で数字認識まで実験しています。
初めてだったので苦労もありましたが、勉強になりました。そのとき参考にしたのが タイトルのこの本です。↓
第2章は必要な数学の知識のまとめです。数列、漸化式、Σ、ベクトル、行列、微分、偏微分、連鎖律、勾配降下法といったテーマです。この部分は、高校3年くらいまでの知識があれば心配なところを読むくらいで十分だと思いました。一部、行列の成分による計算が分かっていた方が理解がスムーズかも知れませんが、「~数学入門」なので1冊全体を通して説明はとにかく丁寧です。
ぼくはこの本の次に、次の2冊のディープラーニングに関係する部分を読みました。
もちろん数字認識にはPCが必要ですが、ここで紹介した3冊はどれも特定のプログラミング言語を想定していません。つまり、理論書です。これらの本のことではないですが、こうした理論書について「これを読んでも実際に××(数字認識とか……)はできるようにはなりません(具体的な言語を使った解説ではないため)」みたいなネットの書き込みを見ることがあります。モノによるとは思いますが、少なくとも今回紹介している3冊については、ちゃんと読めば自分でプログラミングできる、そういう内容です。
ディープラーニングではデータの処理をするため「畳み込み層」、「プーリング層」を何枚も用意します(これらはPC内では実数値の2次元配列を割り当てる)。自分で数字認識の実験をしたときには畳み込み層、プーリング層を4,5枚ずつ使いました。『ディープラーニングがわかる数学入門』ではそれぞれ1枚の例しか載せてありません。「入力 → 畳み込み層 → プーリング層 → 出力」というデータの流れで説明しています。しかしこの本の内容を理解すれば、枚数を増やすのは大変なことではないと思います(同じ処理の繰り返しなので)。
ディープラーニングでは入力されたデータをもとに各層で膨大な量の計算をするのですが(ここのデータを何倍してあのデータに加える、など)、その際にたくさん(何十万個とか)のパラメータがあります。正しい認識結果を出すため、これらを微妙に調整しなければなりませんが、それを効率的に行うのが誤差逆伝播法です。これについても大変分かりやすく解説してあります。
「分かりやすい」と書きましたが、数学の本です。小説みたいに寝転がって読めるわけではありません。基本的な数式処理ができない状態で読めば「分かりにくい」ということになるでしょう。先ほどの誤差逆伝播法も、数学の漸化式を抵抗なく式変形などできた方が楽に勉強を進められます。
この本ではExcelで数字の識別の実験をしていますが、ぼくはその部分は読んでいません。しかしプログラムを書く人は、この本を読んだ後なら「自分で実験できる」と思うでしょう。せっかくExcelを使った例が載せてあるのでもちろんそれでも構いませんが、できればやはり1回は自分で(プログラムなどを書いて)試してみるのがよいと思います。
著者が「とにかく分かりやすく!」と書いている気持ちが伝わる気がする、そういう本です。今回復習のためまた読んだのですが、やはり素晴らしかったです。
追記:
ぼくは『ディープラーニングがわかる数学入門』、『画像認識』を参考にして数字認識のプログラムを書きました。「理屈はいいから数字認識したい」と考える人もいるでしょうが、そういう場合はPythonのライブラリなどを使えばよいでしょう。こうした理論書はどうして数字認識が可能なのか、その理由を教えてくれます。個人的には1回は理屈を勉強し、その上でライブラリを使うのがよいと思います。