日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】

發布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 前言

我們回顧一下policy network:

強化學習筆記:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客

?????????

????????它先去跟環境互動,搜集很多的 路徑τ。根據它搜集到的路徑,按照 policy gradient 的式子去更新 policy 的參數。

? ? ? ? ?但問題是,一旦我們更新了參數,從θ變成了θ',那么這個概率就不對了,之前采樣出來的數據就變的不能用了。

?????????所以 policy gradient 是一個會花很多時間來采樣數據的算法,大多數時間都在采樣數據,agent 去跟環境做互動以后,接下來就要更新參數。你只能更新參數一次。接下來你就要重新再去收集數據, 然后才能再次更新參數。這顯然是非常花時間的。

? ?于是就有了PPO算法:用另外一個 policy, 另外一個 actorθ′?去跟環境做互動(θ′?固定)。用θ′?收集到的數據去訓練θ

????????假設我們可以用θ′?收集到的數據去訓練?θ,意味著說我們可以把θ′?收集到的數據用非常多次,我們可以執行梯度上升(gradient ascent)好幾次,我們可以更新參數好幾次, 都只要用同一筆數據就好了。

????????因為假設θ?有能力學習另外一個 actorθ′?所采樣出來的數據的話, 那θ′?就只要采樣一次,采樣多一點的數據, 讓θ?去更新很多次,這樣就會比較有效率。

2 重要性采樣?

數學筆記:重要性采樣_UQI-LIUWJ的博客-CSDN博客

3 PPO

3.1 重要性權重

????????采用重要性采樣的思路,我們現在的 τ?是從θ′?采樣出來的,是拿θ′?去跟環境做互動。所以采樣出來的τ?是從θ′?采樣出來的,這兩個分布不一樣。但沒有關系,和重要性采樣一樣,我們補上一個重要性權重

????????這一項是很重要的,因為你要學習的是 θ ,和θ′?是不太一樣的:'θ′?會見到的情形跟 θ?見到的情形不見得是一樣的,所以中間要做一個修正的項。

?3.2 θ替換成θ’有什么好處?

????????現在跟環境做互動是θ′?而不是θ。所以采樣出來的東西跟θ?本身是沒有關系的。

????????所以可以讓θ′?做互動采樣一大堆的數據,然后θ?可以根據采樣得到的這一大堆數據,更新參數很多次,一直到θ?訓練到一定的程度,更新很多次以后,θ′?再重新去做采樣——>這樣可以省下很多的采樣時間

3.3 回顧:policy-based approach的policy gradient

????????在做 policy gradient 的時候,我們并不是給整個軌跡?τ?都一樣的分數,而是每一個狀態-動作的對(pair)會分開來計算。(強化學習筆記:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客4.2 小節)。

????????實際上更新梯度的時候,如下式所示。?

????????

?????????就是累積獎勵減掉 bias,這一項就是估測出來的。

3.4? PPO的policy gradient

????????我們通過重要性采樣把 θ?變成 θ′。所以現在st?、at??是 θ′?跟環境互動以后所采樣到的數據。

?????????但是要調整參數是θ,又因為?θ′?跟?θ?是不同的模型,所以你要做一個修正的項。這項修正的項,就是用重要性采樣的技術,把?st?,at??用?θ?采樣出來的概率除掉?st?、at??用?θ′?采樣出來的概率。

???于是我們得到下式:

?????????這邊需要做一件事情是,假設模型是 θ?的時候,你看到st??的概率,跟模型是θ′?的時候,你看到 st??的概率是差不多的,即?。因為它們是一樣的,所以你可以把它刪掉。

????????于是我們得到下式:

????????

? ? ? ? ? 于是我們用?θ′?去跟環境做互動,采樣出 st?、at??以后,你要去計算?st??跟?at??的 advantage,然后你再去把它乘上。??是好算的,可以從這個采樣的結果里面去估測出來的。在更新參數的時候,就是按照式(1) 來更新參數。

?3.4.1?為什么可以假設和?是差不多的?

????????因為你會看到什么狀態往往跟你會采取什么樣的動作是沒有太大的關系的。比如說你玩不同的 Atari 的游戲,其實你看到的游戲畫面都是差不多的,所以也許不同的 θ?對 st??是沒有影響的。

????????但更直覺的理由就是?很難算,想想看這項要怎么算,這一項說我有一個參數?θ,然后拿 θ?去跟環境做互動,算 st??出現的概率,這個你很難算。尤其如果輸入是圖片的話, 同樣的st??根本就不會出現第二次。你根本沒有辦法估這一項, 所以干脆就無視這個問題。

????????但是很好算。你手上有θ?這個參數,它就是個網絡。你就把 st??帶進去,(在Atari游戲的問題中,st??就是游戲畫面),它就會告訴你某一個狀態的?at??概率是多少。

???????所以這一項,你只要知道θ?和θ′?的參數就可以算。

3.3.5 PPO

????????????????注意,由于在 PPO 中θ′?是(上一輪更新的θ),所以 PPO 是 on-policy 的算法

? ? ? ? ?重要性采樣有一個問題:如果?跟這兩個分布差太多的話,重要性采樣的結果就會不好。怎么避免它差太多呢?這個就是?Proximal Policy Optimization (PPO) ?在做的事情。

????????我們在訓練的時候,多加一個約束(constrain)【類似于正則項】。這個約束是?θ?跟θ′?輸出的動作的 KL 散度(KL divergence),簡單來說,這一項的意思就是要衡量說θ?跟θ′?有多像。

? ? ? ? 這里為什么是減號,我們這樣想:在線性回歸問題中,我們通過梯度下降的方法,減少損失函數(所以損失函數的系數是正的),同時減少各參數的大小(所以正則項的系數也是正的)。在這里通過梯度上升的方法,增加獎勵(所以J的系數是正的),減少KL散度,所以KL散度的系數是負的

3.3.6?信任區域策略優化(Trust Region Policy Optimization,TRPO)

????????PPO 有一個前身叫做信任區域策略優化(Trust Region Policy Optimization,TRPO),TRPO 的式子如下式所示:

????????

?????????它與 PPO 不一樣的地方是約束擺的位置不一樣,PPO 是直接把約束放到你要優化的那個式子里面,然后你就可以用梯度上升的方法去最大化這個式子。

????????但 TRPO 是把 KL 散度當作約束,它希望 θ?跟θ′?的 KL 散度小于一個 δ。如果你使用的是基于梯度的優化時,這個約束是很難處理的。

????????TRPO 是很難處理的,因為它把 KL 散度約束當做一個額外的約束,沒有放目標函數里面,所以它很難算,所以一般就用 PPO 而不是 TRPO。

? ? ? ?一般的文獻上,PPO 跟 TRPO 性能差不多,但 PPO 在實現上比 TRPO 容易的多。

3.3.7? ? PPO的KL散度???????

????????公式里雖然是是直接把 KL 散度當做一個函數,輸入是 θ?跟θ′,但并不是說把θ?或 θ′?當做一個分布,算這兩個分布之間的距離。

????????所謂的θ?跟 θ′?的距離并不是參數上的距離,而是行為(behavior)上的距離。

???????行為上的距離是指,你先代進去一個狀態 s,它會對這個動作的空間輸出一個分布。假設你有 3 個動作,3 個可能的動作就輸出 3 個值。行為距離就是說,給定同樣的狀態,輸出動作之間的差距。這兩個θ對應動作的分布都是概率分布,所以就可以計算這兩個概率分布的 KL 散度。把不同的狀態輸出的這兩個分布的 KL 散度平均起來才是我這邊所指的兩個 actor (Θ)間的 KL 散度。

3.3.8?為什么不直接算 θ?和θ′?之間的距離?

????????在做強化學習的時候,之所以我們考慮的不是參數上的距離,而是動作上的距離,是因為很有可能對 actor 來說,參數的變化跟動作的變化不一定是完全一致的。

????????有時候你參數小小變了一下,它可能輸出的行為就差很多。或者是參數變很多,但輸出的行為可能沒什么改變。

????????所以我們真正在意的是這個 actor 的行為上的差距,而不是它們參數上的差距。

????????所以在做 PPO 的時候,所謂的 KL 散度并不是參數的距離,而是動作的距離。

3.3.9?adaptive KL penalty

?????????在設計J的時候,有一個問題就是β?要設多少。adaptive KL penalty 中使用了一個動態調整?β?的方法。

  • 在這個方法里面,你先設一個你可以接受的 KL 散度的最大值。假設優化完這個式子以后,你發現 KL 散度的項太大,那就代表說后面這個懲罰的項沒有發揮作用,那就把?β?調大。(θ和θ'差距過大——>目標函數的作用是為了減少θ和θ’的差距——>增大β)
  • 另外,你設一個 KL 散度的最小值。如果優化完上面這個式子以后,你發現 KL 散度比最小值還要小,那代表后面這一項的效果太強了,你怕他只弄后面這一項,那?θ?跟?θ‘?都一樣,這不是你要的,所以你要減少?β。(θ和θ'差距過小——>目標函數的作用是為了增大θ和θ’的差距——>減少β)

3.3.10 PPO-clip

????????算 KL 散度很復雜,于是就有了PPO-clip。

????????PPO-clip要去最大化的目標函數如下式所示,它的式子里面就沒有 KL 散度 。

????????

? ? ? ? 這里clip函數是截取的意思,第一個參數小于第二個參數的時候,返回第二個參數;大于第三個參數的時候,返回第三個參數;否則返回第一個參數?

? ? ? ??

?

????????雖然這個式子看起來有點復雜,實現起來是蠻簡單的,因為這個式子想要做的事情就是希望跟,在優化以后不要差距太大。

????????如果 A > 0,也就是某一個狀態-動作的對是好的,那我們希望增加這個狀態-動作對的概率。也就是說,我們想要讓越大越好,但它跟?的比值不可以超過?1+ε。

? ? ? ??如果 A < 0,也就是某一個狀態-動作對是不好的,我們希望把減小。壓到是?1???的時候就停了,就不要再壓得更小。

????????這樣的好處就是,你不會讓?跟差距太大。

參考資料:第五章 近端策略優化 (PPO) 算法 (datawhalechina.github.io)

總結

以上是生活随笔為你收集整理的强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。