第一部分 深度學習基礎
第1章 什麼是深度學習 2
1.1 人工智能、機器學習與深度學習 2
1.1.1 人工智能 3
1.1.2 機器學習 3
1.1.3 從數據中學習錶示 4
1.1.4 深度學習之“深度” 6
1.1.5 用三張圖理解深度學習的工作原理 7
1.1.6 深度學習已經取得的進展 9
1.1.7 不要相信短期炒作 9
1.1.8 人工智能的未來 10
1.2 深度學習之前:機器學習簡史 11
1.2.1 概率建模 11
1.2.2 早期神經網絡 11
1.2.3 核方法 12
1.2.4 決策樹、隨機森林與梯度提升機 13
1.2.5 迴到神經網絡 14
1.2.6 深度學習有何不同 14
1.2.7 機器學習現狀 15
1.3 為什麼是深度學習,為什麼是現在 15
1.3.1 硬件 16
1.3.2 數據 17
1.3.3 算法 17
1.3.4 新的投資熱潮 17
1.3.5 深度學習的大眾化 18
1.3.6 這種趨勢會持續嗎 18
第2章 神經網絡的數學基礎 20
2.1 初識神經網絡 20
2.2 神經網絡的數據錶示 23
2.2.1 標量(0D張量) 23
2.2.2 嚮量(1D張量) 24
2.2.3 矩陣(2D張量) 24
2.2.4 3D張量與更高維張量 24
2.2.5 關鍵屬性 25
2.2.6 在Numpy中操作張量 26
2.2.7 數據批量的概念 27
2.2.8 現實世界中的數據張量 27
2.2.9 嚮量數據 27
2.2.10 時間序列數據或序列數據 28
2.2.11 圖像數據 28
2.2.12 視頻數據 29
2.3 神經網絡的“齒輪”:張量運算 29
2.3.1 逐元素運算 30
2.3.2 廣播 31
2.3.3 張量點積 32
2.3.4 張量變形 34
2.3.5 張量運算的幾何解釋 34
2.3.6 深度學習的幾何解釋 35
2.4 神經網絡的“引擎”:基於梯度的優化 36
2.4.1 什麼是導數 37
2.4.2 張量運算的導數:梯度 38
2.4.3 隨機梯度下降 38
2.4.4 鏈式求導:反嚮傳播算法 41
2.5 迴顧第一個例子 41
本章小結 42
第3章 神經網絡入門 43
3.1 神經網絡剖析 43
3.1.1 層:深度學習的基礎組件 44
3.1.2 模型:層構成的網絡 45
3.1.3 損失函數與優化器:配置學習過程的關鍵 45
3.2 Keras簡介 46
3.2.1 Keras、TensorFlow、Theano 和CNTK 47
3.2.2 使用Keras 開發:概述 48
3.3 建立深度學習工作站 49
3.3.1 Jupyter筆記本:運行深度學習實驗的首選方法 49
3.3.2 運行Keras:兩種選擇 50
3.3.3 在雲端運行深度學習任務:優點和缺點 50
3.3.4 深度學習的最佳GPU 50
3.4 電影評論分類:二分類問題 51
3.4.1 IMDB 數據集 51
3.4.2 準備數據 52
3.4.3 構建網絡 52
3.4.4 驗證你的方法 56
3.4.5 使用訓練好的網絡在新數據上生成預測結果 59
3.4.6 進一步的實驗 59
3.4.7 小結 59
3.5 新聞分類:多分類問題 59
3.5.1 路透社數據集 60
3.5.2 準備數據 61
3.5.3 構建網絡 61
3.5.4 驗證你的方法 62
3.5.5 在新數據上生成預測結果 65
3.5.6 處理標簽和損失的另一種方法 65
3.5.7 中間層維度足夠大的重要性 65
3.5.8 進一步的實驗 66
3.5.9 小結 66
3.6 預測房價:迴歸問題 66
3.6.1 波士頓房價數據集 67
3.6.2 準備數據 67
3.6.3 構建網絡 68
3.6.4 利用K摺驗證來驗證你的方法 68
3.6.5 小結 72
本章小結 73
第4章 機器學習基礎 74
4.1 機器學習的四個分支 74
4.1.1 監督學習 74
4.1.2 無監督學習 75
4.1.3 自監督學習 75
4.1.4 強化學習 75
4.2 評估機器學習模型 76
4.2.1 訓練集、驗證集和測試集 77
4.2.2 評估模型的注意事項 80
4.3 數據預處理、特徵工程和特徵學習 80
4.3.1 神經網絡的數據預處理 80
4.3.2 特徵工程 81
4.4 過擬閤與欠擬閤 83
4.4.1 減小網絡大小 83
4.4.2 添加權重正則化 85
4.4.3 添加dropout正則化 87
4.5 機器學習的通用工作流程 89
4.5.1 定義問題,收集數據集 89
4.5.2 選擇衡量成功的指標 89
4.5.3 確定評估方法 90
4.5.4 準備數據 90
4.5.5 開發比基準更好的模型 90
4.5.6 擴大模型規模:開發過擬閤的模型 91
4.5.7 模型正則化與調節超參數 92
本章小結 92
第二部分 深度學習實踐
第5章 深度學習用於計算機視覺 94
5.1 捲積神經網絡簡介 94
5.1.1 捲積運算 96
5.1.2 最大池化運算 101
5.2 在小型數據集上從頭開始訓練一個捲積神經網絡 102
5.2.1 深度學習與小數據問題的相關性 103
5.2.2 下載數據 103
5.2.3 構建網絡 106
5.2.4 數據預處理 107
5.2.5 使用數據增強 111
5.3 使用預訓練的捲積神經網絡 115
5.3.1 特徵提取 116
5.3.2 微調模型 124
5.3.3 小結 130
5.4 捲積神經網絡的可視化 130
5.4.1 可視化中間激活 131
5.4.2 可視化捲積神經網絡的過濾器 136
5.4.3 可視化類激活的熱力圖 142
本章小結 146
第6章 深度學習用於文本和序列 147
6.1 處理文本數據 147
6.1.1 單詞和字符的one-hot編碼 149
6.1.2 使用詞嵌入 151
6.1.3 整閤在一起:從原始文本到詞嵌入 155
6.1.4 小結 162
6.2 理解循環神經網絡 162
6.2.1 Keras中的循環層 164
6.2.2 理解LSTM層和GRU層 168
6.2.3 Keras中一個LSTM的具體例子 170
6.2.4 小結 172
6.3 循環神經網絡的高級用法 172
6.3.1 溫度預測問題 172
6.3.2 準備數據 175
6.3.3 一種基於常識的、非機器學習的基準方法 177
6.3.4 一種基本的機器學習方法 178
6.3.5 第一個循環網絡基準 180
6.3.6 使用循環dropout來降低過擬閤 181
6.3.7 循環層堆疊 182
6.3.8 使用雙嚮RNN 184
6.3.9 更多嘗試 187
6.3.10 小結 187
6.4 用捲積神經網絡處理序列 188
6.4.1 理解序列數據的一維捲積 188
6.4.2 序列數據的一維池化 189
6.4.3 實現一維捲積神經網絡 189
6.4.4 結閤CNN和RNN來處理長序列 191
6.4.5 小結 195
本章總結 195
第7章 高級的深度學習最佳實踐 196
7.1 不用Sequential模型的解決方案:Keras 函數式API 196
7.1.1 函數式API簡介 199
7.1.2 多輸入模型 200
7.1.3 多輸齣模型 202
7.1.4 層組成的有嚮無環圖 204
7.1.5 共享層權重 208
7.1.6 將模型作為層 208
7.1.7 小結 209
7.2 使用Keras迴調函數和TensorBoard來檢查並監控深度學習模型 210
7.2.1 訓練過程中將迴調函數作用於模型 210
7.2.2 TensorBoard簡介:TensorFlow的可視化框架 212
7.2.3 小結 219
7.3 讓模型性能發揮到極緻 219
7.3.1 高級架構模式 219
7.3.2 超參數優化 222
7.3.3 模型集成 223
7.3.4 小結 224
本章總結 225
第8章 生成式深度學習 226
8.1 使用LSTM生成文本 227
8.1.1 生成式循環網絡簡史 227
8.1.2 如何生成序列數據 228
8.1.3 采樣策略的重要性 229
8.1.4 實現字符級的LSTM文本生成 230
8.1.5 小結 234
8.2 DeepDream 235
8.2.1 用Keras實現DeepDream 236
8.2.2 小結 241
8.3 神經風格遷移 241
8.3.1 內容損失 242
8.3.2 風格損失 243
8.3.3 用Keras實現神經風格遷移 243
8.3.4 小結 249
8.4 用變分自編碼器生成圖像 249
8.4.1 從圖像的潛在空間中采樣 249
8.4.2 圖像編輯的概念嚮量 250
8.4.3 變分自編碼器 251
8.4.4 小結 256
8.5 生成式對抗網絡簡介 257
8.5.1 GAN 的簡要實現流程 258
8.5.2 大量技巧 259
8.5.3 生成器 260
8.5.4 判彆器 261
8.5.5 對抗網絡 261
8.5.6 如何訓練DCGAN 262
8.5.7 小結 264
本章總結 264
第9章 總結 265
9.1 重點內容迴顧 265
9.1.1 人工智能的各種方法 265
9.1.2 深度學習在機器學習領域中的特殊之處 266
9.1.3 如何看待深度學習 266
9.1.4 關鍵的推動技術 267
9.1.5 機器學習的通用工作流程 268
9.1.6 關鍵網絡架構 268
9.1.7 可能性空間 272
9.2 深度學習的局限性 273
9.2.1 將機器學習模型擬人化的風險 273
9.2.2 局部泛化與極端泛化 275
9.2.3 小結 276
9.3 深度學習的未來 277
9.3.1 模型即程序 277
9.3.2 超越反嚮傳播和可微層 278
9.3.3 自動化機器學習 279
9.3.4 終身學習與模塊化子程序復用 279
9.3.5 長期願景 281
9.4 瞭解一個快速發展領域的最新進展 281
9.4.1 使用Kaggle練習解決現實世界的問題 281
9.4.2 在arXiv閱讀最新進展 282
9.4.3 探索Keras生態係統 282
9.5 結束語 282
附錄A 在Ubuntu上安裝Keras及其依賴 283
附錄B 在EC2 GPU實例上運行Jupyter筆記本 287
· · · · · · (
收起)