Skip to content

Policy Gradient

记号说明

  1. p(st+1|st,at): Dynamics (环境)
  2. πθ(at|st): Policy (parameterized by θ) (策略)
  3. πθ(τ)=p(s1)(t=1T1πθ(at|st)p(st+1|st,at))πθ(aT|sT): Probability of this trajectory under policy πθ (这个策略下该轨迹的概率)
  4. pθ(τ)=t=1Tπθ(at|st): Probability of all the action under policy πθ and the states (i.e. probability of trajectory w/o dynamics) (固定该轨迹中的状态,这个策略下所有该轨迹中的动作的概率。也就是轨迹的概率除以所有环境的概率)

Off-Policy Policy Gradient

假设我们当前的 policy 是 θ ,而我们的数据是通过 θ 这个 old poilcy 采得的。

那么:

J(θ)=Eτπθ[πθ(τ)πθ(τ)r(τ)]=Eτπθ[p(s1)(t=1T1πθ(at|st)p(st+1|st,at))πθ(aT|sT)p(s1)(t=1T1πθ(at|st)p(st+1|st,at))πθ(aT|sT)r(τ)]=Eτπθ[t=1Tπθ(at|st)πθ(at|st)r(τ)]=Eτπθ[pθ(τ)pθ(τ)r(τ)]where pθ(τ)=t=1Tπθ(at|st) i.e. probability of trajectory w/o dynamics p(s|s,a)

接下来,就是求梯度。

(近似)梯度推导

最终结果就是:

θJ(θ)Eτθ[t=1Tpθ(at|st)pθ(at|st)θlogπθ(at|st)(t=tTr(st,at))]

关于上面这个式子的推导过程中的“近似”,我在下面回答几个问题:

几个问题

Q1: 我们为什么要把 删去?

A1:

  1. 避免 T 比较大的时候,这个 过大或者过小(过小是主因)。从而导致梯度爆炸或者梯度消失(同上文,梯度消失是主因)。

    为何 会过大/过小:既然 τ 是从旧策略 θ 中采样的一条路径,我们自然认为 t:pθ(at|st)>pθ(at|st) 是大概率的事件。如果 t 比较大,就会导致多个小于 1 的 pθ(at|st)pθ(at|st) 连乘,从而导致 过小

  2. T 比较大的时候,连乘式会大大增加方差,这也是我们不想要的

Q2: 为什么可以把 t=tT 删去?

A3: 删去之后,虽然式子就不再等于梯度,但是属于 policy iteration 这个算法框架了。Policy iteration 仍然可以对 πθ 进行优化

Q3: 为什么可以把 t=1t 删去?

A3: (见上面图片中最下方蓝色部分「为什么能这么做」)