深度強(qiáng)化學(xué)習(xí)實(shí)踐(原書(shū)第2版)
定 價(jià):149 元
叢書(shū)名:智能系統(tǒng)與技術(shù)叢書(shū)
- 作者:[俄]馬克西姆·拉潘(Maxim Lapan)
- 出版時(shí)間:2021/8/1
- ISBN:9787111687382
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP181
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)理論與實(shí)踐相結(jié)合,系統(tǒng)闡述強(qiáng)化學(xué)習(xí)的基礎(chǔ)知識(shí),以及如何動(dòng)手編寫(xiě)智能體以執(zhí)行一系列實(shí)際任務(wù)。通過(guò)閱讀本書(shū),讀者將獲得深層Q網(wǎng)絡(luò)、策略梯度方法、連續(xù)控制問(wèn)題以及高度可擴(kuò)展的非梯度方法等主題領(lǐng)域的可行洞見(jiàn),還將學(xué)會(huì)如何構(gòu)建一個(gè)經(jīng)過(guò)強(qiáng)化學(xué)習(xí)訓(xùn)練、價(jià)格低廉的真實(shí)硬件機(jī)器人,并通過(guò)一步步代碼優(yōu)化在短短30分鐘的訓(xùn)練后解決Pong環(huán)境。此外,本書(shū)還專門介紹了強(qiáng)化學(xué)習(xí)的新發(fā)展,包括離散優(yōu)化(解決魔方問(wèn)題)、多智能體方法、Microsoft的TextWorld環(huán)境、高級(jí)探索技術(shù)等。
本書(shū)包括新的強(qiáng)化學(xué)習(xí)工具和技術(shù),介紹了強(qiáng)化學(xué)習(xí)的基礎(chǔ)知識(shí),以及如何動(dòng)手編寫(xiě)智能體以執(zhí)行一系列實(shí)際任務(wù)。
本書(shū)較上一版新增6章,專門介紹了強(qiáng)化學(xué)習(xí)的新發(fā)展,包括離散優(yōu)化(解決魔方問(wèn)題)、多智能體方法、Microsoft的TextWorld環(huán)境、高級(jí)探索技術(shù)等。學(xué)完本書(shū),你將對(duì)這個(gè)新興領(lǐng)域的前沿技術(shù)有深刻的理解。
此外,你將獲得對(duì)深度Q-network、策略梯度方法、連續(xù)控制問(wèn)題以及高度可擴(kuò)展的非梯度方法等領(lǐng)域的可行洞見(jiàn),還將學(xué)會(huì)如何構(gòu)建一個(gè)經(jīng)過(guò)強(qiáng)化學(xué)習(xí)訓(xùn)練、價(jià)格低廉的真實(shí)硬件機(jī)器人,并通過(guò)逐步代碼優(yōu)化在短短30分鐘的訓(xùn)練后解決Pong環(huán)境問(wèn)題。
簡(jiǎn)而言之,本書(shū)將幫助你探索強(qiáng)化學(xué)習(xí)中令人興奮的復(fù)雜主題,讓你通過(guò)實(shí)例獲得經(jīng)驗(yàn)和知識(shí)。
本書(shū)的主題是強(qiáng)化學(xué)習(xí)(Reinforcement Learning,RL),它是機(jī)器學(xué)習(xí)(Machine Learning,ML)的一個(gè)分支,強(qiáng)調(diào)如何解決在復(fù)雜環(huán)境中選擇動(dòng)作時(shí)產(chǎn)生的通用且極具挑戰(zhàn)的問(wèn)題。學(xué)習(xí)過(guò)程僅由獎(jiǎng)勵(lì)值和從環(huán)境中獲得的觀察驅(qū)動(dòng)。該模型非常通用,能應(yīng)用于多個(gè)真實(shí)場(chǎng)景,從玩游戲到優(yōu)化復(fù)雜制造過(guò)程都能涵蓋。
由于它的靈活性和通用性,RL領(lǐng)域在快速發(fā)展的同時(shí),吸引了很多人的關(guān)注。其中,既包括試圖改進(jìn)現(xiàn)有方法或創(chuàng)造新方法的研究人員,也包括專注于用有效的方式解決問(wèn)題的從業(yè)人員。
寫(xiě)本書(shū)的目的
寫(xiě)本書(shū)的目的是填補(bǔ)RL理論系統(tǒng)和實(shí)際應(yīng)用之間的巨大空白。目前全世界有很多研究活動(dòng),基本上每天都有新的相關(guān)論文發(fā)表,并且有很多深度學(xué)習(xí)的會(huì)議,例如神經(jīng)信息處理系統(tǒng)(Neural Information Processing Systems,NeurIPS)大會(huì)和國(guó)際學(xué)習(xí)表征會(huì)議(International Conference on Learning Representations,ICLR)。同時(shí),有好幾個(gè)大型研究組織致力于將RL應(yīng)用于機(jī)器人、醫(yī)學(xué)、多智能體系統(tǒng)等領(lǐng)域。
的相關(guān)研究資料雖然很容易獲得,卻都過(guò)于專業(yè)和抽象,難以理解。RL的實(shí)踐落地則顯得更為困難,因?yàn)閷⒄撐闹杏蓴?shù)學(xué)公式堆砌的大量抽象理論轉(zhuǎn)換成解決實(shí)際問(wèn)題的實(shí)現(xiàn)方式并不總是顯而易見(jiàn)的。
這使得一些對(duì)該領(lǐng)域感興趣的人很難理解隱含在論文或?qū)W術(shù)會(huì)議背后的方法與思想。雖然針對(duì)RL的各個(gè)方面有很多非常棒的博客用生動(dòng)的例子來(lái)解釋,但博客的形式限制讓作者們只能闡述一兩種方法,而不是構(gòu)建一個(gè)完整的全景圖來(lái)將不同的方法聯(lián)系起來(lái)。本書(shū)就是為了解決這個(gè)問(wèn)題而寫(xiě)的。
教學(xué)方法
本書(shū)的另一個(gè)關(guān)注點(diǎn)是實(shí)際應(yīng)用。每個(gè)方法針對(duì)非常簡(jiǎn)單到非常復(fù)雜的情況都進(jìn)行了實(shí)現(xiàn)。我試圖讓例子簡(jiǎn)潔易懂,PyTorch的易讀與強(qiáng)大使之成為可能。另外,例子的復(fù)雜度是針對(duì)RL業(yè)余愛(ài)好者而設(shè)計(jì)的,不需要大量的計(jì)算資源,比如圖形處理器(GPU)集群或很強(qiáng)大的工作站。我相信,這將使充滿樂(lè)趣和令人興奮的RL領(lǐng)域不僅限于研究小組或大型人工智能公司,還可以讓更廣泛的受眾涉足。但畢竟本書(shū)有關(guān)內(nèi)容還是“深度”RL,因此強(qiáng)烈建議大家使用GPU。
除了Atari游戲或連續(xù)控制問(wèn)題等RL中一些經(jīng)典的中等規(guī)模例子外,本書(shū)還有好幾章(第10、14、15、16和18章)介紹大型項(xiàng)目,說(shuō)明RL方法能應(yīng)用到更復(fù)雜的環(huán)境和任務(wù)中。這些例子不是現(xiàn)實(shí)場(chǎng)景中的完整項(xiàng)目,但也足以說(shuō)明,除了精心設(shè)計(jì)的基準(zhǔn)測(cè)試外,RL能在更大的范圍內(nèi)應(yīng)用。
本書(shū)從結(jié)構(gòu)上看分為四個(gè)部分,其中第1~4章為部分,第5~10章為第二部分,第11~16為第三部分,第17~25章為第四部分。關(guān)于本書(shū)前三個(gè)部分的例子,值得注意的另一件事是我試圖使它們成為獨(dú)立的,會(huì)完整地顯示所有代碼。有時(shí)這會(huì)導(dǎo)致代碼片段的重復(fù)(例如,大多數(shù)方法中的訓(xùn)練迭代都很相似),但是我認(rèn)為,讓大家學(xué)到想學(xué)的函數(shù)比刻意避免一些重復(fù)更重要,你可以自行跳轉(zhuǎn)到需要的代碼。本書(shū)中的所有例子都能在GitHub上找到,網(wǎng)址為https://github.com/PacktPublishing/Deep-Reinforcement-Learning-Hands-On-Second-Edition。歡迎你來(lái)獲取、實(shí)驗(yàn)并貢獻(xiàn)代碼。
讀者對(duì)象
本書(shū)面向已經(jīng)有機(jī)器學(xué)習(xí)基礎(chǔ)而想對(duì)RL領(lǐng)域進(jìn)行實(shí)踐的讀者。閱讀本書(shū)前,讀者應(yīng)該熟悉Python并且有一定的深度學(xué)習(xí)和機(jī)器學(xué)習(xí)基礎(chǔ)。具有統(tǒng)計(jì)學(xué)和概率論知識(shí)會(huì)大有幫助,但對(duì)于理解本書(shū)的大部分內(nèi)容都不是必要的。
本書(shū)內(nèi)容
第1章介紹了RL的思想和模型。
第2章使用開(kāi)源庫(kù)Gym介紹了RL實(shí)踐。
第3章概述了PyTorch庫(kù)。
第4章用簡(jiǎn)單的RL方法對(duì)RL的方法和問(wèn)題進(jìn)行了初步介紹。
第5章介紹了基于價(jià)值的RL方法。
第6章描述了深度Q-network(DQN),是對(duì)基礎(chǔ)的基于價(jià)值的方法的擴(kuò)展,能解決復(fù)雜環(huán)境下的問(wèn)題。
第7章描述了PTAN庫(kù),它可以簡(jiǎn)化RL方法的實(shí)現(xiàn)。
第8章詳細(xì)介紹了DQN的擴(kuò)展方法,以提升在復(fù)雜環(huán)境下的穩(wěn)定性和收斂性。
第9章概述了使RL代碼加速執(zhí)行的辦法。
第10章給出了個(gè)練習(xí)項(xiàng)目,重點(diǎn)是將DQN方法應(yīng)用于股票交易。
第11章介紹了另一類RL方法,即基于策略學(xué)習(xí)的方法。
第12章描述了RL中使用非常廣泛的方法之一。
第13章用并行環(huán)境交互的方式擴(kuò)展了actor-critic方法,從而提高了穩(wěn)定性和收斂性。
第14章給出了第二個(gè)項(xiàng)目,展示了如何將RL方法應(yīng)用于自然語(yǔ)言處理問(wèn)題。
第15章介紹了RL方法在文字冒險(xiǎn)游戲中的應(yīng)用。
第16章給出了另一個(gè)大項(xiàng)目,使用MiniWoB任務(wù)集將RL應(yīng)用于Web導(dǎo)航。
第17章介紹了連續(xù)動(dòng)作空間的環(huán)境特性以及各種方法。
第18章介紹了RL方法在機(jī)器人問(wèn)題中的應(yīng)用,描述了如何用RL方法來(lái)構(gòu)建和訓(xùn)練小型機(jī)器人。
第19章仍是有關(guān)連續(xù)動(dòng)作空間的章節(jié),描述了一組置信域方法在其中的應(yīng)用。
第20章展示了另一組不顯式使用梯度的方法。
第21章介紹了能更好地進(jìn)行環(huán)境探索的方法。
第22章介紹了RL的基于模型的方法,并使用了將想象力應(yīng)用于RL的研究結(jié)果。
第23章描述了AlphaGo Zero方法并將其應(yīng)用于四子連橫棋游戲中。
第24章使用魔方作為環(huán)境,描述了RL方法在離散優(yōu)化領(lǐng)域的應(yīng)用。
第25章介紹了一個(gè)相對(duì)較新的RL方法應(yīng)用方向,即在多智能體情境下的應(yīng)用。
閱讀指導(dǎo)
本書(shū)的所有章節(jié)都采用同樣的結(jié)構(gòu)來(lái)描述RL方法:首先討論方法的動(dòng)機(jī)、理論基礎(chǔ)以及背后的思想;然后,給出幾個(gè)不同環(huán)境下的帶完整源代碼的例子。
你可以通過(guò)不同的方式來(lái)閱讀本書(shū):
1. 若要快速熟悉某些方法,可以只閱讀相關(guān)章節(jié)的簡(jiǎn)介部分。
2. 若要深入理解某個(gè)方法是如何實(shí)現(xiàn)的,可以閱讀代碼和相關(guān)注釋。
3. 若要深度熟悉某個(gè)方法(我認(rèn)為是好的學(xué)習(xí)方式),可以嘗試借助提供的代碼重新實(shí)現(xiàn)該方法并使之有效。
無(wú)論如何,我希望這本書(shū)對(duì)你有幫助!
下載示例代碼及彩色圖片
本書(shū)的示例代碼及所有截圖和樣圖,可以從http://www.packtpub.com通過(guò)個(gè)人賬號(hào)下載,也可以訪問(wèn)華章圖書(shū)官網(wǎng)http://www.hzbook.com,通過(guò)注冊(cè)并登錄個(gè)人賬號(hào)下載。
本書(shū)的代碼也托管在GitHub上(https://github.com/PacktPublishing/Deep-Reinforcement-Learning-Hands-On-Second-Edition)。如果代碼有更新,GitHub上的代碼會(huì)同步更新。本書(shū)所有彩色版屏幕截圖/圖表的PDF文件也可以從https://static.packt-cdn.com/downloads/ 9781838826994_ColorImages.pdf下載。
排版約定
文中的代碼體:表示出現(xiàn)在文中的代碼、數(shù)據(jù)庫(kù)表名、目錄名、文件名、文件擴(kuò)展名、路徑、用戶輸入、Twitter句柄。
代碼塊示例:
命令行輸入或輸出示例:
黑體:表示新的術(shù)語(yǔ)、重要的詞或會(huì)在屏幕中顯示的詞(例如,菜單或?qū)υ捒蛑械膬?nèi)容)。
表示警告或重要的提示。
表示提示和技巧。
譯者序
前言
作者簡(jiǎn)介
審校者簡(jiǎn)介
第1章 什么是強(qiáng)化學(xué)習(xí)1
1.1 機(jī)器學(xué)習(xí)分類2
1.1.1 監(jiān)督學(xué)習(xí)2
1.1.2 非監(jiān)督學(xué)習(xí)2
1.1.3 強(qiáng)化學(xué)習(xí)2
1.2 強(qiáng)化學(xué)習(xí)的復(fù)雜性4
1.3 強(qiáng)化學(xué)習(xí)的形式4
1.3.1 獎(jiǎng)勵(lì)5
1.3.2 智能體6
1.3.3 環(huán)境6
1.3.4 動(dòng)作7
1.3.5 觀察7
1.4 強(qiáng)化學(xué)習(xí)的理論基礎(chǔ)9
1.4.1 馬爾可夫決策過(guò)程9
1.4.2 策略17
1.5 總結(jié)18
第2章 OpenAI Gym19
2.1 剖析智能體19
2.2 硬件和軟件要求21
2.3 OpenAI Gym API23
2.3.1 動(dòng)作空間23
2.3.2 觀察空間23
2.3.3 環(huán)境25
2.3.4 創(chuàng)建環(huán)境26
2.3.5 車擺系統(tǒng)28
2.4 隨機(jī)CartPole智能體30
2.5 Gym的額外功能:包裝器和監(jiān)控器30
2.5.1 包裝器31
2.5.2 監(jiān)控器33
2.6 總結(jié)35
第3章 使用PyTorch進(jìn)行深度學(xué)習(xí)36
3.1 張量36
3.1.1 創(chuàng)建張量37
3.1.2 零維張量39
3.1.3 張量操作39
3.1.4 GPU張量40
3.2 梯度41
3.3 NN構(gòu)建塊44
3.4 自定義層45
3.5 終黏合劑:損失函數(shù)和優(yōu)化器47
3.5.1 損失函數(shù)48
3.5.2 優(yōu)化器48
3.6 使用TensorBoard進(jìn)行監(jiān)控50
3.6.1 TensorBoard 10150
3.6.2 繪圖52
3.7 示例:將GAN應(yīng)用于Atari圖像53
3.8 PyTorch Ignite57
3.9 總結(jié)61
第4章 交叉熵方法62
4.1 RL方法的分類62
4.2 交叉熵方法的實(shí)踐63
4.3 交叉熵方法在CartPole中的應(yīng)用65
4.4 交叉熵方法在FrozenLake中的應(yīng)用72
4.5 交叉熵方法的理論背景78
4.6 總結(jié)79
第5章 表格學(xué)習(xí)和Bellman方程80
5.1 價(jià)值、狀態(tài)和性80
5.2 Bellman方程82
5.3 動(dòng)作的價(jià)值84
5.4 價(jià)值迭代法86
5.5 價(jià)值迭代實(shí)踐87
5.6 Q-learning在FrozenLake中的應(yīng)用92
5.7 總結(jié)94
第6章 深度Q-network95
6.1 現(xiàn)實(shí)的價(jià)值迭代95
6.2 表格Q-learning96
6.3 深度Q-learning100
6.3.1 與環(huán)境交互102
6.3.2 SGD優(yōu)化102
6.3.3 步驟之間的相關(guān)性103
6.3.4 馬爾可夫性質(zhì)103
6.3.5 DQN訓(xùn)練的終形式103
6.4 DQN應(yīng)用于Pong游戲104
6.4.1 包裝器105
6.4.2 DQN模型109
6.4.3 訓(xùn)練110
6.4.4 運(yùn)行和性能118
6.4.5 模型實(shí)戰(zhàn)120
6.5 可以嘗試的事情122
6.6 總結(jié)123
第7章 高級(jí)強(qiáng)化學(xué)習(xí)庫(kù)124
7.1 為什么使用強(qiáng)化學(xué)習(xí)庫(kù)124
7.2 PTAN庫(kù)125
7.2.1 動(dòng)作選擇器126
7.2.2 智能體127
7.2.3 經(jīng)驗(yàn)源131
7.2.4 經(jīng)驗(yàn)回放緩沖區(qū)136
7.2.5 TargetNet類137
7.2.6 Ignite幫助類139
7.3 PTAN版本的CartPole解決方案139
7.4 其他強(qiáng)化學(xué)習(xí)庫(kù)141
7.5 總結(jié)141
第8章 DQN擴(kuò)展142
8.1 基礎(chǔ)DQN143
8.1.1 通用庫(kù)143
8.1.2 實(shí)現(xiàn)147
8.1.3 結(jié)果148
8.2 N步DQN150
8.2.1 實(shí)現(xiàn)152
8.2.2 結(jié)果152
8.3 Double DQN153
8.3.1 實(shí)現(xiàn)154
8.3.2 結(jié)果155
8.4 噪聲網(wǎng)絡(luò)156
8.4.1 實(shí)現(xiàn)157
8.4.2 結(jié)果159
8.5 帶優(yōu)先級(jí)的回放緩沖區(qū)160
8.5.1 實(shí)現(xiàn)161
8.5.2 結(jié)果164
8.6 Dueling DQN165
8.6.1 實(shí)現(xiàn)166
8.6.2 結(jié)果167
8.7 Categorical DQN168
8.7.1 實(shí)現(xiàn)171
8.7.2 結(jié)果175
8.8 組合所有方法178
8.9 總結(jié)180
8.10 參考文獻(xiàn)180
第9章 加速?gòu)?qiáng)化學(xué)習(xí)訓(xùn)練的方法182
9.1 為什么速度很重要182
9.2 基線184
9.3 PyTorch中的計(jì)算圖186
9.4 多個(gè)環(huán)境188
9.5 在不同進(jìn)程中分別交互和訓(xùn)練190
9.6 調(diào)整包裝器194
9.7 基準(zhǔn)測(cè)試總結(jié)198
9.8 硬核CuLE199
9.9 總結(jié)199
9.10 參考文獻(xiàn)199
第10章 使用強(qiáng)化學(xué)習(xí)進(jìn)行股票交易200
10.1 交易200
10.2 數(shù)據(jù)201
10.3 問(wèn)題陳述和關(guān)鍵決策202
10.4 交易環(huán)境203
10.5 模型210
10.6 訓(xùn)練代碼211
10.7 結(jié)果211
10.7.1 前饋模型212
10.7.2 卷積模型217
10.8 可以嘗試的事情218
10.9 總結(jié)219
第11章 策略梯度:一種替代方法220
11.1 價(jià)值與策略220
11.1.1 為什么需要策略221
11.1.2 策略表示221
11.1.3 策略梯度222
11.2 REINFORCE方法222
11.2.1 CartPole示例223
11.2.2 結(jié)果227
11.2.3 基于策略的方法與基于價(jià)值的方法228
11.3 REINFORCE的問(wèn)題229
11.3.1 需要完整片段229
11.3.2 高梯度方差229
11.3.3 探索230
11.3.4 樣本相關(guān)性230
11.4 用于CartPole的策略梯度方法230
11.4.1 實(shí)現(xiàn)231
11.4.2 結(jié)果233
11.5 用于Pong的策略梯度方法237
11.5.1 實(shí)現(xiàn)238
11.5.2 結(jié)果239
11.6 總結(jié)240
第12章 actor-critic方法241
12.1 減小方差241
12.2 CartPole的方差243
12.3 actor-crit