使用off policy代替on policy的前提是,pθp_\thetapθp_{\theta'}不能差太多,否则效果不好。
问:如何保证“pθp_\thetapθp_{\theta'}不能差太多”?
答:近端优化策略 PPO/TRPO

1. PPO 正则化

Jθ(θ)J^{\theta'}(\theta)增加一个正则化项:
JPPOθ(θ)=Jθ(θ)βKL(θ,θ) J^{\theta'}_{PPO}(\theta) = J^{\theta'}(\theta) - \beta KL(\theta, \theta')

2. TRPO 带限制最优化

JTRPOθ(θ)=Jθ(θ)s.t.KL(θ,θ)<S \begin{aligned} J^{\theta'}_{TRPO}(\theta) = J^{\theta'}(\theta) \\ s.t. && KL(\theta, \theta') < S \end{aligned}

3. KL(θ,θ′)KL(\theta, \theta')KL(θ,θ′)

KL(θ,θ)KL(\theta, \theta')代表参数θ\thetaθ\theta'的距离。但不是它们的欧式距离或者KL散度。
而是这两个参数对某个state产生的action的分布的KL散度。

4. PPO算法过程

  1. 初始化θ0\theta^0
  2. 使用θk\theta^k与环境互动,收集{st,at}\{s_t, a_t\},计算Aθst,atA^\theta{s_t, a_t}
  3. 更新θ\theta,优化以下目标,可进行多次迭代:
    JPPOθk(θ)=Jθk(θ)βKL(θ,θk)Jθk(θ)st,atpθ(atst)pθk(atst)Aθk(st,at) \begin{aligned} J^{\theta^k}_{PPO}(\theta) = J^{\theta^k}(\theta) - \beta KL(\theta, \theta^k) \\ J^{\theta^k}(\theta) \approx \sum_{s_t,a_t} \frac{p_\theta(a_t|s_t)}{p^k_\theta(a_t|s_t)}A^{\theta^k}(s_t, a_t) \end{aligned}
  4. 多次迭代后调整β\beta
    if KL(θ,θk)KL(\theta, \theta^k) > threshold_max, then β\beta \uparrow
    if KL(θ,θk)KL(\theta, \theta^k) < threshold_min, then β\beta \downarrow

5. PPO2算法过程

  1. 同上
  2. 同上
  3. 目标函数替换为:
    JPPO2θk(θ)=st,atmin(PA,clip(P,1ϵ,1+ϵ)A)P=pθ(atst)pθk(atst)A=Aθk(st,at) \begin{aligned} J^{\theta^k}_{PPO2}(\theta) &=& \sum_{s_t,a_t} \min \left(PA, \text{clip} \left(P, 1-\epsilon, 1+\epsilon\right)A \right) \\ P &=& \frac{p_\theta(a_t|s_t)}{p^k_\theta(a_t|s_t)} \\ A &=& A^{\theta^k}(s_t, a_t) \end{aligned}

P、A是我为了简化表达自己加的变量。这个公式的直观解释如下:

图中绿色虚线代表P,蓝色虚线代表clip(P,1ϵ,1+ϵ)\text{clip} (P, 1-\epsilon, 1+\epsilon)
结合上后面的A:
当A>0时,实际生效的是P是左图红色部分。当A<0时,实际生效的是右图红色部分。这是min的效果。 假设a="">0,
希望pθ(atst)p_\theta(a_t|s_t)越大越好 ---> 沿红线上移
不希望P太大 ---> 移到1+ϵ1+\epsilon就没有benefit了,就不会动了。
A<0情况同理。

results matching ""

    No results matching ""