強(qiáng)化學(xué)習(xí)總結(jié)

強(qiáng)化學(xué)習(xí)

主要分為兩個分支,一個是Q-Learning,一個是policy gradient decent,還有一個目前的主流研究就是把二者合并

本文所有圖片和文字來自https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/

一、Q-Learning

1、初始算法


Q-learning算法

通過Q-learning的算法我們可以看出,Q-learning首先采取了三個東西,一是epison-greedy,即以一定的概率隨機(jī)采樣,增加了action的隨機(jī)性,二是Q現(xiàn)實-Q估計,使得最后Q估計(表中的Reward)能夠靠近Q現(xiàn)實(現(xiàn)實的Reward),三是使用alpha來給每次更新一個系數(shù),gamma 是對未來 reward 的衰減值。

問題:由于初始的時候一般Q估計都是0,而Q現(xiàn)實只有當(dāng)下一個state有reward時,才會出現(xiàn)正向的激勵,所以在沒有到達(dá)目標(biāo)state之前的狀態(tài),Q表都是不更新的 。

2、Sarsa


Sarsa算法

通過Sarsa的算法可以看出,Sarsa更新Q表的時候沒有采用max的方式來更新,而是使用自己確實采用的a'的reward來更新。

所以Sarsa總會采取他認(rèn)為最優(yōu)的方式更新,而Sarsa會采取它當(dāng)前選擇的方式。

3、Sarsa(lambda)


Sarsa(lambda)算法

在之前的Q-learning和Sarsa中,只有到達(dá)目標(biāo)的state時,才能夠獲取reward,然后更新Q表,這樣的效率是很低的。

而Sarsa(lambda)在每一部計算出E的時候,加了一個1(這個操作是為了使得更新的值永遠(yuǎn)大于1,防止隨著往后傳播的時候,值越來越?。缓笾貜?fù)之前的Q(s,a),給他們重新賦值。

4、DQN

deep Q Network


DQN輸入輸出流程
DQN參數(shù)更新流程

使用DQN的初衷是因為現(xiàn)代社會的問題越來越復(fù)雜,使用state-action表格(Q表)來存儲所有的可能是不太現(xiàn)實的(如果是指數(shù)爆炸式的action)。而神經(jīng)網(wǎng)絡(luò)的不同參數(shù)組合可以很好的提供記錄狀態(tài)的可能,所以就有了DQN。

具體的遷移方法如上兩圖,每次輸入狀態(tài),輸出action和Q估計,然后利用Q現(xiàn)實-Q估計來更新參數(shù)。

需要注意的是DQN需要維護(hù)兩個幾乎相同的網(wǎng)絡(luò),一個網(wǎng)絡(luò)(這個網(wǎng)絡(luò)隔一段時間才更新一次)產(chǎn)生Q現(xiàn)實,一個網(wǎng)絡(luò)(這個網(wǎng)絡(luò)不斷更新)產(chǎn)生Q估計

5、Double DQN

?Q-Learning 中有?Qmax,?Qmax?會導(dǎo)致?Q現(xiàn)實?當(dāng)中的過估計 (overestimate). 而 Double DQN 就是用來解決過估計的. 在實際問題中, 如果你輸出你的 DQN 的 Q 值, 可能就會發(fā)現(xiàn), Q 值都超級大. 這就是出現(xiàn)了 overestimate.

如何解決?

原本的?Q_next = max(Q_next(s', a_all)).

Double DQN 中的?Q_next = Q_next(s', argmax(Q_eval(s', a_all))).

解釋一下上面兩行的意思就是,DQN是使用Q現(xiàn)實網(wǎng)絡(luò)中的Q來預(yù)測Qtarget,而double DQN 是現(xiàn)在Q估計中找到需要的action,然后再在Q現(xiàn)實網(wǎng)絡(luò)中來取值。

6、Prioritized Experience Replay


DQN with priority

對記憶庫中的樣本采樣方法進(jìn)行改進(jìn),使得盡量平衡不同reward的樣本.

通過上圖高亮的部分可以看出,每個樣本被賦予了一個優(yōu)先級p(這個p是erro確定的),每次采用的使用對所有的優(yōu)先級進(jìn)行歸一化,然后按照它們的概率采樣。

7、Dueling DQN


dueling DQN

修改 DQN 中神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu), 就能大幅提升學(xué)習(xí)效果, 加速收斂.

用一句話來概括 Dueling DQN 就是. 它將每個動作的 Q 拆分成了 state 的 Value 加上 每個動作的 Advantage.

可以看到上圖中每個網(wǎng)絡(luò)主要預(yù)測的是動作和reward,而dueling DQN 還需要預(yù)測這個動作的advantage(有用性)


equ:1

二、Policy Gradient

對比起以值為基礎(chǔ)的方法, Policy Gradients 直接輸出動作的最大好處就是, 它能在一個連續(xù)區(qū)間內(nèi)挑選動作, 而基于值的, 比如 Q-learning, 它如果在無窮多的動作中計算價值, 從而選擇行為, 這, 它可吃不消.


policy gradient

上圖簡單明了的說明了,就是把vt和pi乘到了梯度上,然后來更新參數(shù),pi代表的是某種策略的概率,vt是這種策略的獎勵。

三、合并二者

1、Actor-critic

用一個critic網(wǎng)絡(luò)(基于值的)評估actor網(wǎng)絡(luò)(基于策略的)的結(jié)果

2、DDPG

Deep Deterministic Policy Gradient


DDPG

Google DeepMind 提出的一種使用?Actor Critic?結(jié)構(gòu), 但是輸出的不是行為的概率, 而是具體的行為, 用于連續(xù)動作 (continuous action) 的預(yù)測.?DDPG?結(jié)合了之前獲得成功的?DQN?結(jié)構(gòu), 提高了?Actor Critic?的穩(wěn)定性和收斂性.

3、A3C

Asynchronous Advantage Actor-Critic

Google DeepMind 提出的一種解決?Actor-Critic?不收斂問題的算法. 它會創(chuàng)建多個并行的環(huán)境, 讓多個擁有副結(jié)構(gòu)的 agent 同時在這些并行環(huán)境上更新主結(jié)構(gòu)中的參數(shù). 并行中的 agent 們互不干擾, 而主結(jié)構(gòu)的參數(shù)更新受到副結(jié)構(gòu)提交更新的不連續(xù)性干擾, 所以更新的相關(guān)性被降低, 收斂性提高.


A3C

4、DPPO

?Trust Region Policy Optimization

Distributed PPO


DPPO

利用KL散度來控制前后兩個策略的差距,讓這個差距不要太大,同時還要學(xué)習(xí)一個A來控制新舊策略的更新步長

四、強(qiáng)化學(xué)習(xí)能做什么?提供了什么想法?

1、能做什么?

如果有一個Q現(xiàn)實和一個Q估計,就能夠利用DQN來進(jìn)行更新,問題就在如何定義Q現(xiàn)實和Q估計了

2、提供了什么想法?

更新的傳遞性(Sarsa(lambda))

樣本權(quán)重(PER)

為結(jié)果預(yù)測一個有用性advantage(dueling DQN)

網(wǎng)絡(luò)之間的異步更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容