一、策略迭代
如果使用值函数重新定义强化学习的目标,我们可以得到:RL就是找到最优的策略,使得每一个状态的价值最大化。相当于求解
π∗=argmaxaqπ∗(s,a)
而对于每一个状态对应的行为,我们希望找到使其价值最大化的行为:
a∗=argmaxaqπ∗(s,a)
可以看出为了求出最终的结果,我们需要同时更新交织在一起的策略与价值。这个问题有一个解决算法是 策略迭代法。
只要能得到精确的值函数,就可以使用贝尔曼公式求出最优策略,也就是说最优策略满足上面提到的公式2。
二、策略梯度
策略梯度法不采用迂回的方式更新策略,而是直接计算策略可能更新的方向。
回到问题的本质,RL的目标是最大化长期回报期望,于是目标可以写成如下形式:
π∗=argmaxπEτ∼π(τ)[r(τ)]
其中
τ 表示使用策略进行交互得到的一条轨迹,
r(τ) 表示这条轨迹的总体回报。由于值函数也是一个函数,我们可以将之表示为策略参数的函数,然后就可以通过求导的方式,使参数沿着梯度上升的方向更新,也就是提升策略了。这就是利用梯度的方法进行策略优化。
算法推导
将上述目标函数用
J(θ) 表示,将轨迹的期望回报展开,可以得到
J(θ)=Eτ∼πθ(τ)[r(τ)]=∫τ∼πθ(τ)πθ(τ)r(τ)dτ
由于策略函数通常是定义良好的函数,所以求导运算可以和积分运算互换,这样可以得到
∇θJ(θ)=∫τ∼πθ(τ)∇θπθ(τ)r(τ)dτ
为了方便计算,我们将上式进行一下变形。这里用到对数求导的基本公式
∇xlogy=y1∇xy
把
y 乘到左边可得到
y∇xlogy=∇xy
将
y 替换成
πθ(τ), 将
x 替换成
θ ,同时将公式左右两边互换,就可以得到
∇θπθ(τ)=πθ(τ)∇θlogπθ(τ)
带入前面的公式,得到
∇θJ(θ)=∫τ∼πθ(τ)πθ(τ)∇θlogπθ(τ)r(τ)dτ=Eτ∼πθ(τ)[∇θlogπθ(τ)r(τ)]
求出的梯度公式还是有不易计算的部分,比如
∇θlogπθ.下面将公式进一步拆解。之前我们说过,
τ 表示的是从状态
st 出发的某条路径,那么假设轨迹总长度为
T,将其展开可以得到:
π(τ)=π(s0,a0,⋯,sT,aT)=p(s0)t=0∏Tπθ(at∣st)p(st+1∣st,at)
对齐求导,可以得到
∇θlogπ(τ)=∇θlog[t=0∏Tπθ(at∣st)]=∇θ[p(s0)+t=0∑Tlogπθ(at∣st)+t=0∑Tlogπθp(st+1∣st,at)]=t=0∑T∇θlogπθ(at∣st)
到这里公式和最大似然公式没有区别。再想一下蒙特卡罗方法,他是一种通过随机采样估计期望的方法,所以我们可以通过样本序列逼近真实的期望,样本序列就是从状态
s和行为
a开始不断地与环境交互得到的,
st,at,st+1i,at+1ii=1N
将上式中的期望用蒙特卡罗近似的方法进行替换,可以得到求解梯度的最终形式
总结 PG方法
- 计算
∇θJ(θ)
- 更新参数
θ=θ+α∗∇θJθ