本書以“平民”的起點,從“零”開始,基于PyTorch框架,介紹深度學(xué)習(xí)和強化學(xué)習(xí)的技術(shù)與技巧,逐層鋪墊,營造良好的帶入感和親近感,把學(xué)習(xí)曲線拉平,使得沒有學(xué)過微積分等高級理論的程序員一樣能夠讀得懂、學(xué)得會。同時,本書配合漫畫插圖來調(diào)節(jié)閱讀氣氛,并對每個原理都進行了對比講解和實例說明。本書適合對深度學(xué)習(xí)和強化學(xué)習(xí)感興趣的技術(shù)人員、希望對深度學(xué)習(xí)和強化學(xué)習(xí)進行入門了解的技術(shù)人員及深度學(xué)習(xí)和強化學(xué)習(xí)領(lǐng)域的初級從業(yè)人員閱讀。
高揚,金山辦公軟件人工智能組技術(shù)負責(zé)人,歷任歡聚時代人工智能算法專家,金山軟件西山居大數(shù)據(jù)架構(gòu)師等職。重慶工商大學(xué)研究生導(dǎo)師,電子工業(yè)出版社博文視點大數(shù)據(jù)技術(shù)圖書專家委員會專家委員,有多年海外工作經(jīng)驗。有多部“白話”系列大數(shù)據(jù)與機器學(xué)習(xí)相關(guān)著作。葉振斌,現(xiàn)任網(wǎng)易游戲伏羲人工智能實驗室高級深度學(xué)習(xí)研發(fā)工程師。多年從事機器學(xué)習(xí),特別是強化學(xué)習(xí)智能算法的研究及開發(fā)工作。擁有豐富的軟件開發(fā)經(jīng)驗,以及豐富的人工智能算法訓(xùn)練平臺開發(fā)經(jīng)驗。萬娟,華為設(shè)計師。資深UI設(shè)計師,多年產(chǎn)品交互與視覺設(shè)計經(jīng)驗,對于TOB企業(yè)系統(tǒng)應(yīng)用設(shè)計與TOC用戶產(chǎn)品設(shè)計有深入的理解與實踐。多次參與華為企業(yè)內(nèi)系統(tǒng)設(shè)計與智能家居、智能設(shè)備等UI及交互設(shè)計。從小熱愛藝術(shù)繪畫,多次參與全國藝術(shù)與工業(yè)設(shè)計比賽并獲得獎項。對商業(yè)插畫有豐富的經(jīng)驗,配合出版多本書籍。
傳統(tǒng)篇
第1章 強化學(xué)習(xí)是什么 2
1.1 題設(shè) 3
1.1.1 多智能才叫智能 5
1.1.2 人工智能的定義 5
1.2 強化學(xué)習(xí)的研究對象 7
1.2.1 強化學(xué)習(xí)的應(yīng)用場合 7
1.2.2 強化學(xué)習(xí)的建模 11
1.3 本章小結(jié) 17
第2章 強化學(xué)習(xí)的脈絡(luò) 18
2.1 什么是策略 18
2.2 什么樣的策略是好的策略 19
2.3 什么是模型 21
2.4 如何得到一個好的策略 23
2.4.1 直接法 23
2.4.2 間接法 25
2.5 馬爾可夫決策過程 29
2.5.1 狀態(tài)轉(zhuǎn)移 30
2.5.2 策略與評價 31
2.5.3 策略優(yōu)化 36
2.6 Model-Based和Model-Free 36
2.6.1 Model-Based 36
2.6.2 規(guī)劃問題 37
2.6.3 Model-Free 38
2.7 本章小結(jié) 38
第3章 動態(tài)規(guī)劃 40
3.1 狀態(tài)估值 40
3.2 策略優(yōu)化 42
3.3 本章小結(jié) 43
第4章 蒙特卡羅法 45
4.1 歷史由來 45
4.2 狀態(tài)估值 47
4.3 兩種估值方法 49
4.3.1 首次訪問蒙特卡羅策略估值 49
4.3.2 每次訪問蒙特卡羅策略估值 49
4.3.3 增量平均 50
4.4 弊端 51
4.5 本章小結(jié) 52
第5章 時間差分 53
5.1 SARSA算法 53
5.1.1 SARSA算法的偽代碼 54
5.1.2 SARSA算法的優(yōu)點和缺點 57
5.2 Q-Learning算法 57
5.2.1 Q-Learning算法的偽代碼 58
5.2.2 Q-Learning算法的優(yōu)點和缺點 59
5.3 On-Policy和Off-Policy 61
5.4 On-Line學(xué)習(xí)和Off-Line學(xué)習(xí) 62
5.5 比較與討論 63
5.6 本章小結(jié) 65
現(xiàn)代篇
第6章 深度學(xué)習(xí) 68
6.1 PyTorch簡介 69
6.1.1 歷史淵源 70
6.1.2 支持 71
6.2 神經(jīng)元 74
6.3 線性回歸 77
6.4 激勵函數(shù) 80
6.4.1 Sigmoid函數(shù) 81
6.4.2 Tanh函數(shù) 82
6.4.3 ReLU函數(shù) 82
6.4.4 Linear函數(shù) 83
6.5 神經(jīng)網(wǎng)絡(luò) 84
6.6 網(wǎng)絡(luò)訓(xùn)練 85
6.6.1 輸入 86
6.6.2 輸出 86
6.6.3 網(wǎng)絡(luò)結(jié)構(gòu) 87
6.6.4 損失函數(shù) 88
6.6.5 求解極小值 90
6.6.6 線性回歸 90
6.6.7 凸函數(shù) 93
6.6.8 二元(多元)凸函數(shù) 98
6.6.9 導(dǎo)數(shù)補充 101
6.6.10 導(dǎo)數(shù)怎么求 103
6.6.11 “串聯(lián)”的神經(jīng)元 105
6.6.12 模型的工作 107
6.6.13 理解損失函數(shù) 108
6.7 深度學(xué)習(xí)的優(yōu)勢 108
6.7.1 線性和非線性的疊加 109
6.7.2 不用再提取特征 111
6.7.3 處理線性不可分 112
6.8 手寫數(shù)字識別公開數(shù)據(jù)集 114
6.9 全連接網(wǎng)絡(luò) 117
6.9.1 輸入與輸出 118
6.9.2 代碼解讀 119
6.9.3 運行結(jié)果 125
6.10 卷積神經(jīng)網(wǎng)絡(luò) 125
6.10.1 代碼解讀 125
6.10.2 理解卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu) 132
6.10.3 卷積核的結(jié)構(gòu) 134
6.11 循環(huán)神經(jīng)網(wǎng)絡(luò) 135
6.11.1 網(wǎng)絡(luò)結(jié)構(gòu) 136
6.11.2 應(yīng)用案例 140
6.11.3 代碼解讀 143
6.12 其他注意事項 148
6.12.1 并行計算 148
6.12.2 梯度消失和梯度爆炸 152
6.12.3 歸一化 157
6.12.4 超參數(shù)的設(shè)置 159
6.12.5 正則化 161
6.12.6 不唯一的模型 170
6.13 深度神經(jīng)網(wǎng)絡(luò)的發(fā)展趨勢 171
6.14 本章小結(jié) 178
第7章 Gym——不要錢的試驗場 180
7.1 簡介 180
7.2 安裝 182
7.3 類別 183
7.4 接口 188
7.5 本章小結(jié) 191
第8章 DQN算法族 192
8.1 2013版DQN 192
8.1.1 模型結(jié)構(gòu) 192
8.1.2 訓(xùn)練過程 195
8.1.3 Replay Memory 197
8.1.4 小結(jié) 198
8.2 2015版DQN 198
8.2.1 模型結(jié)構(gòu) 198
8.2.2 訓(xùn)練過程 199
8.2.3 Target網(wǎng)絡(luò) 200
8.2.4 小結(jié) 201
8.3 Double DQN 201
8.3.1 模型結(jié)構(gòu) 202
8.3.2 訓(xùn)練過程 202
8.3.3 效果 203
8.3.4 小結(jié) 204
8.4 Dueling DQN 204
8.4.1 模型結(jié)構(gòu) 205
8.4.2 效果 207
8.4.3 小結(jié) 208
8.5 優(yōu)先回放DQN 208
8.6 本章小結(jié) 209
第9章 PG算法族 211
9.1 策略梯度 211
9.2 DPG 213
9.3 Actor-Critic 214
9.4 DDPG 214
9.5 本章小結(jié) 218
第10章 A3C 219
10.1 模型結(jié)構(gòu) 219
10.1.1 A3C Q-Learning 219
10.1.2 A3C Actor-Critic 222
10.2 本章小結(jié) 224
第11章 UNREAL 226
11.1 主任務(wù) 226
11.2 像素控制任務(wù) 227
11.3 獎勵值預(yù)測 229
11.4 值函數(shù)回放 230
11.5 損失函數(shù) 231
11.6 本章小結(jié) 232
擴展篇
第12章 NEAT 236
12.1 遺傳算法 237
12.1.1 進化過程 237
12.1.2 算法流程 238
12.1.3 背包問題 239
12.1.4 極大(。┲祮栴} 247
12.2 NEAT原理 255
12.2.1 基因組 255
12.2.2 變異和遺傳 256
12.3 NEAT示例 258
12.4 本章小結(jié) 262
第13章 SerpentAI 263
13.1 簡介 263
13.2 安裝和配置 264
13.3 示例 265
13.3.1 創(chuàng)建Game Plugin 265
13.3.2 創(chuàng)建Game Agent 268
13.3.3 訓(xùn)練Context Classifier 271
13.3.4 訓(xùn)練Agent 282
13.4 本章小結(jié) 286
第14章 案例詳解 287
14.1 AlphaGo 287
14.1.1 AlphaGo的前世今生 287
14.1.2 “深藍”是誰 288
14.1.3 圍棋到底有多復(fù)雜 290
14.1.4 論文要義 294
14.1.5 成績 302
14.1.6 開源項目 303
14.2 AlphaGo Zero 304
14.2.1 改進之處 304
14.2.2 成績 308
14.2.3 開源項目 309
14.3 試驗場大觀 311
14.3.1 StarCraftⅡ 311
14.3.2 VizDoom 320
14.3.3 Universe 323
14.3.4 DOTA2 324
14.4 本章小結(jié) 329
第15章 擴展討論 331
15.1 TRPO 331
15.2 反向強化學(xué)習(xí) 332
15.3 模型壓縮 333
15.3.1 剪枝 335
15.3.2 量化 336
15.3.3 結(jié)構(gòu)壓縮 337
15.4 本章小結(jié) 339
后記 341
附錄A 342
A.1 安裝Ubuntu 342
A.2 安裝CUDA環(huán)境 347
A.3 安裝PyTorch 348
A.4 下載本書示例代碼 349
A.5 安裝PyCharm 350
A.5.1 方法一 350
A.5.2 方法二 351
A.6 安裝Jupyter Notebook 351
A.7 安裝相關(guān)Python依賴包 352
A.7.1 安裝Box2D 352
A.7.2 安裝MuJoCo 352
A.7.3 安裝SerpentAI 355
A.7.4 安裝Spritex 359
A.7.5 安裝StarCraftⅡ 360
A.7.6 安裝VizDoom 363
A.8 安裝OpenCV 364
A.9 Python語言簡介 364
A.9.1 安裝Python 365
A.9.2 Hello World 365
A.9.3 行與縮進 365
A.9.4 變量類型 366
A.9.5 循環(huán)語句 367
A.9.6 函數(shù) 368
A.9.7 模塊 369
A.9.8 小結(jié) 369
A.10 本書涉及的主要開源軟件版本 369
參考文獻 371