本書理論完備,涵蓋主流非深度強化學習算法和深度強化學習算法;實戰(zhàn)性強,基于Python、Gym、TensorFlow 2等構建,并有AlphaZero等綜合案例。全書共12章,主要內(nèi)容如下。
第1章:介紹強化學習的基礎知識與強化學習環(huán)境庫Gym的使用,并給出完整的編程實例。
第2~9章:介紹強化學習的理論知識。以Markov決策過程為基礎模型,覆蓋了所有主流強化學習理論和算法,包括資格跡等經(jīng)典算法和深度確定性梯度策略等深度強化學習算法。所有章節(jié)都提供了與算法配套的Python程序,使讀者完全掌握強化學習算法的原理與應用。
第10~12章:介紹了多個熱門綜合案例,包括電動游戲、棋盤游戲和自動駕駛。算法部分涵蓋了在《自然》《科學》等權威期刊上發(fā)表的多個深度強化學習明星算法,包括AlphaGo的*改進版AlphaZero。
1)強化學習一線研發(fā)人員撰寫,涵蓋主流強化學習算法和多個綜合案例
2)在理論基礎、算法設計、性能分析等多個角度全面覆蓋強化學習的原理,并逐章配套Python代碼。
強化學習正在改變?nèi)祟惿鐣姆椒矫婷妫夯趶娀瘜W習的游戲AI已經(jīng)在圍棋、星際爭霸等游戲上戰(zhàn)勝人類頂尖選手,基于強化學習的控制算法已經(jīng)運用于機器人、無人機等設備,基于強化學習的交易算法已經(jīng)部署在金融平臺上并取得超額收益。由于同一套強化學習代碼在使用同一套參數(shù)的情況下能解決多個看起來毫無關聯(lián)的問題,所以強化學習常被認為是邁向通用人工智能的重要途徑。在此誠邀相關專業(yè)人士研究強化學習,以立于人工智能的時代之巔。
內(nèi)容梗概
本書介紹強化學習理論及其Python實現(xiàn),全書分為三個部分。
第1章:介紹強化學習的基礎知識與環(huán)境庫Gym的使用,并給出一個完整的編程實例。
第2~9章:介紹強化學習的理論和算法。采用嚴謹?shù)臄?shù)學語言,推導強化學習的基本理論,進而在理論的基礎上講解算法,并為算法提供配套的Python實現(xiàn)。算法的講解和Python實現(xiàn)逐一對應,覆蓋了所有主流的強化學習算法。
第10~12章:介紹多個綜合案例,包括電動游戲、棋盤游戲和自動駕駛。環(huán)境部分涵蓋Gym庫的完整安裝和自定義擴展,也包括Gym庫以外的環(huán)境。算法部分涵蓋了《自然》 《科學》等權威期刊發(fā)表的多個深度強化學習明星算法。
本書特色
本書完整地介紹了主流的強化學習理論。
全書采用完整的數(shù)學體系,各章內(nèi)容循序漸進,嚴謹?shù)刂v授強化學習的理論基礎,主要定理均給出證明過程;诶碚撝v解強化學習算法,覆蓋了所有主流強化學習算法,包括資格跡等經(jīng)典算法和深度確定性梯度策略等深度強化學習算法。
全書采用一致的數(shù)學符號,并且與權威強化學習教程(如R. Sutton等的《Reinforce-ment Learning: An Introduction(第2版)》和D. Silver的視頻課程)完美兼容。
本書各章均提供Python代碼,實戰(zhàn)性強。
全書代碼統(tǒng)一規(guī)范,基于最新的Python 3.7(兼容Python 3.6)、Gym 0.12和TensorFlow 2(兼容TensorFlow 1)實現(xiàn)強化學習算法。所有代碼在Windows、macOS和Linux三大操作系統(tǒng)上均可運行,書中給出了環(huán)境的安裝和配置方法。
涉及環(huán)境全面。第1~9章提供算法的配套實現(xiàn),強化學習環(huán)境只依賴于Gym的最小安裝,使理論學習免受環(huán)境安裝困擾;第10~12章的綜合案例既涵蓋Gym庫的完整安裝和自定義擴展,還包括Gym庫以外的環(huán)境,讓讀者體驗更加復雜的強化學習任務。
全書實現(xiàn)對硬件配置要求低。第1~9章代碼在沒有GPU的計算機上也可運行;第10~12章代碼在配置普通GPU的計算機上即可運行。
代碼下載和技術支持
本書代碼下載地址為:http://github.com/zhiqingxiao/rl-book。筆者會不定期更新代碼,以適應軟件版本的升級。
在此推薦你加入本書學習交流QQ群:935702193。如果有任何意見、建議或經(jīng)過網(wǎng)絡搜索仍不能解決的問題,可以在QQ群里提問。筆者的郵箱是:xzq.xiaozhiqing@gmail.com。
致謝
在此感謝為本書出版做出貢獻的所有工作人員。其中,機械工業(yè)出版社的高婧雅女士是本書的責任編輯,她對本書的寫作提出了很多建設性意見。同時,還要感謝機械工業(yè)出版社的其他編輯為提升本書質(zhì)量所做的大量工作,與他們合作是一個愉快的過程。我要特別感謝我的父親肖林進和母親許麗平,他們也參與了本書的編寫。同時,還要感謝我的上級、同事和其他親友,他們在本書寫作期間給予我極大的支持。
感謝你選擇本書。祝你學習快樂!
肖智清
強化學習一線研發(fā)人員,清華大學工學博士,現(xiàn)就職于全球知名投資銀行。擅長概率統(tǒng)計和機器學習,近5年發(fā)表SCI/EI論文十余篇,是多個國際性知名期刊和會議審稿人。在國內(nèi)外多項程序設計和數(shù)據(jù)科學競賽上獲得冠軍。
?
前言
第1章 初識強化學習 1
1.1 強化學習及其關鍵元素 1
1.2 強化學習的應用 3
1.3 智能體/環(huán)境接口 4
1.4 強化學習的分類 6
1.4.1 按任務分類 6
1.4.2 按算法分類 7
1.5 如何學習強化學習 8
1.5.1 學習路線 9
1.5.2 學習資源 9
1.6 案例:基于Gym庫的智能體/環(huán)境交互 9
1.6.1 安裝Gym庫 10
1.6.2 使用Gym庫 10
1.6.3 小車上山 12
1.7 本章小結 14
第2章 Markov決策過程 16
2.1 Markov決策過程模型 16
2.1.1 離散時間Markov決策過程 16
2.1.2 環(huán)境與動力 18
2.1.3 智能體與策略 19
2.1.4 獎勵、回報與價值函數(shù) 19
2.2 Bellman期望方程 21
2.3 最優(yōu)策略及其性質(zhì) 25
2.3.1 最優(yōu)策略與最優(yōu)價值函數(shù) 25
2.3.2 Bellman最優(yōu)方程 25
2.3.3 用Bellman最優(yōu)方程求解最優(yōu)策略 29
2.4 案例:懸崖尋路 31
2.4.1 實驗環(huán)境使用 31
2.4.2 求解Bellman期望方程 32
2.4.3 求解Bellman最優(yōu)方程 33
2.5 本章小結 35
第3章 有模型數(shù)值迭代 37
3.1 度量空間與壓縮映射 37
3.1.1 度量空間及其完備性 37
3.1.2 壓縮映射與Bellman算子 38
3.1.3 Banach不動點定理 39
3.2 有模型策略迭代 40
3.2.1 策略評估 40
3.2.2 策略改進 42
3.2.3 策略迭代 44
3.3 有模型價值迭代 45
3.4 動態(tài)規(guī)劃 46
3.4.1 從動態(tài)規(guī)劃看迭代算法 46
3.4.2 異步動態(tài)規(guī)劃 47
3.5 案例:冰面滑行 47
3.5.1 實驗環(huán)境使用 48
3.5.2 有模型策略迭代求解 49
3.5.3 有模型價值迭代求解 51
3.6 本章小結 52
第4章 回合更新價值迭代 54
4.1 同策回合更新 54
4.1.1 同策回合更新策略評估 54
4.1.2 帶起始探索的同策回合更新 58
4.1.3 基于柔性策略的同策回合更新 60
4.2 異策回合更新 62
4.2.1 重要性采樣 62
4.2.2 異策回合更新策略評估 64
4.2.3 異策回合更新最優(yōu)策略求解 65
4.3 案例:21點游戲 66
4.3.1 實驗環(huán)境使用 66
4.3.2 同策策略評估 67
4.3.3 同策最優(yōu)策略求解 70
4.3.4 異策策略評估 72
4.3.5 異策最優(yōu)策略求解 73
4.4 本章小結 74
第5章 時序差分價值迭代 76
5.1 同策時序差分更新 76
5.1.1 時序差分更新策略評估 78
5.1.2 SARSA算法 81
5.1.3 期望SARSA算法 83
5.2 異策時序差分更新 85
5.2.1 基于重要性采樣的異策算法 85
5.2.2 Q學習 86
5.2.3 雙重Q學習 87
5.3 資格跡 89
5.3.1 λ回報 89
5.3.2 TD(λ) 90
5.4 案例:出租車調(diào)度 92
5.4.1 實驗環(huán)境使用 93
5.4.2 同策時序差分學習調(diào)度 94
5.4.3 異策時序差分學習調(diào)度 97
5.4.4 資格跡學習調(diào)度 99
5.5 本章小結 100
第6章 函數(shù)近似方法 101
6.1 函數(shù)近似原理 101
6.1.1 隨機梯度下降 101
6.1.2 半梯度下降 103
6.1.3 帶資格跡的半梯度下降 105
6.2 線性近似 107
6.2.1 精確查找表與線性近似的關系 107
6.2.2 線性最小二乘策略評估 107
6.2.3 線性最小二乘最優(yōu)策略求解 109
6.3 函數(shù)近似的收斂性 109
6.4 深度Q學習 110
6.4.1 經(jīng)驗回放 111
6.4.2 帶目標網(wǎng)絡的深度Q學習 112
6.4.3 雙重深度Q網(wǎng)絡 114
6.4.4 對偶深度Q網(wǎng)絡 114
6.5 案例:小車上山 115
6.5.1 實驗環(huán)境使用 116
6.5.2 用線性近似求解最優(yōu)策略 117
6.5.3 用深度Q學習求解最優(yōu)策略 120
6.6 本章小結 123
第7章 回合更新策略梯度方法 125
7.1 策略梯度算法的原理 125
7.1.1 函數(shù)近似與動作偏好 125
7.1.2 策略梯度定理 126
7.2 同策回合更新策略梯度算法 128
7.2.1 簡單的策略梯度算法 128
7.2.2 帶基線的簡單策略梯度算法 129
7.3 異策回合更新策略梯度算法 131
7.4 策略梯度更新和極大似然估計的關系 132
7.5 案例:車桿平衡 132
7.5.1 同策策略梯度算法求解最優(yōu)策略 133
7.5.2 異策策略梯度算法求解最優(yōu)策略 135
7.6 本章小結 137
第8章 執(zhí)行者/評論者方法 139
8.1 同策執(zhí)行者/評論者算法 139
8.1.1 動作價值執(zhí)行者/評論者算法 140
8.1.2 優(yōu)勢執(zhí)行者/評論者算法 141
8.1.3 帶資格跡的執(zhí)行者/評論者算法 143
8.2 基于代理優(yōu)勢的同策算法 143
8.2.1 代理優(yōu)勢 144
8.2.2 鄰近策略優(yōu)化 145
8.3 信任域算法 146
8.3.1 KL散度 146
8.3.2 信任域 147
8.3.3 自然策略梯度算法 148
8.3.4 信任域策略優(yōu)化 151
8.3.5 Kronecker因子信任域執(zhí)行者/評論者算法 152
8.4 重要性采樣異策執(zhí)行者/評論者算法 153
8.4.1 基本的異策算法 154
8.4.2 帶經(jīng)驗回放的異策算法 154
8.5 柔性執(zhí)行者/評論者算法 157
8.5.1 熵 157
8.5.2 獎勵工程和帶熵的獎勵 158
8.5.3 柔性執(zhí)行者/評論者的網(wǎng)絡設計 159
8.6 案例:雙節(jié)倒立擺 161
8.6.1 同策執(zhí)行者/評論者算法求解最優(yōu)策略 162
8.6.2 異策執(zhí)行者/評論者算法求解最優(yōu)策略 168
8.7 本章小結 170
第9章 連續(xù)動作空間的確定性策略 172
9.1 同策確定性算法 172
9.1.1 策略梯度定理的確定性版本 172
9.1.2 基本的同策確定性執(zhí)行者/評論者算法 174
9.2 異策確定性算法 176
9.2.1 基本的異策確定性執(zhí)行者/評論者算法 177
9.2.2 深度確定性策略梯度算法 177
9.2.3 雙重延遲深度確定性策略梯度算法 178
9.3 案例:倒立擺的控制 180
9.3.1 用深度確定性策略梯度算法求解 181
9.3.2 用雙重延遲深度確定性算法求解 184
9.4 本章小結 187
第10章 綜合案例:電動游戲 188
10.1 Atari游戲環(huán)境 188
10.1.1 Gym庫的完整安裝 188
10.1.2 游戲環(huán)境使用 190
10.2 基于深度Q學習的游戲AI 191
10.2.1 算法設計 192
10.2.2 智能體的實現(xiàn) 193
10.2.3 智能體的訓練和測試 197
10.3 本章小結 198
第11章 綜合案例:棋盤游戲 200
11.1 雙人確定性棋盤游戲 200
11.1.1 五子棋和井字棋 200
11.1.2 黑白棋 201
11.1.3 圍棋 202
11.2 AlphaZero算法 203
11.2.1 回合更新樹搜索 203
11.2.2 深度殘差網(wǎng)絡 206
11.2.3 自我對弈 208
11.2.4 算法流程 210
11.3 棋盤游戲環(huán)境boardgame2 210
11.3.1 為Gym庫擴展自定義環(huán)境 211
11.3.2 boardgame2設計 211
11.3.3 Gym環(huán)境接口的實現(xiàn) 214
11.3.4 樹搜索接口的實現(xiàn) 216
11.4 AlphaZero算法實現(xiàn) 218
11.4.1 智能體類的實現(xiàn) 218
11.4.2 自我對弈的實現(xiàn) 223
11.4.3 訓練智能體 224
11.5 本章小結 225
第12章 綜合案例:自動駕駛 226
12.1 AirSim開發(fā)環(huán)境使用 226
12.1.1 安裝和運行AirSim 226
12.1.2 用Python訪問AirSim 228
12.2 基于強化學習的自動駕駛 229
12.2.1 為自動駕駛設計強化學習環(huán)境 230
12.2.2 智能體設計和實現(xiàn) 235
12.2.3 智能體的訓練和測試 237
12.3 本章小結 239