白話強化學習與PyTorch
  • 推薦0
  • 收藏0
  • 瀏覽96

白話強化學習與PyTorch

高揚 , 葉振斌 (作者)  潘昕 (責任編輯)

  • 書  號:978-7-121-36747-2
  • 出版日期:2019-09-04
  • 頁  數:384
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
  • 維護人:潘昕
紙質版 ¥99.00
本書以“平民”的起點,從“零”開始,基于PyTorch框架,介紹深度學習和強化學習的技術與技巧,逐層鋪墊,營造良好的帶入感和親近感,把學習曲線拉平,使得沒有學過微積分等高級理論的程序員一樣能夠讀得懂、學得會。同時,本書配合漫畫插圖來調節閱讀氣氛,并對每個原理都進行了對比講解和實例說明。
本書適合對深度學習和強化學習感興趣的技術人員、希望對深度學習和強化學習進行入門了解的技術人員及深度學習和強化學習領域的初級從業人員閱讀。
從零開始,輔以漫畫,基于PyTorch框架介紹深度學習和強化學習技術與技巧
高揚,金山辦公軟件人工智能組技術負責人,歷任歡聚時代人工智能算法專家,金山軟件西山居大數據架構師等職。重慶工商大學研究生導師,電子工業出版社博文視點大數據技術圖書專家委員會專家委員,有多年海外工作經驗。有多部白話系列大數據與機器學習相關著作。
葉振斌,現任網易游戲伏羲人工智能實驗室高級深度學習研發工程師。多年從事機器學習,特別是強化學習智能算法的研究及開發工作。擁有豐富的軟件開發經驗,豐富的人工智能算法訓練平臺開發經驗。于2014年獲東北大學軟件工程專業學士學位,2017年獲重慶大學計算機科學與技術專業碩士學位。
前言

當人工智能的熱潮席卷全世界的時候,當我們一次又一次為各種人工智能新作而驚嘆的時候,我們不約而同地將目光投向了深度學習領域。我們對這個既新鮮又傳統的領域有一種憧憬,甚至我們之中的許多人會在某一刻認為這可能是未來機器覺醒前的萌芽。
說深度學習新鮮,是因為它在近幾年的發展確實獲得了令人矚目的成果,不論是在計算機視覺(Computer Vision,CV)領域,還是在自動語音識別(Automatic Speech Recognition,ASR)領域,抑或推薦系統應用領域,都邁上了一個前所未有的新臺階。這當然得益于計算機硬件處理能力的提升,包括CPU的速度、內存的大小、磁盤的容量;得益于新型并行計算框架的逐步成熟,例如CUDA(Compute Unified Device Architecture);得益于廣大熱衷于貢獻高質量開源軟件系統的大廠的扛鼎力作,例如TensorFlow、PyTorch、MXNet等優秀框架的不斷涌現。這些無一例外,都成為推動一個行業在全國乃至全世界發展的重要因素。
說深度學習傳統,是因為它最為基本的理論部分,是在數十年前就逐步有人提出并進行完善的一套理論體系。一位朋友曾告訴我,在他研究生畢業的時候(應該是在21世紀初),有不少同學的研究方向是人工智能和神經網絡,而其中的大多數人,不是進了國有研究所,開始了日復一日“讀Paper、寫Paper”的過程,就是進了保險公司、證券交易所等企業——做什么呢?也不是做自己的老本行,而是做報表、做數據分析、寫報告。
當然,這些同學算是比較“幸運”的,還有相當一部分干脆改了行,去往一些企業的開發崗位,做Java開發或者數據庫架構之類的工作。我完全沒有輕視這些崗位和企業的意思,我只是單純地覺得,在大學中花了那么多年走出來的一條路,沒辦法再走下去,是一件非常可惜的事情。而在導致這一現象的眾多客觀因素中,前面提到的計算能力、框架成熟度、軟件包可用性等起著決定性的作用。
不過,我們趕上好時候了。除落地應用外的大部分基礎問題,都已經由那些世界一流的數據科學家幫我們解決,并封裝成了一個個開源或非開源的軟/硬件產品。
其實,除了深度神經網絡在CV、ASR、NLP等領域的應用,近幾年,深度學習在另外一個領域有著炫目的成績,那就是深度強化學習領域。別的不說,大名鼎鼎的AlphaGo和AlphaGo Zero就是典型的深度強化學習應用。從感性的角度看,深度強化學習似乎是由“深度學習”和“強化學習”兩個領域結合而成的——這個說法應該不算錯。
所謂深度學習,一般是指基于深度神經網絡的一系列應用,而這個領域應用的豐富程度也是非常高的。因為深度神經網絡有著超高的VC維,所以理論上它幾乎可以用來實現任何從x到f(x)的映射關系。
強化學習所研究的事情就更有意思了。強化學習研究的主要是如何讓機器人在一個預先定義好的環境中,通過自己學習來逐步形成或學會一套成熟的、高質量的自動化行為策略,這也是一直以來世界一流高校的人工智能專業設立并努力研究的一個神秘而又讓人充滿幻想的領域。
為了讓廣大讀者能夠近距離接觸強化學習和深度學習結合應用的案例,讓這樣一個有趣且有著光明前景的領域以更加平易近人的姿態出現,在這本書中,我將用具有高中數學水平的讀者朋友能夠理解的語言,和大家好好分享一下如何用深度學習的利器PyTorch來完成人工智能機器人自我進化的落地過程。

本書特色
可以說,我們處于人工智能時代的起點。這是一個非常好的時代,那么多優秀的開源軟件框架,為每一個程序員提供了門檻足夠低的學習工具。
本書以“平民”的起點,從“零”開始介紹深度學習的技術與技巧,讓讀者有良好的帶入感和親近感,并通過逐層鋪墊,把學習曲線拉平,使得沒有學過微積分等高級理論的程序員朋友一樣能夠讀得懂、學得會。同時,本書配合漫畫插圖來調節閱讀氣氛,并在每個原理講解的部分都提供了對比和實例說明,相信每位讀者都能有輕松、愉悅的閱讀體驗。
如果你的英文閱讀能力比較強且有比較高的學術素養,如果你能夠以英文原版文獻(不論是公開課、論文,還是經典教材)作為首選的閱讀資料,那么,仍然推薦你閱讀英文原版內容,因為那將讓你更為直接地接觸相關知識。
基于本書的定位,在描述討論對象的時候,我通常不會使用學術級別的詞匯,而是盡可能使用程序員能夠讀懂的語言。因此,與經典的閱讀材料相比,本書敘述的內容難免存在一些偏頗,甚至可能為了言簡意賅地講明原理而有失嚴謹。另外,在一個理論出現或者相關論文發表之后,從我把它讀懂、寫清楚到圖書出版,至少需要一年,甚至可能更久,而這對于一個在領域前沿工作的技術人員來說,時間顯得有些長。因此,對于學習能力比較強的讀者來說,本書作為工程實現參考書更為合適。

讀者對象
本書適合如下人員閱讀。
*對深度學習和強化學習感興趣但完全不了解的技術人員。
*對深度學習和強化學習比較感興趣的技術人員。
*深度學習和強化學習領域的初級從業人員。
*希望對深度學習和強化學習進行入門了解的技術人員。

如何閱讀本書
本書是我寫作的“白話”系列圖書的第三本,與《白話大數據與深度學習》《白話深度學習與TensorFlow》互為姊妹篇。但是,本書不依賴另外兩本書的內容,是獨立成冊的。
本書的主要內容如下。
第1章到第5章,講的是傳統強化學習的研究目標與脈絡,主要介紹了從一個程序員的角度怎么理解強化學習最為輕松,側重于理解方式的誘導。
第6章到第11章,是本書的核心內容,講的是深度學習的原理、PyTorch框架的基本知識及深度強化學習的常用算法模型。
第12章到第15章,講的是擴展性的知識。例如,其他有助于訓練模型的算法思路,第三方工具插件,可供實驗的環境,一些有趣的強化學習算法和觀點,甚至模型落地過程中的優化與壓縮。
附錄A中詳細記載了本書涉及的各種軟件環境的安裝和配置過程。
套用一句時髦的廣告語:“深度強化學習從入門到落地,讀這一本就夠了。”

勘誤與支持
由于作者的水平有限,編寫時間倉促,書中難免會出現錯誤或者不準確的地方,懇請讀者批評指正。
如果你有更多的寶貴意見,歡迎關注“智能工廠”微信公眾號和我們進行互動討論。你也可以在這里找到本書配套代碼的下載地址和QQ討論群的相關信息。關注大數據尖端技術發展,關注“智能工廠”。

本書代碼的下載地址為https://github.com/GAOYANGAU/DRLPytorch。
同時,你也可以發送電子郵件至[email protected]與我聯系。

期待得到你的真摯反饋,讓我們在技術道路上互勉共進。


高 揚

目錄

傳統篇
第1章 強化學習是什么 2
1.1 題設 3
1.1.1 多智能才叫智能 5
1.1.2 人工智能的定義 5
1.2 強化學習的研究對象 7
1.2.1 強化學習的應用場合 7
1.2.2 強化學習的建模 11
1.3 本章小結 17
第2章 強化學習的脈絡 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 狀態轉移 30
2.5.2 策略與評價 31
2.5.3 策略優化 36
2.6 Model-Based和Model-Free 36
2.6.1 Model-Based 36
2.6.2 規劃問題 37
2.6.3 Model-Free 38
2.7 本章小結 38
第3章 動態規劃 40
3.1 狀態估值 40
3.2 策略優化 42
3.3 本章小結 43
第4章 蒙特卡羅法 45
4.1 歷史由來 45
4.2 狀態估值 47
4.3 兩種估值方法 49
4.3.1 首次訪問蒙特卡羅策略估值 49
4.3.2 每次訪問蒙特卡羅策略估值 49
4.3.3 增量平均 50
4.4 弊端 51
4.5 本章小結 52
第5章 時間差分 53
5.1 SARSA算法 53
5.1.1 SARSA算法的偽代碼 54
5.1.2 SARSA算法的優點和缺點 57
5.2 Q-Learning算法 57
5.2.1 Q-Learning算法的偽代碼 58
5.2.2 Q-Learning算法的優點和缺點 59
5.3 On-Policy和Off-Policy 61
5.4 On-Line學習和Off-Line學習 62
5.5 比較與討論 63
5.6 本章小結 65

現代篇
第6章 深度學習 68
6.1 PyTorch簡介 69
6.1.1 歷史淵源 70
6.1.2 支持 71
6.2 神經元 74
6.3 線性回歸 77
6.4 激勵函數 80
6.4.1 Sigmoid函數 81
6.4.2 Tanh函數 82
6.4.3 ReLU函數 82
6.4.4 Linear函數 83
6.5 神經網絡 84
6.6 網絡訓練 85
6.6.1 輸入 86
6.6.2 輸出 86
6.6.3 網絡結構 87
6.6.4 損失函數 88
6.6.5 求解極小值 90
6.6.6 線性回歸 90
6.6.7 凸函數 93
6.6.8 二元(多元)凸函數 98
6.6.9 導數補充 101
6.6.10 導數怎么求 103
6.6.11 “串聯”的神經元 105
6.6.12 模型的工作 107
6.6.13 理解損失函數 108
6.7 深度學習的優勢 108
6.7.1 線性和非線性的疊加 109
6.7.2 不用再提取特征 111
6.7.3 處理線性不可分 112
6.8 手寫數字識別公開數據集 114
6.9 全連接網絡 117
6.9.1 輸入與輸出 118
6.9.2 代碼解讀 119
6.9.3 運行結果 125
6.10 卷積神經網絡 125
6.10.1 代碼解讀 125
6.10.2 理解卷積神經網絡的結構 132
6.10.3 卷積核的結構 134
6.11 循環神經網絡 135
6.11.1 網絡結構 136
6.11.2 應用案例 140
6.11.3 代碼解讀 143
6.12 其他注意事項 148
6.12.1 并行計算 148
6.12.2 梯度消失和梯度爆炸 152
6.12.3 歸一化 157
6.12.4 超參數的設置 159
6.12.5 正則化 161
6.12.6 不唯一的模型 170
6.13 深度神經網絡的發展趨勢 171
6.14 本章小結 178
第7章 Gym——不要錢的試驗場 180
7.1 簡介 180
7.2 安裝 182
7.3 類別 183
7.4 接口 188
7.5 本章小結 191
第8章 DQN算法族 192
8.1 2013版DQN 192
8.1.1 模型結構 192
8.1.2 訓練過程 195
8.1.3 Replay Memory 197
8.1.4 小結 198
8.2 2015版DQN 198
8.2.1 模型結構 198
8.2.2 訓練過程 199
8.2.3 Target網絡 200
8.2.4 小結 201
8.3 Double DQN 201
8.3.1 模型結構 202
8.3.2 訓練過程 202
8.3.3 效果 203
8.3.4 小結 204
8.4 Dueling DQN 204
8.4.1 模型結構 205
8.4.2 效果 207
8.4.3 小結 208
8.5 優先回放DQN 208
8.6 本章小結 209
第9章 PG算法族 211
9.1 策略梯度 211
9.2 DPG 213
9.3 Actor-Critic 214
9.4 DDPG 214
9.5 本章小結 218
第10章 A3C 219
10.1 模型結構 219
10.1.1 A3C Q-Learning 219
10.1.2 A3C Actor-Critic 222
10.2 本章小結 224
第11章 UNREAL 226
11.1 主任務 226
11.2 像素控制任務 227
11.3 獎勵值預測 229
11.4 值函數回放 230
11.5 損失函數 231
11.6 本章小結 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 本章小結 262
第13章 SerpentAI 263
13.1 簡介 263
13.2 安裝和配置 264
13.3 示例 265
13.3.1 創建Game Plugin 265
13.3.2 創建Game Agent 268
13.3.3 訓練Context Classifier 271
13.3.4 訓練Agent 282
13.4 本章小結 286
第14章 案例詳解 287
14.1 AlphaGo 287
14.1.1 AlphaGo的前世今生 287
14.1.2 “深藍”是誰 288
14.1.3 圍棋到底有多復雜 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 本章小結 329
第15章 擴展討論 331
15.1 TRPO 331
15.2 反向強化學習 332
15.3 模型壓縮 333
15.3.1 剪枝 335
15.3.2 量化 336
15.3.3 結構壓縮 337
15.4 本章小結 339

后記 341
附錄A 342
A.1 安裝Ubuntu 342
A.2 安裝CUDA環境 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 安裝相關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 循環語句 367
A.9.6 函數 368
A.9.7 模塊 369
A.9.8 小結 369
A.10 本書涉及的主要開源軟件版本 369
參考文獻 371

讀者評論

0k000澳客网竞彩