1. 程式人生 > 實用技巧 >Proximal Policy Optimization (PPO)詳解

Proximal Policy Optimization (PPO)詳解

文章目錄

On-policy v.s. Off-policy

On-Policy方式指的是用於學習的agent與觀察環境的agent是同一個,所以引數θ始終保持一致。
Off-Policy方式指的是用於學習的agent與用於觀察環境的agent不是同一個,他們的引數θ可能不一樣。
比如下圍棋,On-Policy方式是agent親歷親為,而Off-Policy是一個agent看其他的agent下棋,然後去學習人家的東西。
在這裡插入圖片描述

將On-policy變為Off-policy

我在之前的部落格裡寫的Policy gradient用的是On-Policy,現在我們要將其變為Off-policy,那麼為什麼要變呢?看下圖藍線畫的部分,表示的是在某個actor的情況下,或者說是某個引數θ的情況下,隨機取樣出來不同的┏的期望(可以看看我的這篇部落格大致學習一下Policy Gradient詳解)然後我們利用梯度上升更新θ,但是θ只要一更新,這個期望就會變,也就是說當theta更新時,我們又必須重新計算期望了。這就導致了想找到一個好的θ太慢了。那麼我們使用Off-Policy能解決這個問題,我們使用Πθ‘去和環境做互動,我們可以得到在θ’下所隨機取出的樣本的期望,然後讓Πθ去利用這個這些樣本去訓練θ,現在,我們介紹一下Importance Sampling.


下圖的importance sampling中,那個Ex~p(f(x))表示x從p中取的情況下,f(x)的期望是多少?很明顯約等於1/N∑f(xi),但是我們現在規定不準從p中取x,只能從q中取x,那麼就有如下的式子轉換:藍框圈的部分是權重,p與q不能相差太多。
在這裡插入圖片描述
上面的那種做法有一個問題,雖然他們的期望可能相等或者相近,但經過證明,最後方差的式子是不一樣的,多了紅框圈出的部分,再次說明p與q不能差距太大。
在這裡插入圖片描述
看下面這張圖,先看等式左半邊,在p裡面取x,那麼p的左半邊被取的機率很高,然後左半邊又都是正的,然後代入f(x),但是f(x)的左邊都是負的,所以整個期望是負的。然後再看等式右邊,在q裡面取,q在右邊被取得機率大,然後q大於p,所以p\q小於1,然後f(x)又是正得,所以為正,但事實果真如此嗎?如果我現在sample到了一個左邊的點,f(x)就為負了,而且p\q>1,這將影響整個右邊的結果,可能為負,所以只有在取更多樣本時,下面這個式子才越準確。
在這裡插入圖片描述然後我們將On-policy轉換為Off-policy,如下圖所示,注意畫藍線的地方,我們是從θ‘sample的樣本,然後我們可以使用θ’的樣本去多次訓練θ。
在這裡插入圖片描述

在這裡插入圖片描述那個A就是advantage function,我這篇部落格裡有這個函式的簡介(可以看看我的這篇部落格大致學習一下Policy Gradient詳解
在這裡插入圖片描述

PPO演算法/TRPO演算法

PPO演算法是一種新型的Policy Gradient演算法,Policy Gradient演算法對步長十分敏感,但是又難以選擇合適的步長,在訓練過程中新舊策略的的變化差異如果過大則不利於學習。PPO提出了新的目標函式可以再多個訓練步驟實現小批量的更新,解決了Policy Gradient演算法中步長難以確定的問題。
在這裡插入圖片描述在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

PPO2

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

總結

在這裡插入圖片描述