第1章 需求分析 1
1.1 需求分析:勿做DRL鐵錘人 1
1.2 一問“是不是” 2
1.2.1 Agent和環境定義 2
1.2.2 馬爾可夫決策過程和強化學習 3
1.3 二問“值不值” 5
1.3.1 試試規則和啟發式搜索 5
1.3.2 別忘了傳統強化學習 7
1.3.3 使用DRL的理由 7
1.4 三問“能不能” 9
1.4.1 場景固定:兩個分布一致 9
1.4.2 數據廉價:多、快、好、費 13
1.5 四問“邊界在哪裡” 16
1.6 本章小結 18
參考文獻 19
第2章 動作空間設計 23
2.1 動作空間設計:這裡大有可為 23
2.1.1 被忽視的價值 23
2.1.2 動作空間的常見類型 24
2.1.3 動作空間設計的基本原則 26
2.2 動作空間的完備性 26
2.2.1 功能完備 27
2.2.2 時效完備 29
2.3 動作空間的高效性 30
2.3.1 化整為零:以精度換效率 31
2.3.2 有機組合:尺度很重要 33
2.4 動作空間的合法性 35
2.4.1 非法動作屏蔽機制 36
2.4.2 Agent的知情權 37
2.5 本章小結 39
參考文獻 40
第3章 狀態空間設計 43
3.1 狀態空間設計:特征工程的誘惑 43
3.2 狀態空間設計的兩種常見誤區 44
3.2.1 過分依賴端到端特征學習 44
3.2.2 極致特征工程 44
3.3 與動作空間和回報函數的協同設計 45
3.3.1 與動作空間尺度一致 45
3.3.2 以回報函數為中心 46
3.4 狀態空間設計的四個步驟 47
3.4.1 任務分析 47
3.4.2 相關信息篩選 49
3.4.3 泛化性考量 53
3.4.4 效果驗證 58
3.5 本章小結 61
參考文獻 62
第4章 回報函數設計 64
4.1 回報函數設計:面向強化學習的編程 64
4.2 稀疏回報問題 65
4.2.1 孤獨無援的主線回報 65
4.2.2 稀疏回報問題的本質 66
4.3 輔助回報 67
4.3.1 子目標回報 67
4.3.2 塑形回報 70
4.3.3 內驅回報 76
4.3.4 回報取值的注意事項 77
4.4 回報函數設計的常見陷阱 78
4.4.1 魯莽 79
4.4.2 貪婪 80
4.4.3 懦弱 82
4.5 最優回報問題 83
4.6 基於學習的回報函數 84
4.6.1 經典方法 84
4.6.2 前沿方法 85
4.7 本章小結 87
參考文獻 88
第5章 算法選擇 92
5.1 算法選擇:拿來主義和改良主義 92
5.1.1 DRL算法的發展脈絡 92
5.1.2 一篩、二比、三改良 94
5.1.3 從獨當一面到眾星捧月 96
5.2 牢記經典勿忘本 97
5.2.1 DQN 98
5.2.2 DDPG 99
5.2.3 A3C 102
5.3 關注SOTA算法別留戀 105
5.3.1 TD3 105
5.3.2 SAC 107
5.3.3 PPO 110
5.4 其他算法 112
5.5 本章小結 113
參考文獻 113
第6章 訓練調試 119
6.1 訓練調試:此事要躬行 119
6.2 訓練前的準備工作 120
6.2.1 制定訓練方案 120
6.2.2 選擇網絡結構 124
6.2.3 隨機漫步 128
6.2.4 數據預處理 129
6.3 訓練進行時 131
6.3.1 反脆弱:擁抱不確定性 131
6.3.2 調節超參數 134
6.3.3 監控訓練狀態 143
6.4 給初學者的建議 146
6.5 本章小結 148
參考文獻 149
第7章 性能衝刺 154
7.1 性能衝刺:為DRL注入強心劑 154
7.2 課程學習 155
7.2.1 源任務及其分類 155
7.2.2 應用方式 157
7.3 額外監督信號 162
7.3.1 有監督預訓練 163
7.3.2 輔助任務 164
7.4 進化策略 169
7.4.1 基本原理 169
7.4.2 關鍵細節 170
7.4.3 應用方式 174
7.5 本章小結 175
參考文獻 176