強化學習精要:核心算法與TensorFlow實現 ( 簡體 字) |
作者:馮超 | 類別:1. -> 程式設計 -> 深度學習 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 48966 詢問書籍請說出此書號!【缺書】 NT售價: 400 元 |
出版日:4/1/2018 |
頁數:392 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121340000 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:從你拿起本書的那一刻起,我們就一起踏上了這段有關強化學習的冒險之旅。本書中有簡單直白的敘述,也有復雜冗長的證明;有詼諧幽默,也有深刻的思考。所有的一切,都是為了幫助你更輕松地對強化學習有更多了解、更多感悟。 一年之前,我在拙作《深度學習輕松學:核心算法與視覺實踐》中,同樣以這段話作為開篇,唯一不同的是這一次書的主題換成了強化學習。近年來,強化學習領域有了很大的發展,基于強化學習開發的智能體也被人們熟知。于是越來越多的人開始關注強化學習,了解這個領域,并使用強化學習的方法解決問題。隨著深度學習的發展,強化學習也逐漸發揮出了自己的實力,憑借更靈活的問題定義方式,解決了很多其他方法難以解決的問題。 雖然強化學習這個領域已經有了多年的積累與發展,但是與深度學習相比,國內外與此相關的書籍與課程偏少。同時,由于強化學習融合了很多領域的知識,本身的技術難度較大,學習起來比較困難。兩者疊加,使得強化學習仍然是一個令很多人感到困惑的概念。 為了學習強化學習中的各種知識,作為本書的作者,我也花費了很多的精力。在閱讀了很多經典的書籍、論文和博客之后,我開始對強化學習有了自己的理解和體會。同時也積累了不少關于強化學習的“學習筆記”,其中的一部分已經在一些公開場合,例如我的知乎專欄《無痛的機器學習》(https://zhuanlan.zhihu.com/hsmyy)中與讀者分享過。在交流的過程中,我能感受到讀者對強化學習的濃厚興趣,同時自己也在分享中得到了提高。 經過長時間的積累,這些心得與體會最終凝結成了本書。在這個過程中我重新回顧了自己所學的知識,也進一步思考了強化學習各部分知識點之間的聯系。我希望可以給大家呈現一個盡可能完整而豐富的強化學習世界,與大家共同探討強化學習中的無限可能。 為了使更多的人能夠從本書中得到收獲,我選擇強化學習中比較經典的算法進行了介紹,這些都是強化學習中十分重要的內容,對不了解強化學習的讀者來說,可以幫助你快速了解強化學習的知識體系,對這個領域有一個全面的認識;對正在學習強化學習的讀者來說,本書中的知識同樣可以幫助你梳理強化學習的核心要點,加深對這些基本問題的理解。 在編寫這本書的過程中,我又一次體會到求知的艱辛。獲取知識的道路總是充滿荊棘,除了自身不斷地努力,更少不了身邊人對我的支持鼓勵。感謝家人對我的理解與支持,感謝編輯鄭柳潔女士再次成為我的伯樂,為我提供了很多幫助,感謝劉曉鳴先生為本書繪制了大量插圖。我相信我們的努力付出會使更多的人享受獲得知識的快樂。 本書的主要內容 強化學習在機器學習中的難度不低,它需要很多方面的知識輔助,同時自身也已經形成了一個龐大的體系。本書并不能幫助讀者完全掌握強化學習的所有知識點,所能做的只是展示其中部分基礎內容。本書不是一本科普讀物,想要閱讀本書需要具備一定的基礎知識,如微積分、線性代數等。部分章節也會梳理這些基礎知識,以確保讀者掌握這些知識的核心思想。本書各章節的核心內容如下。 第一部分主要介紹與強化學習有關的基礎知識,例如數學基礎、對應的程序開發基礎、強化學習的基本計算方法等。 第1章已經介紹了強化學習的基本概念,相信讀者對強化學習的目標、特點已經有了一定的了解。 第2章介紹相關的數學知識,如線性代數、概率論、重要性采樣、信息論等,幫助讀者快速回顧即將用到的數學知識。 第3章介紹強化學習中會用到的優化知識,主要介紹常見的梯度下降法(Gradient Descent)、共軛梯度法和自然梯度法,這三種方法將出現在后面的算法中。 第4章介紹書中代碼使用的計算框架TensorFlow。TensorFlow 是一款使用十分廣泛的框架,很多強化學習的算法選擇使用它進行實現,因此我們有必要學習它。本章將簡單介紹它的使用方法和一些基本原理,熟悉TensorFlow 的讀者可以跳過本章。 第5章介紹本書使用的另一個框架Gym 及在此框架上實現的算法集合Baselines。Gym 集成了大量的強化學習仿真環境,Baselines 則基于TensorFlow 和Gym 實現了一些經典的算法。本章將簡單介紹這兩個框架的基礎知識。 第6章介紹強化學習的基礎知識。例如馬爾可夫決策過程(Markov Decision Process),以及在簡單問題上的兩種經典動態規劃求解法:策略迭代法和價值迭代法。這些方法是強化學習算法的基石,絕大多數強化學習方法都是根據這些知識演變來的。 第二部分介紹以最優值函數為思想的一系列算法,其中的代表算法為Deep Q Network和Rainbow。 第7章介紹蒙特卡羅(Monte-Carlo)和時序差分(Temporal-Difference)兩種求解Model-free 問題的方法,并介紹Deep Q Network 算法的細節。 第8章介紹Deep Q-Learning 的一些改進算法,如Priority Replay Buffer、Duel Network等,并介紹改進的集成算法Rainbow。 第三部分介紹以策略梯度(Policy Gradient)為思想的一系列算法,其中的代表算法為Actor-Critic。 第9章介紹策略梯度法和Actor-Critic 算法的原理,同時介紹A2C 算法的實現細節。 第10章介紹使策略單調提升的算法,其中的代表為Trust Region Policy Optimization(TRPO)算法。 第11章介紹高樣本使用率的策略梯度算法,其中的代表算法為ACER 算法和確定策略梯度法(Deterministic Policy Gradient)。 第四部分介紹強化學習其他方面的內容。 第12章介紹回報稀疏情況下的一些求解方法,其中包括基于層次的強化學習和基于課程學習(Curriculum Learning)思想的方法。 第13 章介紹模型已知的一些算法,如基于蒙特卡羅樹搜索(Monte Carlo Tree Search,MCTS)的強化學習算法和iLQR 算法的原理。 第五部分介紹反向強化學習的基礎知識。 第14章介紹反向強化學習的基礎,以及基本的求解方法。 第15 章介紹最大熵反向強化學習(Max Entropy Inverse Reinforcement Learning)和生成對抗模仿學習(Generative Adversarial Imitation Learning)算法的內容。 雖然本書介紹了很多強化學習的內容,但實際上這只是強化學習中的一小部分,不過這些內容可以作為讀者入門強化學習的基礎,希望在下面的學習中讀者能夠有所收獲,并以此為基礎了解更多有關強化學習的內容。 由于本人才疏學淺,行文間難免有所紕漏,望各位讀者多多包涵,不吝賜教。 作者 |
內容簡介:《強化學習精要:核心算法與TensorFlow 實現》用通俗幽默的語言深入淺出地介紹了強化學習的基本算法與代碼實現,為讀者構建了一個完整的強化學習知識體系,同時介紹了這些算法的具體實現方式。從基本的馬爾可夫決策過程,到各種復雜的強化學習算法,讀者都可以從本書中學習到。本書除了介紹這些算法的原理,還深入分析了算法之間的內在聯系,可以幫助讀者舉一反三,掌握算法精髓。書中介紹的代碼可以幫助讀者快速將算法應用到實踐中。 |
目錄:第一部分強化學習入門與基礎知識 1 引言2 1.1 強化學習的概念. . . . 2 1.1.1 巴浦洛夫的狗. . . . . 3 1.1.2 俄羅斯方塊. . . . 4 1.2 站在被實驗者的角度看問題. . . 5 1.3 強化學習效果的評估. . . . . 8 1.3.1 不斷試錯. . . . 8 1.3.2 看重長期回報. . . . . 8 1.4 強化學習與監督學習. . . . . 9 1.4.1 強化學習與監督學習的本質. . . 9 1.4.2 模仿學習. . . . 10 1.5 強化學習的實驗環境. . . . . 11 1.5.1 Arcade Learning Environment . . . 12 1.5.2 Box2D . . . . . 12 1.5.3 MuJoCo . . . . . 13 1.5.4 Gym . . . . 14 1.6 本書的主要內容. . . . 15 1.7 參考資料. . . . 16 2 數學與機器學習基礎17 2.1 線性代數基礎. . . . . 17 2.2 對稱矩陣的性質. . . . 21 2.2.1 特征值與特征向量. . . . 21 2.2.2 對稱矩陣的特征值和特征向量. . . . 22 2.2.3 對稱矩陣的對角化. . . . 23 2.3 概率論. . . . . 24 2.3.1 概率與分布. . . . 24 2.3.2 最大似然估計. . . . . 27 2.4 重要性采樣. . . . . 29 2.5 信息論基礎. . . . . 33 2.6 KL 散度. . . . . 35 2.7 凸函數及其性質. . . . 39 2.8 機器學習的基本概念. . . . . 41 2.9 機器學習的目標函數. . . . . 43 2.10 總結. . . . . 45 3 優化算法47 3.1 梯度下降法. . . . . 47 3.1.1 什么是梯度下降法. . . . 47 3.1.2 優雅的步長. . . . 48 3.2 動量算法. . . . 53 3.3 共軛梯度法. . . . . 59 3.3.1 精妙的約束. . . . 59 3.3.2 共軛. . . . 60 3.3.3 優化步長的確定. . . . 63 3.3.4 Gram-Schmidt 方法. . . . 64 3.3.5 共軛梯度. . . . 65 3.4 自然梯度法. . . . . 69 3.4.1 基本概念. . . . 69 3.4.2 Fisher 信息矩陣. . . . 71 3.4.3 自然梯度法目標公式. . . 76 3.5 總結. . . . . 77 4 TensorFlow 入門78 4.1 TensorFlow 的基本使用方法. . . 78 4.2 TensorFlow 原理介紹. . . . . 82 4.2.1 創建變量的scope . . . 83 4.2.2 創建一個Variable 背后的故事. . . . 89 4.2.3 運算操作. . . . 94 4.2.4 tf.gradients . . . . . 96 4.2.5 Optimizer . . . . 102 4.2.6 TensorFlow 的反向傳播技巧. . . 106 4.2.7 arg_scope 的使用. . . 109 4.3 TensorFlow 的分布式訓練. . . 113 4.3.1 基于MPI 的數據并行模型. . . . 114 4.3.2 MPI 的實現:mpi_adam . . . . 121 4.4 基于TensorFlow 實現經典網絡結構. . . 122 4.4.1 多層感知器. . . . 122 4.4.2 卷積神經網絡. . . . . 124 4.4.3 循環神經網絡. . . . . 126 4.5 總結. . . . . 129 4.6 參考資料. . . . 129 5 Gym 與Baselines 130 5.1 Gym . . . . . 130 5.1.1 Gym 的安裝. . . . 130 5.1.2 Gym 的基本使用方法. . . 132 5.1.3 利用Gym 框架實現一個經典的棋類游戲:蛇棋. . 134 5.2 Baselines . . . . 138 5.2.1 Baselines 中的Python 3 新特性. . . . 139 5.2.2 tf_util . . . . 141 5.2.3 對Gym 平臺的擴展. . . . 142 5.3 總結. . . . . 144 6 強化學習基本算法145 6.1 馬爾可夫決策過程. . . . . 145 6.1.1 MDP:策略與環境模型. . . . 145 6.1.2 值函數與Bellman 公式. . . . 147 6.1.3 “表格式”Agent . . . 151 6.2 策略迭代. . . . 153 6.2.1 策略迭代法. . . . 153 6.2.2 策略提升的證明. . . . 159 6.2.3 策略迭代的效果展示. . . 160 6.3 價值迭代. . . . 162 6.3.1 N 輪策略迭代. . . . . 162 6.3.2 從動態規劃的角度談價值迭代. . . . 165 6.3.3 價值迭代的實現. . . . 167 6.4 泛化迭代. . . . 168 6.4.1 兩個極端. . . . 168 6.4.2 廣義策略迭代法. . . . 169 6.4.3 泛化迭代的實現. . . . 170 6.5 總結. . . . . 171 第二部分最優價值算法 7 Q-Learning 基礎173 7.1 狀態轉移概率:從掌握到放棄. . . . 173 7.2 蒙特卡羅方法. . . . . 174 7.3 探索與利用. . . . . 178 7.4 蒙特卡羅的方差問題. . . . . 181 7.5 時序差分法與SARSA . . . . . 183 7.6 Q-Learning . . . . . 186 7.7 Q-Learning 的收斂性分析. . . 189 7.8 從表格形式到價值模型. . . . 193 7.9 Deep Q Network . . . . 195 7.10 總結. . . . . 202 7.11 參考資料. . . . 202 8 DQN 的改進算法203 8.1 Double Q-Learning . . . . . 203 8.2 Priority Replay Buffer . . . . . 204 8.3 Dueling DQN . . . . 209 8.4 解決DQN 的冷啟動問題. . . 211 8.5 Distributional DQN . . . . . 214 8.5.1 輸出價值分布. . . . . 214 8.5.2 分布的更新. . . . 216 8.6 Noisy Network . . . . . 218 8.7 Rainbow . . . . . 221 8.7.1 Rainbow 的模型特點. . . 221 8.7.2 Deep Q Network 的實現. . . . 223 8.8 總結. . . . . 227 8.9 參考資料. . . . 227 第三部分基于策略梯度的算法 9 基于策略梯度的算法229 9.1 策略梯度法. . . . . 229 9.1.1 算法推導. . . . 230 9.1.2 算法分析. . . . 233 9.1.3 算法改進. . . . 234 9.2 Actor-Critic 算法. . . . 236 9.2.1 降低算法的方差. . . . 236 9.2.2 A3C 算法. . . . 238 9.2.3 A2C 算法實戰. . . . . 240 9.3 總結. . . . . 243 9.4 參考資料. . . . 243 10 使策略單調提升的優化算法244 10.1 TRPO . . . . . . 244 10.1.1 策略的差距. . . . 245 10.1.2 策略提升的目標公式. . . 247 10.1.3 TRPO 的目標定義. . . 248 10.1.4 自然梯度法求解. . . . 251 10.1.5 TRPO 的實現. . . . . 254 10.2 GAE . . . . . 256 10.2.1 GAE 的公式定義. . . 256 10.2.2 基于GAE 和TRPO 的值函數優化. . 259 10.2.3 GAE 的實現. . . . 260 10.3 PPO . . . . . 261 10.3.1 PPO 介紹. . . . 261 10.3.2 PPO 算法實踐. . . . . 263 10.4 總結. . . . . 264 10.5 參考資料. . . . 264 11 Off-Policy 策略梯度法265 11.1 Retrace . . . . . 266 11.1.1 Retrace 的基本概念. . . . 266 11.1.2 Retrace 的算法實現. . . . 267 11.2 ACER . . . . . . 270 11.2.1 Off-Policy Actor-Critic . . . 270 11.2.2 ACER 算法. . . . . 272 11.2.3 ACER 的實現. . . . . 276 11.3 DPG . . . . . 279 11.3.1 連續空間的策略優化. . . 279 11.3.2 策略模型參數的一致性. . . . 280 11.3.3 DDPG 算法. . . . . 283 11.3.4 DDPG 的實現. . . . . 286 11.4 總結. . . . . 289 11.5 參考資料. . . . 289 第四部分其他強化學習算法 12 稀疏回報的求解方法291 12.1 稀疏回報的困難. . . . 291 12.2 層次強化學習. . . . . 294 12.3 HER . . . . . 298 12.3.1 漸進式學習. . . . 299 12.3.2 HER 的實現. . . . 301 12.4 總結. . . . . 304 12.5 參考資料. . . . 304 13 Model-based 方法305 13.1 AlphaZero . . . . 305 13.1.1 圍棋游戲. . . . 305 13.1.2 Alpha-Beta 樹. . . . . 307 13.1.3 MCTS . . . . 309 13.1.4 策略價值模型. . . . . 312 13.1.5 模型的對決. . . . 316 13.2 iLQR . . . . . . 316 13.2.1 線性模型的求解法. . . . 317 13.2.2 非線性模型的解法. . . . 322 13.2.3 iLQR 的實現. . . . 325 13.3 總結. . . . . 328 13.4 參考資料. . . . 328 第五部分反向強化學習 14 反向強化學習入門330 14.1 基本概念. . . . 330 14.2 從最優策略求解回報. . . . . 332 14.2.1 求解回報的目標函數. . . 332 14.2.2 目標函數的約束. . . . 334 14.3 求解線性規劃. . . . . 335 14.3.1 線性規劃的求解過程. . . 335 14.3.2 實際案例. . . . 337 14.4 無限狀態下的求解. . . . . 338 14.5 從樣本中學習. . . . . 342 14.6 總結. . . . . 344 14.7 參考資料. . . . 344 15 反向強化學習算法2.0 345 15.1 最大熵模型. . . . . 345 15.1.1 指數家族. . . . 346 15.1.2 最大熵模型的推導. . . . 349 15.1.3 最大熵模型的實現. . . . 354 15.2 最大熵反向強化學習. . . . . 356 15.3 GAIL . . . . . . 361 15.3.1 GAN 的基本概念. . . 361 15.3.2 GAN 的訓練分析. . . 363 15.4 GAIL 實現. . . . . 367 15.5 總結. . . . . 370 15.6 參考資料. . . . 370 |
序: |