関連サイト
本書の関連ページが用意されています。
内容紹介
本書は、ディープラーニングの代表とも言える「畳み込みニューラルネットワーク(CNN)」を例として、その仕組みを根本から理解すること、そして、TensorFlowを用いて実際に動作するコードを動かしながら学べる書籍です。
ディープラーニングについて解説する書籍は多数発行されていますが、本書では、「きちんとニューラルネットワークの原理から理解すること」と、「その原理をどのようにコードとして書くか」の両方がバランスよく学べます。
表面的にコードを覚えるだけでは、応用力は身に付きません。本書で根本から理解しておくことで、現場に出てからも長く使える基礎力を身に付けましょう!
※本書では、プログラムの実行環境としてGoogle Colaboratoryを利用するため、面倒な環境構築は不要です。
※本書は、2016/9発行の『TensorFlowで学ぶディープラーニング入門』をもとに、Python3系、TensorFlow 2.0ベースに書き換えたほか、全体的に解説を見直し、修正しています。そのほか、実行環境をGoogle Colaboratoryに変更、オートエンコーダーによるアノマリー検知やDCGAN による画像生成などのトピックを追加しています。
(以下、本書の「はじめに」より抜粋・編集)
本書は、機械学習やデータ分析を専門とはしない、一般の方を対象とした書籍です。――と言っても、ディープラーニングの歴史や人工知能の将来展望を語る啓蒙書ではありません。ディープラーニングの代表とも言える「畳み込みニューラルネットワーク」を例として、その仕組みを根本から理解すること、そして、TensorFlowを用いて実際に動作するコードを作成することが本書の目標です。
本書は、「TensorFlowで学ぶディープラーニング」(2016/9発行)をもとにした改訂版です。サンプルコードはTensorFlow 2.0対応のKerasで書き直しています。Kerasを用いることでコードの内容はシンプルになりました。さらに、GoogleColaboratoryを用いることで難しい実行環境のセットアップも不要になりました。
さらにまた、改訂にあたり、学習後のモデルを解釈する手法、オートエンコーダによるアノマリー検知、そして、画像生成に用いられるDCGANなど、より高度な話題も内容に含めました。
本書のゴールは、コードの背後に隠された、ニューラルネートワークを構成するさまざまなパーツの動作原理を知り、ディープラーニングの本質を理解することです。
本書では、手書き文字の認識処理を行う「畳み込みニューラルネットワーク」を例として、これを構成する1つひとつのパーツの役割を丁寧に解説しています。また、Kerasを用いることで、数式を意識することなく、ニューラルネットワークを構成するコードが書けるようになりましたが、やはり、数学的な理解も欠かすことはできません。2次元平面のデータを用いた簡単な例を通して、それぞれのパーツの背後にある「数学的な仕組み」も丁寧に解説しています。
書誌情報
- 著者: 中井悦司
- 発行日: 2019-11-28 (紙書籍版発行日: 2019-11-28)
- 最終更新日: 2019-11-28
- バージョン: 1.0.0
- ページ数: 272ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
中井悦司
1971年4月大阪生まれ。ノーベル物理学賞を本気で夢見て、理論物理学の研究に没頭する学生時代、大学受験教育に情熱を傾ける予備校講師の頃、そして、華麗なる(?)転身を果たして、外資系ベンダーでLinuxエンジニアを生業にするに至るまで、妙な縁が続いて、常にUnix/Linuxサーバーと人生を共にする。その後、Linuxディストリビューターのエバンジェリストを経て、現在は、米系IT企業のSolutions Architectとして活動。最近は、機械学習をはじめとするデータ活用技術の基礎を世に広めるために、講演活動のほか、雑誌記事や書籍の執筆にも注力。主な著書は、『[改訂新版]プロのためのLinuxシステム構築・運用技術』『Docker実践入門』『ITエンジニアのための機械学習理論入門』(いずれも技術評論社)、『技術者のための基礎解析学』『技術者のための線形代数学』『技術者のための確率統計学』(いずれも翔泳社)など。
目次
Chapter 01 TensorFlow/Keras入門
- 第1章のはじめに
- 1-1 最小二乗法で学ぶ機械学習の基礎
- 1.1.1 機械学習の考え方
- 1.1.2 勾配降下法によるパラメーターの最適化
- 1-2 TensorFlowとKerasの使い方
- 1.2.1 実行環境の準備
- 1.2.2 Low-level APIによる実装例
- 1.2.3 Kerasによる実装例
- 1-3 ニューラルネットワークの役割
- 1.3.1 分類問題とニューラルネットワーク
- 1.3.2 ディープラーニングの特徴
Chapter 02 分類アルゴリズムの基礎
- 第2章のはじめに
- 2-1 ロジスティック回帰による二項分類器
- 2.1.1 確率を用いた誤差の評価
- 2.1.2 Kerasによるロジスティック回帰の実装
- 2.1.3 テストセットを用いた検証
- 2-2 ソフトマックス関数と多項分類器
- 2.2.1 線形多項分類器の仕組み
- 2.2.2 ソフトマックス関数による確率への変換
- 2-3 線形多項分類器による手書き文字の分類
- 2.3.1 MNIST データセットの利用方法
- 2.3.2 画像データの分類アルゴリズム
- 2.3.3 Kerasによる線形多項分類器の実装
- 2.3.4 ミニバッチと確率的勾配降下法
Chapter 03 ニューラルネットワークを用いた分類処理
- 第3章のはじめに
- 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章のはじめに
- 4-1 畳み込みフィルターの機能
- 4.1.1 畳み込みフィルターの例
- 4.1.2 Kerasによる畳み込みフィルターの適用
- 4.1.3 プーリング層による画像の縮小
- 4-2 畳み込みフィルターを用いた画像の分類
- 4.2.1 特徴変数による画像の分類
- 4.2.2 畳み込みフィルターの動的な学習
- 4-3 畳み込みフィルターを用いた手書き文字の分類
- 4.3.1 単層CNNによる手書き文字の分類
- 4.3.2 動的に学習されたフィルターの確認
Chapter 05 畳み込みフィルターの多層化による性能向上
- 第5章のはじめに
- 5-1 畳み込みニューラルネットワークの完成
- 5.1.1 多層型の畳み込みフィルターによる特徴抽出
- 5.1.2 Kerasによる多層CNNの実装
- 5.1.3 手書き文字の認識アプリケーション
- 5-2 学習済みフィルターの解釈
- 5.2.1 フィルターの出力を最大化する画像の構成
- 5.2.2 予測への影響が大きい領域の検出
- 5-3 少し高度な話題
- 5.3.1 CIFAR-10(カラー写真画像)の分類に向けた拡張
- 5.3.2 オートエンコーダによるアノマリー検知
- 5.3.3 DCGAN による画像生成モデル