強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)發(fā)展非常迅速的一個(gè)領(lǐng)域,由于其靈活性和通用性,可以應(yīng)用在從玩游戲到優(yōu)化復(fù)雜制造過(guò)程的許多實(shí)際情況。本書幫助讀者迅速理解深度強(qiáng)化學(xué)習(xí),并從原理到新近算法進(jìn)行全面探索。關(guān)于強(qiáng)化學(xué)習(xí)的新資料很多,但多數(shù)過(guò)于專業(yè)和抽象,很不容易理解,并且從理解原理到可以實(shí)際解決問(wèn)題之間還有巨大差距,而本書意在填補(bǔ)強(qiáng)化學(xué)習(xí)方法在實(shí)用性和結(jié)構(gòu)化信息方面的不足,以幫助讀者從整體上輕松理解深度強(qiáng)化學(xué)習(xí)。同時(shí)本書的另一個(gè)特點(diǎn)是面向?qū)嵺`,從簡(jiǎn)單到非常復(fù)雜,將每種方法實(shí)際應(yīng)用在各種具體環(huán)境中,以幫助讀者在實(shí)際研究和工作中應(yīng)用深度強(qiáng)化學(xué)習(xí)來(lái)解決問(wèn)題。
本書適合深度強(qiáng)化學(xué)習(xí)、機(jī)器學(xué)習(xí)、人工智能相關(guān)行業(yè)從業(yè)者、學(xué)習(xí)者閱讀參考。
目 錄
原書前言
第1章 什么是強(qiáng)化學(xué)習(xí) // 1
1.1 學(xué)習(xí)—監(jiān)督、無(wú)監(jiān)督和強(qiáng)化 // 1
1.2 RL形式和關(guān)系 // 3
1.2.1 獎(jiǎng)勵(lì) // 4
1.2.2 智能體 // 5
1.2.3 環(huán)境 // 5
1.2.4 動(dòng)作 // 6
1.2.5 觀察 // 6
1.3 馬爾可夫決策過(guò)程簡(jiǎn)介 // 8
1.3.1 馬爾可夫過(guò)程 // 8
1.3.2 馬爾可夫獎(jiǎng)勵(lì)過(guò)程 // 11
1.3.3 馬爾可夫決策過(guò)程 // 13
1.4 本章小結(jié) // 16
第2章 OpenAI Gym開源平臺(tái) // 17
2.1 智能體剖析 // 17
2.2 硬件和軟件要求 // 19
2.3 OpenAI Gym API // 20
2.3.1 動(dòng)作空間 // 21
2.3.2 觀察空間 // 21
2.3.3 環(huán)境 // 22
2.3.4 創(chuàng)建環(huán)境 // 23
2.3.5 CartPole會(huì)話 // 25
2.4 隨機(jī)CartPole智能體 // 26
2.5 額外的Gym功能—Wrapper和Monitor // 27
2.5.1 Wrapper // 28
2.5.2 Monitor // 30
2.6 本章小結(jié) // 32
第3章 使用PyTorch進(jìn)行深度學(xué)習(xí) // 33
3.1 張量 // 33
3.1.1 創(chuàng)建張量 // 33
3.1.2 標(biāo)量張量 // 35
3.1.3 張量操作 // 36
3.1.4 GPU張量 // 36
3.2 梯度 // 37
3.2.1 張量和梯度 // 38
3.3 NN構(gòu)建塊 // 40
3.4 定制層級(jí) // 41
3.5 最終的黏合劑—損失函數(shù)和優(yōu)化器 // 43
3.5.1 損失函數(shù) // 44
3.5.2 優(yōu)化器 // 44
3.6 使用TensorBoard監(jiān)控 // 45
3.6.1 TensorBoard簡(jiǎn)介 // 46
3.6.2 繪圖工具 // 47
3.7 示例:在Atari圖像上使用GAN // 48
3.8 本章小結(jié) // 52
第4章 交叉熵方法 // 53
4.1 RL方法的分類 // 53
4.2 實(shí)踐交叉熵 // 54
4.3 CartPole上的交叉熵方法 // 55
4.4 FrozenLake上的交叉熵方法 // 62
4.5 交叉熵方法的理論背景 // 67
4.6 本章小結(jié) // 68
第5章 表格學(xué)習(xí)與Bellman方程 // 69
5.1 值、狀態(tài)、最優(yōu)性 // 69
5.2 最優(yōu)的Bellman方程 // 70
5.3 動(dòng)作的值 // 72
5.4 值迭代法 // 74
5.5 實(shí)踐中的值迭代 // 75
5.6 FrozenLake中的Q-learning // 80
5.7 本章小結(jié) // 82
第6章 深度Q網(wǎng)絡(luò) // 83
6.1 現(xiàn)實(shí)中的值迭代 // 83
6.2 表格式Q-learning // 84
6.3 深度Q-learning // 88
6.3.1 與環(huán)境的交互 // 89
6.3.2 SGD優(yōu)化 // 90
6.3.3 步驟之間的相關(guān)性 // 90
6.3.4 馬爾可夫性 // 90
6.3.5 DQN訓(xùn)練的最終形式 // 91
6.4 Pong上的DQN // 91
6.4.1 封裝 // 92
6.4.2 DQN模型 // 96
6.4.3 訓(xùn)練 // 98
6.4.4 運(yùn)行與性能 // 105
6.4.5 動(dòng)作中的模型 // 107
6.5 本章小結(jié) // 109
第7章 DQN擴(kuò)展 // 110
7.1 PyTorch Agent Net函數(shù)庫(kù) // 110
7.1.1 智能體 // 111
7.1.2 智能體的經(jīng)驗(yàn) // 112
7.1.3 經(jīng)驗(yàn)緩沖區(qū) // 113
7.1.4 Gym env封裝 // 113
7.2 基本DQN // 113
7.3 N步DQN // 119
7.3.1 實(shí)現(xiàn) // 121
7.4 雙DQN // 123
7.4.1 實(shí)現(xiàn) // 123
7.4.2 結(jié)果 // 126
7.5 有噪網(wǎng)絡(luò) // 127
7.5.1 實(shí)現(xiàn) // 127
7.5.2 結(jié)果 // 130
7.6 優(yōu)先級(jí)重放緩沖區(qū) // 132
7.6.1 實(shí)現(xiàn) // 133
7.6.2 結(jié)果 // 137
7.7 競(jìng)爭(zhēng)DQN // 137
7.7.1 實(shí)現(xiàn) // 138
7.7.2 結(jié)果 // 139
7.8 分類 // 140
7.8.1 實(shí)現(xiàn) // 142
7.8.2 結(jié)果 // 148
7.9 結(jié)合所有 // 149
7.9.1 實(shí)現(xiàn) // 150
7.9.2 結(jié)果 // 154
7.10 本章小結(jié) // 155
參考文獻(xiàn) // 155
第8章 RL用于股票交易 // 156
8.1 貿(mào)易 // 156
8.2 數(shù)據(jù) // 156
8.3 問(wèn)題陳述和關(guān)鍵決策 // 157
8.4 交易環(huán)境 // 159
8.5 模型 // 165
8.6 訓(xùn)練代碼 // 166
8.7 結(jié)果 // 167
8.7.1 前饋模型 // 167
8.7.2 卷積模型 // 170
8.8 要嘗試的事 // 173
8.9 本章小結(jié) // 173
第9章 策略梯度法:一種替代方案 // 174
9.1 值與策略 // 174
9.1.1 為什么是策略 // 174
9.1.2 策略表示 // 175
9.1.3 策略梯度 // 175
9.2 強(qiáng)化方法 // 176
9.2.1 CartPole的例子 // 177
9.2.2 結(jié)果 // 180
9.2.3 基于策略的方法與基于值的方法 // 181
9.3 強(qiáng)化問(wèn)題 // 181
9.3.1 完整episode是必需的 // 182
9.3.2 高梯度方差 // 182
9.3.3 探索 // 182
9.3.4 樣本之間的相關(guān)性 // 183
9.4 CartPole上的PG // 183
9.5 Pong上的PG // 187
9.6 本章小結(jié) // 190
第10章 Actor-Critic方法 // 191
10.1 方差減少 // 191
10.2 CartPole方差 // 192
10.3 Actor-Critic // 194
10.4 Pong上的A2C // 196
10.5 Pong上的A2C的結(jié)果 // 201
10.6 調(diào)整超參數(shù) // 202
10.6.1 學(xué)習(xí)率 // 203
10.6.2 熵beta // 203
10.6.3 環(huán)境數(shù)量 // 204
10.6.4 batch大小 // 204
10.7 本章小結(jié) // 204
第11章 異步優(yōu)勢(shì)Actor-Critic方法 // 205
11.1 相關(guān)性和樣本效率 // 205
11.2 在A2C中添加另一個(gè)A // 206
11.3 Python中的多處理 // 208
11.4 A3C—數(shù)據(jù)并行 // 208
11.5 A3C—梯度并行 // 214
11.6 本章小結(jié) // 219
第12章 用 RL訓(xùn)練聊天機(jī)器人 // 220
12.1 聊天機(jī)器人概述 // 220
12.2 Deep NLP基礎(chǔ)知識(shí) // 221
12.2.1 RNN // 222
12.2.2 嵌入 // 223
12.2.3 編碼器 -解碼器 // 224
12.3 seq2seq訓(xùn)練 // 224
12.3.1 對(duì)數(shù)似然訓(xùn)練 // 224
12.3.2 雙語(yǔ)評(píng)估替補(bǔ)(BLEU)得分 // 226
12.3.3 seq2seq中的RL // 226
12.3.4 自我評(píng)價(jià)序列訓(xùn)練 // 228
12.4 聊天機(jī)器人示例 // 228
12.4.1 示例結(jié)構(gòu) // 229
12.4.2 模塊:cornell.py和data.py // 229
12.4.3 BLEU得分和utils.py // 230
12.4.4 模型 // 231
12.4.5 訓(xùn)練:交叉熵 // 236
12.4.6 執(zhí)行訓(xùn)練 // 239
12.4.7 檢查數(shù)據(jù) // 241
12.4.8 測(cè)試訓(xùn)練的模型 // 243
12.4.9 訓(xùn)練:SCST // 244
12.4.10 運(yùn)行SCST訓(xùn)練 // 250
12.4.11 結(jié)果 // 251
12.4.12 電報(bào)機(jī)器人 // 252
12.5 本章小結(jié) // 254
第13章 Web瀏覽 // 255
13.1 網(wǎng)頁(yè)瀏覽 // 255
13.1.1 瀏覽器自動(dòng)化操作和強(qiáng)化學(xué)習(xí) // 255
13.1.2 Mini World of Bits基準(zhǔn) // 256
13.2 OpenAI Universe // 258
13.2.1 安裝 // 258
13.2.2 動(dòng)作和觀察 // 259
13.2.3 環(huán)境創(chuàng)建 // 259
13.2.4 MiniWoB穩(wěn)定性 // 261
13.3 簡(jiǎn)單的點(diǎn)擊方式 // 261
13.3.1 網(wǎng)格動(dòng)作 // 262
13.3.2 示例概述 // 263
13.3.3 模型 // 264
13.3.4 訓(xùn)練代碼 // 264
13.3.5 啟動(dòng)容器 // 269
13.3.6 訓(xùn)練過(guò)程 // 271
13.3.7 檢查學(xué)到的策略 // 272
13.3.8 簡(jiǎn)單點(diǎn)擊的問(wèn)題 // 273
13.4 人工演示 // 275
13.4.1 記錄演示 // 275
13.4.2 錄制格式 // 277
13.4.3 使用演示進(jìn)行訓(xùn)練 // 279
13.4.4 結(jié)果 // 280
13.4.5 TicTacToe問(wèn)題 // 281
13.5 增加文本描述 // 283
13.6 要嘗試的事情 // 288
13.7 本章小結(jié) // 288
第14章 連續(xù)動(dòng)作空間 // 289
14.1 為什么是連續(xù)空間 // 289
14.2 動(dòng)作空間 // 289
14.3 環(huán)境 // 290
14.4 Actor-Critic(A2C)方法 // 292
14.4.1 實(shí)現(xiàn) // 292
14.4.2 結(jié)果 // 295
14.4.3 使用模型和錄制視頻 // 296
14.5 確定性策略梯度 // 297
14.5.1 探索 // 298
14.5.2 實(shí)現(xiàn) // 298
14.5.3 結(jié)果 // 302
14.5.4 錄制視頻 // 303
14.6 分布式策略梯度 // 304
14.6.1 架構(gòu) // 304
14.6.2 實(shí)現(xiàn) // 304
14.6.3 結(jié)果 // 308
14.7 需要進(jìn)一步嘗試的事情 // 309
14.8 本章小結(jié) // 309
第15章 信賴域 —TRPO、PPO和ACKTR // 310
15.1 引言 // 310
15.2 roboschool // 310
15.3 A2C基線 // 311
15.3.1 結(jié)果 // 313
15.3.2 錄制視頻 // 313
15.4 PPO // 313
15.4.1 實(shí)現(xiàn) // 314
15.4.2 結(jié)果 // 317
15.5 TRPO // 318
15.5.1 實(shí)現(xiàn) // 318
15.5.2 結(jié)果 // 319
15.6 使用ACKTR的A2C // 320
15.6.1 實(shí)現(xiàn) // 320
15.6.2 結(jié)果 // 321
15.7 本章小結(jié) // 321
第16章 RL中的黑盒優(yōu)化 // 322
16.1 黑盒方法 // 322
16.2 進(jìn)化策略 // 322
16.2.1 CartPole上的ES // 323
16.2.2 HalfCheetah上的ES // 328
16.3 遺傳算法 // 332
16.3.1 CartPole上的GA // 333
16.3.2 GA調(diào)整 // 335
16.3.3 Cheetah上的GA // 336
16.4 本章小結(jié) // 339
參考文獻(xiàn) // 339
第17章 超越無(wú)模型 —想象力 // 340
17.1 基于模型與無(wú)模型 // 340
17.2 模型缺陷 // 341
17.3 想象力增強(qiáng)的智能體 // 342
17.3.1 環(huán)境模型 // 343
17.3.2 走步策略 // 343
17.3.3 走步編碼器 // 344
17.3.4 論文結(jié)果 // 344
17.4 Atari Breakout上的I2A // 344
17.4.1 基線A2C智能體 // 344
17.4.2 環(huán)境模型訓(xùn)練 // 345
17.4.3 想象力智能體 // 347
17.5 實(shí)驗(yàn)結(jié)果 // 352
17.5.1 基線智能體 // 352
17.5.2 訓(xùn)練環(huán)境模型權(quán)重 // 353
17.5.3 使用I2A模型進(jìn)行訓(xùn)練 // 354
17.6 本章小結(jié) // 356
參考文獻(xiàn) // 356
第18章 AlphaGo Zero // 357
18.1 棋盤游戲 // 357
18.2 AlphaGo Zero方法 // 358
18.2.1 概述 // 358
18.2.2 MCTS // 359
18.2.3 自玩 // 360
18.2.4 訓(xùn)練和評(píng)估 // 360
18.3 Connect4機(jī)器人 // 361
18.3.1 游戲模型 // 361
18.3.2 實(shí)現(xiàn)MCTS // 363
18.3.3 模型 // 368
18.3.4 訓(xùn)練 // 369
18.3.5 測(cè)試和比較 // 370
18.4 Connect4結(jié)果 // 370
18.5 本章小結(jié) // 372
參考文獻(xiàn) // 372
本書總結(jié) // 373