深度強(qiáng)化學(xué)習(xí):基于Python的理論及實踐
定 價:119 元
叢書名:智能科學(xué)與技術(shù)叢書
- 作者:[美] 勞拉·格雷澤 (Laura Graesser), [美] 華龍·肯 (Wah Loon Keng)
- 出版時間:2021/9/1
- ISBN:9787111689331
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書介紹了深度強(qiáng)化學(xué)習(xí)理論和實現(xiàn)的獨特結(jié)合。它從入門開始,然后詳細(xì)地解釋了深度強(qiáng)化學(xué)習(xí)算法的理論,也討論了它的配套軟件庫SLM實驗室的實現(xiàn),并以使深度強(qiáng)化學(xué)習(xí)工作的實際細(xì)節(jié)結(jié)束。
闡述深度強(qiáng)化機(jī)器學(xué)習(xí)理論和優(yōu)化算法。圍繞深度強(qiáng)化學(xué)習(xí)的體系特征進(jìn)行深入淺出地講解探討,特點鮮明。本書采用端到端的方式引入深度強(qiáng)化學(xué)習(xí),即從感性認(rèn)識開始,而后解釋理論和算法,*后提供代碼實現(xiàn)和實用性技巧。
當(dāng)DeepMind在Atari街機(jī)游戲中取得突破性進(jìn)展時,我們次發(fā)現(xiàn)了深度強(qiáng)化學(xué)習(xí)(Deep RL)。人工智能體在只使用圖像而不使用先驗知識的情況下,首次達(dá)到了人類的水平。
人工智能體在沒有監(jiān)督的情況下,通過反復(fù)試驗自學(xué)的想法激發(fā)了我們的想象力,這是一種新的、令人興奮的機(jī)器學(xué)習(xí)方法,它與我們熟悉的監(jiān)督學(xué)習(xí)領(lǐng)域有很大的不同。
我們決定一起學(xué)習(xí)這個主題,我們閱讀書籍和論文,學(xué)習(xí)在線課程,學(xué)習(xí)代碼,并嘗試實現(xiàn)核心算法。我們意識到,深度強(qiáng)化學(xué)習(xí)不僅在概念上具有挑戰(zhàn)性,在實現(xiàn)過程中也需要像大型軟件工程項目一樣經(jīng)過艱辛的努力。
隨著我們的進(jìn)步,我們了解了更多關(guān)于深度強(qiáng)化學(xué)習(xí)的知識算法如何相互關(guān)聯(lián)以及它們的不同特征是什么。形成這種心理模型是一個挑戰(zhàn),因為深度強(qiáng)化學(xué)習(xí)是一個新的研究領(lǐng)域,尚無全面的理論書籍,我們必須直接從研究論文和在線講座中學(xué)習(xí)。
另一個挑戰(zhàn)是理論與實現(xiàn)之間的巨大差距。通常,深度強(qiáng)化學(xué)習(xí)算法有許多組件和可調(diào)的超參數(shù),這使其變得敏感且脆弱。為了成功運行,所有組件都需要正確地協(xié)同工作,并使用適當(dāng)?shù)某瑓?shù)值。從理論上講,實現(xiàn)這一目標(biāo)所需的細(xì)節(jié)并不是很清楚,但同樣重要。在我們的學(xué)習(xí)過程中,那些理論和實現(xiàn)相結(jié)合的資源是非常寶貴的。
我們覺得從理論到實現(xiàn)的過程應(yīng)該比我們發(fā)現(xiàn)的更簡單,我們希望通過自己的努力使深度強(qiáng)化學(xué)習(xí)更易于學(xué)習(xí)。這本書是我們的嘗試,書中采用端到端的方法來引入深度強(qiáng)化學(xué)習(xí)從直覺開始,然后解釋理論和算法,后是實現(xiàn)和實踐技巧。這也是為什么這本書附帶了一個軟件庫SLM Lab,其中包含了所有算法的實現(xiàn)。簡而言之,這是我們在開始學(xué)習(xí)這一主題時希望擁有的書。
深度強(qiáng)化學(xué)習(xí)屬于強(qiáng)化學(xué)習(xí)中一個較大的領(lǐng)域。強(qiáng)化學(xué)習(xí)的核心是函數(shù)逼近,在深度強(qiáng)化學(xué)習(xí)中,函數(shù)是用深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的。強(qiáng)化學(xué)習(xí)與有監(jiān)督和無監(jiān)督學(xué)習(xí)一起構(gòu)成了機(jī)器學(xué)習(xí)的三種核心技術(shù),每種技術(shù)在問題的表達(dá)方式和算法的數(shù)據(jù)學(xué)習(xí)方式上都有所不同。
在這本書中,我們專注于深度強(qiáng)化學(xué)習(xí),因為我們所經(jīng)歷的挑戰(zhàn)是針對強(qiáng)化學(xué)習(xí)這一子領(lǐng)域的。這從兩個方面限制了本書的范圍。首先,它排除了在強(qiáng)化學(xué)習(xí)中可以用來學(xué)習(xí)函數(shù)的所有其他技術(shù)。其次,雖然強(qiáng)化學(xué)習(xí)從20世紀(jì)50年代就已經(jīng)存在,但本書強(qiáng)調(diào)的是2013年到2019年的發(fā)展。近的許多發(fā)展都是建立在較早的研究基礎(chǔ)上的,因此我們認(rèn)為有必要追溯主要思想的發(fā)展。然而,我們并不打算給出這一領(lǐng)域的全面歷史介紹。
這本書是針對計算機(jī)科學(xué)專業(yè)的學(xué)生和軟件工程師的,旨在介紹深度強(qiáng)化學(xué)習(xí),無須事先了解相關(guān)主題。但是,我們假設(shè)讀者對機(jī)器學(xué)習(xí)和深度學(xué)習(xí)有基本的了解,并且有中級Python編程水平。一些使用PyTorch的經(jīng)驗也是有用的,但不是必需的。
這本書的結(jié)構(gòu)如下。
第1章介紹深度強(qiáng)化學(xué)習(xí)問題的不同方面,并對深度強(qiáng)化學(xué)習(xí)算法進(jìn)行綜述。
部分是基于策略的算法和基于值的算法。第2章介紹種策略梯度方法(REINFORCE算法)。第3章介紹種基于值的方法(SARSA)。第4章討論深度Q網(wǎng)絡(luò)(DQN)算法。第5章重點討論改進(jìn)的深度Q網(wǎng)絡(luò)目標(biāo)網(wǎng)絡(luò)、雙重DQN算法和優(yōu)先級經(jīng)驗回放技術(shù)。
第二部分重點研究基于策略和基于值的組合方法。第6章介紹對REINFORCE算法進(jìn)行擴(kuò)展的演員-評論家算法。第7章介紹對演員-評論家算法進(jìn)行擴(kuò)展的近端策略優(yōu)化(PPO)算法。第8章討論同步和異步并行方法,適用于本書中的任何算法。后,第9章總結(jié)所有的算法。
每個算法章節(jié)的結(jié)構(gòu)都是相同的。首先,介紹該章的主要概念,并通過相關(guān)的數(shù)學(xué)公式進(jìn)行研究。然后,描述算法并討論在Python中的實現(xiàn)。后,提供一個可在SLM Lab中運行的可調(diào)超參數(shù)配置算法,并用圖表說明該算法的主要特點。
第三部分重點介紹實現(xiàn)深度強(qiáng)化學(xué)習(xí)算法的實踐細(xì)節(jié)。第10章介紹工程和調(diào)試實現(xiàn),包括關(guān)于超參數(shù)和實驗結(jié)果的小結(jié)。第11章為配套的SLM Lab提供使用參考。第12章介紹神經(jīng)網(wǎng)絡(luò)架構(gòu)。第13章討論硬件。
本書的后一部分(第四部分)是關(guān)于環(huán)境設(shè)計的,由第14~17章組成,分別討論狀態(tài)、動作、獎勵和轉(zhuǎn)換函數(shù)的設(shè)計。
我們推薦從第1章開始順序閱讀到第10章。這些章節(jié)介紹了本書中的所有算法,并提供了實現(xiàn)算法的實用技巧。接下來的三章(第11~13章)集中在更專業(yè)的主題上,可以按任何順序閱讀。對于不想深入研究的讀者來說,第1、2、3、4、6和10章是本書的一個連貫子集,重點關(guān)注了一些算法。后,第四部分包含了一組獨立的章節(jié),供對更深入地理解環(huán)境或構(gòu)建自己的環(huán)境有特殊興趣的讀者閱讀。
SLM Lab\[67\]是本書的配套軟件庫,是一個使用PyTorch\[114\]構(gòu)建的模塊化深度強(qiáng)化學(xué)習(xí)框架。SLM是Strange Loop Machine的縮寫,向侯世達(dá)的名著《哥德爾、艾舍爾、巴赫:集異璧之大成》\[53\]致敬。SLM Lab的具體例子包括使用PyTorch的語法和特性來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。然而,實現(xiàn)深度強(qiáng)化學(xué)習(xí)算法的基本原理也適用于其他的深度學(xué)習(xí)框架,比如TensorFlow\[1\]。
SLM Lab的設(shè)計旨在幫助初學(xué)者通過將其組成部分組織成概念清晰的片段來學(xué)習(xí)深度強(qiáng)化學(xué)習(xí)。這些組成部分與學(xué)
贊譽(yù)
譯者序
序言
前言
致謝
第1章 強(qiáng)化學(xué)習(xí)簡介1
1.1 強(qiáng)化學(xué)習(xí)1
1.2 強(qiáng)化學(xué)習(xí)中的MDP4
1.3 強(qiáng)化學(xué)習(xí)中的學(xué)習(xí)函數(shù)7
1.4 深度強(qiáng)化學(xué)習(xí)算法9
1.4.1 基于策略的算法9
1.4.2 基于值的算法10
1.4.3 基于模型的算法10
1.4.4 組合方法11
1.4.5 本書中的算法12
1.4.6 同策略和異策略算法12
1.4.7 小結(jié)12
1.5 強(qiáng)化學(xué)習(xí)中的深度學(xué)習(xí)13
1.6 強(qiáng)化學(xué)習(xí)與監(jiān)督學(xué)習(xí)14
1.6.1 缺乏先知14
1.6.2 反饋稀疏性15
1.6.3 數(shù)據(jù)生成15
1.7 總結(jié)16
部分 基于策略的算法和基于值的算法
第2章 REINFORCE18
2.1 策略18
2.2 目標(biāo)函數(shù)19
2.3 策略梯度19
2.3.1 策略梯度推導(dǎo)20
2.4 蒙特卡羅采樣22
2.5 REINFORCE算法23
2.5.1 改進(jìn)的REINFORCE算法23
2.6 實現(xiàn)REINFORCE24
2.6.1 一種小化REINFORCE的實現(xiàn)24
2.6.2 用PyTorch構(gòu)建策略26
2.6.3 采樣動作28
2.6.4 計算策略損失29
2.6.5 REINFORCE訓(xùn)練循環(huán)30
2.6.6 同策略內(nèi)存回放31
2.7 訓(xùn)練REINFORCE智能體33
2.8 實驗結(jié)果36
2.8.1 實驗:評估折扣因子的影響36
2.8.2 實驗:評估基準(zhǔn)線的影響37
2.9 總結(jié)39
2.10 擴(kuò)展閱讀39
2.11 歷史回顧39
第3章 SARSA40
3.1 Q函數(shù)和V函數(shù)40
3.2 時序差分學(xué)習(xí)42
3.2.1 時間差分學(xué)習(xí)示例44
3.3 SARSA中的動作選擇48
3.3.1 探索和利用49
3.4 SARSA算法50
3.4.1 同策略算法51
3.5 實現(xiàn)SARSA52
3.5.1 動作函數(shù):ε-貪婪52
3.5.2 計算Q損失52
3.5.3 SARSA訓(xùn)練循環(huán)54
3.5.4 同策略批處理內(nèi)存回放55
3.6 訓(xùn)練SARSA智能體56
3.7 實驗結(jié)果58
3.7.1 實驗:評估學(xué)習(xí)率的影響58
3.8 總結(jié)60
3.9 擴(kuò)展閱讀60
3.10 歷史回顧60
第4章 深度Q網(wǎng)絡(luò)62
4.1 學(xué)習(xí)DQN中的Q函數(shù)62
4.2 DQN中的動作選擇64
4.2.1 Boltzmann策略65
4.3 經(jīng)驗回放67
4.4 DQN算法68
4.5 實現(xiàn)DQN69
4.5.1 計算Q損失70
4.5.2 DQN訓(xùn)練循環(huán)70
4.5.3 內(nèi)存回放71
4.6 訓(xùn)練DQN智能體74
4.7 實驗結(jié)果77
4.7.1 實驗:評估網(wǎng)絡(luò)架構(gòu)的影響77
4.8 總結(jié)78
4.9 擴(kuò)展閱讀79
4.10 歷史回顧79
第5章 改進(jìn)的深度Q網(wǎng)絡(luò)80
5.1 目標(biāo)網(wǎng)絡(luò)80
5.2 雙重DQN算法82
5.3 優(yōu)先級經(jīng)驗回放85
5.3.1 重要性抽樣86
5.4 實現(xiàn)改進(jìn)的DQN88
5.4.1 網(wǎng)絡(luò)初始化88
5.4.2 計算Q損失89
5.4.3 更新目標(biāo)網(wǎng)絡(luò)90
5.4.4 包含目標(biāo)網(wǎng)絡(luò)的DQN91
5.4.5 雙重DQN91
5.4.6 優(yōu)先級經(jīng)驗回放91
5.5 訓(xùn)練DQN智能體玩Atari游戲96
5.6 實驗結(jié)果101
5.6.1 實驗:評估雙重DQN與PER的影響101
5.7 總結(jié)104
5.8 擴(kuò)展閱讀104
第二部分 組合方法
第6章 優(yōu)勢演員-評論家算法106
6.1 演員106
6.2 評論家107
6.2.1 優(yōu)勢函數(shù)107
6.2.2 學(xué)習(xí)優(yōu)勢函數(shù)110
6.3 A2C算法111
6.4 實現(xiàn)A2C113
6.4.1 優(yōu)勢估計113
6.4.2 計算值損失和策略損失115
6.4.3 演員-評論家訓(xùn)練循環(huán)116
6.5 網(wǎng)絡(luò)架構(gòu)117
6.6 訓(xùn)練A2C智能體118
6.6.1 在Pong上使用n步回報的A2C算法118
6.6.2 在Pong上使用GAE的A2C算法121
6.6.3 在BipedalWalker上使用n步回報的A2C算法122
6.7 實驗結(jié)果124
6.7.1 實驗:評估n步回報的影響124
6.7.2 實驗:評估GAE中λ的影響126
6.8 總結(jié)127
6.9 擴(kuò)展閱讀128
6.10 歷史回顧128
第7章 近端策略優(yōu)化算法130
7.1 替代目標(biāo)函數(shù)130
7.1.1 性能突然下降130
7.1.2 修改目標(biāo)函數(shù)132
7.2 近端策略優(yōu)化136
7.3 PPO算法139
7.4 實現(xiàn)PPO141
7.4.1 計算PPO的策略損失141
7.4.2 PPO訓(xùn)練循環(huán)142
7.5 訓(xùn)練PPO智能體143
7.5.1 在Pong上使用PPO算法143
7.5.2 在BipedalWalker上使用PPO算法146
7.6 實驗結(jié)果149
7.6.1 實驗:評估GAE中λ的影響149
7.6.2 實驗:評估裁剪變量ε的影響150
7.7 總結(jié)152
7.8 擴(kuò)展閱讀152
第8章 并行方法153
8.1 同步并行153
8.2 異步并行154
8.2.1 Hogwild!算法155
8.3 訓(xùn)練A3C智能體157
8.4 總結(jié)160
8.5 擴(kuò)展閱讀160
第9章 算法總結(jié)161
第三部分 實踐細(xì)節(jié)
第10章 深度強(qiáng)化學(xué)習(xí)工程實踐164
10.1 軟件工程實踐164
10.1.1 單元測試164
10.1.2 代碼質(zhì)量169
10.1.3 Git工作流170
10.2 調(diào)試技巧171
10.2.1 生命跡象172
10.2.2 策略梯度診斷172
10.2.3 數(shù)據(jù)診斷173
10.2.4 預(yù)處理器174
10.2.5 內(nèi)存174
10.2.6 算法函數(shù)174
10.2.7 神經(jīng)網(wǎng)絡(luò)175
10.2.8 算法簡化177
10.2.9 問題簡化177
10.2.10 超參數(shù)178
10.2.11 實驗室工作流178
10.3 Atari技巧179
10.4 深度強(qiáng)化學(xué)習(xí)小結(jié)181
10.4.1 超參數(shù)表181
10.4.2 算法性能比較184
10.5 總結(jié)186
第11章 SLM Lab187
11.1 SLM Lab算法實現(xiàn)187
11.2 spec文件188
11.2.1 搜索spec語法190
11.3 運行SLM Lab192
11.3.1 SLM Lab指令193
11.4 分析實驗結(jié)果193
11.4.1 實驗數(shù)據(jù)概述193
11.5 總結(jié)195
第12章 神經(jīng)網(wǎng)絡(luò)架構(gòu)196
12.1 神經(jīng)網(wǎng)絡(luò)的類型196
12.1.1 多層感知機(jī)196
12.1.2 卷積神經(jīng)網(wǎng)絡(luò)198
12.1.3 循環(huán)神經(jīng)網(wǎng)絡(luò)199
12.2 選擇網(wǎng)絡(luò)族的指導(dǎo)方法199
12.2.1 MDP與POMDP200
12.2.2 根據(jù)環(huán)境選擇網(wǎng)絡(luò)202
12.3 網(wǎng)絡(luò)API204
12.3.1 輸入層和輸出層形狀推斷205
12.3.2 自動構(gòu)建網(wǎng)絡(luò)207
12.3.3 訓(xùn)練步驟209
12.3.4 基礎(chǔ)方法的使用210
12.4 總結(jié)211
12.5 擴(kuò)展閱讀212
第13章 硬件213
13.1 計算機(jī)213
13.2 數(shù)據(jù)類型217
13.3 在強(qiáng)化學(xué)習(xí)中優(yōu)化數(shù)據(jù)類型219
13.4 選擇硬件222
13.5 總結(jié)223
第四部分 環(huán)境設(shè)計
第14章 狀態(tài)226
14.1 狀態(tài)示例226
14.2 狀態(tài)完整性231
14.3 狀態(tài)復(fù)雜性231
14.4 狀態(tài)信息損失235
14.4.1 圖像灰度235
14.4.2 離散化235
14.4.3 散列沖突236
14.4.4 元信息損失236
14.5 預(yù)處理238
14.5.1 標(biāo)準(zhǔn)化239
14.5.2 圖像預(yù)處理240
14.5.3 時間預(yù)處理241
14.6 總結(jié)244
第15章 動作245
15.1 動作示例245
15.2 動作完整性247
15.3 動作復(fù)雜性248
15.4 總結(jié)251
15.5 擴(kuò)展閱讀:日常事務(wù)中的動作設(shè)計252
第16章 獎勵255
16.1 獎勵的作用255
16.2 獎勵設(shè)計準(zhǔn)則256
16.3 總結(jié)259
第17章 轉(zhuǎn)換函數(shù)260
17.1 可行性檢測260
17.2 真實性檢測262
17.3 總結(jié)263后記264
附錄A 深度強(qiáng)化學(xué)習(xí)時間線267
附錄B 示例環(huán)境269
參考文獻(xiàn)274