本書首先介紹在強化學(xué)習(xí)環(huán)境中工作所需的工具、庫和設(shè)置,涵蓋了強化學(xué)習(xí)的構(gòu)成模塊,深入探討基于值的方法,如Q-learning和SARSA算法的應(yīng)用。讀者將學(xué)習(xí)如何結(jié)合使用Q-learning和神經(jīng)網(wǎng)絡(luò)來解決復(fù)雜問題。此外,在學(xué)習(xí)*d*dPG和TD3確定性算法之前,讀者將學(xué)習(xí)策略梯度方法,如TRPO和PPO,以提高性能和穩(wěn)定性。本書還介紹模仿學(xué)習(xí)的原理,以及Dagger如何教智能體飛行。讀者將探索進化策略和黑盒優(yōu)化技術(shù)。最后,讀者將掌握探索方法,如UCB和UCB1,并開發(fā)一個名為ESBAS的元算法。
本書將幫助讀者掌握強化學(xué)習(xí)算法,并通過構(gòu)建自學(xué)習(xí)智能體,理解算法的實現(xiàn)。
前言
強化學(xué)習(xí)(reinforcement learning,RL)是人工智能的一個流行且有前景的分支,它涉及建立更智能的模型和智能體,可以根據(jù)不斷變化的需求自動確定理想的行為。本書將幫助讀者掌握強化學(xué)習(xí)算法,并通過構(gòu)建自學(xué)習(xí)智能體,理解算法的實現(xiàn)。
本書首先介紹在強化學(xué)習(xí)環(huán)境中工作所需的工具、庫和設(shè)置,涵蓋強化學(xué)習(xí)的構(gòu)成模塊,深入探討基于值的方法,如Q-learning和SARSA算法的應(yīng)用。讀者將學(xué)習(xí)如何結(jié)合使用Q-learning和神經(jīng)網(wǎng)絡(luò)來解決復(fù)雜問題。此外,在學(xué)習(xí)*d*dPG和TD3確定性算法之前,讀者將學(xué)習(xí)策略梯度方法,如TRPO和PPO,以提高性能和穩(wěn)定性。本書還介紹模仿學(xué)習(xí)的原理,以及Dagger如何教智能體飛行。讀者將探索進化策略和黑盒優(yōu)化技術(shù)。最后,讀者將掌握探索方法,如UCB和UCB1,并開發(fā)一個名為ESBAS的元算法。
在本書結(jié)束時,讀者將使用關(guān)鍵的強化學(xué)習(xí)算法,克服現(xiàn)實應(yīng)用中的挑戰(zhàn),并成為強化學(xué)習(xí)研究社區(qū)的一員。
本書的目標(biāo)讀者
如果你是人工智能研究者、深度學(xué)習(xí)用戶,或者希望從頭開始學(xué)習(xí)強化學(xué)習(xí)的人,那么這本書就很適合你。如果你想了解該領(lǐng)域的進展,也會發(fā)現(xiàn)這本書很有幫助。當(dāng)然,Python的基礎(chǔ)知識是必需的。
本書涵蓋的內(nèi)容
第1章,強化學(xué)習(xí)概貌。本章引導(dǎo)讀者進入強化學(xué)習(xí)領(lǐng)域。它描述了強化學(xué)習(xí)擅長解決的問題以及強化學(xué)習(xí)算法已經(jīng)得到應(yīng)用的領(lǐng)域,也介紹了后續(xù)各章完成各項任務(wù)所需的工具、庫和設(shè)置。
第2章,強化學(xué)習(xí)過程與OpenAI Gym。本章介紹強化學(xué)習(xí)算法的主流程、用于開發(fā)算法的工具箱以及不同類型的環(huán)境。讀者可以開發(fā)使用OpenAI Gym接口的隨機智能體來玩利用隨機動作的倒立擺(CartPole)游戲,也將了解如何使用OpenAI Gym接口運行其他環(huán)境。
第3章,基于動態(tài)規(guī)劃的問題求解。本章介紹強化學(xué)習(xí)的核心思想、術(shù)語和方法。讀者將了解強化學(xué)習(xí)的主功能塊,掌握開發(fā)強化學(xué)習(xí)算法解決問題的一般思路;也將了解基于模型的算法與無模型算法的區(qū)別,以及強化學(xué)習(xí)算法的分類。動態(tài)規(guī)劃將用于解決FrozenLake游戲問題。
第4章,Q-learning與SARSA的應(yīng)用。本章探討基于值的方法,特別是Q-learning和SARSA這兩種不同于動態(tài)規(guī)劃而且適合處理大型問題的算法。為了切實掌握這些算法,讀者可以將它們用于FrozenLake游戲,并研究與動態(tài)規(guī)劃方法的差異。
第5章,深度Q神經(jīng)網(wǎng)絡(luò)。本章介紹如何將神經(jīng)網(wǎng)絡(luò),特別是卷積神經(jīng)網(wǎng)絡(luò)用于Q-learning。讀者將了解為什么Q-learning與神經(jīng)網(wǎng)絡(luò)的結(jié)合產(chǎn)生了難以置信的結(jié)果,以及這種結(jié)合如何打開了通向更多問題的大門;另外,讀者也將利用OpenAI Gym接口將DQN用于解決雅達(dá)利游戲問題。
第6章,隨機策略梯度優(yōu)化。本章介紹一種新的無模型算法策略梯度方法。讀者將了解策略梯度方法與基于值的方法的區(qū)別以及兩者各自的優(yōu)缺點,也將實現(xiàn)REINFORCE和行動者-評判者(AC)算法來解決新的LunarLander游戲問題。
第7章,信賴域策略優(yōu)化和近端策略優(yōu)化。本章提出了使用新機制控制策略改進的策略梯度方法。這些機制用于改進策略梯度算法的穩(wěn)定性和收斂性。特別是,讀者將了解和實現(xiàn)兩種采用這些技術(shù)的主要策略梯度方法TRPO和PPO,并將這些方法應(yīng)用于具有連續(xù)動作空間的環(huán)境Roboschool。
第8章,確定性策略梯度方法。本章介紹一類新的、結(jié)合策略梯度和Q-learning的算法確定性策略算法。讀者將了解其基本概念并在一個新環(huán)境中應(yīng)用兩個深度確定性算法DDPG和TD3。
第9章,基于模型的強化學(xué)習(xí)。本章介紹學(xué)習(xí)環(huán)境模型去規(guī)劃未來動作或?qū)W習(xí)策略的強化學(xué)習(xí)算法。讀者將了解這些算法的工作原理、優(yōu)點以及廣泛應(yīng)用的原因。為了掌握這些算法,讀者將在Roboschool環(huán)境應(yīng)用這些基于模型的算法。
第10章,模仿學(xué)習(xí)與DAgger算法。本章解釋模仿學(xué)習(xí)的工作原理以及如何適用于一個問題。讀者將了解最有名的模仿學(xué)習(xí)算法DAgger。為了掌握這一算法,讀者將在FlappyBird環(huán)境中應(yīng)用該算法以提高智能體學(xué)習(xí)過程的速度。
第11章,黑盒優(yōu)化算法。本章討論進化算法一類不依賴反向傳播的黑盒優(yōu)化算法。這些算法之所以引人注目,是因為它們的訓(xùn)練速度快且易于在成百上千個CPU核上并行化。本章通過聚焦進化策略算法(一種進化算法),提供了進化算法的理論和實踐知識。
第12章,開發(fā)ESBAS算法。本章介紹強化學(xué)習(xí)特有的探索 ? 利用困境問題。本章利用多臂老虎機問題解釋了探索 ? 利用困境,并利用UCB和UCB1等方法解決了這個困境;接著介紹了算法選擇問題,并開發(fā)了一種名為ESBAS的元算法。該算法利用UCB1,為每種情況選擇最適合的強化學(xué)習(xí)算法。
第13章,應(yīng)對強化學(xué)習(xí)挑戰(zhàn)的實踐。本章歸納了強化學(xué)習(xí)領(lǐng)域的重大挑戰(zhàn)問題,介紹了克服這些問題的一些實踐與方法;還介紹了將強化學(xué)習(xí)應(yīng)用到現(xiàn)實問題所面臨的一些挑戰(zhàn)、深度強化學(xué)習(xí)的未來發(fā)展以及將會產(chǎn)生的社會影響。
閱讀本書的必要準(zhǔn)備
必須具備Python知識。了解一些強化學(xué)習(xí)知識和強化學(xué)習(xí)有關(guān)的各種工具也將是有益的。
下載示例代碼文件
你可以在www.packt.com登錄自己的賬戶下載本書的示例代碼文件。如果你是從別處購得本書,可以訪問www.packtpub.com/support頁面并注冊賬號,文件將直接通過電子郵件發(fā)送給你。
你可以按照以下步驟下載代碼文件:
(1) 登錄或注冊網(wǎng)站www.packt.com。
(2) 選擇Support標(biāo)簽。
(3) 點擊Code Downloads按鈕。
(4) 在Search框中輸入書名,然后按照屏顯指令操作。
一旦文件下載完畢,請用以下最新版本工具進行文件解壓或文件夾提取。
● WinRAR/7-Zip for Windows。
● Zipeg/iZip/UnRarX for Mac。
● 7-Zip/PeaZip for Linux。
本書所帶代碼包也存放在GitHub庫中,網(wǎng)址是https://github.com/PacktPublishing/ Reinforcement-Learning-Algorithms-with-Python。如果代碼有更新,那么GitHub庫中的代碼也會同步更新。
此外,配套其他大量著作和視頻的代碼包,可從https://github.com/PacktPublishing/獲得。敬請查閱!
下載彩色插圖
本書使用的彩色圖表和截屏圖片已經(jīng)匯集成一個PDF格式文件,可提供給讀者。讀者可從http://www.packtpub.com/sites/default/files/downloads/9781789131116_ColorImages.pdf下載。
文本格式約定
本書采用以下若干文本格式約定。
CodeInText:表示代碼文本、數(shù)據(jù)庫表名、文件夾名、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入以及推特用戶名(Twitter handle)。例如,本書使用Python 3.7,不過3.5以上版本都可用。另外設(shè)定讀者已經(jīng)安裝了numpy和matplotlib。
一段代碼設(shè)置如下:
import gym
# create the environment
env = gym.make("CartPole-v1")
# reset the environment before starting
env.reset()
# loop 10 times
for i in range(10):
# take a random action
env.step(env.action_space.sample())
# render the game
env.render()
# close the environment
env.close()
命令行的輸入輸出標(biāo)記為粗體格式:
$ git clone https://github.com/pybox2d/pybox2d
$ cd pybox2d
$ pip install-e.
Bold:(粗體)表示新概念、關(guān)鍵詞或者出現(xiàn)在屏幕上菜單/對話框里的詞。例如,在強化學(xué)習(xí)(reinforcement learning,RL)里,算法被稱為智能體,從環(huán)境提供的數(shù)據(jù)中學(xué)習(xí)。
表示警告或重要說明。
表示提示或技巧。
聯(lián)系方式
歡迎讀者積極反饋。
一般反饋:如果讀者對本書的任何方面有問題,可以在郵件主題中注明書名,反饋至郵箱customercare@packtpub.com。
勘誤:雖然我們已盡力確保著作內(nèi)容的準(zhǔn)確性,但錯誤仍難以避免。如果讀者發(fā)現(xiàn)書中錯誤,煩請告知。請訪問www.packtpub.com/support/errata,選定圖書,點擊勘誤提交表格鏈接,填入具體信息。
盜版:如果讀者在互聯(lián)網(wǎng)上發(fā)現(xiàn)我們的圖書被以任何形式非法復(fù)制,煩請告知網(wǎng)址或網(wǎng)站名。請通過copyright@packt.com聯(lián)系我們,并提供盜版材料的鏈接。
如果愿意成為作者:如果讀者有熟悉的主題而且愿意寫書或參與出書,請訪問authors. packtpub.com。
撰寫書評
請讀者留言評論。如果你讀過或使用過本書,何不在你購書處留下寶貴的意見?潛在的讀者將會看到并根據(jù)你公正客觀的評論意見,決定是否購書。我們也能了解你對我們產(chǎn)品的想法,而我們的作者能夠獲悉你對他們著作的反饋。不勝感激!
更多有關(guān)Packt的信息,請訪問packt.com。
Andrea Lonza是一名深度學(xué)習(xí)工程師,對人工智能懷有極大的熱情,渴望創(chuàng)造出具有智能行為的機器。他通過理論性的和工業(yè)應(yīng)用性的機器學(xué)習(xí)項目獲得了強化學(xué)習(xí)、自然語言處理和計算機視覺方面的專業(yè)知識。他還參加過幾次Kaggle比賽,并取得了很好的成績。他總是在尋找引人入勝的挑戰(zhàn),并喜歡證明自己。
目錄
前言
第一部分 算法與環(huán)境
第1章 強化學(xué)習(xí)概貌 2
1.1 強化學(xué)習(xí)導(dǎo)論 3
1.1.1 比較強化學(xué)習(xí)和監(jiān)督學(xué)習(xí) 4
1.1.2 強化學(xué)習(xí)的歷史 5
1.1.3 深度強化學(xué)習(xí) 6
1.2 強化學(xué)習(xí)的要素 7
1.2.1 策略 8
1.2.2 值函數(shù) 9
1.2.3 回報(獎勵) 10
1.2.4 模型 11
1.3 強化學(xué)習(xí)的應(yīng)用 11
1.3.1 游戲 11
1.3.2 機器人與工業(yè)4.0 12
1.3.3 機器學(xué)習(xí) 12
1.3.4 經(jīng)濟學(xué)與金融 13
1.3.5 醫(yī)療健康 13
1.3.6 智能交通系統(tǒng) 13
1.3.7 能源優(yōu)化與智能電網(wǎng) 13
1.4 本章小結(jié) 13
1.5 思考題 14
1.6 延伸閱讀 14
第2章 強化學(xué)習(xí)過程與OpenAI Gym 15
2.1 環(huán)境設(shè)置 15
2.1.1 安裝OpenAI Gym 16
2.1.2 安裝Roboschool 17
2.2 OpenAI Gym和強化學(xué)習(xí)過程 17
2.2.1 開發(fā)強化學(xué)習(xí)過程 18
2.2.2 了解空間概念 21
2.3 利用TesorFlow開發(fā)強化學(xué)習(xí)模型 22
2.3.1 張量 24
2.3.2 創(chuàng)建計算圖 27
2.3.3 線性回歸示例 28
2.4 TensorBoard介紹 32
2.5 強化學(xué)習(xí)環(huán)境 34
2.5.1 為什么需要不同的環(huán)境 35
2.5.2 開源環(huán)境 35
2.6 本章小結(jié) 37
2.7 思考題 37
2.8 延伸閱讀 38
第3章 基于動態(tài)規(guī)劃的問題求解 39
3.1 馬爾可夫決策過程 39
3.1.1 策略 41
3.1.2 回報 41
3.1.3 值函數(shù) 42
3.1.4 貝爾曼方程 43
3.2 強化學(xué)習(xí)算法的類別 43
3.2.1 無模型算法 44
3.2.2 基于模型的強化學(xué)習(xí) 45
3.2.3 算法多樣性 46
3.3 動態(tài)規(guī)劃 46
3.3.1 策略評價與策略改進 47
3.3.2 策略迭代 48
3.3.3 值迭代 52
3.4 本章小結(jié) 55
3.5 思考題 55
3.6 延伸閱讀 56
第二部分 無模型強化學(xué)習(xí)算法
第4章 Q-learning與SARSA的應(yīng)用 58
4.1 無模型學(xué)習(xí) 58
4.1.1 已有經(jīng)驗 59
4.1.2 策略評價 59
4.1.3 探索問題 60
4.2 時間差分學(xué)習(xí) 60
4.2.1 時間差分更新 61
4.2.2 策略改進 61
4.2.3 比較蒙特卡羅和時間差分方法 62
4.3 SARSA 62
4.3.1 SARSA介紹 62
4.3.2 算法 62
4.4 應(yīng)用SARSA解決Taxi-v2問題 63
4.5 Q-learning 69
4.5.1 理論 69
4.5.2 算法 70
4.6 應(yīng)用Q-learning解決Taxi-v2問題 71
4.7 比較SARSA和Q-learning 74
4.8 本章小結(jié) 74
4.9 思考題 75
第5章 深度Q神經(jīng)網(wǎng)絡(luò) 76
5.1 深度神經(jīng)網(wǎng)絡(luò)與Q-learning 76
5.1.1 函數(shù)逼近 77
5.1.2 利用神經(jīng)網(wǎng)絡(luò)的Q-learning 77
5.1.3 深度Q-learning的不穩(wěn)定性 78
5.2 DQN 79
5.2.1 解決方案 80
5.2.2 DQN算法 80
5.2.3 模型架構(gòu) 82
5.3 用于Pong的DQN 83
5.3.1 雅達(dá)利游戲 84
5.3.2 預(yù)處理流程 84
5.3.3 DQN實現(xiàn) 87
5.3.4 結(jié)果 96
5.4 DQN變種 98
5.4.1 DDQN 98
5.4.2 競爭DQN 101
5.4.3 n步DQN 103
5.5 本章小結(jié) 104
5.6 思考題 105
5.7 延伸閱讀 105
第6章 隨機策略梯度優(yōu)化 106
6.1 策略梯度方法 106
6.1.1 策略的梯度 107
6.1.2 策略梯度定理 108
6.1.3 梯度的計算 109
6.1.4 策略 109
6.1.5 在線策略梯度 111
6.2 了解REINFORCE算法 111
6.2.1 REINFORCE的實現(xiàn) 113
6.2.2 利用REINFORCE實現(xiàn)航天器著陸 117
6.3 帶基線的REINFORCE算法 119
6.3.1 帶基線的REINFORCE算法的原理 119
6.3.2 帶基線的REINFORCE算法的實現(xiàn) 121
6.4 學(xué)習(xí)AC算法 122
6.4.1 讓評判者幫助行動者學(xué)習(xí) 122
6.4.2 n步AC模型 123
6.4.3 AC算法的實現(xiàn) 124
6.4.4 用AC算法實現(xiàn)航天器著陸 127
6.4.5 高級AC算法以及提示和技巧 128
6.5 本章小結(jié) 129
6.6 思考題 129
6.7 延伸閱讀 129
第7章 信賴域策略優(yōu)化和近端策略優(yōu)化 130
7.1 Roboschool 130
7.1.1 Roboschool介紹 130
7.1.2 連續(xù)系統(tǒng)的控制 131
7.2 自然策略梯度 134
7.2.1 自然策略梯度的直觀理解 134
7.2.2 數(shù)學(xué)知識基礎(chǔ) 136
7.2.3 自然梯度的計算復(fù)雜性 137
7.3 信賴域策略優(yōu)化 138
7.3.1 TRPO算法 138
7.3.2 TRPO算法的實現(xiàn) 141
7.3.3 TRPO的應(yīng)用 147
7.4 近端策略優(yōu)化 148
7.4.1 PPO簡述 149
7.4.2 PPO算法 149
7.4.3 TRPO算法的實現(xiàn) 150
7.4.4 PPO的應(yīng)用 154
7.5 本章小結(jié) 155
7.6 思考題 155
7.7 延伸閱讀 156
第8章 確定性策略梯度方法 157
8.1 策略梯度優(yōu)化與Q-learning的結(jié)合 157
8.1.1 兩類算法的優(yōu)缺點 157
8.1.2 確定性策略梯度 158
8.2 深度確定性策略梯度 160
8.2.1 DDPG算法 161
8.2.2 DDPG算法的實現(xiàn) 163
8.2.3 DDPG應(yīng)用于BipedalWalker-v2 167
8.3 雙延遲深度確定性策略梯度 168
8.3.1 高估偏差問題 169
8.3.2 方差抑制問題 171
8.3.3 TD3應(yīng)用于BipedalWalker 174
8.4 本章小結(jié) 175
8.5 思考題 176
8.6 延伸閱讀 176
第三部分 超越無模型算法
第9章 基于模型的強化學(xué)習(xí) 178
9.1 基于模型的方法 178
9.1.1 基于模型的學(xué)習(xí)概述 179
9.1.2 基于模型的方法的優(yōu)缺點 182
9.2 基于模型的學(xué)習(xí)與無模型學(xué)習(xí)的結(jié)合 183
9.2.1 有用的結(jié)合 183
9.2.2 利用圖像構(gòu)建模型 184
9.3 用于倒立擺的ME-TRPO 185
9.3.1 了解ME-TRPO 186
9.3.2 ME-TRPO的實現(xiàn) 187
9.3.3 RoboSchool實驗 191
9.4 本章小結(jié) 193
9.5 思考題 194
9.6 延伸閱讀 194
第10章 模仿學(xué)習(xí)與DAgger算法 195
10.1 技術(shù)要求 195
10.2 模仿學(xué)習(xí) 196
10.2.1 駕駛助手示例 197
10.2.2 模仿學(xué)習(xí)與強化學(xué)習(xí)對比 198
10.2.3 模仿學(xué)習(xí)中的專家作用 199
10.2.4 模仿學(xué)習(xí)的結(jié)構(gòu) 199
10.3 Flappy Bird游戲 201
10.3.1 Flappy Bird介紹 201
10.3.2 如何利用環(huán)境 201
10.4 理解數(shù)據(jù)集聚合算法 202
10.4.1 DAgger算法 203
10.4.2 Dagger算法實現(xiàn) 204
10.4.3 Flappy Bird游戲結(jié)果分析 209
10.5 反向強化學(xué)習(xí) 210
10.6 本章小結(jié) 210
10.7 思考題 211
10.8 延伸閱讀 211
第11章 黑盒優(yōu)化算法 212
11.1 超越強化學(xué)習(xí) 212
11.1.1 強化學(xué)習(xí)簡要回顧 212
11.1.2 替代方法 213
11.2 進化算法的核心 214
11.2.1 遺傳算法 216
11.2.2 進化策略 217
11.3 可擴展的進化策略 218
11.3.1 核心思想 219
11.3.2 可擴展進化策略的實現(xiàn) 220
11.4 應(yīng)用于LunarLander的可擴展進化策略 226
11.5 本章小結(jié) 227
11.6 思考題 228
11.7 延伸閱讀 228
第12章 開發(fā)ESBAS算法 229
12.1 探索與利用 229
12.1.1 探索與利用介紹 229
12.1.2 多臂老虎機 231
12.2 探索的方法 232
12.2.1 ?貪婪策略 232
12.2.2 UCB算法 233
12.2.3 探索的復(fù)雜性 234
12.3 ESBAS 235
12.3.1 拆箱算法選擇 235
12.3.2 ESBAS介紹 236
12.3.3 算法實現(xiàn) 237
12.3.4 解決Acrobot問題 241
12.4 本章小結(jié) 244
12.5 思考題 244
12.6 延伸閱讀 245
第13章 應(yīng)對強化學(xué)習(xí)挑戰(zhàn)的實踐 246
13.1 深度強化學(xué)習(xí)的最佳實踐 246
13.1.1 選擇合適的算法 247
13.1.2 從0到1 248
13.2 深度強化學(xué)習(xí)的挑戰(zhàn) 250
13.2.1 穩(wěn)定性與可重現(xiàn)性 250
13.2.2 效率 251
13.2.3 泛化 251
13.3 先進技術(shù) 252
13.3.1 無監(jiān)督強化學(xué)習(xí) 252
13.3.2 遷移學(xué)習(xí) 253
13.4 現(xiàn)實世界中的強化學(xué)習(xí) 255
13.4.1 現(xiàn)實挑戰(zhàn) 256
13.4.2 彌合模擬與現(xiàn)實世界的差距 257
13.4.3 創(chuàng)建專有環(huán)境 257
13.5 強化學(xué)習(xí)的未來及其社會影響 258
13.6 本章小結(jié) 258
13.7 思考題 259
13.8 延伸閱讀 259
附錄 思考題參考答案 260