深度強(qiáng)化學(xué)習(xí):基于Python的理論及實(shí)踐
定 價(jià):119 元
叢書名:智能科學(xué)與技術(shù)叢書
- 作者:[美] 勞拉·格雷澤 (Laura Graesser), [美] 華龍·肯 (Wah Loon Keng)
- 出版時(shí)間:2021/9/1
- ISBN:9787111689331
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書介紹了深度強(qiáng)化學(xué)習(xí)理論和實(shí)現(xiàn)的獨(dú)特結(jié)合。它從入門開始,然后詳細(xì)地解釋了深度強(qiáng)化學(xué)習(xí)算法的理論,也討論了它的配套軟件庫(kù)SLM實(shí)驗(yàn)室的實(shí)現(xiàn),并以使深度強(qiáng)化學(xué)習(xí)工作的實(shí)際細(xì)節(jié)結(jié)束。
闡述深度強(qiáng)化機(jī)器學(xué)習(xí)理論和優(yōu)化算法。圍繞深度強(qiáng)化學(xué)習(xí)的體系特征進(jìn)行深入淺出地講解探討,特點(diǎn)鮮明。本書采用端到端的方式引入深度強(qiáng)化學(xué)習(xí),即從感性認(rèn)識(shí)開始,而后解釋理論和算法,*后提供代碼實(shí)現(xiàn)和實(shí)用性技巧。
當(dāng)DeepMind在Atari街機(jī)游戲中取得突破性進(jìn)展時(shí),我們次發(fā)現(xiàn)了深度強(qiáng)化學(xué)習(xí)(Deep RL)。人工智能體在只使用圖像而不使用先驗(yàn)知識(shí)的情況下,首次達(dá)到了人類的水平。
人工智能體在沒有監(jiān)督的情況下,通過反復(fù)試驗(yàn)自學(xué)的想法激發(fā)了我們的想象力,這是一種新的、令人興奮的機(jī)器學(xué)習(xí)方法,它與我們熟悉的監(jiān)督學(xué)習(xí)領(lǐng)域有很大的不同。
我們決定一起學(xué)習(xí)這個(gè)主題,我們閱讀書籍和論文,學(xué)習(xí)在線課程,學(xué)習(xí)代碼,并嘗試實(shí)現(xiàn)核心算法。我們意識(shí)到,深度強(qiáng)化學(xué)習(xí)不僅在概念上具有挑戰(zhàn)性,在實(shí)現(xiàn)過程中也需要像大型軟件工程項(xiàng)目一樣經(jīng)過艱辛的努力。
隨著我們的進(jìn)步,我們了解了更多關(guān)于深度強(qiáng)化學(xué)習(xí)的知識(shí)算法如何相互關(guān)聯(lián)以及它們的不同特征是什么。形成這種心理模型是一個(gè)挑戰(zhàn),因?yàn)樯疃葟?qiáng)化學(xué)習(xí)是一個(gè)新的研究領(lǐng)域,尚無全面的理論書籍,我們必須直接從研究論文和在線講座中學(xué)習(xí)。
另一個(gè)挑戰(zhàn)是理論與實(shí)現(xiàn)之間的巨大差距。通常,深度強(qiáng)化學(xué)習(xí)算法有許多組件和可調(diào)的超參數(shù),這使其變得敏感且脆弱。為了成功運(yùn)行,所有組件都需要正確地協(xié)同工作,并使用適當(dāng)?shù)某瑓?shù)值。從理論上講,實(shí)現(xiàn)這一目標(biāo)所需的細(xì)節(jié)并不是很清楚,但同樣重要。在我們的學(xué)習(xí)過程中,那些理論和實(shí)現(xiàn)相結(jié)合的資源是非常寶貴的。
我們覺得從理論到實(shí)現(xiàn)的過程應(yīng)該比我們發(fā)現(xiàn)的更簡(jiǎn)單,我們希望通過自己的努力使深度強(qiáng)化學(xué)習(xí)更易于學(xué)習(xí)。這本書是我們的嘗試,書中采用端到端的方法來引入深度強(qiáng)化學(xué)習(xí)從直覺開始,然后解釋理論和算法,后是實(shí)現(xiàn)和實(shí)踐技巧。這也是為什么這本書附帶了一個(gè)軟件庫(kù)SLM Lab,其中包含了所有算法的實(shí)現(xiàn)。簡(jiǎn)而言之,這是我們?cè)陂_始學(xué)習(xí)這一主題時(shí)希望擁有的書。
深度強(qiáng)化學(xué)習(xí)屬于強(qiáng)化學(xué)習(xí)中一個(gè)較大的領(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í),因?yàn)槲覀兯?jīng)歷的挑戰(zhàn)是針對(duì)強(qiáng)化學(xué)習(xí)這一子領(lǐng)域的。這從兩個(gè)方面限制了本書的范圍。首先,它排除了在強(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)域的全面歷史介紹。
這本書是針對(duì)計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生和軟件工程師的,旨在介紹深度強(qiáng)化學(xué)習(xí),無須事先了解相關(guān)主題。但是,我們假設(shè)讀者對(duì)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)有基本的了解,并且有中級(jí)Python編程水平。一些使用PyTorch的經(jīng)驗(yàn)也是有用的,但不是必需的。
這本書的結(jié)構(gòu)如下。
第1章介紹深度強(qiáng)化學(xué)習(xí)問題的不同方面,并對(duì)深度強(qiáng)化學(xué)習(xí)算法進(jìn)行綜述。
部分是基于策略的算法和基于值的算法。第2章介紹種策略梯度方法(REINFORCE算法)。第3章介紹種基于值的方法(SARSA)。第4章討論深度Q網(wǎng)絡(luò)(DQN)算法。第5章重點(diǎn)討論改進(jìn)的深度Q網(wǎng)絡(luò)目標(biāo)網(wǎng)絡(luò)、雙重DQN算法和優(yōu)先級(jí)經(jīng)驗(yàn)回放技術(shù)。
第二部分重點(diǎn)研究基于策略和基于值的組合方法。第6章介紹對(duì)REINFORCE算法進(jìn)行擴(kuò)展的演員-評(píng)論家算法。第7章介紹對(duì)演員-評(píng)論家算法進(jìn)行擴(kuò)展的近端策略優(yōu)化(PPO)算法。第8章討論同步和異步并行方法,適用于本書中的任何算法。后,第9章總結(jié)所有的算法。
每個(gè)算法章節(jié)的結(jié)構(gòu)都是相同的。首先,介紹該章的主要概念,并通過相關(guān)的數(shù)學(xué)公式進(jìn)行研究。然后,描述算法并討論在Python中的實(shí)現(xiàn)。后,提供一個(gè)可在SLM Lab中運(yùn)行的可調(diào)超參數(shù)配置算法,并用圖表說明該算法的主要特點(diǎn)。
第三部分重點(diǎn)介紹實(shí)現(xiàn)深度強(qiáng)化學(xué)習(xí)算法的實(shí)踐細(xì)節(jié)。第10章介紹工程和調(diào)試實(shí)現(xiàn),包括關(guān)于超參數(shù)和實(shí)驗(yàn)結(jié)果的小結(jié)。第11章為配套的SLM Lab提供使用參考。第12章介紹神經(jīng)網(wǎng)絡(luò)架構(gòu)。第13章討論硬件。
本書的后一部分(第四部分)是關(guān)于環(huán)境設(shè)計(jì)的,由第14~17章組成,分別討論狀態(tài)、動(dòng)作、獎(jiǎng)勵(lì)和轉(zhuǎn)換函數(shù)的設(shè)計(jì)。
我們推薦從第1章開始順序閱讀到第10章。這些章節(jié)介紹了本書中的所有算法,并提供了實(shí)現(xiàn)算法的實(shí)用技巧。接下來的三章(第11~13章)集中在更專業(yè)的主題上,可以按任何順序閱讀。對(duì)于不想深入研究的讀者來說,第1、2、3、4、6和10章是本書的一個(gè)連貫子集,重點(diǎn)關(guān)注了一些算法。后,第四部分包含了一組獨(dú)立的章節(jié),供對(duì)更深入地理解環(huán)境或構(gòu)建自己的環(huán)境有特殊興趣的讀者閱讀。
SLM Lab\[67\]是本書的配套軟件庫(kù),是一個(gè)使用PyTorch\[114\]構(gòu)建的模塊化深度強(qiáng)化學(xué)習(xí)框架。SLM是Strange Loop Machine的縮寫,向侯世達(dá)的名著《哥德爾、艾舍爾、巴赫:集異璧之大成》\[53\]致敬。SLM Lab的具體例子包括使用PyTorch的語法和特性來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。然而,實(shí)現(xiàn)深度強(qiáng)化學(xué)習(xí)算法的基本原理也適用于其他的深度學(xué)習(xí)框架,比如TensorFlow\[1\]。
SLM Lab的設(shè)計(jì)旨在幫助初學(xué)者通過將其組成部分組織成概念清晰的片段來學(xué)習(xí)深度強(qiáng)化學(xué)習(xí)。這些組成部分與學(xué)
贊譽(yù)
譯者序
序言
前言
致謝
第1章 強(qiáng)化學(xué)習(xí)簡(jiǎn)介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 實(shí)現(xiàn)REINFORCE24
2.6.1 一種小化REINFORCE的實(shí)現(xiàn)24
2.6.2 用PyTorch構(gòu)建策略26
2.6.3 采樣動(dòng)作28
2.6.4 計(jì)算策略損失29
2.6.5 REINFORCE訓(xùn)練循環(huán)30
2.6.6 同策略內(nèi)存回放31
2.7 訓(xùn)練REINFORCE智能體33
2.8 實(shí)驗(yàn)結(jié)果36
2.8.1 實(shí)驗(yàn):評(píng)估折扣因子的影響36
2.8.2 實(shí)驗(yàn):評(píng)估基準(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 時(shí)序差分學(xué)習(xí)42
3.2.1 時(shí)間差分學(xué)習(xí)示例44
3.3 SARSA中的動(dòng)作選擇48
3.3.1 探索和利用49
3.4 SARSA算法50
3.4.1 同策略算法51
3.5 實(shí)現(xiàn)SARSA52
3.5.1 動(dòng)作函數(shù):ε-貪婪52
3.5.2 計(jì)算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 實(shí)驗(yàn)結(jié)果58
3.7.1 實(shí)驗(yàn):評(píng)估學(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中的動(dòng)作選擇64
4.2.1 Boltzmann策略65
4.3 經(jīng)驗(yàn)回放67
4.4 DQN算法68
4.5 實(shí)現(xiàn)DQN69
4.5.1 計(jì)算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 實(shí)驗(yàn)結(jié)果77
4.7.1 實(shí)驗(yàn):評(píng)估網(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í)經(jīng)驗(yàn)回放85
5.3.1 重要性抽樣86
5.4 實(shí)現(xiàn)改進(jìn)的DQN88
5.4.1 網(wǎng)絡(luò)初始化88
5.4.2 計(jì)算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í)經(jīng)驗(yàn)回放91
5.5 訓(xùn)練DQN智能體玩Atari游戲96
5.6 實(shí)驗(yàn)結(jié)果101
5.6.1 實(shí)驗(yàn):評(píng)估雙重DQN與PER的影響101
5.7 總結(jié)104
5.8 擴(kuò)展閱讀104
第二部分 組合方法
第6章 優(yōu)勢(shì)演員-評(píng)論家算法106
6.1 演員106
6.2 評(píng)論家107
6.2.1 優(yōu)勢(shì)函數(shù)107
6.2.2 學(xué)習(xí)優(yōu)勢(shì)函數(shù)110
6.3 A2C算法111
6.4 實(shí)現(xiàn)A2C113
6.4.1 優(yōu)勢(shì)估計(jì)113
6.4.2 計(jì)算值損失和策略損失115
6.4.3 演員-評(píng)論家訓(xùn)練循環(huán)116
6.5 網(wǎng)絡(luò)架構(gòu)117
6.6 訓(xùn)練A2C智能體118
6.6.1 在Pong上使用n步回報(bào)的A2C算法118
6.6.2 在Pong上使用GAE的A2C算法121
6.6.3 在BipedalWalker上使用n步回報(bào)的A2C算法122
6.7 實(shí)驗(yàn)結(jié)果124
6.7.1 實(shí)驗(yàn):評(píng)估n步回報(bào)的影響124
6.7.2 實(shí)驗(yàn):評(píng)估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 實(shí)現(xiàn)PPO141
7.4.1 計(jì)算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 實(shí)驗(yàn)結(jié)果149
7.6.1 實(shí)驗(yàn):評(píng)估GAE中λ的影響149
7.6.2 實(shí)驗(yàn):評(píng)估裁剪變量ε的影響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
第三部分 實(shí)踐細(xì)節(jié)
第10章 深度強(qiáng)化學(xué)習(xí)工程實(shí)踐164
10.1 軟件工程實(shí)踐164
10.1.1 單元測(cè)試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 算法簡(jiǎn)化177
10.2.9 問題簡(jiǎn)化177
10.2.10 超參數(shù)178
10.2.11 實(shí)驗(yàn)室工作流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算法實(shí)現(xiàn)187
11.2 spec文件188
11.2.1 搜索spec語法190
11.3 運(yùn)行SLM Lab192
11.3.1 SLM Lab指令193
11.4 分析實(shí)驗(yàn)結(jié)果193
11.4.1 實(shí)驗(yàn)數(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 自動(dòng)構(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ì)算機(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è)計(jì)
第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 時(shí)間預(yù)處理241
14.6 總結(jié)244
第15章 動(dòng)作245
15.1 動(dòng)作示例245
15.2 動(dòng)作完整性247
15.3 動(dòng)作復(fù)雜性248
15.4 總結(jié)251
15.5 擴(kuò)展閱讀:日常事務(wù)中的動(dòng)作設(shè)計(jì)252
第16章 獎(jiǎng)勵(lì)255
16.1 獎(jiǎng)勵(lì)的作用255
16.2 獎(jiǎng)勵(lì)設(shè)計(jì)準(zhǔn)則256
16.3 總結(jié)259
第17章 轉(zhuǎn)換函數(shù)260
17.1 可行性檢測(cè)260
17.2 真實(shí)性檢測(cè)262
17.3 總結(jié)263后記264
附錄A 深度強(qiáng)化學(xué)習(xí)時(shí)間線267
附錄B 示例環(huán)境269
參考文獻(xiàn)274