強化學習及其常見算法介紹

原文地址 https://www.cnblogs.com/yeyuan111/p/10320050.html

強化學習及其常見算法介紹

目錄

強化學習算法

scsn_dango

第一部分: RL 基本概念介紹

RL 定義

​ 在中文維基百科中,強化學習被定義爲機器學習中的一個領域,強調如何基於環境而行動,以取得最大化的預期收益 wikipedia。Richard S. Sutton and Andrew G. Barto 最新的強化學習書籍《Reinforcement Learning: An Introduction II》中對強化學習的定義爲: Reinforcement learning is learning what to do—how to map situations to actions——so as to maximize a numerical reward signal.

RL基本元素

​ 可以看出強化學習至少有這樣幾個基本概念: 環境(Environment)、主體(Agent)、狀態(State)、行動(Action)和收益(Reward) 。

RL

圖1

​ 環境是一個外部系統,主體處於這個系統中,能夠感知到這個系統並且能夠基於感知到的狀態做出一定的行動。比如在 MR(Montezuma's Revenge) 中,環境就是80x80像素大小的遊戲界面。

​ 主體是一個嵌入到環境中的系統,能夠通過採取行動來改變環境的狀態。比如在MR中,主體就是玩家操控的小人,小人能夠根據當前環境的狀態做出一個動作(上下左右移動或者跳躍),從而改變環境的狀態。

​ 狀態是指當前環境的一個時間切片。在MR中就是一張特定時間的80x80大小的圖片。

​ 行動是指主體做出的行爲。在MR中指上下左右、跳躍的操作。

​ 收益是一個標量,指的是環境對當前動作或者狀態的一個獎勵。在MR中指的是系統定義的一個收益,既可以是在遊戲回合結束的時候給的 Game Over 或者 Win 這樣的全局收益,也可以是一個局部收益,比如拿到 鑰匙 或者去到另一個 房間

RL與其他機器學習的關係

​ RL和傳統的機器學習(監督學習 Supervised Learning,非監督學習 Unsupervised Learning,半監督學習 Semi-Supervised Learning)既有一定的聯繫,也存在很大的區別。大致的包含關係如圖2所示。

RL and ML

圖2

​ 強化學習主要有以下幾個特點:

​ 1. 試錯學習:強化學習一般沒有直接的指導信息,Agent 要以不斷與 Environment 進行交互,通過試錯的方式來獲得最佳策略(Policy)。

​ 2. 延遲迴報:強化學習的指導信息很少,而且往往是在事後(最後一個狀態(State))纔給出的。比如 MR 中可能只有在每一次遊戲結束以後纔有一個 Game Over 或者 Win 的回報。

​ 總的來說,RL與其他機器學習算法不同的地方在於:

    1. 沒有監督者,只有一個Reward信號;
    2. 反饋是延遲的,不是立即生成的;
    3. 強化學習是序列學習,時間在強化學習中具有重要的意義;
    4. Agent的行爲會影響以後所有的決策。

​ RL可以被抽象爲一個序列預測的問題,只不過序列是通過類似圖靈機一樣的原理產生的,後一個State只有在前一個Action做出以後纔可以得到。

 

S0⟶a0S1⟶a1...⟶an−1SnS0⟶a0S1⟶a1...⟶an−1Sn

​ 其中SiSi表示i時刻的State,aiai表示i時刻的Action。RL學習的目標就是學習一個根據當前State選擇一個能夠最大化全局收益的Action,我們把Agent根據State選擇Action的方法叫做策略(Policy)。

第二部分:RL 算法

​ 強化學習的算法主要分爲兩大類: 基於值的算法(Value-Based) 和 基於策略的算法(Policy-Based)。我首先分別介紹一下基於值和基於策略的經典算法,然後介紹一個將基於值和基於策略的算法的優點結合起來的框架——Actor-Critic(AC)框架。在AC框架下進一步介紹目前學術界用得最多的幾種強化學習算法,也包括《RND》這篇論文中使用的PPO算法。

基於值的算法

​ 在介紹基於值的算法之前首先介紹兩個概念 狀態價值函數(State Value Function)-V(s) 和 行爲價值函數(Quality of State-Action function)-Q(s,a)

​ 狀態價值函數:狀態價值函數V(s),輸入是一個狀態,輸出是該狀態的預期Reward。

 

Vπ(s)=Eπ[G0|S0=s]Vπ(s)=Eπ[G0|S0=s]

​ 其中ππ表示Agent選擇Action的策略的概率分佈, G0|S0=sG0|S0=s表示從狀態s開始到G0G0狀態整個序列。所以Vπ(s)Vπ(s)表示從當前狀態開始到達G0G0狀態的預期收益。

​ 特別地,如果我們用RtRt表示t時刻的預期收益,那麼有

 

Vπ(s)=Eπ[G0|S0=s]=Eπ[∑t=0∞γtRt+1|S0=s]Vπ(s)=Eπ[G0|S0=s]=Eπ[∑t=0∞γtRt+1|S0=s]

​ 其中γγ表示折扣因子,體現與當前狀態更近的狀態對與當前狀態的預期期望貢獻更大。

​ 行爲價值函數:行爲價值函數Q(s,a),輸入是一個狀態和一個行動,輸出是在該狀態下采取該行動的預期收益,那麼有

 

Qπ(s,a)=Eπ[G0|S0=s,A0=a]=Eπ[∑t=0∞γtRt+1|S0=s,A0=a]Qπ(s,a)=Eπ[G0|S0=s,A0=a]=Eπ[∑t=0∞γtRt+1|S0=s,A0=a]

​ 易知,V(s)和Q(s,a)之間有這樣的關係

 

Vπ(s)=∑a∈AQπ(s,a)Vπ(s)=∑a∈AQπ(s,a)

Q-learning

​ 下面我們給出經典的Q-learning的算法,僞代碼如下所示

Q-learning pseudocode

​ Q-learning 算法通過構建和維護一個Q表,Q表中的每一項表示Q(s,a),來找到一個最優策略,這個策略能夠最大化從當前狀態開始所有的後繼行動的期望收益。

​ Q-learning最重要的部分在於對於Q值的更新,從僞代碼中我們可以看到,對於Q值的更新ΔQΔQ是兩部分的差值乘以係數αα。一部分是r+γmaxa′Q(s′,a′)r+γmaxa′Q(s′,a′)表示當前環境給出的即時回報,r表示當前環境給出的即時回報,γmaxa′Q(s′,a′)γmaxa′Q(s′,a′)是對是對Q(s′,a′)Q(s′,a′)的最大估計(折扣因子爲的最大估計(折扣因子爲γγ),所以第一部分總的表示對於當前(s,a)的Q值的現實值;另一部分爲Q(s,a)表示Q(s,a)的估計值。

​ 除了Q-learning以外,還有Deep Q-learning、Double Q-learning 和 SARSA等基於值的算法。一般來說基於值的算法都是先評估每個(s, a) 元組的Q值-Q(s,a),再根據Q值求最優策略,基於值的方法適用於比較簡單(狀態空間比較小,或者Action數目較小)的問題,它有較高的數據利用率並且能穩定收斂。

​ 對於Q-learning來說,因爲需要構建一個Q表,每一個(s,a)元組都需要對應一個Q值,所以只能解決State和Action均可數並且數目較小的問題。Deep Q-learning通過深度神經網絡(Deep Neural Network, DNN)來估計一個函數g:S→R|A|g:S→R|A|用於對每一個State s,計算一個|A||A|維的向量,向量的每一維表示Q(s,a)對應的值,這樣就能夠應對State數目無窮的情況,但是仍然沒辦法解決|A|→∞|A|→∞的情況。

基於策略的算法

​ 我們已經知道Q-learning、DQN等基於價值的方法通過計算每一個狀態動作的價值,選擇價值最大的動作執行。這是一種間接選擇策略的做法,並且幾乎沒辦法處理Action數目無窮的情況。那麼我們能不能直接對策略進行建模呢?

​ 一種比較直觀的想法是我們可以構建這樣一個策略網絡(Policy Network) PN:S→APN:S→A,輸入一個狀態直接輸出對應的Action,而不是得到一個狀態價值V(s)或者每個Action對應的Q值Q(s, a),然後直接對這個策略網絡進行更新,從而直接對策略選擇建模。如果我們用神經網絡來模擬PNPN,那麼可以形式化的表示爲:

 

a=π(s,θ) or a=π(a|s,θ)a=π(s,θ) or a=π(a|s,θ)

​ 可以直接輸出確定的Action,也可以輸出Action的一個概率分佈。在輸出概率分佈的時候,雖然形式上和DQN類似都是S→R|A|S→R|A|,但是DQN輸出的是Q值,並且是基於Q值做Action的決策,而PNPN直接得到的是Action的概率分佈,並且對於|A|→∞|A|→∞,PNPN能夠直接預測出Action。

Policy Gradient

​ Policy GradientPolicy Gradient是基於策略的算法中最基礎的一種算法。通過對收益期望求梯度,從而對Policy Network的參數進行更新。

​ 定義收益期望J(θ)J(θ)如下:

 

J(θ)=Eτ∼πθ(τ)[r(τ)]=∫τ∼π(τ)r(τ)πθ(τ)dτJ(θ)=Eτ∼πθ(τ)[r(τ)]=∫τ∼π(τ)r(τ)πθ(τ)dτ

 

θ∗=argmaxθ(J(θ))θ∗=argmaxθ⁡(J(θ))

​ 對J(θ)J(θ)求導有

 

▽θJ(θ)=▽θ∫τ∼π(τ)r(τ)πθ(τ)dτ=∫τ∼π(τ)r(τ)▽θπθ(τ)dτ▽θJ(θ)=▽θ∫τ∼π(τ)r(τ)πθ(τ)dτ=∫τ∼π(τ)r(τ)▽θπθ(τ)dτ

​ 又因爲

 

▽θπθ(τ)=πθ(τ)▽θπθ(τ)πθ(τ)=πθ(τ)▽θlogπθ(τ)▽θπθ(τ)=πθ(τ)▽θπθ(τ)πθ(τ)=πθ(τ)▽θlogπθ(τ)

 

▽θJ(θ)=∫τ∼π(τ)πθ(τ)r(τ)▽θlogπθ(τ)dτ=Eτ∼πθ(τ)[r(τ)▽θlogπθ(τ)](1)(2)(1)▽θJ(θ)=∫τ∼π(τ)πθ(τ)r(τ)▽θlogπθ(τ)dτ(2)=Eτ∼πθ(τ)[r(τ)▽θlogπθ(τ)]

 

logπθ(τ)=logπθ(s1,a1,s2,a2,...sT,aT)=log{p(s1)∏t=1T[πθ(at|st)p(st+1|st,at)]}=logp(s1)+∑t=1Tlogπθ(at|st)+∑t=1Tlogp(st+1|st,at)=logp(sT)+∑t=1Tlogπθ(at|st)=∑t=1Tlogπθ(at|st)(3)(4)(5)(6)(3)logπθ(τ)=logπθ(s1,a1,s2,a2,...sT,aT)(4)=log{p(s1)∏t=1T[πθ(at|st)p(st+1|st,at)]}(5)=logp(s1)+∑t=1Tlogπθ(at|st)+∑t=1Tlogp(st+1|st,at)(6)=logp(sT)+∑t=1Tlogπθ(at|st)=∑t=1Tlogπθ(at|st)

 

r(τ)=∑t=1Tr(st,at)r(τ)=∑t=1Tr(st,at)

 

▽θJ(θ)=Eτ∼πθ(τ)[∑t=1T▽θlogπθ(at|st)∑t=1Tr(st,at)]▽θJ(θ)=Eτ∼πθ(τ)[∑t=1T▽θlogπθ(at|st)∑t=1Tr(st,at)]

​ 最終我們得到了一個漂亮的▽θJ(θ)▽θJ(θ)的表達式,期望裏面包括兩個部分∑Tt=1▽θlogπθ(at|st)∑t=1T▽θlogπθ(at|st)表示的是獲取當前Trace的概率的梯度,∑Tt=1r(st,at)∑t=1Tr(st,at)表示的是當前路徑的總的回報。因爲回報是一個總的回報,只能在一個輪次之後才能得到,所以Policy Gradient算法只能針對每一輪次更新,無法針對每個step更新。

​ 一個Policy Gradient算法REINFORCE的僞代碼如下:
​ 1. sample{τi} from πθ(at|st) (run the policy)1. sample{τi} from πθ(at|st) (run the policy)
​ 2. ▽θJ(θ)≈∑i(∑Tt=1▽θlogπθ(ait|sit)∑Tt=1r(sit,ait))2. ▽θJ(θ)≈∑i(∑t=1T▽θlogπθ(ati|sti)∑t=1Tr(sti,ati))
​ 3. θ←θ+α▽θJ(θ)​3. θ←θ+α▽θJ(θ)​

Actor-Critic 框架

Based Actor-Critic

​ 由於最基礎的Policy Gradient算法只能實現每輪次更新,很難準確地把Reward反饋回去,訓練效率很差,並且很容易不收斂。所以想要將∑Tt=1r(sit,ait)∑t=1Tr(sti,ati) 替換爲Q(sit,ait)Q(sti,ati)使用價值函數對當前的(sit,ait)(sti,ati)二元組的期望收益做一個評估,這樣就能在每一步獲取▽θlogπθ(ait|sit)Q(sit,ait)▽θlogπθ(ati|sti)Q(sti,ati)從而更新參數。

​ 所以最基礎的AC框架的期望收益函數J(θ)J(θ)的梯度有如下的形式:

 

▽θJ(θ)=Eτ∼πθ(τ)[∑t=1T▽θlogπθ(at|st)Q(st,at)]▽θJ(θ)=Eτ∼πθ(τ)[∑t=1T▽θlogπθ(at|st)Q(st,at)]

Advantage Actor Critic(A2C)

​ 後來研究表明這樣的形式計算Q(st,at)Q(st,at)有很大的方差。爲了減小方差,將Q(st,at)Q(st,at)替換爲Q(st,at)−V(st)Q(st,at)−V(st),又結合Q(s,a)Q(s,a)和V(s)V(s)之間的關係(前文有過相關討論),得到了一個Advantage函數,形式如下:

 

Aπ(st,at)=r(st,at)+Vπ(st+1)−Vπ(st)Aπ(st,at)=r(st,at)+Vπ(st+1)−Vπ(st)

​ 所以想要求得Aπ(st,at)Aπ(st,at)的值,我們只需要用一個神經網絡對V(st)V(st)建模就好了。僞代碼如下:

​ batch actor critic algorithmbatch actor critic algorithm
​ 1. sample {si,ai} from πθ(a|s) (run it on the robot)1. sample {si,ai} from πθ(a|s) (run it on the robot)
​ 2. fit V^πΦ(s) to sampled reward sums2. fit V^Φπ(s) to sampled reward sums
​ 3. evaluate A^π(si,ai)=r(si,ai)+V^πΦ(s′i)−V^πΦ(si)3. evaluate A^π(si,ai)=r(si,ai)+V^Φπ(si′)−V^Φπ(si)
​ 4. ▽θJ(θ)=∑i▽θlogπθ(ai|si)A^π(si,ai)4. ▽θJ(θ)=∑i▽θlogπθ(ai|si)A^π(si,ai)
​ 5. θ←θ+α▽θJ(θ)5. θ←θ+α▽θJ(θ)

Trust Region Policy Optimization (TRPO)

​ 雖然A2C很好的把Policy-Based和Value-Based兩種方法結合了起來,並且能夠做到step級別的更新,但是A2C沒有考慮這樣的問題:每一次的更新是否能夠保證新的策略的Jnew(θ)Jnew(θ)大於Jold(θ)Jold(θ)。

​ Schulman 2015年發表在ICML的論文《Trust Region Policy Optimization》討論了這個問題,並且提出了TRPO算法,從理論上能夠證明Jnew(θ)≥Jold(θ)Jnew(θ)≥Jold(θ) 。Schulman把最終的優化問題轉換成了

 

θk+1=argmaxθL(θk,θ)s.t. D¯KL(θ||θk)≤δwhere L(θk,θ)=Es,a∼πθk[πθ(a|s)πθk(a|s)Aπθk(s,a)]θk+1=argmaxθ⁡L(θk,θ)s.t. D¯KL(θ||θk)≤δwhere L(θk,θ)=Es,a∼πθk⁡[πθ(a|s)πθk(a|s)Aπθk(s,a)]

​ 利用KLKL距離來限制old policy和new policy之間的距離,並且修改了目標函數,使得在滿足KLKL限制下,Jnew(θ)≥Jold(θ)Jnew(θ)≥Jold(θ)。

​ TRPO在理論上和實踐中都有很好的效果。

Proximal Policy Optimization(PPO)

​ TRPO雖然在理論上和實踐中都有很好的效果,但是因爲最後求解的問題過於複雜,導致訓練時間複雜度很高。爲了減少時間上的開銷,OpenAI又提出了一個TRPO的改進方法PPO,通過一個Clip函數來截斷rt(θ)rt(θ),從而用很小的代價實現了和KLKL距離的限制條件類似的功能。新的目標函數爲:

 

LCLIP(θ)=E^t[min(rt(θ)A^t),clip(rt(θ),1−ϵ,1+ϵ)A^t]rt(θ)=πθ(at|st)πθk(at|st)LCLIP(θ)=E^t[min(rt(θ)A^t),clip⁡(rt(θ),1−ϵ,1+ϵ)A^t]rt(θ)=πθ(at|st)πθk(at|st)

Reference

[1] Burda Y, Edwards H, Storkey A, et al. Exploration by Random Network Distillation[J]. arXiv preprint arXiv:1810.12894, 2018.

[2] Schulman J, Wolski F, Dhariwal P, et al. Proximal policy optimization algorithms[J]. arXiv preprint arXiv:1707.06347, 2017.

[3] Schulman J, Levine S, Abbeel P, et al. Trust region policy optimization[C]//International Conference on Machine Learning. 2015: 1889-1897.

[4] Sutton R S, McAllester D A, Singh S P, et al. Policy gradient methods for reinforcement learning with function approximation[C]//Advances in neural information processing systems. 2000: 1057-1063.

[5] Sutton R S, Barto A G. Reinforcement learning: An introduction[M]. MIT press, 2018.

[6] Watkins C J C H, Dayan P. Q-learning[J]. Machine learning, 1992, 8(3-4): 279-292.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章