関連サイト
本書の関連ページが用意されています。
内容紹介
ディープラーニングの世界へようこそ! 本書は、機械学習やデータ分析を専門とはしない、一般の方を対象とした書籍です。― と言っても、ディープラーニングの歴史や人工知能の将来展望を語る啓蒙書ではありません。ディープラーニングの代表とも言える「畳み込みニューラルネットワーク」を例として、その仕組みを根本から理解すること、そして、TensorFlowを用いて実際に動作するコードを作成することが本書の目標です。
ディープラーニングの解説記事で必ず登場するのが、多数のニューロンが何層にも結合された「多層ニューラルネットワーク」の模式図です。このニューラルネットワークの中でいったいなにが起きているのか、ディープラーニングのアルゴリズムはどのような仕組みで学習をしているのか、「何とかしてこれを理解したい!」 ― そんな気持ちを持ったあなたこそが、本書が対象とする読者です。
実の所、ディープラーニングの根底にあるのは、古くからある機械学習の仕組みそのものです。簡単な行列計算と微分の基礎がわかっていれば、その仕組みを理解することはそれほど難しくはありません。本書では、手書き文字の認識処理を行う畳み込みニューラルネットワークについて、これを構成する1つひとつのパーツの役割を丁寧に解説していきます。さらに、ディープラーニングの学習処理ライブラリであるTensorFlowを利用して、実際に動作するコードを用いながらそれぞれのパーツの動作原理を確認します。レゴブロックを組み立てるかのように、ネットワークを構成するパーツを増やしていくことで、認識精度が向上する様子が観察できることでしょう。
ちなみに、TensorFlowの公式Webサイトでは、チュートリアルとしてさまざまなサンプルコードが公開されています。これらのコードを実行してみたものの、コードの中身がよくわからず、自分なりの応用をしようにもどこから手をつけていいのかわからない ― そんな声を耳にすることもあります。本書を通して、ディープラーニングの根本原理、そして、TensorFlowのコードの書き方を学習すれば、次のステップが見えてくるはずです。ディープラーニングの奥深さ、そして、その面白さを味わうことは、決して専門家だけの特権ではありません。本書によって、知的探究心にあふれる皆さんが、ディープラーニングの世界へと足を踏み入れるきっかけを提供できたとすれば、筆者にとってこの上ない喜びです。
(本書「はじめに」より抜粋)
本書では、TensorFlowをインストール済みのDocker用コンテナイメージを用いて説明を行っていきます。Linux、Mac OS X、Windowsなどの環境で、Dockerを利用して環境を起動することができます。また、TensorFlow 0.9.0(GPU非対応版)、Python 2.7を使用しています。
ハードウェア環境は、4コアCPUと4GB以上の物理メモリーを想定しています。メモリー容量がこれより少ない場合、第4章、および、第5章のサンプルコードが実行できない場合がありますのでご注意ください。
書誌情報
- 著者: 中井悦司
- 発行日: 2016-09-28 (紙書籍版発行日: 2016-09-28)
- 最終更新日: 2016-10-28
- バージョン: 1.1.0
- ページ数: 268ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
中井悦司
1971年4月大阪生まれ。ノーベル物理学賞を本気で夢見て、理論物理学の研究に没頭する学生時代、大学受験教育に情熱を傾ける予備校講師の頃、そして、華麗なる(?)転身を果たして、外資系ベンダーでLinuxエンジニアを生業にするに至るまで、妙な縁が続いて、常にUnix/Linuxサーバーと人生を共にする。その後、Linuxディストリビューターのエバンジェリストを経て、現在は、大手検索システム企業にてクラウド・ソリューションアーキテクトとして活動。
休日は、小学2年生の愛娘とスポーツクラブのプールに通う、近所で評判の「よいお父さん」。「世界平和」のために早めの帰宅を心がけるものの、こよなく愛する場末の飲み屋についつい立ち寄りがちな今日このごろ。最近は、機械学習をはじめとするデータ活用技術の基礎を世に広めるために、講演活動のほか、雑誌記事や書籍の執筆にも注力。
目次
Chapter 01 TensorFlow入門
- 1-1 ディープラーニングとTensorFlow
- 1.1.1 機械学習の考え方
- 1.1.2 ニューラルネットワークの必要性
- 1.1.3 ディープラーニングの特徴
- 1.1.4 TensorFlowによるパラメーターの最適化
- 1-2 環境準備
- 1.2.1 CentOS 7での準備手順
- 1.2.2 Jupyterの使い方
- 1-3 TensorFlowクイックツアー
- 1.3.1 多次元配列によるモデルの表現
- 1.3.2 TensorFlowのコードによる表現
- 1.3.3 セッションによるトレーニングの実行
Chapter 02 分類アルゴリズムの基礎
- 2-1 ロジスティック回帰によるニ項分類器
- 2.1.1 確率を用いた誤差の評価
- 2.1.2 TensorFlowによる最尤推定の実施
- 2.1.3 テストセットを用いた検証
- 2-2 ソフトマックス関数と多項分類器
- 2.2.1 線形多項分類器の仕組み
- 2.2.2 ソフトマックス関数による確率への変換
- 2-3 多項分類器による手書き文字の分類
- 2.3.1 MNISTデータセットの利用方法
- 2.3.2 画像データの分類アルゴリズム
- 2.3.3 TensorFlowによるトレーニングの実施
- 2.3.4 ミニバッチと確率的勾配降下法
Chapter 03 ニューラルネットワークを用いた分類
- 3-1 単層ニューラルネットワークの構造
- 3.1.1 単層ニューラルネットワークによる二項分類器
- 3.1.2 隠れ層が果たす役割
- 3.1.3 ノード数の変更と活性化関数の変更による効果
- 3-2 単層ニューラルネットワークによる手書き文字の分類
- 3.2.1 単層ニューラルネットワークを用いた多項分類器
- 3.2.2 TensorBoardによるネットワークグラフの確認
- 3-3 多層ニューラルネットワークへの拡張
- 3.3.1 多層ニューラルネットワークの効果
- 3.3.2 特徴変数に基づいた分類ロジック
- 3.3.3 補足:パラメーターが極小値に収束する例
Chapter 04 畳み込みフィルターによる画像の特徴抽出
- 4-1 畳み込みフィルターの機能
- 4.1.1 畳み込みフィルターの例
- 4.1.2 TensorFlowによる畳み込みフィルターの適用
- 4.1.3 プーリング層による画像の縮小
- 4-2 畳み込みフィルターを用いた画像の分類
- 4.2.1 特徴変数による画像の分類
- 4.2.2 畳み込みフィルターの動的な学習
- 4-3 畳み込みフィルターを用いた手書き文字の分類
- 4.3.1 セッション情報の保存機能
- 4.3.2 単層CNNによる手書き文字の分類
- 4.3.3 動的に学習されたフィルターの確認
Chapter 05 畳み込みフィルターの多層化による性能向上
- 5-1 畳み込みニューラルネットワークの完成
- 5.1.1 多層型の畳み込みフィルターによる特徴抽出
- 5.1.2 TensorFlowによる多層CNNの実装
- 5.1.3 手書き文字の自動認識アプリケーション
- 5-2 その他の話題
- 5.2.1 CIFAR-10(カラー写真画像)の分類に向けた拡張
- 5.2.2 「A Neural Network Playground」による直感的理解
- 5.2.3 補足:バックプロパゲーションによる勾配ベクトルの計算
Appendix
- A Mac OS XとWindowsでの環境準備方法
- B Python 2の基本文法
- C 数学公式