編集者の選択
1. この本は TensorFlow をツールとして使用し、基本的な MNIST 手書き認識から始まり、基本的な畳み込みニューラル ネットワーク、リカレント ニューラル ネットワークを紹介し、最先端の敵対的生成ネットワーク、深層強化学習などのトピックも含みます。コードは TensorFlow に基づいています。 1.4 .0 以降のバージョン。
2. 本書のすべての内容は、実践的な実験に使用できる 21 のプロジェクトにまとめられており、TensorFlow の教育も散りばめられているため、ディープラーニング分野の基礎知識を実際に簡単に学び、使い方をマスターできます。 TensorFlow の基礎を学び、ディープラーニングに関する豊富な実践経験を蓄積します。
3. この本を通じて、次のことを学ぶことができます。
実践的な演習を通じてディープラーニングの分野を簡単に紹介します。
TensorFlowの操作方法を実験を通じて素早くマスターします。
畳み込みニューラルネットワーク、リカレントニューラルネットワーク、敵対的生成ネットワーク、深層強化学習などの深層学習をマスターし、画像分類、対象検出、顔認識、画像生成、テキスト生成、系列分類、画像生成など実践的な豊富な深層学習プロジェクトを蓄積時系列や予報など
TimeSeries モジュール、RNNCell など、TensorFlow のいくつかの新機能を学びます。
簡単な紹介
「ディープラーニングで遊ぶ 21 のプロジェクト - TensorFlow に基づいた詳細な実践解説」は実践志向で、ディープラーニング技術と TensorFlow フレームワーク プログラミング コンテンツについて詳しく紹介します。この本を通じて、読者は独自の画像認識モデルをトレーニングし、ターゲット検出と顔認識を実行し、スタイル転送アプリケーションを完成させることができます。また、ニューラル ネットワークを使用して画像とテキストを生成し、時系列予測を実行し、機械翻訳エンジンを構築し、ゲームをプレイするためにマシンを訓練します。この本には、深層畳み込みネットワーク、RNN ネットワーク、深層強化学習の 3 つのパートに分かれた合計 21 のプロジェクトが含まれています。読者は、自らの実践的な実践を通じて学習の喜びを感じ、アルゴリズムとプログラミング フレームワークの詳細を理解することができ、深層学習アルゴリズムと TensorFlow の学習プロセスを簡単かつ効率的にすることができます。この本のコードは TensorFlow 1.4 以降に基づいており、TensorFlow のいくつかの新機能が導入されています。
この本は、機械学習の一定の基礎を持っている学生、研究者、実践者、特に TensorFlow と深層学習アルゴリズムを深く学びたいデータ エンジニアに適しています。また、人工知能と深層学習に興味がある学生にも適しています。ビッグデータ応用の研究者。
著者について
He Zhiyuan 氏、Zhihu コラム AI Insight の著者。 TensorFlow の初期学習事例が不足していることに対応して、私はオンラインで実践的な記事や TensorFlow チュートリアルを多数書きましたが、そのチュートリアル スタイルは、深みを損なうことなく明確で理解しやすく、読者に認められています。プログラミングが大好きで、人工知能とディープラーニングの分野で豊富な実践経験があります。
目次
第 1 章 MNIST 機械学習の概要 1
1.1 MNIST データセット 2
1.1.1 はじめに 2
1.1.2 実験: MNIST データセットを図 5 のように保存します。
1.1.3 画像ラベルのワンホット表現 6
1.2 TensorFlow を使用して MNIST 8 を識別する
1.2.1 ソフトマックス回帰 8
1.2.2 2 層畳み込みネットワークの分類 14
1.3 概要 18
第 2 章 CIFAR-10 と ImageNet 画像認識 19
2.1 CIFAR-10 データセット 20
2.1.1 CIFAR-10 の概要 20
2.1.2 CIFAR-10 データのダウンロード 21
2.1.3 TensorFlow のデータ読み取りメカニズム 23
2.1.4 実験: CIFAR-10 データセットを画像として保存する 30
2.2 TensorFlow を使用した CIFAR-10 認識モデルのトレーニング 34
2.2.1 データ拡張 34
2.2.2 CIFAR-10 認識モデル 36
2.2.3 トレーニングモデル 39
2.2.4 TensorFlow 39 でトレーニングの進行状況を表示する
2.2.5 テストモデルの効果 42
2.3 ImageNet 画像認識モデル 44
2.3.1 ImageNet データセットの概要 44
2.3.2 以前の ImageNet 画像認識モデル 45
2.4 まとめ 49
第 3 章 独自の画像認識モデルの構築 50
3.1 微調整の原則 51
3.2 データの準備 52
3.3 TensorFlow Slim 56 を使用したモデルの微調整
3.3.1 TensorFlow Slim 56 のソースコードをダウンロードする
3.3.2 新しいデータセット ファイルを定義する 57
3.3.3 トレーニングフォルダーの準備 59
3.3.4 トレーニングの開始 60
3.3.5 トレーニング プログラムの動作 62
3.3.6 モデルの精度を検証する 63
3.3.7 TensorBoard の視覚化とハイパーパラメータの選択 64
3.3.8 モデルをエクスポートして単一のイメージを識別する 65
3.4 まとめ 69
第4章 深夢モデル70
4.1 Deep Dream 71 の技術原理
4.2 TensorFlow 73 での Deep Dream モデルの実践
4.2.1 インポート開始モデル 73
4.2.2 オリジナルの Deep Dream イメージの生成 76
4.2.3 より大きなサイズの Deep Dream 画像の生成 78
4.2.4 より高品質の Deep Dream 画像の生成 82
4.2.5 最終ディープドリームモデル 87
4.3 まとめ 90
第 5 章 深層学習における物体検出 91
5.1 深層学習におけるターゲット検出の原理 92
5.1.1 R-CNN 92 の原則
5.1.2 SPPNet 94 の原則
5.1.3 高速 R-CNN 97 の原理
5.1.4 より高速な R-CNN 98 の原則
5.2 TensorFlow オブジェクト検出 API 101
5.2.1 TensorFlow オブジェクト検出 API 101 のインストール
5.2.2 トレーニング済みモデルの実行 103
5.2.3 新しいモデルのトレーニング 109
5.2.4 モデルをエクスポートして単一画像を予測する 113
5.3 概要 114
第 6 章 顔検出と顔認識 115
6.1 MTCNN 116 の原則
6.2 深層畳み込みネットワークを使用した特徴抽出 121
6.2.1 三重項損失の定義 123
6.2.2 中心損失の定義 123
6.3 機能を使用したアプリケーションの設計 125
6.4 TensorFlow 126 での顔認識の実装
6.4.1 プロジェクト環境設定 126
6.4.2 LFW 顔データベース 127
6.4.3 LFW データベースでの顔の検出と位置合わせ 128
6.4.4 既存のモデルを使用して LFW データベースの精度を検証する 129
6.4.5 独自のデータで既存のモデルを使用する 130
6.4.6 新しいモデルの再トレーニング 133
6.4.7 三重項損失と中心損失の定義 138
6.5 概要 140
第 7 章 画像スタイルの転送 141
7.1 画像スタイル転送の原則 142
7.1.1 オリジナル画像スタイル転送の原理 142
7.1.2 高速画像スタイル転送の原理 148
7.2 TensorFlow 149 での高速スタイル転送の実装
7.2.1 事前トレーニング済みモデルの使用 150
7.2.2 独自のモデルのトレーニング 153
7.2.3 TensorBoard 154 でのトレーニングのモニタリング
7.2.4 プロジェクト実施の詳細 157
7.3 概要 162
第 8 章 GAN および DCGAN の入門 163
8.1 GAN 164 の原則
8.2 DCGAN 166 の原則
8.3 DCGAN を使用して TensorFlow で画像を生成する 169
8.3.1 MNIST イメージの生成 170
8.3.2 独自のデータセットを使用したトレーニング 171
8.3.3 プログラム構造解析: 画像をモデルに読み込む方法 173
8.3.4 プログラム構造解析:可視化手法 177
8.4 まとめ 180
第9章 pix2pixモデルと自動着色技術 181
9.1 cGAN 182 の原理
9.2 pix2pix モデルの原理 184
TensorFlow 187 の 9.3 pix2pix モデル
9.3.1 既存のデータセットの実行 187
9.3.2 独自のデータセットの作成 191
9.4 TensorFlow を使用してグレースケール画像を自動的に色付けする 194
9.4.1 食べ物の画像に色を付ける 194
9.4.2 アニメーション画像の着色 196
9.5 まとめ 198
第10章 超解像:画像をより鮮明にする方法 199
10.1 データの前処理とトレーニング 200
10.1.1 間違った写真を削除する 200
10.1.2 画像を均一サイズにトリミングする 202
10.1.3 コードへの新しい操作の追加 202
10.2 概要 209
第 11 章 CycleGAN とペアになっていない画像変換 210
11.1 CycleGAN 211の原理
11.2 TensorFlow 213 での CycleGAN モデルのトレーニング
11.2.1 データセットをダウンロードしてトレーニングする 213
11.2.2 独自のデータを使用したトレーニング 217
11.3 プログラム構造の分析 220
11.4 概要 224
第 12 章 RNN の基本構造と Char RNN テキスト生成 225
12.1 RNN 226 の原則
12.1.1 クラシック RNN 226 の構造
12.1.2 N VS 1 RNN 229 の構造
12.1.3 1 VS N RNN 230 の構造
12.2 LSTM 231 の原則
12.3 Char RNN 235 の原則
12.4 TensorFlow 237 での RNN 実装
12.4.1 RNN を実装するための基本ユニット: RNNCell 238
12.4.2 RNN のスタッキング: MultiRNNCell 239
12.4.3 注: BasicRNNCell および BasicLSTMCell の出力 240
12.4.4 tf.nn.dynamic_rnn を使用した時間次元の拡張 241
12.5 TensorFlow 242 を使用した Char RNN の実装
12.5.1 入力データの定義 243
12.5.2 多層 LSTM モデルの定義 244
12.5.3 損失の定義 245
12.5.4 モデルのトレーニングとテキストの生成 246
12.5.5 その他のパラメータの説明 250
12.5.6 独自のデータの実行 250
12.6 まとめ 251
第 13 章 数列分類問題の詳細解説 252
13.1 N VS 1 253 の RNN 構造
13.2 シーケンス分類問題とデータ生成 254
13.3 TensorFlow 258 での RNN 分類モデルの定義
13.3.1 モデルを定義する前の準備作業 258
13.3.2 RNN 分類モデルの定義 259
13.3.3 損失とトレーニングの定義 261
13.4 モデル 262 の一般化
13.5 概要 263
第 14 章 単語のベクトル表現: word2vec と単語埋め込み 264
14.1 単語の埋め込みが必要な理由 265
14.2 単語埋め込みの原則 266
14.2.1 CBOW 266 によって実装される単語埋め込みの原理
14.2.2 単語埋め込みを実装するための Skip-Gram の原理 269
14.3 TensorFlow 270 での単語埋め込みの実装
14.3.1 データセット 270 のダウンロード
14.3.2 語彙リストの作成 272
14.3.3 各ステップのトレーニング サンプルを生成する 274
14.3.4 モデル 276 の定義
14.3.5 トレーニングの実施 279
14.3.6 視覚化 281
14.4 第 12 章 284 との比較
14.5 概要 285
第 15 章 TensorFlow での時系列予測 286
15.1 時系列問題の一般形式 287
15.2 TFTS 287 を使用した時系列データの読み取り
15.2.1 Numpy 配列からの時系列データの読み取り 288
15.2.2 CSVファイルから時系列データを読み込む 291
15.3 AR モデルを使用した時系列の予測 293
15.3.1 AR モデル 293 のトレーニング
15.3.2 ARモデル295の検証と予測
15.4 LSTM モデルを使用した時系列の予測 297
15.4.1 LSTM モデルの一変量時系列予測 297
15.4.2 LSTM モデルにおける多変量時系列予測 299
15.5 概要 301
第 16 章 ニューラルネットワーク機械翻訳技術 302
16.1 Encoder-Decoder モデル 303 の原理
16.2 注意305
16.3 TensorFlow NMT を使用してニューラル ネットワーク変換エンジンを構築する 309
16.3.1 例: ベトナム語から英語への翻訳 309
16.3.2 中国語-英語翻訳エンジンの構築 313
16.4 TensorFlow NMT ソース コード 317 の概要
16.5 概要 319
第 17 章 写真で語る: 画像をテキストに変換する 320
17.1 画像キャプション技術の概要 321
17.1.1 Encoder-Decoder 構造からの開始 321
17.1.2 エンコーダ/デコーダを画像キャプションに適用するタスク 322
17.1.3 エンコーダ/デコーダの改善 1: アテンション メカニズム 323
17.1.4 エンコーダ/デコーダの改善 2: 高レベルのセマンティクスの追加 325
17.2 TensorFlow 327 での画像キャプションの実装
17.2.1 ダウンロードコード 327
17.2.2 環境の準備 328
17.2.2 コンパイルとデータの準備 328
17.2.3 トレーニングと検証 330
17.2.4 単一イメージのテスト 331
17.3 概要 332
第18章 強化学習の概要 Q 333
18.1 強化学習におけるいくつかの重要な概念 334
18.2 Qラーニング336の原理と実験
18.2.1 環境定義 336
18.2.2 Q関数338
18.2.3 Q 関数の学習戦略 339
18.2.4 ?-貪欲戦略 341
18.2.5 単純な Q 学習例 341
18.2.6 より複雑な状況 342
18.3 概要 343
第 19 章 強化学習の概要: SARSA アルゴリズム 344
19.1 SARSA アルゴリズムの原理 345
19.1.1 Q Learning 345 と比較して SARS アルゴリズムを学習する
19.1.2 オフポリシーとオンポリシー
19.2 SARSA アルゴリズムの実装 347
19.3 概要 348
第 20 章 深層強化学習: Deep Q ラーニング 349
20.1 DQN アルゴリズムの原理 350
20.1.1 問題 350 の概要
20.1.2 ディープ Q ネットワーク 351
20.1.3 トレーニング方法 352
20.2 TensorFlow 353 での DQN アルゴリズムの実行
20.2.1 依存ライブラリのインストール 353
20.2.2 トレーニング 355
20.2.3 テスト 356
20.3 TensorFlow 357 における DQN アルゴリズムの実装分析
20.4 概要 360
第 21 章 ポリシー勾配アルゴリズム 361
21.1 ポリシー勾配アルゴリズムの原則 362
21.1.1 カートポール ゲーム 362
21.1.2 ポリシーネットワーク 363
21.1.3 研修政策ネットワーク 364
21.2 TensorFlow 365 でのポリシー勾配アルゴリズムの実装
21.2.1 初期化 365
21.2.2 ポリシーネットワークの定義 366
21.2.3 トレーニング367
21.3 概要 371
序文/序文
私たちは急速な変化の時代におり、終わりのない新しいテクノロジーが私たちの生活に日々影響を与え、変化させています。人工知能は間違いなく、最も注目を集め、最も広範囲に影響を与える技術分野です。それはコンピュータに翼を与え、以前は想像もできなかった多くの新しい技術やアプリケーションを進化させました。事前知識のない人工知能マシンである AlphaGoZero は、セルフプレイを通じて数日で世界一の囲碁マスターに成長し、人間の数千年にわたる蓄積された経験を超え、スタイル転送アプリケーションはユーザーの写真を自動的に変換できます。有名な絵画芸術スタイルであり、この機械は、ある言語から別の言語への翻訳を数十分 1 秒で完了します。さらに、顔認証や自動運転などの新技術の応用も始まっています。ここ数年、人工知能技術は学術的に大きな進歩を遂げただけでなく、一般の人々の家庭にも普及し始めており、人々の生活に真の利便性をもたらしています。
この本は主に、この人工知能の波の最も重要なコンポーネントである深層学習テクノロジーを読者に紹介しており、使用されているプログラミング フレームワークは Google の TensorFlow です。 Google の大きな影響力もあり、TensorFlow はリリースと同時に広く注目を集め、現在(2017 年末時点)、Github 上で TensorFlow のスター数は 84,000 を超え、ディープ ラーニング フレームワークの中で最も多くなっています。
ディープラーニングやTensorFlowの入門書は数多く発売されているので、本書との違いを中心に説明していきます。
実践と応用のオリエンテーション。ディープラーニングには深い数学的基礎が必要であり、初心者にとってはあまり親切ではありません。この本は、実践からスタートし、具体的な例を使用して読者が深層学習テクノロジーと TensorFlow プログラミング スキルを学習できるようにガイドしたいと考えています。主に実用性と楽しさの2つの側面を考慮し、MNIST画像認識などの入門プロジェクトをはじめ、対象物検出、顔認識、時系列予測などの実践的なプロジェクト、さらには、ディープドリームとして。読者は実践で楽しみを見つけて徐々に進歩し、ディープ ラーニングと TensorFlow を学習するプロセスを苦痛でなくすることができます。
明確で詳細なプレゼンテーション。この本を執筆する過程で、私たちはアルゴリズムの原理を説明し、明確かつ体系的に説明するために簡単な言語を使用するよう努めました。また、ディープラーニングは現在も急速に発展している新しい技術です。紙面の都合上、本書に書ききれない内容も多くあります。ほとんどの章の最後に詳細な読み物を掲載しています。興味のある方は詳細な資料を参照してください。読み物 詳しい知識をさらに学ぶための教材。
TensorFlow1.4 バージョンに基づいています。 TensorFlow は非常に急速に開発されており、この本のコードはすべて TensorFlow の最新バージョン 1.4 (1.4.0 および 1.4.1 を含む) に基づいており、TimeSeries モジュール (バージョン 1.3 で追加) などの TensorFlow のいくつかの新機能が導入されています。 )、新しいMultiRNNCell機能(1.2バージョンの変更)など。この本のコードは次の Github アドレスで提供され、新しい TensorFlow バージョンのリリースと同時に更新されます: https://github.com/hzy46/Deep-Learning-21-Examples。
本書のコードの推奨動作環境は、Ubuntu14.04、Python2.7、TensorFlow1.4.0です。 Unix 風のシステムと Python2 を使用して、この本のコードを実行してみてください。
この本の主な内容
本書は全 21 章からなり、内容は次のように構成されています。
第 1 章から第 11 章までは主に深層畳み込みニューラル関連のプロジェクトを紹介します。このうち第 1 章から第 3 章は入門章であり、主に深層学習における最も基本的な画像認識問題について説明します。第 4 章から第 7 章では、ターゲット認識、顔認識、画像スタイル転送など、その他のコンピュータ ビジョン関連の実際的な事例について説明します。最後に、第 8 章から第 11 章では、GAN モデルとその重要なバリアントのいくつかを紹介します。
第 12 章から第 17 章では主に RNN と LSTM 関連のプロジェクトを紹介します。シーケンスデータの処理には通常 RNN と LSTM が使用されますが、第 12 章は入門章として RNN と LSTM の原理、実装方法、応用例 (CharRNN) を詳しく紹介します。第 13 章から第 17 章では、シーケンス分類、単語埋め込み表現、時系列予測、機械翻訳など、より複雑で具体的なケースについて説明します。
第 18 章から第 21 章では主に強化学習に関連するプロジェクトを紹介します。基礎として、第 18 章と第 19 章では比較的単純な QLearning アルゴリズムと SARSA アルゴリズムをそれぞれ紹介し、第 20 章と第 21 章ではより複雑な DQN アルゴリズムとポリシー勾配アルゴリズムを紹介します。
この本の読み方
本書を読む前に、読者は Linux システムの基本操作を理解し、Python を使用して簡単なプログラミングができること、さらに機械学習の基本的な知識を持っている必要があります。本書の章の配置は、ディープラーニングに対する読者の理解に基づいているため、初心者は前から後ろに読むことをお勧めします。ディープ ラーニングと TensorFlow はどちらも理解するのが簡単ではないため、読者にはこの本を数回に分けて読むことをお勧めします。
初めて、この本にざっと目を通して、どのような実践的なプロジェクトがこの本に含まれているかを確認してください。基本概念を予備的に理解したら、開発環境の構成を試みることができます。
2 回目は、前から後ろに各章のアルゴリズムの原理を読み、対応する実践的なプロジェクトを実行します。この過程で、読者の皆さんが自ら実践する過程で学ぶ楽しさを感じていただければ幸いです。読者は、ソース コードと本の内容を比較して各モデルの詳細を詳しく学習したり、必要に応じてコードを変更したりできます。本書では TensorFlow の多数の関数を取り上げます。紙面の都合上、すべての関数を紹介することはできません。本書ではより重要な関数のみを紹介します。読者は TensorFlow の公式ドキュメントを参照して関数を確認できます。その他の機能について説明します。
3 回目は、必要に応じてソース プログラムと照らし合わせて関連する章を読みます。さらに、読者は章の最後にある多読資料を参照してさらに学習することもできます。最後に、ディープ ラーニングと TensorFlow に精通している場合は、必要に応じて関連する章に直接ジャンプして、必要な内容を確認することもできます。
謝辞
まず、私を育ててくれた両親に感謝し、両親がいつまでも健康で幸せでいてくれることが私の最大の願いです。
インターネット時代のおかげで、インターネット上の無数の優れた開発者やブロガーのおかげで、そして Google のオープンソース精神のおかげで、私たちは時代の最先端のテクノロジーを追い続け、世界にささやかな貢献をすることができました。テクノロジーの進歩。
また、本書を認識し、関心を寄せてくださった Electronic Industry Press にも心から感謝いたします。 Electronic Industry Press の Sun Xueying さんの熱心な宣伝のおかげで、最終的に私と Electronic Industry Press との協力が実現しました。編集者 Sun Yadong に感謝します。この本に対する彼の関心と誠実な提案は、執筆プロセスにおいて大きな助けとなりました。
最後に、この本について貴重なコメントをくださった同級生のLiu Jingyuanさんに感謝したいと思います。
私のレベルが限られているため、本に不備や誤りがあることは避けられませんので、専門家や読者の皆様の批判と修正をお願いします。私と技術的なやり取りをしたい場合は、hzydl21@163.com にフィードバック電子メールを送信するか、Zhihu で私を見つけることができます: https://www.zhihu.com/people/he-zhi-yuan-16 / に加えて、Book Friends フォーラム http://forum.broadview.com.cn にアクセスすることもできます。
何志源
2018年1月1日