之前学习的强化学习方法是值函数的方法,目标是求取最优策略(是状态空间到动作空间的一个映射),而之前的方法主要是针对有限动作空间的情况,对于连续动作空间,需要考虑使用策略梯度的强化学习方法。
策略梯度方法是指将策略参数化
πθ(s),表示连续空间的策略,通过优化参数
θ使得累积回报
E[∑t=0HR(st)∣πθ]最大化。
和之前的值函数方法相比,策略梯度方法具有以下几个特点:
(1)参数简单,收敛性好,但容易陷入局部最小值
(2)可以解决连续动作空间问题
(3)可以集成随机策略,但评估单个策略时不充分,方差较大
策略梯度的推导(似然概率角度)
用
τ表示一组状态行为轨迹
s0,u0,...,sH,uH,
定义该轨迹的回报为
R(τ)=∑t=0HR(st,ut)
定义在某个策略参数下该轨迹出现的概率为
P(τ;θ)
那么强化学习的目标为:
U(θ)=E[∑t=0HR(st)∣πθ]=∑τP(τ;θ)R(τ)
使用梯度下降法求解
θnew=θold+α∇θU(θ)
其中$\nabla_{\theta}U(\theta)=\nabla_{\theta} \sum_{\tau}P(\tau;\theta)R(\tau) \ =\sum_{\tau}\nabla_{\theta}P(\tau;\theta)R(\tau) = \sum_{\tau}P(\tau;\theta)\nabla_{\theta}logP(\tau;\theta) R(\tau) $
即$ \nabla_{\theta}U(\theta) = E \big[\nabla_{\theta}logP(\tau;\theta) R(\tau) \big] \approx \frac{1}{m}\sum_{i=1}^{m}\nabla_{\theta}logP(\tau;\theta) R(\tau)$
策略梯度的推导(重要性采样角度)
强化学习的目标为:
U(θ)=E[∑t=0HR(st)∣πθ]=∑τP(τ∣θ)R(τ)
使用参数
θold产生的数据评估参数
θ的期望汇报,可以根据重要性采样得到:
U(θ)=∑τP(τ∣θold)P(τ∣θold)P(τ∣θ)R(τ)=Eτ∼θold[P(τ∣θold)P(τ∣θ)R(τ)]
导数为:
$ \nabla_{\theta}U(\theta)=E_{\tau \sim \theta_{old} } \big[ \frac{\nabla_{\theta}P(\tau|\theta)}{P(\tau|\theta_{old})}R(\tau)\big]$
$ \nabla_{\theta}U(\theta)|{\theta{old}}=E_{\tau \sim \theta_{old} } \big[ \frac{\nabla_{\theta}P(\tau|\theta)|{\theta{old}}}{P(\tau|\theta_{old})}R(\tau)\big]=E_{\tau \sim \theta_{old} } \big[ log\nabla_{\theta}P(\tau|\theta)|{\theta{old}}R(\tau) \big]$
从重要性采样的角度推导出来的策略梯度与似然概率角度的结果相同,并且得到了原来目标函数新的损失函数:
U(θ)=Eτ∼θold[P(τ∣θold)P(τ∣θ)R(τ)]
策略梯度
在$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}^{m}\nabla_{\theta}logP(\tau;\theta) R(\tau)
中,\nabla_{\theta}logP(\tau;\theta)
表示轨迹\tau
的概率随着参数变化最陡的方向,R(\tau)$控制参数的正负方向和步长,策略梯度就是迭代参数增加高回报路径的概率,减小低回报路径的概率。接下来需要考虑这两个式子的求解。
似然率梯度
∇θlogP(τ;θ)的求解
∇θlogP(τ(i);θ)=∇θlog[∏t=0HP(st+1(i)∣st(i),ut(i))∗πθ(ut(i)∣st(i))]
=∇θ[∑t=0Hlogπθ(ut(i)∣st(i))]=∑t=0H∇θlogπθ(ut(i)∣st(i))
上式似然率为状态动作函数的梯度。
也就是说$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}{m}\sum_{t=0}{H}\nabla_{\theta}log\pi_{\theta}(u_{t}{(i)}|s_{t}{(i)})R(\tau^{(i)})$
这个策略态度是无偏的,但是方差回比较大。可以通过修改回报函数的方法减小方差,如增加基线,即:
$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}{m}\sum_{t=0}{H}\nabla_{\theta}log\pi_{\theta}(u_{t}{(i)}|s_{t}{(i)})(R(\tau^{(i)} )- b)$
其中b可以通过最小方差的方法求得(证明略)
b=∑i=1m[(∑t=0H∇θlogπθ(ut(i)∣st(i)))2)∑i=1m[(∑t=0H∇θlogπθ(ut(i)∣st(i)))2R(τ(i))]
随机策略
随机策略一般是确定性策略和随机部分的加和,即
πθ=uθ+ϵ,ϵ∼N(0,σ2)
- 线性策略
uθ(s)=ϕ(s)Tθ
因此
πθ(s)∼N(uθ(s),σ2)
即
πθ(s)∼2π
σ1exp(−2σ2(u−ϕ(s)Tθ)2)
利用该分布采样,得到
ut(i),然后可以得到
∇θlogπθ(ut(i)∣st(i))=σ2(u−ϕ(s)Tθ)ϕ(s)Tθ)
其中可以看到方差参数
σ控制这策略的探索性。
还有其他策略,如径向基策略:
uθ(s)=ϕ(s)Tω,其中
ϕi(s)=exp(−21(s−ui)Tdi(s−ui)),参数
θ=ω,ui,di
整体策略梯度的求解
$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}{m}\sum_{t=0}{H}\nabla_{\theta}log\pi_{\theta}(u_{t}{(i)}|s_{t}{(i)})(R(\tau^{(i)} )- b)$
从上式可以看出每一个动作对应的梯度值都包含整个轨迹的回报,其实当前的动作与过去的回报是没有关系的(没有搞明白为啥),因此可以修改回报函数,有两种方法
第一种是:
$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}{m}\sum_{t=0}{H} \big ( \sum_{j=0}{t}\nabla_{\theta}log\pi_{\theta}(u_{t}{(i)}|s_{t}{(i)})(r_j{(i)}- b_j) \big)$
第二种
$ \nabla_{\theta}U(\theta) \approx \frac{1}{m}\sum_{i=1}{m}\sum_{t=0}{H} \nabla_{\theta}log\pi_{\theta}(u_{t}{(i)}|s_{t}{(i)})\big ( \sum_{j=t}{H-1}(r_j{(i)}- b_j) \big)$
参考书籍:
- 深入浅出强化学习原理入门
欢迎关注微信公众号:AITBOOK