Try   HackMD

李宏毅_ATDL_DRL Lecture 2

tags: Hung-yi Lee NTU Deep Reinforcement Learning

課程撥放清單

DRL Lecture 2: Proximal Policy Optimization (PPO)

課程連結

PPO是OpenAI在強化學習上預設使用的演算法

On-policy v.s. Off-policy

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

跟環境互動的agent與訓練的agent同一個的時候,即為On-policy,若否為Off-policy,更白話一點的說法,邊做邊學習的為On-policy,在旁邊透過看別人玩來學習則為Off-policy。

以棋靈王為比喻,阿光自己下自己學,那就是On-policy,如果是佐為下,阿光在旁邊看,那就是Off-policy。

On-policy
Off-policy

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

課程之前提過的Policy Gradient就是一種On-policy的實作,你有一個actor,它跟環境互動,然後學習更新,這過程中的policy都是同一個,因此為On-policy。

R¯θ=Eτpθ(τ)[R(τ)logpθ(τ)]

  • 這其中的
    Eτpθ(τ)
    是對現在的policy-
    θ
    去sample出一個trajectory-
    τ
    來計算期望值,因此當你更新參數
    θ
    變為
    θ
    之後,那
    pθ(τ)
    就不對了,這時候你就需要重新sample,之前sample出來的資料已經不能用,也因此課程提過,過程中的資料都只能用一次。
  • 這造成Policy Gradient會花很多時間在sample data,因為所有的資料都只能更新參數一次,更新一次之後就要重新sample。

從On-policy調整為Off-policy的好處在於,我們希望可以用一個

θ收集到的資料來訓練
θ
,這意味著我們可以重覆的利用這些資料來更新
θ
多次,效率上可以提升不少。

相關的作法可以使用Importance Sampling,這並不僅僅能應用於RL:

  • Exp[f(x)]
    • p
      中sample出
      x
      來計算
      f(x)
      的期望值
  • 1Ni=1Nf(xi)
    • 沒有辦法對distribution-
      p
      計算積分,可以用sample的方式,取平均值來近似期望值

目前有一個問題後續會說明,就是無法從

p來sample資料,因此我們會從
q
來sample,但這並不能套用我們一開始的假設,因為一開始是從
p
來sample資料,因此必需調整:

  • =f(x)p(x)dx
    • p(x)
      計算積分
  • =f(x)p(x)q(x)q(x)dx
    • 分子分母同乘
      q(x)
  • =Exq[f(x)p(x)q(x)]
    • 調整為從
      q
      來sample出
      x
      取期望值
    • 需要乘上一個權重
      p(x)q(x)
      來修正
      p,q
      兩個distribution之間的差異

Issue of Importance Sampling

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Exp[f(x)]=Exq[f(x)p(x)q(x)]

兩個random variable,即使mean一樣也不代表variance是一樣的,這可以利用公式計算得到:

  • VAR[X]=E[X2](E[X])2

簡報上的推導過程可以看的到,兩者之間的Variance是存在著差異

p(x)q(x),因此如果
p(x)q(x)
的數值很大,就會造成Variance也非常大。

因此理論上只要sample的次數夠多,從

p跟從
q
所得的期望值會是一樣的,但如果sample的次數不夠多,就可能會得到非常大的差別。

Issue of Importance Sampling

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Exp[f(x)]=Exq[f(x)p(x)q(x)]

直觀的用圖示來說明,藍線為

p(x)的分佈,綠線為
q(x)
的分佈,
f(x)
為紅線。以分佈來說,
p(x)
所sample的點可能多在左邊 ,為負樣本,但
q(x)
所sample的點可能多在右邊,為正樣本。

因此在sample的樣本數不多的情況下,兩者之間的差異會是非常大的。

On-policy
Off-policy

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

現在,我們要將Importance Sampling的概念應用於Off-policy:

  • On-policy
    • R¯θ=Eτpθ(τ)[R(τ)logpθ(τ)]
    • θ
      與環境互動,sample出trajectory-
      τ
      並計算期望值
  • Off-policy
    • R¯θ=Eτpθ(τ)[pθ(τ)pθ(τ)R(τ)logpθ(τ)]
    • θ
      與環境互動,這是另一個actor,它的工作是示範給
      θ
      看,讓
      θ
      知道跟環境互動會發生的狀況,以此訓練
      θ
      ,這時候的trajectory-
      τ
      是由
      θ
      所sample。
    • 優點在於可以利用相同的資料更新多次

上面的說明提過Importance Sampling的概念,無法從

p來sample,永遠可以從其它的分佈來sample,只要乘上權重,也就是
pθ(τ)pθ(τ)
,trajectory-
τ
pθ
所sample到的機率除上由
pθ
所sample到的機率。

On-policy
Off-policy

課程開始有提到,在做參數更新的時候並非給整個trajectory-

τ一樣的分數,而是每個state-action的成對資料分開計算:

  • E(st,at)πθ[Aθ(st,at)logpθ(atn|stn)]
    • θ
      中sample出state, action,計算它的advantage,如果好的就增加出現的機率,不好的就減少。
    • On-policy

利用importance sampling調整為Off-policy如下:

  • E(st,at)πθ[Pθ(st,at)Pθ(st,at)Aθ(st,at)logpθ(atn|stn)]
    • 這邊要注意到的是,advantage function所計算的應該是
      θ
      所估測出來的值,因為現在與環境互動的不是
      θ
      ,而是
      θ

拆解機率的項目如下:

  • E(st,at)πθ[Pθ(at|st)Pθ(at|st)pθ(st)pθ(st)Aθ(st,at)logpθ(atn|stn)]
    • 假設模型在
      θ
      θ
      看到
      st
      的機率是差不多的,因此刪除。
    • 另一個想法,
      st
      難以估測,因此無視。

最終得到一個新的object function:

  • Jθ(θ)=E(st,at)πθ[Pθ(at|st)Pθ(at|st)Aθ(st,at)]
    • 這個推導是來自於
      f(x)=f(x)logf(x)
    • pθ
      視為
      f(x)
      ,課堂上有說明,但推導過程不在畫面上。
    • (θ)
      :要最佳化的參數
    • θ
      :代表的是用
      θ
      來演示(真正與環境互動)

注意到課程上有提過,importance sample過程中不能讓

θ
θ
差異過大,如何避免的方式就是後續會提到的PPO。

PPO / TRPO

importance sample過程中不能讓

θ
θ
兩個distribution差異過大,因此PPO的解法就是在裡面加入一個constrain(約束項),也就是
βKL(θ,θ)

  • JPPOθ(θ)=Jθ(θ)βKL(θ,θ)
    • KL(θ,θ)
      :兩個model的output的action的KL-divergence,簡單說就是衡量兩者有多相似,我們希望兩個愈像愈好。

不同於TRPO,PPO直接將constrain-

KL(θ,θ)放到要最佳化的式子裡面,接下來利用gradient ascent來最大化。但TRPO是直接將
KL(θ,θ)
當做一個額外的constrain,並且
KL(θ,θ)<δ
,這在gradient-based optimization的情況下不好處理。

KL(θ,θ)並不是指兩個參數之間的距離,而是behavior上的距離,也就是給定相同的state情況下,model output的action之間的差距,model output的action是一個機率分佈,將不同state的output的兩個distribution的KL-divergence平均起來,就是這邊所計算的
KL(θ,θ)

不考慮參數的距離主要是因為,可能參數的些許變化會對action有不一致的影響,可能很大也可能很小,但我們在意的是action這個行為上的差距,而不是參數,因此只考慮action的距離。

文獻結果來看,PPO對TRPO的效能差不多,但實作上PPO好做的多。

PPO algorithm

演算法實作如下:

  1. 初始化policy的參數
    θ0
  2. 在每次迭代中:
    • 使用
      θk
      與環境互動,得到一堆{
      st,at
      },計算advantage-
      Aθk(st,at)
      • θk
        上一次訓練迭代中得到的actor的參數
    • 實作PPO最佳化,以
      θk
      得到的資料來訓練
      θ
      • 不同於policy gradient只能應用一次資料,這邊可以多次訓練
        θ
      • object function-
        JPPOθk(θ)=Jθk(θ)βKL(θ,θk)
    • 動態更新
      β
      • 設置一個可接受的最大、最小
        KL(θ,θk)
        ,稱為adative KL penalty
        • 比最大值大,代表懲罰項沒發揮效用,則加大
          β
        • 比最大值小,代表懲罰項效果太強,則減少
          β

PPO2

PPO因為還要計算KL-divergence因此有點複雜,延申出PPO2,雖然數學式看起來很複雜,但實作起來是簡單的:

JPPO2θk(θ)st,atmin(pθ(at|st)pθk(at|st)Aθk(st,at),clip(pθ(at|st)pθk(at|st),1ϵ,1+ϵ)Aθk(st,at))

  • st,at
    :summation over state, action的pair
  • 數學式由兩個項目所組成,
    min
    的作用在於選擇較小的項目
  • clip(pθ(at|st)pθk(at|st),1ϵ,1+ϵ)
    • 裡面有三個項目,當第一項小於第二項的時候回傳
      1ϵ
      ,當第一項大於第三項的時候回來
      1+ϵ
      • 大概就是WGANs的weight clipping,將值域限制於一個範圍內
    • ϵ
      為超參數

來看組成的第二項,

clip所處理的部份,見簡報下圖:

  • 藍色虛線
  • 橫軸為
    pθ(at|st)pθk(at|st)
  • 縱軸為
    clip
    的實際輸出
  • clip
    的輸出大於
    1+ϵ
    的時候,即輸出
    1+ϵ
  • clip
    的輸出小於
    1ϵ
    的時候,即輸出
    1ϵ
  • clip
    的輸出介於中間,即直接輸出值

加入組成的第一項:

  • 綠色虛線

advantage function-A的輸出影響取值範圍(紅線),直觀來看:

  • A>0
    ,那代表這個pair是好的,我們會希望增加它出現的機率,也就是讓
    pθ
    愈大愈好,但
    pθ
    pθk
    的比值不能超過
    1+ϵ
  • A<0
    ,那代表這個pair是不好的,我們會希望減少它出現的機率,也就是讓
    pθ
    愈小愈好,但
    pθ
    pθk
    的比值不能小過
    1ϵ
  • 補圖_::

Experimental Results

論文連結_Proximal Policy Optimization Algorithms

上面是各種方式的實作結果。