ゼロから作るDeep Learning | 書評

内容概略

星5つ

Pythonを用いて数字を認識するディープラーニングをゼロから構築する

本書を読んだ理由

昨今、世間でAIが注目されている。AIを用いた将棋や囲碁は人間の名人レベルを超えてしまった。また、将来、AIによって仕事が奪われる職種が話題に上がっている。

AIの能力が急速に向上した要因の一つはディープラーニングの進展である。

このディープラーニングの基礎を学び、AIを使うための第一歩とするために本書を選定した。

評価

オライリーにの出版物には良い印象が無かった。昔、Palm用のソフトウェアを開発しようとしてオライリーの本を買ったことがある。しかし、心構えばかりのような内容と、意味が伝わりにくい翻訳だったため、結局ソフトウェアを作ることが出来なかった。それ以来、オライリーの本には手を出さなかった。

今回、下調べの結果、この本の評価が高かったので、購入した。

読み始めてすぐに、分かりやすく書かれていることが分かった。

ソフトウェアのインストールの仕方、バージョンの確認、簡単な関数の説明等は、著者のようなエキスパートにとって、執筆が最も苦痛に感じる個所に違いない。しかし、この部分がとても丁寧に書かれていることに好感が持てた。また、日本人が書いているので、苦し紛れに翻訳した個所が無く、読むことにストレスを感じることもなかった。

Pythonのプログラムコードはダウンロードすることができて、簡単に実行することが出来る。しかし、面倒であっても、ほとんどすべてのコードを手で打ち込んだ。その際、進捗の管理も兼ねて、節番号を名前にしたファイルを作成するようにした。

ミスタイプは多数発生した。ただし、ミスタイプを訂正することにより、Pythonのシンタックスに慣れることができた。Pythonは、インデントを重視するところが他の言語と大きく異なることが分かった。

Pythonは、行列演算を容易に表現できることも分かった。このため、ディープラーニングに適した言語と称されるのであろう。

この本の中で、最も驚いたのは、図7-26である。8層のニューラルネットワークの中間層における情報を図示している。浅い層では、横縞や斜めの縞が抽出され、深い層になると元の物体の形に再び近づいている。動物の脳では、ある特定の形に反応する脳細胞があるという話を聞いたことがあり、それが模擬されているように思えた。

理解できていないこと

早く読み進めてしまったこともあって、プログラムにおける誤差逆伝播法の動作メカニズムが理解できていない。バッチ処理についても理解できていない。3次元データの畳み込み演算も理解できていない。MNIST形式のようなデータセットを自分で作る方法も分からない。

これらの理解できていない事柄については、将来、自分でディープラーニングシステムを構築する必要が生じたとき、この本を再度参照しながら作ればなんとかなると思える。現時点では突き詰めて学習しなおすつもりはない。

トラブル対応

その1

P.73で、load_mnist関数を用いてMNISTデータを取得するように書かれている。

しかし、試してみた環境ではインターネットから.gzファイルをダウンロードすることが出来なかった。

そこで、ブラウザで当該サイトに接続し、手動で4つの.gzファイルをダウンロードしてdatasetフォルダの下に置いたところ、無事に動作するようになった

その2

3.6.2で、単純にソースコードを打ち込んでも実行することが出来なかった。

原因は、コードの最初の方に「import pickle」という一行が抜けていたことであった。

書籍情報

斎藤康毅:ゼロから作るDeep Learning – Pythonで学ぶディープラーニングの理論と実装、オライリー・ジャパン、2016、ISBN978-4-87311-758-4

シェアする

  • このエントリーをはてなブックマークに追加

フォローする