深度強化學習實踐, 2/e (Deep Reinforcement Learning Hands-On, 2/e)

Maxim Lapan

買這商品的人也買了...

商品描述

本書理論與實踐相結合,系統闡述強化學習的基礎知識,以及如何動手編寫智能體以執行一系列實際任務。
通過閱讀本書,讀者將獲得深層Q網絡、策略梯度方法、連續控制問題以及高度可擴展的非梯度方法等主題領域的可行洞見,
還將學會如何構建一個經過強化學習訓練、價格低廉的真實硬件機器人,
並通過一步步代碼優化在短短30分鐘的訓練後解決Pong環境。
此外,本書還專門介紹了強化學習的新發展,包括離散優化(解決魔方問題)、
多智能體方法、Microsoft的TextWorld環境、高#級探索技術等。

作者簡介

馬克西姆·拉潘(Maxim Lapan)是一位深度學習愛好者和獨立研究者。
作為一名軟件開發人員和系統架構師,他擁有15年的工作經驗,涉及從底層Linux內核驅動程序開發到性能優化以及在數千台服務器上工作的分佈式應用程序設計的方方面面。
他在大數據、機器學習以及大型並行分佈式HPC和非HPC系統方面也擁有豐富的經驗,能夠用簡單的詞彙和生動的示例來解釋複雜的事物。
他目前感興趣的領域涉及深度學習的實際應用,例如深度自然語言處理和深度強化學習。
馬克西姆與家人一起住在俄羅斯莫斯科。

目錄大綱

譯者序
前言
作者簡介
審校者簡介
第1章 什麼是強化學習1
1.1 機器學習分類2
1.1.1 監督學習2
1.1.2 非監督學習2
1.1.3 強化學習2
1.2 強化學習的複雜性4
1.3 強化學習的形式4
1.3.1 獎勵5
1.3.2 智能體6
1.3.3 環境6
1.3.4 動作7
1.3.5 觀察7
1.4 強化學習的理論基礎9
1.4.1 馬爾可夫決策過程9
1.4.2 策略17
1.5 總結18

第2章 OpenAI Gym19
2.1 剖析智能體19
2.2 硬件和軟件要求21
2.3 OpenAI Gym API23
2.3.1 動作空間23
2.3.2 觀察空間23
2.3.3 環境25
2.3.4 創建環境26
2.3.5 車擺系統28
2.4 隨機CartPole智能體30
2.5 Gym的額外功能:包裝器和監控器30
2.5.1 包裝器31
2.5.2 監控器33
2.6 總結35

第3章 使用PyTorch進行深度學習36
3.1 張量36
3.1.1 創建張量37
3.1.2 零維張量39
3.1.3 張量操作39
3.1.4 GPU張量40
3.2 梯度41
3.3 NN構建塊44
3.4 自定義層45
3.5 最終黏合劑:損失函數和優化器47
3.5.1 損失函數48
3.5.2 優化器48
3.6 使用TensorBoard進行監控50
3.6.1 TensorBoard 10150
3.6.2 繪圖52
3.7 示例:將GAN應用於Atari圖像53
3.8 PyTorch Ignite57
3.9 總結61

第4章 交叉熵方法62
4.1 RL方法的分類62
4.2 交叉熵方法的實踐63
4.3 交叉熵方法在CartPole中的應用65
4.4 交叉熵方法在FrozenLake中的應用72
4.5 交叉熵方法的理論背景78
4.6 總結79

第5章 表格學習和Bellman方程80
5.1 價值、狀態和性80
5.2 Bellman方程82
5.3 動作的價值84
5.4 價值迭代法86
5.5 價值迭代實踐87
5.6 Q-learning在FrozenLake中的應用92
5.7 總結94

第6章 深度Q-network95
6.1 現實的價值迭代95
6.2 表格Q-learning96
6.3 深度Q-learning100
6.3.1 與環境交互102
6.3.2 SGD優化102
6.3.3 步驟之間的相關性103
6.3.4 馬爾可夫性質103
6.3.5 DQN訓練的最終形式103
6.4 DQN應用於Pong遊戲104
6.4.1 包裝器105
6.4.2 DQN模型109
6.4.3 訓練110
6.4.4 運行和性能118
6.4.5 模型實戰120
6.5 可以嘗試的事情122
6.6 總結123

第7章 高級強化學習庫124
7.1 為什麼使用強化學習庫124
7.2 PTAN庫125
7.2.1 動作選擇器126
7.2.2 智能體127
7.2.3 經驗源131
7.2.4 經驗回放緩衝區136
7.2.5 TargetNet類137
7.2.6 Ignite幫助類139
7.3 PTAN版本的CartPole解決方案139
7.4 其他強化學習庫141
7.5 總結141

第8章 DQN擴展142
8.1 基礎DQN143
8.1.1 通用庫143
8.1.2 實現147
8.1.3 結果148
8.2 N步DQN150
8.2.1 實現152
8.2.2 結果152
8.3 Double DQN153
8.3.1 實現154
8.3.2 結果155
8.4 噪聲網絡156
8.4.1 實現157
8.4.2 結果159
8.5 帶優先級的回放緩衝區160
8.5.1 實現161
8.5.2 結果164
8.6 Dueling DQN165
8.6.1 實現166
8.6.2 結果167
8.7 Categorical DQN168
8.7.1 實現171
8.7.2 結果175
8.8 組合所有方法178
8.9 總結180
8.10 參考文獻180

第9章 加速強化學習訓練的方法182
9.1 為什麼速度很重要182
9.2 基線184
9.3 PyTorch中的計算圖186
9.4 多個環境188
9.5 在不同進程中分別交互和訓練190
9.6 調整包裝器194
9.7 基準測試總結198
9.8 硬核CuLE199
9.9 總結199
9.10 參考文獻199

第10章 使用強化學習進行股票交易200
10.1 交易200
10.2 數據201
10.3 問題陳述和關鍵決策202
10.4 交易環境203
10.5 模型210
10.6 訓練代碼211
10.7 結果211
10.7.1 前饋模型212
10.7.2 卷積模型217
10.8 可以嘗試的事情218
10.9 總結219

第11章 策略梯度:一種替代方法220
11.1 價值與策略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 結果227
11.2.3 基於策略的方法與基於價值的方法228
11.3 REINFORCE的問題229
11.3.1 需要完整片段229
11.3.2 高梯度方差229
11.3.3 探索230
11.3.4 樣本相關性230
11.4 用於CartPole的策略梯度方法230
11.4.1 實現231
11.4.2 結果233
11.5 用於Pong的策略梯度方法237
11.5.1 實現238
11.5.2 結果239
11.6 總結240

第12章 actor-critic方法241
12.1 減小方差241
12.2 CartPole的方差243
12.3 actor-critic246
12.4 在Pong中使用A2C247
12.5 在Pong中使用A2C的結果252
12.6 超參調優255
12.6.1 學習率255
12.6.2 熵的beta值256
12.6.3 環境數256
12.6.4 批大小257
12.7 總結257

第13章 A3C258
13.1 相關性和採樣效率258
13.2 向A2C添加另一個A259
13.3 Python中的多重處理功能261
13.4 數據並行化的A3C262
13.4.1 實現262
13.4.2 結果267
13.5 梯度並行化的A3C269
13.5.1 實現269
13.5.2 結果273
13.6 總結274

第14章 使用強化學習訓練聊天機器人275
14.1 聊天機器人概述275
14.2 訓練聊天機器人276
14.3 深度NLP基礎277
14.3.1 RNN277
14.3.2 詞嵌入278
14.3.3 編碼器–解碼器架構279
14.4 seq2seq訓練280
14.4.1 對數似然訓練280
14.4.2 雙語替換評測分數282
14.4.3 seq2seq中的強化學習282
14.4.4 自評序列訓練283
14.5 聊天機器人示例284
14.5.1 示例的結構285
14.5.2 模塊:cornell.py和data.py285
14.5.3 BLEU分數和utils.py286
14.5.4 模型287
14.6 數據集探索292
14.7 訓練:交叉熵294
14.7.1 實現294
14.7.2 結果298
14.8 訓練:SCST300
14.8.1 實現300
14.8.2 結果306
14.9 經過數據測試的模型309
14.10 Telegram機器人311
14.11 總結314

第15章 TextWorld環境315
15.1 文字冒險遊戲315
15.2 環境318
15.2.1 安裝318
15.2.2 遊戲生成318
15.2.3 觀察和動作空間320
15.2.4 額外的遊戲信息322
15.3 基線DQN325
15.3.1 觀察預處理326
15.3.2 embedding和編碼器331
15.3.3 DQN模型和智能體333
15.3.4 訓練代碼335
15.3.5 訓練結果335
15.4 命令生成模型340
15.4.1 實現341
15.4.2 預訓練結果345
15.4.3 DQN訓練代碼346
15.4.4 DQN訓練結果347
15.5 總結349

第16章 Web導航350
16.1 Web導航簡介350
16.1.1 瀏覽器自動化和RL351
16.1.2 MiniWoB基準352
16.2 OpenAI Universe353
16.2.1 安裝354
16.2.2 動作與觀察354
16.2.3 創建環境355
16.2.4 MiniWoB的穩定性357
16.3 簡單的單擊方法357
16.3.1 網格動作358
16.3.2 示例概覽359
16.3.3 模型359
16.3.4 訓練代碼360
16.3.5 啟動容器364
16.3.6 訓練過程366
16.3.7 檢查學到的策略368
16.3.8 簡單單擊的問題369
16.4 人類演示371
16.4.1 錄製人類演示371
16.4.2 錄製的格式373
16.4.3 使用演示進行訓練375
16.4.4 結果376
16.4.5 井字