強化學習精要:核心算法與TensorFlow實現 强化学习精要:核心算法与TensorFlow实现

馮超

立即出貨

買這商品的人也買了...

商品描述

編輯推薦

從原理剖析到算法精髓,再到TensorFlow代碼實現
為讀者構建了一個完整的強化學習知識體系
介紹算法的原理,分析算法之間的內在聯繫,幫助讀者掌握算法精髓
掌握用強化學習思想解決實際問題的能力
配書源代碼供下載

名人推薦

近年來強化學習在學術界和工業界都受到了極大關註,很多工業界的巨頭都在不斷探索強化學習的實際應用。滴滴出行作為全球最大的移動出行公司,已經把強化學習應用到多個業務場景中,幫助用戶和司機解決出行問題,構建城市智慧大腦。

本書介紹了強化學習的經典算法及近年來發展中的一些卓越成果,同時將理論聯繫實際,深入分析了這些算法的具體實現。

作為一本內容豐富的強化學習科普書籍,希望無論是強化學習領域的初學者還是有經驗的研發人員,均可從書中得到收穫。
——王徵,滴滴出行AI Labs時空數據組負責人

本書的特色之一是緊跟強化

作者簡介

馮超

畢業於中國科學院大學,滴滴出行AI Labs時空數據組專家算法工程師,曾任小猿搜題算法負責人之一。

自2016年起在知乎開設技術專欄《無痛的機器學習》,發表與深度學習和強化學習相關的文章,文章以輕鬆幽默的語言、細緻深入的分析為特點,得到了廣泛的關注。

曾撰寫深度學習進階領域口碑技術書《深度學習輕鬆學:核心算法與視覺實踐》。

目錄大綱

目錄

第一部分強化學習入門與基礎知識
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 與Base 130
5.1 Gym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.1.1 Gym 的安裝. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.1.2 Gym 的基本使用方法. . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.3 利用Gym 框架實現一個經典的棋類遊戲:蛇棋. . . . . . . . . . 134
5.2 Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.2.1 Base 中的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 狀態轉移概率:從掌握到放棄