近年來,隨著人工智能技術的不斷發(fā)展,強化學習作為一種重要的機器學習方法,受到了廣泛關注并得到大量應用。強化學習借助智能體與環(huán)境的交互進行學習,在未知環(huán)境和復雜任務面前展現(xiàn)出了強大優(yōu)勢。其應用場景從智能游戲、金融交易,延伸至自動駕駛系統(tǒng),越來越多樣化,且在各領域的成功案例不斷出現(xiàn)。
盡管強化學習的理論基礎已相對成熟,但在實際應用中仍面臨諸多挑戰(zhàn)。從算法的理論設計到具體項目的落地實踐,都需要深入理解強化學習的核心原理、常用算法,以及開發(fā)技術。所以,一本系統(tǒng)且全面介紹強化學習核心算法開發(fā)技術的實踐指南就顯得極為重要。
本書將理論與實踐相結合,深入解析強化學習的核心原理、經(jīng)典算法及其在實際項目中的應用。通過深入淺出的講解,讀者將能夠掌握強化學習的基本概念、常用算法和開發(fā)技術,從而能夠更好地應用強化學習技術,解決實際問題。
本書的特色
1. 全面、系統(tǒng)的學習路線
本書遵循邏輯嚴謹?shù)膶W習路線,從強化學習的基礎概念和理論入手,逐步深入介紹馬爾可夫決策過程、蒙特卡洛方法、Q-learning(Q 學習)、DQN(Deep Q-Networks,深度Q網(wǎng)絡)等經(jīng)典算法,再到更高級的算法[如Actor-Critic(演員-評論家)算法、PPO(Proximal Policy Optimization,近端策略優(yōu)化)算法等],以及模型預測控制、值分布式算法等內(nèi)容,覆蓋了強化學習領域的主要理論和算法。
2. 理論與實踐相結合
本書不但介紹強化學習的理論知識,還通過大量實例和項目案例,把理論知識與實際項目相結合,助力讀者深入理解和掌握強化學習技術。
3. 豐富的項目實戰(zhàn)
每一章都包含實際項目的實戰(zhàn)案例,涵蓋機器人控制、游戲、金融投資、自動駕駛等多個領域的應用場景,讀者可通過實踐項目加深對理論知識的理解,提升實際應用能力。
4. 詳細的算法原理解析
本書對每種算法的原理和實現(xiàn)細節(jié)都進行了詳細闡釋,涵蓋數(shù)學推導、算法流程、代碼實現(xiàn)等,有助于讀者深入理解算法的內(nèi)在原理。
5. 項目實戰(zhàn)中的調(diào)試和優(yōu)化技巧
在項目實戰(zhàn)部分,本書還介紹了調(diào)試和優(yōu)化技巧,幫助讀者解決實際項目中遇到的各種問題和挑戰(zhàn)。
6. 提供豐富的配套資源
本書提供了網(wǎng)絡視頻教學,這些視頻能夠幫助讀者提高學習效率,加深理解所學知識。讀者可通過掃描每章二級標題下的二維碼獲取視頻資源,既可在線觀看,也可以下載到本地隨時學習。此外,本書的配書資源中還提供了全書案例的源代碼和PPT學習課件。
本書的讀者對象
學生和研究人員。對強化學習領域感興趣的本科生、研究生及科研人員,可將本書作為學習強化學習理論和算法的教材和參考書。
工程師和開發(fā)者。從事人工智能、機器學習、數(shù)據(jù)科學、自動化等領域的工程師和開發(fā)者,若希望掌握強化學習核心技術并應用到實際項目中,本書將有所幫助。
數(shù)據(jù)科學家和分析師。希望利用強化學習技術解決實際業(yè)務問題、優(yōu)化決策和策略的數(shù)據(jù)科學家、分析師以及相關領域的從業(yè)人員。
機器人工程師。從事機器人控制、路徑規(guī)劃等領域的工程師,若希望利用強化學習技術提升機器人的智能化水平和自主決策能力,可參考本書。
金融領域從業(yè)人員。對利用強化學習技術進行金融投資決策和風險管理感興趣的金融分析師、交易員、量化分析師等。
自動駕駛工程師。從事自動駕駛系統(tǒng)開發(fā)和研究的工程師和研究人員,若希望利用強化學習技術提升自動駕駛系統(tǒng)的性能和安全性,本書可供參考。
人工智能愛好者和技術熱愛者。對人工智能領域的技術和應用感興趣,希望了解強化學習的原理、算法和實際應用的人員。
致謝
本書編寫過程中,得到了清華大學出版社編輯的大力支持。正是各位編輯專業(yè)的工作態(tài)度,耐心的幫助和高效的工作,才使本書能在較短時間內(nèi)面世。此外,也非常感謝家人給予的支持。由于本人水平有限,書中難免存在疏漏之處,懇請廣大讀者提出寶貴意見或建議,以便修訂完善。
最后感謝您購買本書,希望本書能成為您編程路上的領航者,祝您閱讀愉快!
編 者
第1章 強化學習基礎 1
1.1 強化學習概述 2
1.1.1 強化學習的背景 2
1.1.2 強化學習的核心特點 3
1.1.3 強化學習與其他機器學習方法的區(qū)別 3
1.2 強化學習的應用領域 4
1.2.1 機器人控制與路徑規(guī)劃 4
1.2.2 游戲與虛擬環(huán)境 5
1.2.3 金融與投資決策 6
1.2.4 自動駕駛與智能交通 6
1.2.5 自然語言處理 7
1.3 強化學習中的常用概念 8
1.3.1 智能體、環(huán)境與交互 8
1.3.2 獎勵與回報的概念 9
1.3.3 馬爾可夫性質(zhì)與馬爾可夫決策過程 9
1.3.4 策略與價值函數(shù) 10
第2章 馬爾可夫決策過程 11
2.1 馬爾可夫決策過程的定義 12
2.1.1 馬爾可夫決策過程的核心思想 12
2.1.2 馬爾可夫決策過程的形式化定義 12
2.2 馬爾可夫決策過程的組成要素 13
2.2.1 狀態(tài)空間與狀態(tài)的定義 13
2.2.2 行動空間與行動的定義 14
2.2.3 獎勵函數(shù)的作用與定義 14
2.2.4 轉移概率函數(shù)的意義與定義 15
2.2.5 實例分析:構建一個簡單的MDP 16
2.3 值函數(shù)與策略 18
2.3.1 值函數(shù)與策略的定義 18
2.3.2 值函數(shù)與策略的用法舉例 18
2.4 貝爾曼方程 20
2.4.1 貝爾曼預測方程與策略評估 20
2.4.2 貝爾曼最優(yōu)性方程與值函數(shù)之間的關系 22
2.4.3 貝爾曼最優(yōu)性方程與策略改進 25
2.4.4 動態(tài)規(guī)劃與貝爾曼方程的關系 28
2.4.5 貝爾曼方程在強化學習中的應用 29
第3章 蒙特卡洛方法 35
3.1 蒙特卡洛預測 36
3.1.1 蒙特卡洛預測的核心思想 36
3.1.2 蒙特卡洛預測的步驟與流程 36
3.1.3 蒙特卡洛預測的樣本更新與更新規(guī)則 37
3.2 蒙特卡洛控制 39
3.2.1 蒙特卡洛控制的目標與意義 39
3.2.2 蒙特卡洛控制的策略評估與改進 40
3.2.3 蒙特卡洛控制的更新規(guī)則與收斂性 43
3.3 探索與策略改進 45
3.3.1 探索與利用的平衡再探討 46
3.3.2 貪婪策略與? -貪婪策略的比較 47
3.3.3 改進探索策略的方法 50
3.3.4 探索策略對蒙特卡洛方法的影響 52
第4章 Q-learning與貝爾曼方程 55
4.1 Q-learning算法的原理 56
4.1.1 Q-learning的動作值函數(shù) 56
4.1.2 Q-learning算法中的貪婪策略與探索策略 58
4.1.3 Q-learning算法的收斂性與收斂條件 60
4.2 貝爾曼方程在Q-learning算法中的應用 62
4.2.1 Q-learning算法與貝爾曼最優(yōu)性方程的關系 63
4.2.2 貝爾曼方程的迭代計算與收斂 65
4.2.3 Q-learning算法中貝爾曼方程的實際應用 67
4.3 強化學習中的Q-learning 69
4.3.1 ? -貪婪策略與探索的關系 70
4.3.2 Q-learning中探索策略的變化與優(yōu)化 73
4.3.3 探索策略對Q-learning性能的影響分析 78
4.3.4 使用Q-learning尋找某股票的買賣點 79
第5章 時序差分學習和SARSA算法 83
5.1 時序差分預測 84
5.1.1 時序差分預測的核心思想 84
5.1.2 時序差分預測的基本公式 84
5.1.3 時序差分預測與狀態(tài)值函數(shù) 85
5.1.4 時序差分預測的實例分析 86
5.2 SARSA算法 88
5.2.1 SARSA算法的核心原理和步驟 88
5.2.2 SARSA算法的更新規(guī)則 90
5.2.3 SARSA算法的收斂性與收斂條件 93
5.2.4 SARSA算法實例分析 95
5.3 Q-learning算法的時序差分更新 99
5.3.1 時序差分學習與Q-learning的結合 99
5.3.2 Q-learning的時序差分更新算法 101
第6章 DQN算法 105
6.1 引言與背景 106
6.2 DQN算法的基本原理 106
6.3 DQN的網(wǎng)絡結構與訓練過程 110
6.3.1 DQN的神經(jīng)網(wǎng)絡結構 110
6.3.2 DQN算法的訓練過程 112
6.3.3 經(jīng)驗回放 114
6.3.4 目標網(wǎng)絡 116
6.4 DQN算法的優(yōu)化與改進 117
6.4.1 DDQN 117
6.4.2 競爭DQN 118
6.4.3 優(yōu)先經(jīng)驗回放 122
6.5 基于DQN算法的自動駕駛程序 123
6.5.1 項目介紹 123
6.5.2 具體實現(xiàn) 124
第7章 DDQN算法 133
7.1 DDQN對標準DQN的改進 134
7.2 雙重深度Q網(wǎng)絡的優(yōu)勢 134
7.3 《超級馬里奧》游戲的DDQN強化學習實戰(zhàn) 135
7.3.1 項目介紹 135
7.3.2 gym_super_mario_bros庫的介紹 136
7.3.3 環(huán)境預處理 136
7.3.4 創(chuàng)建DDQN模型 139
7.3.5 模型訓練和測試 143
第8章 競爭DQN算法 149
8.1 競爭DQN 算法原理 150
8.1.1 競爭DQN算法的動機和核心思想 150
8.1.2 競爭DQN 網(wǎng)絡架構 150
8.2 競爭DQN的優(yōu)勢與改進 151
8.2.1 分離狀態(tài)價值和動作優(yōu)勢的好處 151
8.2.2 優(yōu)化訓練效率與穩(wěn)定性 152
8.2.3 解決過度估計問題的潛力 152
8.3 股票交易策略系統(tǒng) 153
8.3.1 項目介紹 153
8.3.2 數(shù)據(jù)準備 154
8.3.3 數(shù)據(jù)拆分與時間序列 154
8.3.4 Environment(環(huán)境) 156
8.3.5 DQN算法實現(xiàn) 157
8.3.6 DDQN算法的實現(xiàn) 163
8.3.7 競爭DQN算法的實現(xiàn) 167
第9章 REINFORCE算法 173
9.1 策略梯度介紹 174
9.1.1 策略梯度的重要概念和特點 174
9.1.2 策略梯度定理的數(shù)學推導 175
9.2 REINFORCE算法基礎 175
9.2.1 REINFORCE算法的基本原理 176
9.2.2 REINFORCE算法的更新規(guī)則 179
9.2.3 基線函數(shù)與REINFORCE算法的優(yōu)化 180
第10章 Actor-Critic算法 187
10.1 Actor-Critic算法的介紹與原理 188
10.1.1 強化學習中的策略梯度方法 188
10.1.2 Actor-Critic算法框架概述 189
10.1.3 Actor-Critic算法實戰(zhàn):手推購物車游戲 189
10.2 A2C算法 197
10.2.1 A2C算法的基本思想 198
10.2.2 優(yōu)勢函數(shù)的引入 198
10.2.3 A2C算法的訓練流程 199
10.2.4 A2C算法實戰(zhàn) 200
10.3 SAC算法 202
10.3.1 SAC算法的核心思想 202
10.3.2 熵的作用及其在SAC算法中的應用 203
10.3.3 SAC算法實戰(zhàn) 204
10.4 A3C算法 206
10.4.1 A3C算法的核心思想 206
10.4.2 A3C算法的訓練過程 207
10.4.3 A3C算法實戰(zhàn) 207
第11章 PPO算法 211
11.1 PPO算法的背景與概述 212
11.1.1 強化學習中的策略優(yōu)化方法 212
11.1.2 PPO算法的優(yōu)點與應用領域 213
11.2 PPO算法的核心原理 213
11.2.1 PPO算法的基本思想 213
11.2.2 目標函數(shù)與優(yōu)化策略的關系 214
11.2.3 PPO算法中的策略梯度計算 215
11.3 PPO算法的實現(xiàn)與調(diào)參 215
11.3.1 策略網(wǎng)絡結構的設計 215
11.3.2 超參數(shù)的選擇與調(diào)整 218
11.4 PPO算法的變種與改進 221
11.4.1 PPO-Clip算法 221
11.4.2 PPO-Penalty算法 224
11.4.3 PPO2算法 230
第12章 TRPO算法 233
12.1 TRPO算法的意義 234
12.2 TRPO算法的核心原理 234
12.2.1 TRPO算法的步驟 234
12.2.2 信任區(qū)域的概念與引入 237
12.2.3 目標函數(shù)與約束條件的構建 237
12.2.4 TRPO算法中的策略梯度計算 238
12.3 TRPO算法的變種與改進 241
12.3.1 TRPO-Clip算法 241
12.3.2 TRPO-Penalty算法 243
12.4 TRPO算法優(yōu)化實戰(zhàn):基于矩陣低秩分解的TRPO 245
12.4.1 優(yōu)化策略:NN-TRPO和TRLRPO 246
12.4.2 經(jīng)驗數(shù)據(jù)管理和狀態(tài)空間離散化 246
12.4.3 定義環(huán)境 247
12.4.4 創(chuàng)建強化學習模型 247
12.4.5 創(chuàng)建Agent 248
12.4.6 評估TRPO算法在Acrobot 環(huán)境中的性能 249
12.4.7 評估TRPO算法在MountainCarContinuous-v0環(huán)境中的性能 250
12.4.8 評估TRPO算法在CustomPendulumEnv環(huán)境中的性能 251
12.4.9 性能可視化 251
第13章 連續(xù)動作空間的強化學習 253
13.1 連續(xù)動作空間強化學習基礎 254
13.1.1 連續(xù)動作空間介紹 254
13.1.2 動作幅度問題與采樣效率問題 255
13.1.3 連續(xù)動作空間中的探索問題 255
13.2 DDPG算法 256
13.2.1 DDPG算法的特點 256
13.2.2 DDPG算法在連續(xù)動作空間中的優(yōu)勢 257
13.2.3 DDPG算法的實現(xiàn)步驟與網(wǎng)絡結構 257
13.2.4 DDPG算法中的經(jīng)驗回放與探索策略 262
13.3 DDPG算法綜合實戰(zhàn):基于強化學習的股票交易策略 266
13.3.1 項目介紹 266
13.3.2 準備開發(fā)環(huán)境 266
13.3.3 下載數(shù)據(jù) 268
13.3.4 數(shù)據(jù)預處理 270
13.3.5 構建環(huán)境 271
13.3.6 實現(xiàn)深度強化學習算法 273
13.3.7 性能回測 276
第14章 值分布式算法 281
14.1 值分布式算法基礎 282
14.1.1 值分布式算法的背景與優(yōu)勢 282
14.1.2 值分布式算法的基本概念 282
14.1.3 強化學習中的值函數(shù)表示問題 283
14.1.4 常用的值分布式算法 284
14.2 C51算法 284
14.2.1 C51算法的基本原理 284
14.2.2 C51算法的網(wǎng)絡架構 285
14.2.3 C51算法的訓練流程 285
14.2.4 C51算法的試驗與性能評估 286
14.2.5 使用 TF-Agents訓練C51代理 287
14.3 QR-DQN算法 291
14.3.1 QR-DQN算法的核心思想 292
14.3.2 QR-DQN算法的實現(xiàn)步驟 292
14.3.3 QR-DQN算法實戰(zhàn) 293
14.4 FPQF算法 295
14.4.1 FPQF算法的核心思想 295
14.4.2 FPQF算法的實現(xiàn)步驟 295
14.4.3 FPQF算法實戰(zhàn) 296
14.5 IQN算法 298
14.5.1 IQN 算法的原理與背景 298
14.5.2 IQN算法實戰(zhàn) 299
第15章 基于模型的強化學習 301
15.1 基于模型的強化學習基礎 302
15.1.1 基于模型的強化學習簡介 302
15.1.2 模型的種類與構建方法 302
15.1.3 基于模型的強化學習算法 303
15.2 模型預測控制 304
15.2.1 模型預測控制介紹 304
15.2.2 模型預測控制實戰(zhàn) 305
15.3 蒙特卡洛樹搜索算法 307
15.3.1 MCTS算法介紹 307
15.3.2 MCTS算法實戰(zhàn) 308
15.4 MBPO算法 309
15.4.1 MBPO算法介紹 310
15.4.2 MBPO算法實戰(zhàn) 310
15.5 PlaNet算法 313
15.5.1 PlaNet算法介紹 313
15.5.2 PlaNet算法實戰(zhàn) 314
第16章 多智能體強化學習實戰(zhàn):Predator-Prey游戲 319
16.1 Predator-Prey游戲介紹 320
16.2 背景介紹 320
16.3 功能模塊介紹 321
16.4 環(huán)境準備 321
16.4.1 安裝OpenAI gymnasium 322
16.4.2 導入庫 322
16.5 捕食者-獵物(Predator-Prey)的環(huán)境 322
16.5.1 定義自定義強化學習環(huán)境類 323
16.5.2 定義自定義強化學習環(huán)境類 324
16.5.3 環(huán)境重置 325
16.5.4 計算捕食者和獵物的獎勵 325
16.5.5 判斷回合是否結束 326
16.5.6 檢查動作的合法性 326
16.5.7 記錄和獲取狀態(tài)歷史 326
16.5.8 實現(xiàn)step方法 327
16.5.9 生成視圖幀 328
16.5.10 渲染環(huán)境的視圖 328
16.6 第二個環(huán)境 329
16.7 隨機智能體 333
16.7.1 應用場景 334
16.7.2 實現(xiàn)隨機智能體 334
16.8 DDPG算法的實現(xiàn) 335
16.8.1 信息存儲 335
16.8.2 實現(xiàn)Actor模型 336
16.8.3 實現(xiàn)Critic模型 337
16.8.4 實現(xiàn)DDPG智能體 338
16.9 訓練模型 341
16.9.1 環(huán)境初始化 342
16.9.2 創(chuàng)建智能體 342
16.9.3 訓練循環(huán) 343
16.9.4 保存模型 345
16.9.5 訓練結果可視化 345
第17章 自動駕駛系統(tǒng) 347
17.1 自動駕駛背景介紹 348
17.2 項目介紹 348
17.2.1 功能介紹 348
17.2.2 模塊結構 349
17.3 環(huán)境準備 349
17.4 配置文件 350
17.5 準備數(shù)據(jù)文件 353
17.5.1 Carla數(shù)據(jù)處理與轉換 353
17.5.2 加載、處理數(shù)據(jù) 356
17.5.3 收集、處理數(shù)據(jù) 357
17.5.4 創(chuàng)建數(shù)據(jù)集 362
17.6 深度學習模型 363
17.6.1 編碼器 363
17.6.2 變分自編碼器 368
17.6.3 定義強化學習模型 368
17.7 強化學習 371
17.7.1 強化學習工具類的實現(xiàn) 371
17.7.2 經(jīng)驗回放存儲的實現(xiàn) 372
17.7.3 深度強化學習智能體的實現(xiàn) 373
17.7.4 使用SAC算法的強化學習代理的實現(xiàn) 375
17.7.5 實現(xiàn)DDPG用于強化學習 381
17.8 調(diào)用處理 384
17.8.1 生成訓練數(shù)據(jù) 384
17.8.2 訓練模型 385
17.8.3 收集Carla環(huán)境中的專家駕駛數(shù)據(jù) 387
17.8.4 訓練自動駕駛的強化學習代理 390
17.8.5 訓練DDPG智能體執(zhí)行自動駕駛任務 392
17.8.6 評估自動駕駛模型的性能 393
17.9 調(diào)試運行 393