TensorFlow 強化學習快速入門指南使用 Python 動手搭建自學習的智能體 (Tensorflow Reinforcement Learning Quick Start Guide)
內容描述
強化學習是一類重要的機器學習方法,在很多領域得到了成功的應用,
*近幾年與深度學習結合起來,進一步推動了人工智能的發展?
本書首先介紹了強化學習的基本原理,然後介紹典型的強化學習算法,包括時序差分?
SARSA? Q-Learning? DeepQ-network? Double DQN?競爭網絡結構?
Rainbow? Actor-Critic? A2C? A3C? TRPO和PPO等,
每種算法基本上利用了主流的開源機器學習框架TensorFlow,使用Python編程進行實現?此外,
還介紹了一些上述算法的應用?本書可以使讀者快速理解強化學習的基本知識,
並通過簡單的案例加深對算法的理解?本書適合對強化學習感興趣的普通高校師生以及相關專業人員閱讀?
Copyright ? Packt Publishing 2018First published in the English language under the title “Deep Learning with TensorFlow-SecondEdition- ( 9781788831109)”
Copyright in the Chinese language( simplified characters) ?
2020 China Machine PreesThis title is published in China by
China Machine Press with license from Packt Publishing Ltd.
This edition is authorized for sale in China only ,
excluding Hong Kong SAR. Macao SAR and Taiwan.
Unauthorized export of this edition is a violation of the Copyright Act.
Violation of this Law is subjectto Civil and Criminal Penalties.
目錄大綱
譯者序
前 言
第 1 章 強化學習的啟動和運行 // 1
1.1 為何選擇強化學習 // 1
闡述強化學習問題 // 2
1.2 agent 及其環境之間的關係 // 3
1.2.1 定義 agent 的狀態 // 3
1.2.2 定義 agent 的行為 // 3
1.2.3 了解策略、價值函數和優勢函數 // 4
1.3 認識回合 // 5
1.4 認識獎勵函數和折扣獎勵 // 5
獎勵 // 6
1.5 學習馬爾可夫決策過程 // 6
1.6 定義貝爾曼方程 // 7
1.7 同步策略與異步策略學習 // 7
1.7.1 同步策略方法 // 7
1.7.2 異步策略方法 // 8
1.8 無模型訓練和基於模型訓練 // 8
1.9 本書中涉及的算法 // 8
總結 // 9
思考題 // 9
擴展閱讀 // 9
第 2 章 時序差分、SARSA 與 Q-Learning // 10
2.1 技術需求 // 10
2.2 理解 TD 學習 // 10
價值函數與狀態之間的關係 // 11
2.3 理解 SARSA 與 Q-Learning // 11
IX
2.3.1 學習 SARSA // 12
2.3.2 理解 Q-Learning // 12
2.4 懸崖徒步與網格世界問題 // 12
2.4.1 SARSA 下的懸崖徒步 // 13
2.4.2 Q-Learning 下的懸崖徒步 // 18
2.4.3 SARSA 下的網格世界 // 20
總結 // 22
擴展閱讀 // 22
第 3 章 深度 Q 網絡 // 23
3.1 技術需求 // 23
3.2 學習 DQN 原理 // 23
3.3 理解目標網絡 // 24
3.4 了解重放緩衝區 // 25
3.5 Atari 環境介紹 // 25
3.5.1 Atari 遊戲概述 // 26
3.5.2 用 TensorFlow 編寫 DQN // 27
3.6 驗證 DQN 在 Atari Breakout 上的性能 // 39
總結 // 40
思考題 // 40
擴展閱讀 // 41
第 4 章 Double DQN、競爭網絡結構和 Rainbow // 42
4.1 技術需求 // 42
4.2 了解 Double DQN // 43
4.2.1 編寫 DDQN 並訓練解決 Atari Breakout 問題 // 43
4.2.2 在 Atari Breakout 問題中評估 DDQN 的性能 // 44
4.3 理解競爭網絡結構 // 45
4.3.1 編寫競爭網絡結構並訓練其解決 Atari Breakout 問題 // 47
4.3.2 在 Atari Breakout 中評估競爭網絡結構的性能 // 48
4.4 了解 Rainbow 網絡 // 49
DQN 改進 // 50
4.5 在 Dopamine 上運行 Rainbow 網絡 // 50
TensorFlow 強化學習快速入門指南
—使用 Python 動手搭建自學習的智能體
X
使用 Dopamine 運行 Rainbow // 52
總結 // 53
思考題 // 53
擴展閱讀 // 53
第 5 章 深度確定性策略梯度 // 55
5.1 技術需求 // 55
5.2 Actor-Critic 算法和策略梯度 // 56
策略梯度 // 56
5.3 深度確定性策略梯度 // 56
5.3.1 編寫 ddpg.py // 57
5.3.2 編寫 AandC.py // 59
5.3.3 編寫 TrainOrTest.py // 64
5.3.4 編寫 replay_buffer.py // 67
5.4 在 Pendulum-v0 中訓練和測試 DDPG // 68
總結 // 69
思考題 // 70
擴展閱讀 // 70
第 6 章 異步的方法——A3C 和 A2C // 71
6.1 技術需求 // 71
6.2 A3C 算法 // 71
6.2.1 損失函數 // 72
6.2.2 CartPole and LunarLander // 72
6.3 A3C 算法在 CartPole 中的應用 // 73
6.3.1 編寫 cartpole.py // 73
6.3.2 編寫 a3c.py // 75
6.3.3 Worker 類 // 77
6.3.4 編寫 utils.py // 80
6.3.5 CartPole 訓練 // 81
6.4 A3C 算法在 LunarLander 中的應用 // 82
6.4.1 編寫 lunar.py // 82
6.4.2 在 LunarLander 上訓練 // 82
6.5 A2C 算法 // 83
總結 // 83
思考題 // 84
擴展閱讀 // 84
第 7 章 信任區域策略優化和近端策略優化 // 85
7.1 技術需求 // 85
7.2 學習 TRPO // 85
TRPO 方程 // 86
7.3 學習 PPO // 86
PPO 損失函數 // 86
7.4 使用 PPO 解決 Mountain Car 問題 // 87
7.4.1 編寫 class_ppo.py // 87
7.4.2 編寫 train_test.py // 91
7.5 評估性能 // 95
7.6 馬力全開 // 95
7.7 隨機發力 // 96
總結 // 97
思考題 // 97
擴展閱讀 // 97
第 8 章 深度強化學習在自動駕駛中的應用 // 98
8.1 技術需求 // 98
8.2 汽車駕駛模擬器 // 99
8.3 學習使用 TORCS // 99
8.3.1 狀態空間 // 100
8.3.2 支持文件 // 100
8.4 訓練 DDPG agent 來學習駕駛 // 101
8.4.1 編寫 ddpg.py // 101
8.4.2 編寫 AandC.py // 101
8.4.3 編寫 TrainOrTest.py // 102
TensorFlow 強化學習快速入門指南
—使用 Python 動手搭建自學習的智能體
8.5 訓練 PPO agent // 104
總結 // 104
思考題 // 105
擴展閱讀 // 105
附錄 思考題答案 // 10