內容簡介
涵蓋強化學習基本算法實踐+深度強化學習算法的原理實現及案例。代碼豐富,可直接上手操作;配套豐富的直播課程資源!
圖書目錄
第0 篇 先導篇 1
1 一個極其簡單的強化學習實例 2
1.1 多臂賭博機 2
1.1.1 ? ? greedy策略 3
1.1.2 玻爾茲曼策略 . 6
1.1.3 UCB 策略 7
1.2 多臂賭博機代碼實現 7
2.1 從多臂賭博機到馬爾可夫決策過程 13
2.2 馬爾可夫決策過程代碼實現 23
第1 篇 基於值函式的方法 31
3 基於動態規劃的方法 32
3.1 策略疊代與值疊代 .32
3.1.1 策略疊代算法原理 33
3.1.2 值疊代算法原理 35
3.2 策略疊代和值疊代的代碼實現 36
3.2.1 鴛鴦環境的修改 36
3.2.2 策略疊代算法代碼實現 37
3.2.3 值疊代算法代碼實現 .41
4 基於蒙特卡洛的方法 45
4.1 蒙特卡洛算法原理 46
4.2 蒙特卡洛算法的代碼實現 49
4.2.1 環境類的修改和蒙特卡洛算法類的聲明 49
4.2.2 探索初始化蒙特卡洛算法實現 52
4.2.3 同策略蒙特卡洛算法實現 . 56
5 基於時間差分的方法 62
5.1 從動態規劃到時間差分強化學習 62
5.2 時間差分算法代碼實現 66
5.2.1 時間差分算法類的聲明 66
5.2.2 SARSA 算法 . 67
5.2.3 Q-Learning 算法 70
6 基於函式逼近的方法 74
6.1 從表格型強化學習到線性函式逼近強化學習 74
6.1.1 表格特徵表示 74
6.1.2 固定稀疏表示 75
6.1.3 參數的訓練 76
6.2 基於線性函式逼近的Q-Learning 算法實現 76
6.3 非線性函式逼近DQN 算法代碼實現 85
第2 篇 直接策略搜尋的方法 95
7 策略梯度方法 96
7.1 算法基本原理及代碼架構 96
7.1.1 策略的表示問題 97
7.1.2 隨機策略梯度的推導 98
7.1.3 折扣累積回報 99
7.1.4 代碼架構 101
7.2 離散動作:CartPole 實例解析及編程實戰 103
7.2.1 CartPole 簡介 103
7.2.2 問題分析及MDP 模型 .104
7.2.3 採樣類的Python 源碼實現 105
7.2.4 策略網路模型分析 106
7.2.5 策略網路類的Python 源碼實現 108
7.2.6 策略網路的訓練與測試 110
7.2.7 用策略梯度法求解Cartpole 的主函式 112
7.2.8 CartPole 仿真環境開發 113
7.3 連續動作Pendulum 實例解析及編程實戰 117
7.3.1 Pendulum 簡介 118
7.3.2 採樣類的Python 原始碼實現 118
7.3.3 策略網路模型分析 .120
7.3.4 策略網路類的Python 源碼實現 121
7.3.5 策略網路的訓練與測試 125
7.3.6 用策略梯度法求解Pendulum 的主函式 126
7.3.7 Pendulum 仿真環境開發 127
8 Actor-Critic 方法 131
8.1 Actor-Critic 原理及代碼架構 131
8.1.1 Actor-Critic 基本原理 131
8.1.2 Actor-Critic 算法架構 .133
8.2 TD-AC 算法 133
8.2.1 採樣類的Python 源碼 134
8.2.2 策略網路的Python 源碼 135
8.2.3 策略訓練和測試 138
8.2.4 主函式及訓練效果 140
8.3 Minibatch-MC-AC 算法 141
8.3.1 Minibatch-MC-AC 算法框架 141
8.3.2 採樣類的Python 源碼 142
8.3.3 策略網路的Python 源碼 144
8.3.4 策略的訓練和測試 147
8.3.5 主函式及訓練效果 149
9 PPO 方法 151
9.1 PPO 算法基本原理及代碼結構 151
9.2 Python 源碼解析 154
9.2.1 採樣類 154
9.2.2 策略網路 156
9.2.3 策略的訓練和測試 159
9.2.4 主函式及訓練效果 160
10 DDPG 方法 163
10.1 DDPG 基本163
10.2 Python 源碼解析 167
10.2.1 經驗快取器類 167
10.2.2 策略網路 169
10.2.3 訓練和測試 173
10.2.4 主函式及訓練效果 175
第3 篇 基於模型的強化學習方法 177
11 基於模型預測控制的強化學習算法 178
11.1 基於模型的強化學習算法的基本原理 178
11.1.2 模型預測控制 179
11.1.3 基於模型的強化學習算法偽代碼 180
11.2 Python 源碼實現及解析 181
11.2.1 數據收集類 181
11.2.2 數據採樣類 181
11.2.3 動力學網路類 182
11.2.4 模型預測控制器類 185
11.2.5 模型訓練和預測函式 186
11.2.6 主函式 188
12 AlphaZero 原理淺析 190
12.1 從AlphaGo 到AlphaZero 191
12.2 蒙特卡洛樹搜尋算法 196
12.2.1 博弈樹和極小極大搜尋 196
12.2.2 再論多臂老虎機問題 198
12.2.3 UCT 算法 200
12.3 基於自我對弈的強化學習 206
12.3.1 基於MCTS 的自我對弈 206
12.3.2 策略價值網路的訓練 210
13 AlphaZero 實戰:從零學下五子棋 214
13.1 構建簡易的五子棋環境 215
13.2 建立整體算法流程 223
13.3 實現蒙特卡洛樹搜尋 229
13.4 實現策略價值網路 235
13.5 訓練實驗與效果評估 240
附錄A PyTorch 入門 246
A.1 PyTorch 基礎知識 246
A.1.1 Tensor 246
A.1.2 基礎操作 247
A.1.3 Tensor 和NumPy array 間的轉化 249
A.1.4 Autograd:自動梯度 249
A.2 PyTorch 中的神經網路 250
A.2.1 如何定義神經網路 251
A.2.2 如何訓練神經網路 254
A.2.3 在CIFAR-10 數據集上進行訓練和測試 256
A.2.4 模型的保存和載入 259
參考文獻 261
後記 263