強(qiáng)化學(xué)習(xí)
元素:actor(我們可以控制,決策我們的行為),Env,Reward(我們不能控制環(huán)境)
主要方法:model-baed(對(duì)Env建模,actor可以理解環(huán)境), model-free(policy-based,value-based);on-policy(學(xué)習(xí)與互動(dòng)的actor為一同一個(gè)),off-policy(學(xué)習(xí)與互動(dòng)actor不同);MC(eposidic),TD
本文主要介紹了Policy Gradient,Q-learning,Actor-Critic,Sparse Reward,Imitation Learning及其變體(PPO,PPO2,TRPO,A2C,A3C,DPGP)和一些tips(Double DQN, Dueling DQN,Distributional Q-function,ICM等)等相關(guān)內(nèi)容,最后對(duì)比了RL與GAN等價(jià)結(jié)構(gòu)。
Policy Gradient
考慮一個(gè)actor π與環(huán)境互動(dòng),收集(s,a,r,s'),其中π(a|s)為我們可以控制的policy,Env在收到actor 動(dòng)作后給出下一個(gè)s'和r,這是無法控制的!且r一般為隨機(jī)變量,我們考慮一個(gè)trajectory完成時(shí)的total reward,也就是所有r的和R(必然一個(gè)問題是R的方差極大)。由于R為隨機(jī)變量,我們考慮最大化R的均值,也就是sample一些π的trajectory,然后求均值R'。

使用gradient ascend來最大化R',這里參數(shù)θ只與π(a|s)有關(guān),最后得到可sample的式子。其中每筆trajectory的數(shù)據(jù)只能用一次,actor更新之后就不能用了。實(shí)際操作時(shí)可以看為加權(quán)的分類問題S->A,選擇cross-entropy,權(quán)重為R,R可以不可導(dǎo)。

tip1 : add a baseline, 可能R都是正的,導(dǎo)致不論什么a都增加其幾率,當(dāng)sample夠大這不是問題,但sample小的話會(huì)潛在降低沒有sample出a的幾率。b一般與s有關(guān)。比如可以使用R的均值等。
tip2:assign suitable credit,一個(gè)trajectory中所有a的r都一樣是不合理的,只考慮t之后的r,可以考慮discount rate。當(dāng)sample足夠大,也不是問題,數(shù)據(jù)可以區(qū)分不同a的作用。其中R' - b為advantage function,衡量用θ這個(gè)模型,在s中采取a相對(duì)于其他action的好壞(Critic)。
最終:

PPO (TRPO,PPO2)
原因:policy gradient為on-policy,sample一次更新完actor之后,actor就變了,不能使用原來的數(shù)據(jù)了,必須重新與Env互動(dòng)收集新數(shù)據(jù),這導(dǎo)致訓(xùn)練需要大量互動(dòng),降低效率。
Important sampling:使用其他分布q獲得數(shù)據(jù),來估計(jì)基于分布p的函數(shù)期望,用戶不能直接從p中采樣的情況。需要注意的是p與q不能差太多,因?yàn)楹瘮?shù)期望雖然無偏,但是方差可能很大,當(dāng)然如果sample數(shù)據(jù)足夠多也沒這個(gè)問題。
目標(biāo):使用θ'采樣的數(shù)據(jù),訓(xùn)練θ這個(gè)actor,過程中θ'是fixed的所以可以重復(fù)使用用θ'的數(shù)據(jù)訓(xùn)練θ許多次,增加數(shù)據(jù)利用率,提高訓(xùn)練速度,為openAI的default方法。顯然,此方法轉(zhuǎn)為了off-policy。
注意:因?yàn)棣? 是與環(huán)境交互的actor,所以advantage function 的估計(jì)需要使用θ'的數(shù)據(jù)。

此為跟新需要的gradient,其中假設(shè)在不同actor中看到的s概率一樣,則可以簡(jiǎn)化。通過gradient可以反推出目標(biāo)函數(shù)。

約束:由于θ'與θ不能差別太大,所以需要有個(gè)約束,比如在目標(biāo)函數(shù)后加-βKL(θ,θ')作為約束(PPO);或者外面引入KL(θ,θ') < δ.(TRPO,PPO前身,用constraint計(jì)算上不好處理)
說明:因?yàn)榭赡軈?shù)小的變化,行為變化很大,衡量無意義。所以。KL(θ,θ')不是參數(shù)上的距離,而是行為上的距離!π(a|s)的分布接近!
tip:adaptive KL Penalty,權(quán)衡β。定義KLmin和KLmax,當(dāng)KL > KLmax,說明penalty作用沒發(fā)揮,則增加β的值,反之亦然。
PPO2:不用計(jì)算KL,同樣可以控制θ與θ'之間差距。


說明:當(dāng)A>0,也就是a是好的,我們希望增加Pθ的概率,但是,Pθ不能弄得太大,太大也就會(huì)使與Pθ'差距大,導(dǎo)致效果不好。反之亦然。
Q-Learning
value-based,學(xué)習(xí)Critic,評(píng)價(jià)現(xiàn)在的行為的相對(duì)好壞。
state value fucntion Vπ(s).: 期望累計(jì)獎(jiǎng)勵(lì),給定π,s,衡量a的好壞。主要他必須與π相關(guān),衡量這個(gè)actor,而不是單純的s。
估計(jì):
- MC(episodic),需要π經(jīng)歷一次整個(gè)過程后,進(jìn)行統(tǒng)計(jì)估計(jì),由于r為隨機(jī)變量,所以此方法方差大,但是無偏的。
- TD, 根據(jù)Vπ(st)=Vπ(st+1)+rt估計(jì),不需要每次經(jīng)歷完整過程。由于Vπ值都為估計(jì)值,可能存在估計(jì)不準(zhǔn),其中只涉及r,方差小
state-action value function(Q function) Qπ(s,a).:衡量π在s下,采取a的好壞。其中π不一定采取a,這里只是衡量如果在這采取a的情況。
形式:
-
輸入s,a,輸出Qimage.png
-
輸入s,輸出每個(gè)a的Q,只能用于離散aimage.png
目標(biāo):給定Q,找到一個(gè)比π更好的π',這里"更好"是說,對(duì)所有s,有Vπ'(s) >= Vπ(s)
決策:π'=argmax_aQπ(s,a),這里沒有policy,依據(jù)Q來決定的,這個(gè)形式對(duì)連續(xù)a不好求解。
附:證明Vπ'(s) >= Vπ(s)

必用tips
-
target network
學(xué)習(xí)中數(shù)據(jù)為...(st,at,rt,st+1)...,訓(xùn)練目標(biāo)為由于目標(biāo)函數(shù)在更新后是變化的,訓(xùn)練十分不穩(wěn)定。image.png
我們采用兩個(gè)network,一個(gè)用來訓(xùn)練,一個(gè)用來計(jì)算目標(biāo)target(右邊的),訓(xùn)練時(shí)target固定住。當(dāng)訓(xùn)練一定數(shù)目后再更新target network的參數(shù)(用訓(xùn)練network替換)。 -
exploration
Q-learning的policy是依賴于Q,每次選擇最大Q的a,這樣不利于收集數(shù)據(jù),如果一開始沒有采樣到a,Q比較小,之后不會(huì)再采取這個(gè)a,無法準(zhǔn)確估計(jì)Q(s,a)。
方法: ε-greedy :以ε概率隨機(jī)選擇a,通常 ε隨著學(xué)習(xí)進(jìn)行變?。?br> Boltzmann Exploration:基于Q值概率化,通過概率采樣選擇a,image.png Replay Buffer
把a(bǔ)ctor的每筆experience (st,at,rt,st+1)放到一個(gè)buffer里面,其中buffer里面的exp可能來自不同的actor,當(dāng)buffer滿了再替換舊的exp。訓(xùn)練過程時(shí)每次從buffer里面sample一個(gè)batch出來訓(xùn)練。
結(jié)果:變成了off-policy方法(可能來自于其他actor)
好處:RL訓(xùn)練過程中交互很耗時(shí)間,這樣充分利用數(shù)據(jù)(可以反復(fù)利用數(shù)據(jù)),減少很Env互動(dòng)次數(shù);降低batch內(nèi)相關(guān)性,訓(xùn)練效果更穩(wěn)定(diverse),因?yàn)槲覀冎挥靡粋€(gè)exp訓(xùn)練,并不是trajectory,所以off-policy也沒關(guān)系。
高級(jí)Tips
-
Double DQN
解決Q值高估的問題。Q值一般都是被高估的,假設(shè)某個(gè)a被高估了,則target會(huì)選擇被高估的a,則target總是會(huì)很大。
我們采取使用兩個(gè)function Q和Q',其中Q選擇a(訓(xùn)練用Q),Q'來估計(jì)q值(target Q'),當(dāng)一個(gè)高估q的Q選擇了高估的a,但是另一個(gè)可能會(huì)準(zhǔn)確估計(jì)其q值;當(dāng)Q'高估q,只有Q不選擇a就ok,這樣雙重決策會(huì)緩解高估問題。采用target network和main network可以有效減少參數(shù)量。
image.png -
Dueling DQN
改架構(gòu),使Q(s,a) = A(s,a) + V(s),有時(shí)候Q的值可能與a無關(guān),而只與s有關(guān),比如一個(gè)不好的s導(dǎo)致什么a都不好。當(dāng)action不影響s時(shí),沒必要去衡量每個(gè)a的q值(只有在關(guān)鍵時(shí)刻a才重要!)
image.png
好處:當(dāng)沒有sample到a時(shí),同樣可以更新a,比較有效率地使用數(shù)據(jù),加速訓(xùn)練。
說明:為了防止模型不訓(xùn)練V,可以給A(s,a)加約束。比如A(s,a)限制和為0等等。實(shí)際操作可以在A(s,a)最后一層加normalization op.
Prioritized Replay
改變sample data的分布,增加那些難訓(xùn)練的數(shù)據(jù)被采樣的概率,TD error大的數(shù)據(jù);同時(shí)可以改變訓(xùn)練過程。-
Multi-step
權(quán)衡MC與TD,結(jié)合MC與TD的好處與壞處,MC準(zhǔn)確方差大,TD方差小,估計(jì)不準(zhǔn)??梢酝ㄟ^調(diào)節(jié)N來權(quán)衡。replay buffer中存N步的exp,則target變成:
image.png Noisy Net (State-dependent Exploration)
原本的exploration(ε-greedy)時(shí)對(duì)action加noise,現(xiàn)實(shí)中是不合理的(給同樣s,采取的a不同,真是π不是這樣的)。這里采用在每個(gè)參數(shù)上加gaussian noise,注意每次在sample net時(shí)是在每個(gè)episode開始使sample net,之后固定住net開始訓(xùn)練。這樣在類似的s給出是類似的a,更合理,系統(tǒng)地探索環(huán)境(Explore in a consistent way)。-
Distributional Q-function
Q function為累計(jì)期望獎(jiǎng)勵(lì),它為期望值,實(shí)際上在s采取a時(shí),最終所有得到的reward為一個(gè)分布reward distribution,但是不同的分布可能期望是一樣的。只用期望來代表reward會(huì)損失一些信息。
原來Q function為輸出每個(gè)a的Q,Q為期望,現(xiàn)在輸出每個(gè)a的Q的分布!實(shí)際上操作,假定reward distribution在一個(gè)范圍內(nèi),拆成一些區(qū)間,輸出在s采取a的reward落在某個(gè)區(qū)間的概率。在test時(shí)可以選擇某個(gè)a期望最大的action執(zhí)行,也可以考慮分布的方差,減低a的風(fēng)險(xiǎn)。此方法不會(huì)產(chǎn)生高估q值問題,因?yàn)橐婚_始把q限制在一個(gè)范圍內(nèi)了(可能低估q)。
image.png Rainbow
把以上方法全部結(jié)合起來!。。。
Q-learning總結(jié):比較穩(wěn);只需要Q function就可以找到較好的π;容易操作。不易處理連續(xù)action情況。
如何用Q-learning處理連續(xù)a的情況:
1. sampling action: sample N a, choose maxQ(a,s)
2. gradient ascent solve the optimization problem, 存在local minimum,選擇a時(shí)先要訓(xùn)練一個(gè)net..
3. 設(shè)計(jì)網(wǎng)絡(luò)使優(yōu)化目標(biāo)好解,比如

Actor Critic (A2C, A3C, DPGP)
原始policy-based方法中梯度為


目標(biāo):直接估計(jì)累計(jì)reward的期望值代替sample的估計(jì),使估計(jì)穩(wěn)定。其中估計(jì)reward的期望值為value-based method。
根據(jù)Q function的定義:E[Gt]=Q(st,at), 所以可以用Q-learning學(xué)G。
baseline:與s有關(guān),可以用Vπ(s)等表示,需要注意EQ(s,a)=V(s),所以Q-V有正有負(fù)!
最終:G-b = Q(s,a) - V(s),此時(shí)需要兩個(gè)network分別預(yù)測(cè)Q和V,這會(huì)承擔(dān)2倍風(fēng)險(xiǎn)預(yù)測(cè)不準(zhǔn)確。
因?yàn)?/p>


為advantage function.
A2C
π先互動(dòng),收集exp,先估計(jì)V(s) (TD, MC),再估計(jì)π
tips
-
shared shallow layer:需要學(xué)習(xí)的兩個(gè)network可以共享參數(shù)
image.png output entropy as regularization for π(s),使action分布交均勻,實(shí)現(xiàn)exploration
A3C
A2C訓(xùn)練較慢,使用多個(gè)worker學(xué)習(xí)參數(shù)跟新梯度,一起更新Global Network的參數(shù)。每個(gè)worker從global network中拿參數(shù),自己與環(huán)境互動(dòng),計(jì)算梯度,更新global network參數(shù)。注意,每個(gè)worker可能不是原始參數(shù)。

PDPG
從不同視角來看,原來Critc只評(píng)價(jià)a,現(xiàn)在可以引導(dǎo)π,告訴哪個(gè)a好;一種使用Q-learning解連續(xù)動(dòng)作的方法,原來Q-learning不好解連續(xù)a的argmax的問題,現(xiàn)在用一個(gè)actor來解。
先訓(xùn)練Q,然后固定Q,訓(xùn)練actor使得Q最大,架構(gòu)與GAN一樣!generator為actor,discriminator為Q,為一個(gè)conditional GAN.
Q-learning中的技術(shù)都可以使用。
整個(gè)算法:

進(jìn)而,GAN中的優(yōu)化方法可以引入這里:

高級(jí)技法
Sparse Reward
agent可能大多時(shí)間沒有reward,導(dǎo)致訓(xùn)練時(shí)不論采取什么a都一樣好。
Reward Shaping:Env有自己固定的reward,我們引導(dǎo)actor刻意設(shè)計(jì)一些reward,學(xué)到期望的行為。可能有些actor在預(yù)測(cè)未來reward很難,則discount很大。設(shè)計(jì)reward不一定是Env真的reward,只是我們希望的行為,一般需要domain knowledge。
Curiosity:Intrinsic Curiosity module (ICM)

鼓勵(lì)actor冒險(xiǎn),越難預(yù)測(cè)的s,則風(fēng)險(xiǎn)越大,增加exploration。但是不一定越難預(yù)測(cè)這個(gè)s就是好的,可能環(huán)境中的隨機(jī)無關(guān)變量。進(jìn)而引入feature extractor,把沒有意義的無關(guān)變量過濾掉。則ICM可以為:

Curriculum Learning:為機(jī)器的學(xué)習(xí)做規(guī)劃,有順序地訓(xùn)練,從簡(jiǎn)單東西到難的東西(不只用于RL)。比如識(shí)別數(shù)字,先學(xué)習(xí)分辨0,1,然后學(xué)習(xí)分辨0-9。需要老師設(shè)計(jì)課程。
Reverse Curriculum Generation:給定一個(gè)goal state->根據(jù)goal state采樣離goal state接近的state s1->從這個(gè)s1互動(dòng),看能否達(dá)到goal state,得到reward->刪除reward 極端的state(reward太大,說明太簡(jiǎn)單,已經(jīng)學(xué)會(huì),反之亦然)->基于適中的reward的s1繼續(xù)sample s2。
Hierachical RL:有許多不同等級(jí)的agent,高層的負(fù)責(zé)定目標(biāo),分配給底層的agent負(fù)責(zé)執(zhí)行完成。大任務(wù)分解為小任務(wù)逐次實(shí)現(xiàn)。
注意:如果低級(jí)的agent不能實(shí)現(xiàn)目標(biāo),則高級(jí)的agent受懲罰,防止高層的agent提出太難的目標(biāo);如果agent最終實(shí)現(xiàn)了一個(gè)錯(cuò)誤的goal,則假設(shè)正確的goal為這個(gè)錯(cuò)的!(三觀不一)
Initation Learning
Appewnticeship Learning: learning by demonstration,整個(gè)任務(wù)沒有reward!通過專家演示如何解決問題。
- 機(jī)器可以與環(huán)境互動(dòng),但是不會(huì)獲得顯示的獎(jiǎng)勵(lì)
- 有些任務(wù)很難定義reward(比如駕駛車無法判斷撞男人和女人各有多少reward)
- 有些人工定義的reward可能導(dǎo)致無法控制的結(jié)果
方法:Behavior Cloning;Inverse Reinforcement Learning (inverse optimal control)
Behavior Cloning:監(jiān)督學(xué)習(xí),收集專家的(s,a)進(jìn)行學(xué)習(xí)。
可能存在的問題:
- 專家只能提供有限的樣本(專家很專業(yè),不會(huì)經(jīng)歷一些極端情況,機(jī)器遇到無法決策)。
Dataset Aggregation:這種情況可以讓專家在機(jī)器決策時(shí)處于機(jī)器的環(huán)境(收集專家在極端情況下的行為),但是機(jī)器還是做自己,專家給予指導(dǎo),可能導(dǎo)致每次嘗試損失一個(gè)專家。 - 機(jī)器可能只是單純復(fù)制專家的行為,不論行為是是否相關(guān)(比如學(xué)到個(gè)人無關(guān)的壞行為),因?yàn)?strong>機(jī)器的capacity是有限的,可能只學(xué)到了壞行為(監(jiān)督學(xué)習(xí)同等對(duì)待所有error)
- 訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)mismatch
supervised learning中我們希望訓(xùn)練集和測(cè)試集具有相同的分布。
但是在BC中,訓(xùn)練數(shù)據(jù)為(s,a)~π^(expert),其中專家的action會(huì)影響s的分布( RL特點(diǎn));測(cè)試數(shù)據(jù)為(s',a')~π(actor clone expert)。當(dāng)π^=π時(shí),數(shù)據(jù)具有相同的分布;當(dāng)不相等時(shí),s與s'可能差異很大。
Inverse Reinforcement Learning:有Env,actor,Expert demonstration,但是沒有reward function。利用expert行為反推reward function;接下來可利用RL找到optimal actor。
好處:可能reward function比較簡(jiǎn)單,也能導(dǎo)致expert的復(fù)雜行為。

方法:
-
有一個(gè)expert與環(huán)境互動(dòng)得到一些專家數(shù)據(jù)image.png
-
有一個(gè)actor π與環(huán)境互動(dòng)得到數(shù)據(jù)image.png
反推一個(gè)reward function,原則為expert得到的分?jǐn)?shù)比actor高。
利用這個(gè)reward fucntion使用RL方法學(xué)習(xí)actor,得到新數(shù)據(jù)。
-
基于新的actor與expert數(shù)據(jù),更新reward function,遵循同樣的原則,反復(fù)迭代,最終學(xué)到reward function使得actor與expert得到同樣高分。
reward function:如果是線性的reward,保證收斂。或者可以使用NN,輸入為trajectory,輸出一個(gè)R;或者輸入(s,a),輸出r,最后匯總得到R。
image.png
說明:如果actor是generator,reward function是discriminator,則整個(gè)框架就是GAN!

優(yōu)點(diǎn):不需要太多的training data
應(yīng)用:學(xué)習(xí)不同expert開車,且能學(xué)習(xí)每個(gè)expert開車不同風(fēng)格;人示范訓(xùn)練機(jī)器人(手把手,機(jī)器處于s的第一視角);Chat-bot(使用maximum likelihood相當(dāng)于behavior cloning,這是不夠的??;SeqGAN方式相對(duì)于IRL)
Third Person IL:使用domain adversial training (抽取有用的信息)+ IL,機(jī)器看人的行為學(xué)習(xí)(機(jī)器學(xué)習(xí)視角為第三視角)。











