1. 程式人生 > 其它 >初識Proximal Policy Optimization (PPO)

初識Proximal Policy Optimization (PPO)

什麼是PPO

  • 是一種off-policy 的 policy gradient。
  • PPO enables multiple epochs of minibatch updates.

Importance Sampling

    • 可以在q的distribution裡sample data,不用直接從p裡sample data。
    • 但是得乘上一個weight,這個weight就是\(\frac{p(x)}{q(x)}\)
  • Issue:
    • Mean一樣但是Variance不一定是一樣的。
    • \(\frac{p(x)}{q(x)}\)比較大的時候,兩個的方差會差很多。
    • 如果sample的次數不夠多,那麼Mean和Variance可能都會差很多。

On-policy to Off-policy

    • 上面是On-policy,下面是Off-policy。
    • 主要是要用紅框裡的weight去做修正。
      • trajectory分別在兩個distribution中出現的概率。
  • Gradient for Update:
    • 實際上得到的A,應該是\(\theta'\)的,因為在\(\theta'\)中sample。
    • \(\frac{p_{\theta}(s_t)}{p_{\theta'}(s_t)}\):很難算,而且兩個應該要比較近似,所以刪去這一項。
    • 利用上面那個式子可以得到似然函式。HOW?

Add Constraint

  • 避免兩個distribution差太多,加constraint。
  • K-L Divergence: KL散度,量化兩種概率分佈之間差異的方式。
    • \(D_{KL}(p||q)=\sum_{i=1}^Np(x_i)\cdot log \frac{p(x_i)}{q(x_i)}\)

TRPO and PPO

  • TRPO是PPO的前身。
    • 用KL divergence作為一個penalty,而不是像TRPO那樣用constraint,希望減小KL散度,希望學出來的兩個不要太不一樣。
    • TRPO和PPO只是KL散度放的地方不一樣。
    • TRPO和PPO可能效果差不多,但是PPO在實操的時候更加容易。
  • 這裡KL散度不是引數上的舉例,而是behavior上的距離。
    • 給同個state的時候,output action distribution的差距。

PPO Algorithm

PPO1演算法

  • Adaptive KL Penalty Coefficient:KL Penalty是可以動態調整的,你自己先設定一個你能接受的KL最小值和最大值。
    • KL大於最大值,就增加β。
    • KL小於最小值,就減小β。

PPO2演算法

  • PPO1使用KL散度,PPO2就不用KL散度了。
  • Clip:

Pseudo Code

Reference