近年來,強(qiáng)化學(xué)習(xí)和深度學(xué)習(xí)相結(jié)合形成的深度強(qiáng)化學(xué)習(xí)方法已經(jīng)是人工智能領(lǐng)域中新的研究熱點(diǎn)。在許多需要智能體(Agent)同時(shí)具備感知和決策能力的場(chǎng)景中,深度強(qiáng)化學(xué)習(xí)方法具備了與人類相媲美的智能。其中深度學(xué)習(xí)(Deep Learning,DL)和強(qiáng)化學(xué)習(xí)(Reinforcement Learning,RL)是機(jī)器學(xué)習(xí)領(lǐng)域中最重要的兩個(gè)研究方向。深度學(xué)習(xí)方法側(cè)重于對(duì)事物的感知與表達(dá),其基本思想是面向高維數(shù)據(jù),通過多層的網(wǎng)絡(luò)結(jié)構(gòu)和非線性變換,組合低層特征,形成抽象的、易于區(qū)分的高層表示,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。深度學(xué)習(xí)已經(jīng)在圖像識(shí)別與理解、智能語音、機(jī)器翻譯等領(lǐng)域取得了非凡的成果。強(qiáng)化學(xué)習(xí)與基于監(jiān)督訓(xùn)練的深度學(xué)習(xí)不同,更加側(cè)重于學(xué)習(xí)解決問題的策略,其基本思想是智能體通過試錯(cuò)的機(jī)制與環(huán)境進(jìn)行不斷地交互,從而最大化智能體從環(huán)境中獲得的累計(jì)獎(jiǎng)賞值。強(qiáng)化學(xué)習(xí)已經(jīng)廣泛應(yīng)用于游戲博弈、機(jī)器人操控、參數(shù)優(yōu)化等領(lǐng)域。傳統(tǒng)的強(qiáng)化學(xué)習(xí)算法主要針對(duì)輸入狀態(tài)規(guī)模較小的決策問題,這種小規(guī)模強(qiáng)化學(xué)習(xí)算法可通過表格式的存儲(chǔ)方式來評(píng)價(jià)每個(gè)狀態(tài)或者狀態(tài)動(dòng)作對(duì)的好壞。然而當(dāng)狀態(tài)或動(dòng)作空間維度很高時(shí)(例如圖片或視頻數(shù)據(jù)),傳統(tǒng)的強(qiáng)化學(xué)習(xí)方法會(huì)因缺乏感知和泛化高維輸入數(shù)據(jù)的能力而導(dǎo)致算法性能急劇下降。
隨著人類社會(huì)的飛速發(fā)展,未來的人工智能系統(tǒng)不僅需要具備很強(qiáng)的感知與表達(dá)能力,而且需要擁有一定的決策能力。因此,人們將具有感知能力的深度學(xué)習(xí)和具有決策能力的強(qiáng)化學(xué)習(xí)相結(jié)合,形成直接從輸入原始數(shù)據(jù)到輸出動(dòng)作控制的完整智能系統(tǒng),這就是深度強(qiáng)化學(xué)習(xí)(Deep Reinforcement Learning,DRL)方法。該方法從本質(zhì)上解決了傳統(tǒng)強(qiáng)化學(xué)習(xí)智能體缺乏感知和泛化高維度輸入數(shù)據(jù)能力的問題,從而適用于一系列大規(guī)模的決策任務(wù)。例如,谷歌旗下的DeepMind公司將深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和強(qiáng)化學(xué)習(xí)中Q學(xué)習(xí)算法(QLearning)相結(jié)合,提出深度Q網(wǎng)絡(luò)(Deep QNetwork,DQN)模型。該模型可直接將原始的游戲視頻畫面作為輸入狀態(tài),游戲得分作為強(qiáng)化學(xué)習(xí)中的獎(jiǎng)賞信號(hào),并通過深度Q學(xué)習(xí)算法進(jìn)行訓(xùn)練。最終該模型在許多Atari 2600視頻游戲上的表現(xiàn)已經(jīng)趕上甚至超過了專業(yè)人類玩家的水平。該項(xiàng)研究工作是深度強(qiáng)化學(xué)習(xí)方法形成的重要標(biāo)志。此后,DeepMind團(tuán)隊(duì)又開發(fā)出一款被稱為AlphaGo的圍棋算法。該算法一方面利用深度學(xué)習(xí)通過有信號(hào)的監(jiān)督來模擬人類玩家的走子方式,另一方面利用強(qiáng)化學(xué)習(xí)來進(jìn)行自我對(duì)抗,從而進(jìn)一步提高智能體取勝的概率。最終AlphaGo以懸殊的比分先后擊敗當(dāng)時(shí)的歐洲圍棋冠軍和世界圍棋冠軍。深度強(qiáng)化學(xué)習(xí)的基本思想可以描述為: 利用深度學(xué)習(xí)的強(qiáng)大感知能力來提取大規(guī)模輸入數(shù)據(jù)的抽象特征,并以此特征為依據(jù)進(jìn)行自我激勵(lì)的強(qiáng)化學(xué)習(xí),直至求解出問題的最優(yōu)策略。AlphaGo事件正式將深度強(qiáng)化學(xué)習(xí)技術(shù)推向了一個(gè)高峰。隨著國(guó)內(nèi)外對(duì)于深度強(qiáng)化學(xué)習(xí)理論和應(yīng)用的不斷完善,目前深度強(qiáng)化學(xué)習(xí)技術(shù)已經(jīng)在游戲、機(jī)器人操控、自動(dòng)駕駛、自然語言處理、參數(shù)優(yōu)化等領(lǐng)域得到了廣泛的應(yīng)用。此外,深度強(qiáng)化學(xué)習(xí)也被認(rèn)為是實(shí)現(xiàn)通用人工智能(General Artificial Intelligence,GAI)的一個(gè)重要途徑。
本書深入淺出、內(nèi)容翔實(shí)全面,全書配有PPT和視頻講解,對(duì)相關(guān)算法和實(shí)例配有代碼程序。本書既適合強(qiáng)化學(xué)習(xí)零基礎(chǔ)的本科生、研究生入門學(xué)習(xí),也適合相關(guān)科研人員研究參考。
本書作者多年來一直從事強(qiáng)化學(xué)習(xí)的研究和教學(xué)工作,在國(guó)家自然科學(xué)基金、博士后基金、教育部科學(xué)研究重點(diǎn)項(xiàng)目、軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心、江蘇高校優(yōu)勢(shì)學(xué)科建設(shè)工程資助項(xiàng)目、江蘇省高校自然科學(xué)基金項(xiàng)目、蘇州大學(xué)研究生精品課程項(xiàng)目等的資助下,提出了一些深度強(qiáng)化學(xué)習(xí)理論,解決了一系列核心技術(shù),并將這些理論和方法用于解決實(shí)際問題。
本書總體設(shè)計(jì)、修改和審定由劉全完成,參加撰寫的有黃志剛、翟建偉、吳光軍、徐平安、歐陽震、寇俊強(qiáng)、郝少璞、李曉牧、顧子賢、葉倩等,對(duì)以上作者付出的艱辛勞動(dòng)表示感謝!本書的撰寫參考了國(guó)內(nèi)外有關(guān)研究成果,他們的豐碩成果和貢獻(xiàn)是本書學(xué)術(shù)思想的重要來源,在此對(duì)涉及的專家和學(xué)者表示誠(chéng)摯的謝意。本書也得到了蘇州大學(xué)計(jì)算機(jī)學(xué)院及智能計(jì)算與認(rèn)知軟件課題組部分老師和同學(xué)們的大力支持和協(xié)助,在此一并表示感謝。他們是: 朱斐、凌興宏、伏玉琛、章宗長(zhǎng)、章曉芳、徐云龍、陳冬火、王輝、金海東、王浩、曹家慶、張立華、徐進(jìn)、梁斌、姜玉斌、閆巖、胡智慧、陳紅名、吳金金、李斌、何斌、時(shí)圣苗、張琳琳、范靜宇、傲天宇、李洋、張建行、代珊珊、申怡、王逸勉、徐亞鵬、栗軍偉、烏蘭、王卓、楊皓麟、施眉龍、張雄振等。
機(jī)器學(xué)習(xí)是一個(gè)快速發(fā)展、多學(xué)科交叉的研究方向,其理論及應(yīng)用均存在大量的亟待解決的問題。限于作者的水平,書中難免有不妥和錯(cuò)誤之處,敬請(qǐng)同行專家和讀者指正。
劉全
2021年1月
第一部分: 預(yù)備知識(shí)及環(huán)境安裝
第1章深度強(qiáng)化學(xué)習(xí)概述
1.1引言
1.2深度學(xué)習(xí)
1.3強(qiáng)化學(xué)習(xí)
1.4深度強(qiáng)化學(xué)習(xí)
1.5小結(jié)
1.6習(xí)題
第2章環(huán)境的配置
2.1PyTorch簡(jiǎn)介
2.2PyTorch和TensorFlow
2.3強(qiáng)化學(xué)習(xí)的開發(fā)環(huán)境
2.3.1Anaconda環(huán)境搭建
2.3.2Anaconda環(huán)境管理
2.3.3PyTorch的安裝
2.3.4Jupyter Notebook的安裝
2.3.5Jupyter Notebook的使用
2.3.6Gym的安裝
2.3.7Gym案例
2.4小結(jié)
2.5習(xí)題
第二部分: 表格式強(qiáng)化學(xué)習(xí)
第3章數(shù)學(xué)建模
3.1馬爾可夫決策過程
3.2基于模型與無模型
3.3求解強(qiáng)化學(xué)習(xí)任務(wù)
3.3.1策略
3.3.2獎(jiǎng)賞與回報(bào)
3.3.3值函數(shù)與貝爾曼方程
3.3.4最優(yōu)策略與最優(yōu)值函數(shù)
3.4探索與利用
3.5小結(jié)
3.6習(xí)題
第4章動(dòng)態(tài)規(guī)劃法
4.1策略迭代
4.1.1策略評(píng)估
4.1.2策略迭代
4.2值迭代
4.3廣義策略迭代
4.4小結(jié)
4.5習(xí)題
第5章蒙特卡洛法
5.1蒙特卡洛法的基本概念
5.1.1MC的核心要素
5.1.2MC的特點(diǎn)
5.2蒙特卡洛預(yù)測(cè)
5.3蒙特卡洛評(píng)估
5.4蒙特卡洛控制
5.4.1基于探索始點(diǎn)的蒙特卡洛控制
5.4.2同策略蒙特卡洛控制
5.4.3異策略與重要性采樣
5.4.4蒙特卡洛中的增量式計(jì)算
5.4.5異策略蒙特卡洛控制
5.5小結(jié)
5.6習(xí)題
第6章時(shí)序差分法
6.1時(shí)序差分預(yù)測(cè)
6.2時(shí)序差分控制
6.2.1Sarsa算法
6.2.2QLearning算法
6.2.3期望Sarsa算法
6.3最大化偏差與Double QLearning
6.3.1最大化偏差
6.3.2Double Learning
6.3.3Double QLearning
6.4DP、MC和TD算法的關(guān)系
6.4.1窮舉式遍歷與軌跡采樣
6.4.2期望更新與采樣更新
6.5小結(jié)
6.6習(xí)題
第7章n步時(shí)序差分法
7.1n步TD預(yù)測(cè)及資格跡
7.1.1n步TD預(yù)測(cè)
7.1.2前向TD(λ)算法
7.1.3后向TD(λ)算法
7.2n步TD控制及其資格跡實(shí)現(xiàn)
7.2.1同策略n步Sarsa算法
7.2.2Sarsa(λ)算法
7.2.3異策略n步Sarsa算法
7.2.4n步Tree Backup算法
7.3小結(jié)
7.4習(xí)題
第8章規(guī)劃和蒙特卡洛樹搜索
8.1模型、學(xué)習(xí)與規(guī)劃
8.1.1模型
8.1.2學(xué)習(xí)
8.1.3規(guī)劃
8.2DynaQ結(jié)構(gòu)及其算法改進(jìn)
8.2.1DynaQ架構(gòu)
8.2.2優(yōu)先遍歷
8.2.3模擬模型的錯(cuò)誤性
8.3決策時(shí)間規(guī)劃
8.3.1啟發(fā)式搜索
8.3.2預(yù)演算法
8.3.3蒙特卡洛樹搜索
8.4小結(jié)
8.5習(xí)題
第三部分: 深度強(qiáng)化學(xué)習(xí)
第9章深度學(xué)習(xí)
9.1傳統(tǒng)神經(jīng)網(wǎng)絡(luò)
9.1.1感知器神經(jīng)元
9.1.2激活函數(shù)
9.2反向傳播算法
9.2.1前向傳播
9.2.2權(quán)重調(diào)整
9.2.3BP算法推導(dǎo)
9.3卷積神經(jīng)網(wǎng)絡(luò)
9.3.1卷積神經(jīng)網(wǎng)絡(luò)核心思想
9.3.2卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
9.4小結(jié)
9.5習(xí)題
第10章PyTorch與神經(jīng)網(wǎng)絡(luò)
10.1PyTorch中的Tensor
10.1.1直接構(gòu)造法
10.1.2間接轉(zhuǎn)換法
10.1.3Tensor的變換
10.2自動(dòng)梯度計(jì)算
10.2.1標(biāo)量對(duì)標(biāo)量的自動(dòng)梯度計(jì)算
10.2.2向量對(duì)向量的自動(dòng)梯度計(jì)算
10.2.3標(biāo)量對(duì)向量(或矩陣)的自動(dòng)梯度計(jì)算
10.3神經(jīng)網(wǎng)絡(luò)的模型搭建和參數(shù)優(yōu)化
10.3.1模型的搭建
10.3.2激活函數(shù)
10.3.3常用的損失函數(shù)
10.3.4模型的保存和重載
10.4小結(jié)
10.5習(xí)題
第11章深度Q網(wǎng)絡(luò)
11.1DQN算法
11.1.1核心思想
11.1.2訓(xùn)練算法
11.1.3實(shí)驗(yàn)結(jié)果與分析
11.2Double DQN算法
11.2.1核心思想
11.2.2實(shí)驗(yàn)結(jié)果與分析
11.3Prioritized DQN
11.3.1核心思想
11.3.2訓(xùn)練算法
11.3.3實(shí)驗(yàn)結(jié)果與分析
11.4Dueling DQN
11.4.1訓(xùn)練算法
11.4.2實(shí)驗(yàn)結(jié)果與分析
11.5小結(jié)
11.6習(xí)題
第12章策略梯度法
12.1隨機(jī)策略梯度法
12.1.1梯度上升算法
12.1.2策略梯度法與值函數(shù)逼近法的比較
12.2策略優(yōu)化方法
12.2.1情節(jié)式策略目標(biāo)函數(shù)
12.2.2連續(xù)式策略目標(biāo)函數(shù)
12.2.3策略梯度定理
12.3策略表達(dá)形式
12.3.1離散動(dòng)作空間策略參數(shù)化
12.3.2連續(xù)動(dòng)作空間策略參數(shù)化
12.4蒙特卡洛策略梯度法
12.4.1REINFORCE
12.4.2REINFORCE算法的實(shí)驗(yàn)結(jié)果與分析
12.4.3帶基線的REINFORCE
12.4.4帶基線的REINFORCE算法的實(shí)驗(yàn)結(jié)果與分析
12.5行動(dòng)者評(píng)論家
12.6確定性策略梯度定理
12.7小結(jié)
12.8習(xí)題
第13章基于確定性策略梯度的深度強(qiáng)化學(xué)習(xí)
13.1DDPG算法
13.1.1算法背景
13.1.2核心思想
13.1.3DDPG算法
13.2DDPG算法的實(shí)驗(yàn)結(jié)果與分析
13.2.1DDPG算法網(wǎng)絡(luò)結(jié)構(gòu)與超參數(shù)設(shè)置
13.2.2實(shí)驗(yàn)環(huán)境
13.2.3實(shí)驗(yàn)結(jié)果與分析
13.3雙延遲確定性策略梯度算法
13.3.1過高估計(jì)問題解決方案
13.3.2累計(jì)誤差問題解決方案
13.3.3TD3算法
13.3.4實(shí)驗(yàn)結(jié)果與分析
13.4小結(jié)
13.5習(xí)題
第14章基于AC框架的深度強(qiáng)化學(xué)習(xí)
14.1行動(dòng)者評(píng)論家框架
14.2A3C算法
14.2.1算法的核心思想
14.2.2異步1步Q學(xué)習(xí)算法
14.2.3A3C算法
14.2.4實(shí)驗(yàn)結(jié)果與分析
14.3A2C算法
14.3.1A2C算法
14.3.2實(shí)驗(yàn)結(jié)果與分析
14.4小結(jié)
14.5習(xí)題
參考文獻(xiàn)