深入淺出強(qiáng)化學(xué)習(xí):編程實戰(zhàn)
定 價:89 元
- 作者:郭憲
- 出版時間:2020/3/1
- ISBN:9787121367465
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP18
- 頁碼:272
- 紙張:
- 版次:01
- 開本:16開
涵蓋強(qiáng)化學(xué)習(xí)基本算法實踐+深度強(qiáng)化學(xué)習(xí)算法的原理實現(xiàn)及案例。代碼豐富,可直接上手操作;配套豐富的直播課程資源!
郭憲,南開大學(xué)人工智能學(xué)院講師。2009年畢業(yè)于華中科技大學(xué)機(jī)械設(shè)計制造及自動化專業(yè),同年保送到中國科學(xué)院沈陽自動化研究所進(jìn)行碩博連讀,2016年1月獲得工學(xué)博士學(xué)位,并到南開大學(xué)從事博士后研究工作,2018年7月任教于南開大學(xué)至今。目前主要研究方向和興趣是仿生機(jī)器人智能運動控制、強(qiáng)化學(xué)習(xí)和機(jī)器人博弈。宋俊瀟,香港科技大學(xué)博士,目前就職于啟元世界,擔(dān)任研究科學(xué)家,專注于決策智能相關(guān)算法的研究與開發(fā)。博士期間在國際知名期刊和會議發(fā)表論文9篇。2015年,獲得阿里巴巴天池大數(shù)據(jù)黃金聯(lián)賽個人年度第1名(參賽隊伍總計15154支)。曾就職于網(wǎng)易游戲,擔(dān)任資深數(shù)據(jù)挖掘研究員,負(fù)責(zé)個性化推薦算法及基于深度強(qiáng)化學(xué)習(xí)的游戲AI技術(shù)的探索研究,三次獲得公司層面的技術(shù)進(jìn)步獎。方勇純,南開大學(xué)人工智能學(xué)院院長、教授、博士生導(dǎo)師,國家杰出青年基金獲得者(2013年),教育部長江學(xué)者特聘教授(2017年)。1992~1994年在浙江大學(xué)混合班(尖子班)學(xué)習(xí),獲混合班榮譽(yù)證書。1996年和1999年分獲浙江大學(xué)學(xué)士和碩士學(xué)位,2002年獲美國克萊姆森大學(xué)(Clemson University)電機(jī)工程博士學(xué)位。2002至2003年在康乃爾大學(xué)(Cornell University)從事博士后研究。2003年底至今,任教于南開大學(xué)。目前主要研究方向為機(jī)器人視覺控制、無人機(jī)、欠驅(qū)動吊車系統(tǒng)和微納米操作。
第0 篇 先導(dǎo)篇 1
1 一個極其簡單的強(qiáng)化學(xué)習(xí)實例 2
1.1 多臂賭博機(jī) 2
1.1.1 ? ? greedy策略 3
1.1.2 玻爾茲曼策略 . 6
1.1.3 UCB 策略 7
1.2 多臂賭博機(jī)代碼實現(xiàn) 7
2 馬爾可夫決策過程 13
2.1 從多臂賭博機(jī)到馬爾可夫決策過程 13
2.2 馬爾可夫決策過程代碼實現(xiàn) 23
第1 篇 基于值函數(shù)的方法 31
3 基于動態(tài)規(guī)劃的方法 32
3.1 策略迭代與值迭代 .32
3.1.1 策略迭代算法原理 33
3.1.2 值迭代算法原理 35
3.2 策略迭代和值迭代的代碼實現(xiàn) 36
3.2.1 鴛鴦環(huán)境的修改 36
3.2.2 策略迭代算法代碼實現(xiàn) 37
3.2.3 值迭代算法代碼實現(xiàn) .41
4 基于蒙特卡洛的方法 45
4.1 蒙特卡洛算法原理 46
4.2 蒙特卡洛算法的代碼實現(xiàn) 49
4.2.1 環(huán)境類的修改和蒙特卡洛算法類的聲明 49
4.2.2 探索初始化蒙特卡洛算法實現(xiàn) 52
4.2.3 同策略蒙特卡洛算法實現(xiàn) . 56
5 基于時間差分的方法 62
5.1 從動態(tài)規(guī)劃到時間差分強(qiáng)化學(xué)習(xí) 62
5.2 時間差分算法代碼實現(xiàn) 66
5.2.1 時間差分算法類的聲明 66
5.2.2 SARSA 算法 . 67
5.2.3 Q-Learning 算法 70
6 基于函數(shù)逼近的方法 74
6.1 從表格型強(qiáng)化學(xué)習(xí)到線性函數(shù)逼近強(qiáng)化學(xué)習(xí) 74
6.1.1 表格特征表示 74
6.1.2 固定稀疏表示 75
6.1.3 參數(shù)的訓(xùn)練 76
6.2 基于線性函數(shù)逼近的Q-Learning 算法實現(xiàn) 76
6.3 非線性函數(shù)逼近DQN 算法代碼實現(xiàn) 85
第2 篇 直接策略搜索的方法 95
7 策略梯度方法 96
7.1 算法基本原理及代碼架構(gòu) 96
7.1.1 策略的表示問題 97
7.1.2 隨機(jī)策略梯度的推導(dǎo) 98
7.1.3 折扣累積回報 99
7.1.4 代碼架構(gòu) 101
7.2 離散動作:CartPole 實例解析及編程實戰(zhàn) 103
7.2.1 CartPole 簡介 103
7.2.2 問題分析及MDP 模型 .104
7.2.3 采樣類的Python 源碼實現(xiàn) 105
7.2.4 策略網(wǎng)絡(luò)模型分析 106
7.2.5 策略網(wǎng)絡(luò)類的Python 源碼實現(xiàn) 108
7.2.6 策略網(wǎng)絡(luò)的訓(xùn)練與測試 110
7.2.7 用策略梯度法求解Cartpole 的主函數(shù) 112
7.2.8 CartPole 仿真環(huán)境開發(fā) 113
7.3 連續(xù)動作Pendulum 實例解析及編程實戰(zhàn) 117
7.3.1 Pendulum 簡介 118
7.3.2 采樣類的Python 源代碼實現(xiàn) 118
7.3.3 策略網(wǎng)絡(luò)模型分析 .120
7.3.4 策略網(wǎng)絡(luò)類的Python 源碼實現(xiàn) 121
7.3.5 策略網(wǎng)絡(luò)的訓(xùn)練與測試 125
7.3.6 用策略梯度法求解Pendulum 的主函數(shù) 126
7.3.7 Pendulum 仿真環(huán)境開發(fā) 127
8 Actor-Critic 方法 131
8.1 Actor-Critic 原理及代碼架構(gòu) 131
8.1.1 Actor-Critic 基本原理 131
8.1.2 Actor-Critic 算法架構(gòu) .133
8.2 TD-AC 算法 133
8.2.1 采樣類的Python 源碼 134
8.2.2 策略網(wǎng)絡(luò)的Python 源碼 135
8.2.3 策略訓(xùn)練和測試 138
8.2.4 主函數(shù)及訓(xùn)練效果 140
8.3 Minibatch-MC-AC 算法 141
8.3.1 Minibatch-MC-AC 算法框架 141
8.3.2 采樣類的Python 源碼 142
8.3.3 策略網(wǎng)絡(luò)的Python 源碼 144
8.3.4 策略的訓(xùn)練和測試 147
8.3.5 主函數(shù)及訓(xùn)練效果 149
9 PPO 方法 151
9.1 PPO 算法基本原理及代碼結(jié)構(gòu) 151
9.2 Python 源碼解析 154
9.2.1 采樣類 154
9.2.2 策略網(wǎng)絡(luò) 156
9.2.3 策略的訓(xùn)練和測試 159
9.2.4 主函數(shù)及訓(xùn)練效果 160
10 DDPG 方法 163
10.1 DDPG 基本163
10.2 Python 源碼解析 167
10.2.1 經(jīng)驗緩存器類 167
10.2.2 策略網(wǎng)絡(luò) 169
10.2.3 訓(xùn)練和測試 173
10.2.4 主函數(shù)及訓(xùn)練效果 175
第3 篇 基于模型的強(qiáng)化學(xué)習(xí)方法 177
11 基于模型預(yù)測控制的強(qiáng)化學(xué)習(xí)算法 178
11.1 基于模型的強(qiáng)化學(xué)習(xí)算法的基本原理 178
11.1.1 神經(jīng)網(wǎng)絡(luò)擬合動力學(xué)模型 179
11.1.2 模型預(yù)測控制 179
11.1.3 基于模型的強(qiáng)化學(xué)習(xí)算法偽代碼 180
11.2 Python 源碼實現(xiàn)及解析 181
11.2.1 數(shù)據(jù)收集類 181
11.2.2 數(shù)據(jù)采樣類 181
11.2.3 動力學(xué)網(wǎng)絡(luò)類 182
11.2.4 模型預(yù)測控制器類 185
11.2.5 模型訓(xùn)練和預(yù)測函數(shù) 186
11.2.6 主函數(shù) 188
12 AlphaZero 原理淺析 190
12.1 從AlphaGo 到AlphaZero 191
12.2 蒙特卡洛樹搜索算法 196
12.2.1 博弈樹和極小極大搜索 196
12.2.2 再論多臂老虎機(jī)問題 198
12.2.3 UCT 算法 200
12.3 基于自我對弈的強(qiáng)化學(xué)習(xí) 206
12.3.1 基于MCTS 的自我對弈 206
12.3.2 策略價值網(wǎng)絡(luò)的訓(xùn)練 210
13 AlphaZero 實戰(zhàn):從零學(xué)下五子棋 214
13.1 構(gòu)建簡易的五子棋環(huán)境 215
13.2 建立整體算法流程 223
13.3 實現(xiàn)蒙特卡洛樹搜索 229
13.4 實現(xiàn)策略價值網(wǎng)絡(luò) 235
13.5 訓(xùn)練實驗與效果評估 240
附錄A PyTorch 入門 246
A.1 PyTorch 基礎(chǔ)知識 246
A.1.1 Tensor 246
A.1.2 基礎(chǔ)操作 247
A.1.3 Tensor 和NumPy array 間的轉(zhuǎn)化 249
A.1.4 Autograd:自動梯度 249
A.2 PyTorch 中的神經(jīng)網(wǎng)絡(luò) 250
A.2.1 如何定義神經(jīng)網(wǎng)絡(luò) 251
A.2.2 如何訓(xùn)練神經(jīng)網(wǎng)絡(luò) 254
A.2.3 在CIFAR-10 數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試 256
A.2.4 模型的保存和加載 259
參考文獻(xiàn) 261
后記 263