0 Abstract
先介紹強(qiáng)化學(xué)習(xí)前沿和背景迹卢,再介紹強(qiáng)化學(xué)習(xí)基本設(shè)置和定義,再介紹強(qiáng)化學(xué)習(xí)通用解決框架和方案,然后根據(jù)算法的復(fù)雜性蟋恬,由易到難的介紹強(qiáng)化學(xué)習(xí)的實(shí)際算法,依次為趁冈,動(dòng)態(tài)規(guī)劃歼争,蒙特卡洛方法,TD learning(Q learning)渗勘,最后DQN沐绒。后續(xù)增加策略梯度等。
1 Intro
1.1 前沿應(yīng)用
- 了解 AlphaGo Zero旺坠,一款先進(jìn)的計(jì)算機(jī)程序乔遮,打敗了專業(yè)人類圍棋手。
- 了解如何使用強(qiáng)化學(xué)習(xí) (RL) 玩Atari 游戲取刃。
- 了解打敗全世界的頂級(jí) Dota 2 玩家的 OpenAI 機(jī)器人蹋肮。
- 了解無(wú)人駕駛車強(qiáng)化學(xué)習(xí)。
- 要了解應(yīng)用于金融領(lǐng)域的強(qiáng)化學(xué)習(xí)示例璧疗,請(qǐng)參閱這個(gè)最終項(xiàng)目坯辩,該項(xiàng)目的作者是一位畢業(yè)于機(jī)器學(xué)習(xí)工程師納米學(xué)位的學(xué)員。
- 了解電信強(qiáng)化學(xué)習(xí)病毡。
- 閱讀這篇介紹庫(kù)存管理強(qiáng)化學(xué)習(xí)的論文
1.2 設(shè)置
agent和訓(xùn)練puppy的例子:小狗通過主人的反饋來訓(xùn)練自己的action濒翻。
- 訓(xùn)練過程
agent environment
reward observation/states action
S0 A0
R1 S1 A1
R2 S2 A2 ...
1.3 OpenAI gym
1.3.1 安裝和基本學(xué)習(xí)
- 安裝
你不需要在你的計(jì)算機(jī)上安裝 OpenAI Gym,你可以在課堂里完成所有的編程實(shí)現(xiàn)過程。你可以通過查看該 GitHub 代碼庫(kù)詳細(xì)了解 OpenAI Gym有送。
建議你花時(shí)間查看 leaderboard淌喻,其中包含每個(gè)任務(wù)的最佳解決方案。
請(qǐng)參閱此博客帖子雀摘,詳細(xì)了解如何使用 OpenAI Gym 加速?gòu)?qiáng)化學(xué)習(xí)研究裸删。 - Docker
docker庫(kù):eboraas/openai-gym
運(yùn)行命令:docker run --name myaigym -d -p 8888:8888 -p 6006:6006 -v /Users/zhanggaochao/Documents/gym:/mnt/notebooks/ eboraas/openai-gym
1.3.2 相關(guān)資源
教程摘錄這本關(guān)于強(qiáng)化學(xué)習(xí)的經(jīng)典教科書中的章節(jié)。
請(qǐng)參閱此 GitHub 代碼庫(kù)以查看該教科書中的大多數(shù)圖表的 Python 實(shí)現(xiàn)阵赠。
你還可以在該教科書第一章節(jié)之前的頁(yè)面中找到另一個(gè)實(shí)用記法指南涯塔。
2 強(qiáng)化學(xué)習(xí)框架:?jiǎn)栴}
2.1設(shè)置回顧
agent environment
reward observation/states action
S0 A0
R1 S1 A1
R2 S2 A2 ...
2.2 階段性任務(wù)與連續(xù)性任務(wù)
象棋是階段性任務(wù),每一局是一個(gè)階段清蚀,不過是稀疏獎(jiǎng)勵(lì)問題匕荸,每個(gè)任務(wù)都有清晰的結(jié)束點(diǎn) S0 A0 R1 S1 A1 R2 .. Rt St
如股票和金融投資是持續(xù)性任務(wù),沒有盡頭 S0 A0 R1 S1 A1 R2 ....
2.3 獎(jiǎng)勵(lì)假設(shè)
-
交互圖
- Reward function
下面是一個(gè)訓(xùn)練agent走路不跌倒的reward function:
如果你想詳細(xì)了解 DeepMind 的研究成果枷邪,請(qǐng)參閱此鏈接榛搔。研究論文位于此處。此外东揣,請(qǐng)觀看這個(gè)非臣螅酷的視頻。
2.4 累積獎(jiǎng)勵(lì)和折扣回報(bào)
All goals can be framed as the maximization of expected cumulative reward.
-
累積獎(jiǎng)勵(lì)
-
折扣回報(bào) discounted return
γ 是你設(shè)置的值嘶卧,以便進(jìn)一步優(yōu)化智能體的目標(biāo)尔觉。
它必須指定0≤γ≤1。
如果γ=0芥吟,智能體只關(guān)心最即時(shí)的獎(jiǎng)勵(lì)侦铜。
如果γ=1,回報(bào)沒有折扣运沦。
γ 的值越大泵额,智能體越關(guān)心遙遠(yuǎn)的未來。γ 的值越小携添,折扣程度越大嫁盲,在最極端的情況下,智能體只關(guān)心最即時(shí)的獎(jiǎng)勵(lì)烈掠。
2.5 MDP
- 收垃圾的機(jī)器人例子
- Action space A = [search recharge wait]
-
State space S = [high low]
-
具體定義
一步動(dòng)態(tài)特性簡(jiǎn)單來說就是某個(gè)狀態(tài)采取某個(gè)行動(dòng)使agent進(jìn)入其他狀態(tài)的概率羞秤。
可以用star one來記憶,s是states左敌,a是actions瘾蛋,r是returns,t是折扣率矫限,one是一步動(dòng)態(tài)特性哺哼。
3 強(qiáng)化學(xué)習(xí)框架:解決方案
3.1 兩種策略方案
-
determinstic policy 1對(duì)1佩抹,如
-
stochastic policy 1對(duì)多 用概率做,如
3.2 state-value function 狀態(tài)值函數(shù)
-
網(wǎng)格世界示范
-
對(duì)于每一個(gè)state用同一種策略取董,計(jì)算的狀態(tài)值
-
定義
3.3 貝爾曼期望方程 Bellman Expectation Equation
-
為了不用每次計(jì)算狀態(tài)值棍苹,都從頭開始算,可以用下一個(gè)狀態(tài)的狀態(tài)值
-
定義
-
計(jì)算預(yù)期值
3.4 最優(yōu)性
-
比較不同的策略
因?yàn)橛疫叢呗运械臓顟B(tài)值都比左邊的大茵汰,所以右邊的策略比左邊的策略好枢里。
-
定義
3.5 動(dòng)作值函數(shù)
-
與狀態(tài)值函數(shù)定義的區(qū)別
-
例子解釋:
從某個(gè)狀態(tài)開始,如果采取了某個(gè)動(dòng)作蹂午,然后按照現(xiàn)在的策略獲得的回報(bào)栏豺。
3.6 最優(yōu)策略
- 方法 是先定義了動(dòng)作值函數(shù),然后才能找到最優(yōu)策略
-
例子
通過最優(yōu)動(dòng)作值函數(shù)找到最優(yōu)策略豆胸,即比較每個(gè)state對(duì)應(yīng)actions的動(dòng)作值函數(shù)奥洼,找到最大的動(dòng)作值。至于如何通過interaction找到最優(yōu)動(dòng)作值配乱,這是后面強(qiáng)化學(xué)習(xí)主要討論解決的溉卓。
3.7 貝爾曼方程
-
貝爾曼預(yù)期方程 兩組
-
貝爾曼最優(yōu)性方程 兩組
4 強(qiáng)化學(xué)習(xí)框架:動(dòng)態(tài)規(guī)劃
- 已經(jīng)對(duì)全局了解了,每個(gè)狀態(tài)對(duì)應(yīng)的下一個(gè)狀態(tài)的概率和回報(bào)
-
主流程
4.1 計(jì)算狀態(tài)值函數(shù)
-
少的時(shí)候解方程就行搬泥,寫每個(gè)狀態(tài)的狀態(tài)值方程,
-
但是數(shù)據(jù)多了使用迭代方法伏尼,先初始化為0忿檩,然后一個(gè)一個(gè)的計(jì)算收斂,狀態(tài)值過多不好解方程
-
收斂方法
對(duì)于有限的MDF爆阶,只要滿足γ<1 或這如果以任何狀態(tài) s∈S 開始燥透,并且遵守 π策略,就會(huì)保證會(huì)最終達(dá)到終止?fàn)顟B(tài)辨图,就能保證上面收斂動(dòng)作值班套,通過當(dāng)前回報(bào)和下一步的狀態(tài)值計(jì)算
4.2 把狀態(tài)值函數(shù)變?yōu)閯?dòng)作值函數(shù)
-
狀態(tài)值函數(shù)
-
動(dòng)作值函數(shù)
4.3 策略改進(jìn)
-
選擇該狀態(tài)下最大的動(dòng)作值對(duì)應(yīng)的動(dòng)作為當(dāng)前策略
-
因?yàn)楫?dāng)前t策略的狀態(tài)值變大,可以使后面的狀態(tài)值變大故河,滿足更優(yōu)條件策略
4.4 策略迭代
-
流程圖
-
簡(jiǎn)單迭代
- 截?cái)嗖呗缘?br>
更換策略評(píng)估函數(shù)吱韭,原來是小于
,現(xiàn)在是迭代一定次數(shù)
-
值迭代
策略評(píng)估和策略迭代放在一起鱼的,每次迭代策略評(píng)估只評(píng)估一次
5 蒙特卡洛方法
- 對(duì)全局環(huán)境不了解理盆,需要不斷嘗試迭代去做,蒙特卡洛方法主要討論的是階段性任務(wù)
- 重要概念:off-policy評(píng)價(jià)時(shí)的policy和與環(huán)境交互的policy不同凑阶,后面會(huì)講猿规;主要是on-policy value function predict 根據(jù)指定的policy π,算出V狀態(tài)值函數(shù)宙橱,即交互的策略和評(píng)價(jià)的策略一致
-
離線策略
-
異同策略
5.1 狀態(tài)值
-
first visit 只用第一次遇見的計(jì)算
-
every visit 每次遇見都計(jì)算
5.2 動(dòng)作值函數(shù)
-
因?yàn)閷?duì)全局環(huán)境不是全然了解姨俩,就不能通過狀態(tài)值函數(shù)來計(jì)算動(dòng)作值函數(shù)了
-
依然通過first visit蘸拔,和every visit,只不過這次加了當(dāng)前狀態(tài)和動(dòng)作环葵,當(dāng)次數(shù)多了的時(shí)候都伪,這兩種方法會(huì)收斂到一致
- 為了讓每個(gè)狀態(tài)動(dòng)作對(duì)都有出現(xiàn)的可能,we use stochastic policy instead of deterministic policy
5.3 廣義策略迭代
-
回顧之前的迭代方法
-
廣義迭代方法
-
增量均值
用來計(jì)算狀態(tài)動(dòng)作對(duì)的動(dòng)作值函數(shù)
-
策略評(píng)估
對(duì)于每個(gè)value-action pair用上面的增量均值方法計(jì)算
- 策略改進(jìn)
-
不能完全采用動(dòng)態(tài)規(guī)劃的方法陨晶,選擇最大的動(dòng)作值函數(shù)為當(dāng)前動(dòng)作,因?yàn)檫@樣會(huì)導(dǎo)致部分策略沒有被完全探索過
-
epsilon-greedy policy :
epsilon決定探索多一點(diǎn)還是利用經(jīng)驗(yàn)多一點(diǎn)
-
背后理論:
-
流程圖
- 常量
從:
而第二個(gè)方法The agent will mostly trust the most recent returns and gradually forget about those that came in the past的烁,會(huì)更看重最近的動(dòng)作值
5.4 流程圖:
6 時(shí)間差分方法 TD learning
- 可以在每步都進(jìn)行更新褐耳,能用于連續(xù)性和間斷性任務(wù)
- 與mc差別:
就是每一個(gè)步驟都更新狀態(tài)值,而不是等到某個(gè)episode結(jié)束了再更新
即計(jì)算累加回報(bào)時(shí)渴庆,mc用actual return铃芦,td用estimated return(TD target)
6.1 TD(0) 狀態(tài)值函數(shù)
-
即每一步都更新狀態(tài)值函數(shù)
-
分解一下這個(gè)表達(dá)式為兩個(gè)部分,一個(gè)是過去的襟雷,一個(gè)是TD Target
-
流程圖 對(duì)于間斷性任務(wù) episodic tasks
6.2 TD預(yù)測(cè):動(dòng)作值
-
狀態(tài)值更新
-
動(dòng)作值更新
6.3 TD控制:Sarsa(0) 在下一次action更新
-
實(shí)例
-
流程
6.4 TD控制:Sarsamax(aka Q-Learining) 在下一次state就更新
-
實(shí)例
-
比較
- 論文
請(qǐng)參閱此 研究論文刃滓,以了解 Sarsamax(或 Q 學(xué)習(xí))會(huì)收斂的證據(jù) -
流程
6.4 TD控制:預(yù)期Sarsa 其實(shí)就是計(jì)算TD Target的時(shí)候取期望而不是取最大值
-
比較
-
流程
6.5 分析性能
簡(jiǎn)單來說,就是on-policy用評(píng)估和改進(jìn)的策略取選擇動(dòng)作耸弄,off-policy用一套評(píng)估和改進(jìn)咧虎,用另一套選擇動(dòng)作
如果你要了解詳情,建議閱讀該教科書(尤其是第 6.4-6.6 部分)的第 6 章節(jié)计呈。
10 深度Q-學(xué)習(xí)
10.1 神經(jīng)網(wǎng)絡(luò)作為值函數(shù)
-
誤差函數(shù)
因?yàn)檎鎸?shí)的q和v是通過跟環(huán)境的交互來不斷學(xué)習(xí)的砰诵,這是 reinforcement learning 和 supervised learning 的根本區(qū)別
-
蒙特卡洛方法
-
時(shí)間差分學(xué)習(xí)
TD(0) for episodic tasks
-
Q 學(xué)習(xí)
-
比較
10.2 深度Q網(wǎng)絡(luò)
- 基本配置
閱讀延伸
- Mnih et al.理肺,2015 年,《通過深度強(qiáng)化學(xué)習(xí)實(shí)現(xiàn)人類級(jí)別的控制》击罪。
10.3 調(diào)整技巧
有時(shí)候不會(huì)收斂到最優(yōu)值函數(shù)哲嘲,會(huì)震蕩和發(fā)散
-
Experience Replay 經(jīng)驗(yàn)回放
基本上是建立一個(gè)樣本數(shù)據(jù)庫(kù)囱怕,然后從中學(xué)習(xí)一個(gè)映射霍弹,基本上達(dá)到了
可以先按照初始的策略做一些動(dòng)作,形成緩存區(qū)媳禁,然后sample緩存區(qū)中的數(shù)據(jù)載入DQN去訓(xùn)練
停止一邊學(xué)習(xí)眠副,一遍訓(xùn)練;先訓(xùn)練中竣稽,形成一個(gè)樣本庫(kù)再batch learning
-
Fixed Q Targets 固定Q目標(biāo)
更新的時(shí)候,數(shù)學(xué)書用Q learning預(yù)測(cè)的動(dòng)作值替代實(shí)際的動(dòng)作值在數(shù)學(xué)上不成立娃弓,如下:
但是用梯度去計(jì)算會(huì)不斷趨近典格,但是w變化會(huì)導(dǎo)致Q learning預(yù)測(cè)的動(dòng)作值變化,導(dǎo)致不會(huì)收斂台丛,像下面一樣:
我們想要的是這樣:
解決consecutive experience tuples的問題耍缴,讓Q learning預(yù)測(cè)動(dòng)作值用的w先固定住,等訓(xùn)練一定的batch后挽霉,再用訓(xùn)練后的w去更新
10.4 深度Q學(xué)習(xí)算法
-
流程
sample和learn階段沒有依賴關(guān)系侠坎,比如多次sample蚁趁,一次learning
- 擴(kuò)展
Mnih et al.,2015 年实胸,《通過深度強(qiáng)化學(xué)習(xí)實(shí)現(xiàn)人類級(jí)別的控制》(DQN 論文)
He et al. 他嫡,2015 年,《深入研究糾正器:在 ImageNet 分類方面超過人類水平》(權(quán)重初始化)
10.4 DQN改進(jìn)
-
Double DQNs
剛開始訓(xùn)練的時(shí)候基本是隨機(jī)的庐完,選擇最大的不可靠钢属,會(huì)高估Q值
用Double DQNs去解決,用一組參數(shù)去選擇最佳a(bǔ)ction假褪,另一組去評(píng)估動(dòng)作署咽;在原始的Double DQNs的論文里維持兩組參數(shù),隨機(jī)選一個(gè)用來選擇最佳a(bǔ)ction生音,另一組去評(píng)估動(dòng)作;但是當(dāng)我們跟Fixed Q Target相結(jié)合的時(shí)候窒升,我們可以用舊的w去做 -
Prioritized Replay
經(jīng)驗(yàn)回放的時(shí)候有些經(jīng)驗(yàn)的優(yōu)先級(jí)不一樣缀遍,用TD error delta方,error越大可以學(xué)的規(guī)律越多
- Dueling Networks
- 擴(kuò)展
Thrun 和 Schwartz饱须,1993 年域醇,《使用函數(shù)逼近進(jìn)行強(qiáng)化學(xué)習(xí)存在的問題》( 高估 Q 值)
van Hasselt et al.,2015 年蓉媳,《雙 Q 學(xué)習(xí)的深度強(qiáng)化學(xué)習(xí)》
Schaul et al.譬挚,2016 年,《優(yōu)先經(jīng)驗(yàn)回放》
Wang et al.酪呻,2015 年减宣。《深度強(qiáng)化學(xué)習(xí)的對(duì)抗網(wǎng)絡(luò)架構(gòu)》。
Hausknecht 和 Stone玩荠,2015 年漆腌,《部分可觀察 MDP 的深度遞歸 Q 學(xué)習(xí)》