TensorFlow で学ぶディープラーニング入門~畳み込みニューラルネットワーク徹底解説を読みました。
概要と感想
この本は、 手書き文字の認識処理を MNIST データを利用してすることが目的。
また、Tensorflow で 畳み込みニューラルネットワーク(CNN)を実装することが目的。
章をおうごとにソースコードがパワーアップしていき、認識精度が上がっていくところが面白い。
- 2 章: Softmax をつかった多項分類器
- 3 章:
- 2.単層ニューラルネットワーク
- 3.多層ニューラルネットワーク
- 4 章: 単層 CNN
- 5 章: 多層 CNN
本のはじめににも書いてあるけれども、この本は TensorFlow の公式 Web サイトのチュートリアルで「Deep MNIST for Experts」として紹介されているものをほぼそのまま採用しているそうだ。
私は、公式サイトは読んでいないから差分がどうこういうことはできないけれども、数式を交えて丁寧に解説されていて、わかりやすいと感じた。
なお、Jupyter Notebook が提供されていて、自分の環境で動かしながら勉強できるところがとても気に入った。
この本で提示されている「機械学習の 3 ステップ」が心に残ったので、引用したい。
①与えられたデータを元にして、未知のデータを予測する数式を考える
②数式に含まれるパラメーターの良し悪しを判断する誤差関数を用意する
③誤差関数を最小にするようにパラメーターの値を決定する
TensorFlow について、この本ででてくるコードは毎回似たようなことをしているので、はじめは困惑したのだけれども、繰り返し見ているうちにすらすら意味がわかるようになった。入門レベルとしては、十分力がついたと思う。
環境構築は Anaconda をつかった
この本には、Docker をつかって環境構築をするように書いてあったのだけれども、自分は、Anaconda を利用して読みめてみた。
ツールのバージョンも以下で読んだ。
- Anaconda 4.3.16
- Python 3.6
- TensorFlow 1.0.1
ところどころ元のソースコードに修正が必要になったけれども、全て問題なく動作した。
自分がした修正は以下のリポジトリにあります。
Kaggle で実力試しをした
2017 年現在、Kaggle で MNIST をりようしたコンペが主催されている。
私は、各章を読み終わるたびに、理解度を深めるために Kaggle の MNIST のコンペに挑戦した。
- 2 章: Softmax をつかった多項分類器 kaggle/multiclass-classification.ipynb
- 3 章:
- 2.単層ニューラルネットワーク kaggle/single-layer-network.ipynb
- 3.多層ニューラルネットワーク kaggle/multi-layer-network.ipynb
- 4 章: 単層 CNN kaggle/single-cnn.ipynb
- 5 章: 多層 CNN kaggle/double-layer-cnn.ipynb
これはとてもよい、また楽しい復習方法なので、ぜひオススメしたい。
ただし、この本を参考に実装した結果は、1150 位で 上位 1000 位以内にも入れないけれどもね。