機械学習と深層学習 ―C言語によるシミュレーション―の評価

Amazonで見かけて気になってた本だが、池袋のジュンク堂で手にとって見て悪くなかったので購入してみた。

金融工学でもそうだけど、こういった分野の大学の教科書で使われる本は数式を最後に示して終わりという本が多い。

その点この本は数学的な部分を大きく省いている。ニューラルネットのバックプロパゲーションのアルゴリズムについても、その具体的手順は書いてあるがなぜそうなるかまでは書いていない。

そして汎用性はない。この本では画像にフィルタ処理をするという実例でサンプルプログラムを提示している。よって応用ごとに、このようなときはこのようにネットワークを構築するといい、このように畳み込みをするといいといった一般化した方法論が乗っていない。

今回はこのようなことをやる。そしてそれをCにするとこういうコードになるという感じ。

一般化には欠けるが、とにかく具体的に動くコードが欲しい人にとっては良い本。数式だけでわかったようなつもりになって、プログラムを書くところまで落とし込めない人にとってはとっかかりとして良い。

ただ理論的背景があまりにも大雑把すぎるので、そのあたりは人工知能学会からでている本などを読む必要がある。この本を読んだ後で

あとは伊庭さんの本もこの本と同じシリーズで出ているが、これは読み物に近いかもしれない。

あとJavaやC#ではなくてC言語でアルゴリズムが書かれているのが良い。アルゴリズムを把握するにはJavaやC#だとnewしてインスタンスを作ったりコンストラクタを記述したり、目的のアルゴリズム部分に行くまで余計なステップが出てくる。

Cだとmain関数からいきなり書き始めても何の問題もなく、非常にすっきりかける。紙面がソースコードだらけにならないのでC言語で書かれてるのはありがたい。

もちろんこれを実装するのはC言語ではなく最低でもC++を使うべきだが、私はC#で実装している。

とはいってもC#にはAccord.NETという素晴らしいクラス群がオープンソースとして開発されているので、お勉強としては自分でコードを書いたとしても、本番用としては多くの人の目に触れている中で開発されたライブラリを使ったほうがいい。

まずは自分で作ってみてからじゃないとブラックボックスとして使うのは嫌だという人はこの本で一度作ってみるとすっきりすると思う。

この本の巻末で参考文献として提示されているのは、有名な深層学習 Deep Learning (監修:人工知能学会)と深層学習 (機械学習プロフェッショナルシリーズ)の2冊。それと先ほど書いた伊庭さんの本。伊庭さんの本は宣伝的な感じがするが、2016年7月現在においては深層学習においては上の2冊くらいしかまともな本がない。他はイラストでわかるとか数式から逃げて文系でもわかるようにしてある読み物系ばかりである。

厳密な理論を知る場合はこの本の次に深層学習 Deep Learning (監修:人工知能学会)あたりがいいと思う。