ゼロから作るDeep Learning | 書評

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

シェアする

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

フォローする