策略梯度方法
基本思路
策略梯度(Policy Gradients)方法特别适用于处理高维或连续的动作和状态空间,而这些在基于值的方法中通常很难处理。
From table to function
π(a∣s,θ)≈π(a∣s)
如果一个策略很好,那么对于所有的状态 s,状态价值 vπ(s) 的均值应当很大。因此我们的目标是最大化
J(θ)=ES∼d(S)[vπ(S)]=s∈S∑d(s)vπ(s)
从上式可以看出,目标函数只和策略函数相关。其中 d(s) 是稳态分布(stationary distribution)。向量 dπ=[dπ(s1),⋯,dπ(sn)]T 满足
dπT=dπTPπwhere (Pπ)ij=P(sj∣si)
可以使用梯度上升来最大化目标函数
∇θJ(θ)=s∈S∑d(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)
因为
∇θlnπ(a∣s,θ)=π(a∣s,θ)∇θπ(a∣s,θ)
带入目标梯度可得到
∇θJ(θ)=ES∼d(S),A∼π(A∣S,θ)[∇θlnπ(A∣S,θ)qπ(S,A)]
由于上式要求 π>0 ,策略函数一般使用 softmax functions,是一种探索性策略。
π(a∣s,θ)=∑a′∈Aexp(h(s,a′,θ))exp(h(s,a,θ)),a∈A
REINFORCE
我们可以使用蒙特卡洛近似估计值函数 q(s,a),并结合随机梯度上升算法,更新策略参数,这称为REINFORCE算法。
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
REINFORCE with baseline
REINFORCE 算法的一个主要缺点是不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡罗方法的通病。一种减少方差的通用方法是引入一个和动作 A 无关的baseline减小梯度的方差。
ES∼d,A∼π[∇θlnπ(A∣S,θ)qπ(S,A)]=ES∼d,A∼π[∇θlnπ(A∣S,θ)(qπ(S,A)−b(S))]
最优baseline
b∗(s)=EA∼π[∥∇θlnπ(A∣s,θt)∥2EA∼π[∥∇θlnπ(A∣s,θt)∥2qπ(s,A)],s∈S
目标函数为过于复杂,一般使用
b(s)=EA∼π[qπ(s,A)]=vπ(s),s∈S
随机梯度提升
θt+1=θt+α∇θlnπ(at∣st,θt)δt(st,at)
其中
δt(st,at)=qt(st,at)−vt(st)