內容簡介
本書是一本系統介紹深度學習技術及開源框架PyTorch的入門書。書中通過大量案例介紹了PyTorch的使用方法、神經網路的搭建、常用神經網路(如卷積神經網路、循環神經網路)的實現,以及實用的深度學習技術,包括遷移學習、對抗生成學習、深度強化學習、圖神經網路等。讀者通過閱讀本書,可以學會構造一個圖像識別器,生成逼真的圖畫,讓機器理解單詞與文本,讓機器作曲,教會機器踏判協玩遊戲,還可以實現一個簡單的機器翻譯系統。
第2版基於PyTorch 1.6.0,對全書代碼進行了全面更新,同時增加了Transformer、BERT、圖神才提翻蒸經網路等熱門深度學習技術的講解,更具實用性和時效性。
圖書目錄
推薦序
前言
作者簡介
第 1章 深度學習簡介 1
1.1 深度學習與人工智慧 1
1.2 深度學習的歷史淵源 2
1.2.1 從感知機到人工神經網路 3
1.2.2 深度學習時代 4
1.2.3 巨頭之間的角逐 5
1.3 深度學習的影響因素 6
1.3.1 大數據 6
1.3.2 深度網路架構 7
1.3.3 GPU 11
1.4 深度學習為什麼如此成功 11
1.4.1 特徵學習 11
1.4.2 遷移學習 12
1.5 小結 13
1.6 參考文獻 14
第 2章 PyTorch簡介 15
2.1 PyTorch安裝 15
2.2 初識PyTorch 15
2.2.1 與Python完美促籃希融合 16
2.2.2 張量計算 16
2.2.3 動態計算圖 20
2.3 PyTorch實例:預測房價 27
2.3.1 準備數據 27
2.3.2 設計模型 28
2.3.3 訓練 29
2.3.4 預測 31
2.3.5 術語彙總 32
2.4 小結 33
第3章 腳踏車預測器——你的第 一個神經網路 35
3.1 共享腳踏車的煩惱 35
3.2 腳踏車預測器1.0 37
3.2.1 人工神經網路簡介 37
3.2.2 人工神經元 38
3.2.3 兩個隱含神經元 40
3.2.4 訓練與運行 42
3.2.5 失敗的神經預測器 42
3.2.6 過擬合 48
3.3 腳踏車預測器2.0 49
3.3.1 數據的預處理過程 49
3.3.2 構建神經網路 52
3.3.3 測試神經網路 55
3.4 剖析神經網路Neu 57
3.5 小結 61
3.6 Q&A 61
第4章 機器也懂感情——中文情緒分類器 63
4.1 神經網路分類洪充器 64
4.1.1 如何用神經網路做分類 64
4.1.2 分類問題的損失函式 66
4.2 詞袋模型分類器 67
4.2.1 詞袋模型簡介 68
4.2.2 搭建簡單文本分類器 69
4.3 程式實現 70
4.3.1 數據處理 71
4.3.2 文本數據向量化 73
4.3.3 劃分數據集 74
4.3.4 建立神經網路 75
4.4 運行結果 78
4.5 剖析神經網路 79
4.6 小結 83
4.7 Q&A 83
第5章 手寫數字識別器——認識卷積神經網路 84
5.1 什麼是卷積神經網路 85
5.1.1 手寫數字識別任務的卷積神經網路及運算過程 86
5.1.2 卷積運算 87
5.1.3 池化運算 93
5.1.4 立體卷積核 94
5.1.5 超參數與參數 95
5.1.6 其他說明 96
5.2 手寫數字識別器 97
5.2.1 數據準備 97
5.2.2 構建網路 100
5.2.3 運行模型 102
5.2.4 測試模型 104
5.3 剖析卷積神經網路 105
5.3.1 第 一層卷積核與特徵圖 105
5.3.2 第二層卷積核與特徵圖 106
5.3.3 卷積神經網路的健整民虹慨壯性實驗 107
5.4 小結 109
5.5 Q&A 109
5.6 擴展閱讀 109
第6章 手寫數字加法機——遷移學習 110
6.1 什麼是遷移學習 111
6.1.1 遷移學習的由來 111
6.1.2 遷移學習的分類 112
6.1.3 遷移學習的意義 112
6.1.4 如何用神經網路實現遷移學習 113
6.2 套用案例:遷移學習如何抗擊貧困 115
6.全臭仔2.1 背景介紹 115
6.2.2 方法探尋 116
6.2.3 遷移學習方法嫌殃尋 116
6.3 螞蟻還是蜜蜂:遷移大型卷積神經網路 117
6.3.1 任務描述與初步嘗試 118
6.3.2 ResNet與模型遷移 119
6.3.3 代碼實現 120
6.3.4 結果分析 123
6.3.5 更多的模型與數據 125
6.4 手寫數字加法機 125
6.4.1 網路架構 125
6.4.2 代碼實現 126
6.4.3 訓練與測試 133
6.4.4 結果 135
6.4.5 大規模實驗 135
6.5 小結 140
6.6 實踐項目:遷移與效率 140
第7章 你自己的Prisma——圖像風格遷移 142
7.1 什麼是風格遷移 142
7.1.1 什麼是風格 142
7.1.2 風格遷移的含義 143
7.2 風格遷移技術發展簡史 144
7.3 神經網路風格遷移 146
7.3.1 神經網路風格遷移的優勢 146
7.3.2 神經網路風格遷移的基本思想 147
7.3.3 卷積神經網路的選取 148
7.3.4 內容損失 149
7.3.5 風格損失 149
7.3.6 風格損失原理分析 150
7.3.7 損失函式與最佳化 153
7.4 神經網路風格遷移實戰 153
7.4.1 準備工作 153
7.4.2 建立風格遷移網路 155
7.4.3 風格遷移訓練 158
7.5 小結 161
7.6 擴展閱讀 161
第8章 人工智慧造假術——圖像生成與對抗學習 162
8.1 反卷積與圖像生成 165
8.1.1 卷積神經網路回顧 165
8.1.2 反卷積運算 167
8.1.3 反池化過程 169
8.1.4 反卷積與分數步伐 170
8.1.5 輸出圖像尺寸公式 171
8.1.6 批正則化技術 172
8.2 圖像生成實驗1——最小均方誤差模型 173
8.2.1 模型思路 173
8.2.2 代碼實現 174
8.2.3 運行結果 178
8.3 圖像生成實驗2——生成器—識別器模型 180
8.3.1 生成器—識別器模型的實現 180
8.3.2 對抗樣本 183
8.4 圖像生成實驗3——GAN 186
8.4.1 GAN的總體架構 187
8.4.2 程式實現 188
8.4.3 結果展示 191
8.5 小結 193
8.6 Q&A 193
8.7 擴展閱讀 194
第9章 辭彙的星空——神經語言模型與Word2Vec 195
9.1 詞向量技術介紹 195
9.1.1 初識詞向量 195
9.1.2 傳統編碼方式 196
9.2 NPLM:神經機率語言模型 197
9.2.1 NPLM的基本思想 198
9.2.2 NPLM的運作過程詳解 198
9.2.3 讀取NPLM中的詞向量 201
9.2.4 NPLM的編碼實現 202
9.2.5 運行結果 205
9.2.6 NPLM的總結與局限 207
9.3 Word2Vec 207
9.3.1 CBOW模型和Skip-gram模型的結構 207
9.3.2 層次歸一化指數函式 208
9.3.3 負採樣 209
9.3.4 總結及分析 210
9.4 Word2Vec的套用 210
9.4.1 在自己的語料庫上訓練Word2Vec詞向量 210
9.4.2 調用現成的詞向量 212
9.4.3 女人 男人=皇后 國王 214
9.4.4 使用向量的空間位置進行詞對詞翻譯 216
9.4.5 Word2Vec小結 217
9.5 小結 217
9.6 Q&A 218
第 10章 深度網路 LSTM作曲機——序列生成模型 220
10.1 序列生成問題 220
10.2 RNN與LSTM 221
10.2.1 RNN 221
10.2.2 LSTM 227
10.3 簡單01序列的學習問題 231
10.3.1 RNN的序列學習 232
10.3.2 LSTM的序列學習 241
10.4 LSTM作曲機 244
10.4.1 MIDI檔案 244
10.4.2 數據準備 245
10.4.3 模型結構 245
10.4.4 代碼實現 246
10.5 小結 254
10.6 Q&A 255
10.7 擴展閱讀 255
第 11章 神經機器翻譯機——端到端機器翻譯 256
11.1 機器翻譯簡介 257
11.1.1 基於規則的機器翻譯技術 257
11.1.2 統計機器翻譯 258
11.1.3 神經機器翻譯 258
11.1.4 關於Zero-shot翻譯 259
11.2 編碼—解碼模型 259
11.2.1 編碼—解碼模型總體架構 260
11.2.2 編碼器 260
11.2.3 解碼器 263
11.2.4 損失函式 267
11.2.5 編碼—解碼模型歸納 269
11.2.6 編碼—解碼模型的效果 269
11.3 注意力機制 270
11.3.1 神經機器翻譯中的注意力 271
11.3.2 注意力網路 271
11.4 更多改進 275
11.4.1 GRU的結構 275
11.4.2 雙向GRU的套用 275
11.5 神經機器翻譯機的編碼實現 276
11.5.1 神經網路的構建 280
11.5.2 神經網路的訓練 283
11.5.3 測試神經機器翻譯機 286
11.5.4 結果展示 287
11.6 更多改進 291
11.6.1 集束搜尋算法 291
11.6.2 BLEU:對翻譯結果的評估方法 293
11.6.3 對編碼—解碼模型的改進 294
11.7 廣義的翻譯 295
11.7.1 廣義翻譯機 295
11.7.2 廣義翻譯的套用場景 295
11.8 Q&A 297
第 12章 更強的機器翻譯模型——Transformer 299
12.1 Transformer概述 299
12.1.1 編碼—解碼模型回顧 300
12.1.2 Transformer全景概覽 300
12.1.3 神奇的自注意力 301
12.2 Atoken旅行記 304
12.2.1 奇怪的序號牌 304
12.2.2 分身之門 305
12.2.3 新朋友 306
12.3 Transformer部件詳解 306
12.3.1 詞嵌入與位置嵌入 306
12.3.2 自注意力模組計算詳解 307
12.3.3 自注意力層的矩陣計算 309
12.3.4 殘差連線與層歸一化 310
12.3.5 逐點計算的前向網路層 311
12.3.6 解碼器中的自注意力 311
12.3.7 解碼器的輸出層 312
12.4 動手訓練一個Transformer翻譯模型 313
12.4.1 翻譯模型中輸入單位的粒度 313
12.4.2 模型定義 313
12.4.3 模型訓練 318
12.4.4 Transformer相關開源庫 319
12.5 小結 319
第 13章 學習跨任務的語言知識——預訓練語言模型 320
13.1 語言模型簡要回顧 320
13.2 預訓練Transformer詳解 322
13.2.1 深入了解GPT 323
13.2.2 深入了解BERT 324
13.2.3 模型微調 326
13.2.4 模型表現 327
13.3 單句分類:BERT句子分類實戰 328
13.4 後BERT時代 334
13.5 小結 334
第 14章 人體姿態識別——圖網路模型 335
14.1 圖網路及圖論基礎 335
14.1.1 圖的基本概念 335
14.1.2 什麼是圖網路 337
14.1.3 圖網路的基本任務和套用場景 338
14.2 圖卷積網路 338
14.2.1 GCN的工作原理 338
14.2.2 打開GCN的黑箱 340
14.2.3 從社團劃分任務來理解GCN 341
14.3 實戰:使用GCN識別人體姿態 344
14.3.1 數據來源與預處理 345
14.3.2 代碼實現 346
14.4 小結 350
第 15章 AI遊戲高手——深度強化學習 351
15.1 強化學習簡介 352
15.1.1 強化學習的要素 352
15.1.2 強化學習的套用場景 353
15.1.3 強化學習的分類 354
15.2 深度Q學習算法 355
15.2.1 Q學習算法 356
15.2.2 DQN算法 357
15.2.3 DQN在雅達利遊戲上的表現 359
15.3 DQN玩Flappy Bird的PyTorch實現 361
15.3.1 Flappy Bird的PyGame實現 361
15.3.2 DQN的PyTorch實現 368
15.4 小結 377
15.5 通用人工智慧還有多遠 378
15.6 Q&A 379
15.7 擴展閱讀 380
作者簡介
集智俱樂部(Swarma Club)
成立於2003年,是一個從事學術研究、享受科學樂趣的探索者團體,也是國內致力於研究人工智慧、複雜系統的科學社區之一,倡導以平等開放的態度、科學實證的精神,進行跨學科的研究與交流,力圖搭建一個中國的“沒有圍牆的研究所”。目前已出版書籍有《科學的極致:漫談人工智慧》《走近2050:注意力、網際網路與人工智慧》《NetLogo多主體建模入門》,譯作有《深度思考:人工智慧的終點與人類創造力的起點》。
4.1 神經網路分類器 64
4.1.1 如何用神經網路做分類 64
4.1.2 分類問題的損失函式 66
4.2 詞袋模型分類器 67
4.2.1 詞袋模型簡介 68
4.2.2 搭建簡單文本分類器 69
4.3 程式實現 70
4.3.1 數據處理 71
4.3.2 文本數據向量化 73
4.3.3 劃分數據集 74
4.3.4 建立神經網路 75
4.4 運行結果 78
4.5 剖析神經網路 79
4.6 小結 83
4.7 Q&A 83
第5章 手寫數字識別器——認識卷積神經網路 84
5.1 什麼是卷積神經網路 85
5.1.1 手寫數字識別任務的卷積神經網路及運算過程 86
5.1.2 卷積運算 87
5.1.3 池化運算 93
5.1.4 立體卷積核 94
5.1.5 超參數與參數 95
5.1.6 其他說明 96
5.2 手寫數字識別器 97
5.2.1 數據準備 97
5.2.2 構建網路 100
5.2.3 運行模型 102
5.2.4 測試模型 104
5.3 剖析卷積神經網路 105
5.3.1 第 一層卷積核與特徵圖 105
5.3.2 第二層卷積核與特徵圖 106
5.3.3 卷積神經網路的健壯性實驗 107
5.4 小結 109
5.5 Q&A 109
5.6 擴展閱讀 109
第6章 手寫數字加法機——遷移學習 110
6.1 什麼是遷移學習 111
6.1.1 遷移學習的由來 111
6.1.2 遷移學習的分類 112
6.1.3 遷移學習的意義 112
6.1.4 如何用神經網路實現遷移學習 113
6.2 套用案例:遷移學習如何抗擊貧困 115
6.2.1 背景介紹 115
6.2.2 方法探尋 116
6.2.3 遷移學習方法 116
6.3 螞蟻還是蜜蜂:遷移大型卷積神經網路 117
6.3.1 任務描述與初步嘗試 118
6.3.2 ResNet與模型遷移 119
6.3.3 代碼實現 120
6.3.4 結果分析 123
6.3.5 更多的模型與數據 125
6.4 手寫數字加法機 125
6.4.1 網路架構 125
6.4.2 代碼實現 126
6.4.3 訓練與測試 133
6.4.4 結果 135
6.4.5 大規模實驗 135
6.5 小結 140
6.6 實踐項目:遷移與效率 140
第7章 你自己的Prisma——圖像風格遷移 142
7.1 什麼是風格遷移 142
7.1.1 什麼是風格 142
7.1.2 風格遷移的含義 143
7.2 風格遷移技術發展簡史 144
7.3 神經網路風格遷移 146
7.3.1 神經網路風格遷移的優勢 146
7.3.2 神經網路風格遷移的基本思想 147
7.3.3 卷積神經網路的選取 148
7.3.4 內容損失 149
7.3.5 風格損失 149
7.3.6 風格損失原理分析 150
7.3.7 損失函式與最佳化 153
7.4 神經網路風格遷移實戰 153
7.4.1 準備工作 153
7.4.2 建立風格遷移網路 155
7.4.3 風格遷移訓練 158
7.5 小結 161
7.6 擴展閱讀 161
第8章 人工智慧造假術——圖像生成與對抗學習 162
8.1 反卷積與圖像生成 165
8.1.1 卷積神經網路回顧 165
8.1.2 反卷積運算 167
8.1.3 反池化過程 169
8.1.4 反卷積與分數步伐 170
8.1.5 輸出圖像尺寸公式 171
8.1.6 批正則化技術 172
8.2 圖像生成實驗1——最小均方誤差模型 173
8.2.1 模型思路 173
8.2.2 代碼實現 174
8.2.3 運行結果 178
8.3 圖像生成實驗2——生成器—識別器模型 180
8.3.1 生成器—識別器模型的實現 180
8.3.2 對抗樣本 183
8.4 圖像生成實驗3——GAN 186
8.4.1 GAN的總體架構 187
8.4.2 程式實現 188
8.4.3 結果展示 191
8.5 小結 193
8.6 Q&A 193
8.7 擴展閱讀 194
第9章 辭彙的星空——神經語言模型與Word2Vec 195
9.1 詞向量技術介紹 195
9.1.1 初識詞向量 195
9.1.2 傳統編碼方式 196
9.2 NPLM:神經機率語言模型 197
9.2.1 NPLM的基本思想 198
9.2.2 NPLM的運作過程詳解 198
9.2.3 讀取NPLM中的詞向量 201
9.2.4 NPLM的編碼實現 202
9.2.5 運行結果 205
9.2.6 NPLM的總結與局限 207
9.3 Word2Vec 207
9.3.1 CBOW模型和Skip-gram模型的結構 207
9.3.2 層次歸一化指數函式 208
9.3.3 負採樣 209
9.3.4 總結及分析 210
9.4 Word2Vec的套用 210
9.4.1 在自己的語料庫上訓練Word2Vec詞向量 210
9.4.2 調用現成的詞向量 212
9.4.3 女人 男人=皇后 國王 214
9.4.4 使用向量的空間位置進行詞對詞翻譯 216
9.4.5 Word2Vec小結 217
9.5 小結 217
9.6 Q&A 218
第 10章 深度網路 LSTM作曲機——序列生成模型 220
10.1 序列生成問題 220
10.2 RNN與LSTM 221
10.2.1 RNN 221
10.2.2 LSTM 227
10.3 簡單01序列的學習問題 231
10.3.1 RNN的序列學習 232
10.3.2 LSTM的序列學習 241
10.4 LSTM作曲機 244
10.4.1 MIDI檔案 244
10.4.2 數據準備 245
10.4.3 模型結構 245
10.4.4 代碼實現 246
10.5 小結 254
10.6 Q&A 255
10.7 擴展閱讀 255
第 11章 神經機器翻譯機——端到端機器翻譯 256
11.1 機器翻譯簡介 257
11.1.1 基於規則的機器翻譯技術 257
11.1.2 統計機器翻譯 258
11.1.3 神經機器翻譯 258
11.1.4 關於Zero-shot翻譯 259
11.2 編碼—解碼模型 259
11.2.1 編碼—解碼模型總體架構 260
11.2.2 編碼器 260
11.2.3 解碼器 263
11.2.4 損失函式 267
11.2.5 編碼—解碼模型歸納 269
11.2.6 編碼—解碼模型的效果 269
11.3 注意力機制 270
11.3.1 神經機器翻譯中的注意力 271
11.3.2 注意力網路 271
11.4 更多改進 275
11.4.1 GRU的結構 275
11.4.2 雙向GRU的套用 275
11.5 神經機器翻譯機的編碼實現 276
11.5.1 神經網路的構建 280
11.5.2 神經網路的訓練 283
11.5.3 測試神經機器翻譯機 286
11.5.4 結果展示 287
11.6 更多改進 291
11.6.1 集束搜尋算法 291
11.6.2 BLEU:對翻譯結果的評估方法 293
11.6.3 對編碼—解碼模型的改進 294
11.7 廣義的翻譯 295
11.7.1 廣義翻譯機 295
11.7.2 廣義翻譯的套用場景 295
11.8 Q&A 297
第 12章 更強的機器翻譯模型——Transformer 299
12.1 Transformer概述 299
12.1.1 編碼—解碼模型回顧 300
12.1.2 Transformer全景概覽 300
12.1.3 神奇的自注意力 301
12.2 Atoken旅行記 304
12.2.1 奇怪的序號牌 304
12.2.2 分身之門 305
12.2.3 新朋友 306
12.3 Transformer部件詳解 306
12.3.1 詞嵌入與位置嵌入 306
12.3.2 自注意力模組計算詳解 307
12.3.3 自注意力層的矩陣計算 309
12.3.4 殘差連線與層歸一化 310
12.3.5 逐點計算的前向網路層 311
12.3.6 解碼器中的自注意力 311
12.3.7 解碼器的輸出層 312
12.4 動手訓練一個Transformer翻譯模型 313
12.4.1 翻譯模型中輸入單位的粒度 313
12.4.2 模型定義 313
12.4.3 模型訓練 318
12.4.4 Transformer相關開源庫 319
12.5 小結 319
第 13章 學習跨任務的語言知識——預訓練語言模型 320
13.1 語言模型簡要回顧 320
13.2 預訓練Transformer詳解 322
13.2.1 深入了解GPT 323
13.2.2 深入了解BERT 324
13.2.3 模型微調 326
13.2.4 模型表現 327
13.3 單句分類:BERT句子分類實戰 328
13.4 後BERT時代 334
13.5 小結 334
第 14章 人體姿態識別——圖網路模型 335
14.1 圖網路及圖論基礎 335
14.1.1 圖的基本概念 335
14.1.2 什麼是圖網路 337
14.1.3 圖網路的基本任務和套用場景 338
14.2 圖卷積網路 338
14.2.1 GCN的工作原理 338
14.2.2 打開GCN的黑箱 340
14.2.3 從社團劃分任務來理解GCN 341
14.3 實戰:使用GCN識別人體姿態 344
14.3.1 數據來源與預處理 345
14.3.2 代碼實現 346
14.4 小結 350
第 15章 AI遊戲高手——深度強化學習 351
15.1 強化學習簡介 352
15.1.1 強化學習的要素 352
15.1.2 強化學習的套用場景 353
15.1.3 強化學習的分類 354
15.2 深度Q學習算法 355
15.2.1 Q學習算法 356
15.2.2 DQN算法 357
15.2.3 DQN在雅達利遊戲上的表現 359
15.3 DQN玩Flappy Bird的PyTorch實現 361
15.3.1 Flappy Bird的PyGame實現 361
15.3.2 DQN的PyTorch實現 368
15.4 小結 377
15.5 通用人工智慧還有多遠 378
15.6 Q&A 379
15.7 擴展閱讀 380
作者簡介
集智俱樂部(Swarma Club)
成立於2003年,是一個從事學術研究、享受科學樂趣的探索者團體,也是國內致力於研究人工智慧、複雜系統的科學社區之一,倡導以平等開放的態度、科學實證的精神,進行跨學科的研究與交流,力圖搭建一個中國的“沒有圍牆的研究所”。目前已出版書籍有《科學的極致:漫談人工智慧》《走近2050:注意力、網際網路與人工智慧》《NetLogo多主體建模入門》,譯作有《深度思考:人工智慧的終點與人類創造力的起點》。