强化学习笔记7:策略梯度 Policy Gradient
之前的策略优化,用的基本都是\(\epsilon\)-greedy的policy improve方法,这里介绍policy gradient法,不基于v、q函数
1. introduction
策略梯度是以\(P(a|s)\)入手,概率\(\pi(s,a)\)的形式,同样是model free的
\[
\pi_{\theta}(s, a)=\mathbb{P}[a \mid s, \theta]
\]
调整策略的概率分布,寻找最优策略\(\pi_*\)
特点
- 优点:
- 更好收敛性
- 高维、连续动作空间高效
- 从随机策略中学习
- 缺点:
- 会限于局部最优,而不是全局最优
- 评价策略的过程:低效、高方差
- 随机策略有时是最优策略,基于价值函数的策略有时会限于局部最优
Policy Objective function 策略目标函数
对于不同的任务,需要建立针对性的3种目标函数
- 1.Start Value:任务有始有终
\[
J_{1}(\theta)=V^{\pi_{\theta}}\left(s_{1}\right)=\mathbb{E}_{\pi_{\theta}}\left[v_{1}\right]
\] - 2.Average Value:连续任务,不停止。对所有状态求平均,d是状态s在策略\(\pi\theta\)下的分布函数。根据V值求P
\[
J_{a v V}(\theta)=\sum_{s} d^{\pi_{\theta}}(s) V^{\pi_{\theta}}(s)
\] 3.Average reward per time-step:连续任务,不停止。d是状态s在策略\(\pi\theta\)下的分布函数。根据R值求P
\[
J_{a v R}(\theta)=\sum_{s} d^{\pi_{\theta}}(s) \sum_{a} \pi_{\theta}(s, a) \mathcal{R}_{s}^{a}
\]Objective:优化目标函数
find \(\theta\) 最大化 \(J(\theta)\)
2. Finite Difference PG 有限差分策略梯度
对每个维度的权重,分别进行查分求梯度,然后迭代权重,至最优
特点:
- n次运算,求得n维的梯度
- 简单、噪声、偶尔高效
- 通用性好,任意策略可用,即使策略目标函数不可微
3. MC PG 蒙特卡洛策略梯度
要求:策略目标函数可微分,梯度可计算
引入了似然比概念
Likelihood ratios
Score function(not value function)
Trick here: 用似然比 Likelihood ratios
将\(\pi\)梯度,变为\(\pi\) 乘以 log 的梯度
函数在某个变量θ处的梯度等于该处函数值与该函数的对数函数在此处梯度的乘积 \(d log(y) = dy/y\),默认底数为\(e\)
\[
\begin{aligned}
\nabla_{\theta} \pi_{\theta}(s, a) &=\pi_{\theta}(s, a) \frac{\nabla_{\theta} \pi_{\theta}(s, a)}{\pi_{\theta}(s, a)} \\
&=\pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a)
\end{aligned}
\]Score function: \(\nabla_{\theta} \log \pi_{\theta}(s, a)\)
Softmax policy:策略概率按照指数分配
线性组合 -> softmax = \(\pi\) 是状态s下,采取每个a的概率
通过取对数,拆分为加法,进而表示为
Gaussian polisy:策略概率按照距离分配
- In continuous action spaces, a Gaussian policy is natural
- Mean is a linear combination of state features \(μ(s) = φ(s)^{T}θ\)
- Variance may be fixed σ , or can also parametrised Policy is Gaussian, a ∼ N (μ(s), σ2)
- The score function is
\[
\nabla_{\theta} \log \pi_{\theta}(s, a)=\frac{(a-\mu(s)) \phi(s)}{\sigma^{2}}
\]
在实际应用中,要注意梯度消失现象,可以利用代数方法求解
Policy Gradient theorem 策略梯度定理
One-step MDPs
没有序列,整个任务过程只有一步
- 状态s~d(s)
- r = R_{s,a}
用似然比,计算策略梯度:
先给出奖励函数,三种形式一样如下:
\[
\begin{aligned}
J(\theta) &=\mathbb{E}_{\pi_{\theta}}[r] \\
&=\sum_{s \in \mathcal{S}} d(s) \sum_{a \in \mathcal{A}} \pi_{\theta}(s, a) \mathcal{R}_{s, a} \\
\end{aligned}\]
相应梯度表示为:
\[
\begin{aligned}
\nabla_{\theta} J(\theta) &=\sum_{s \in \mathcal{S}} d(s) \sum_{a \in \mathcal{A}} \pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a) \mathcal{R}_{s, a} \\
&=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) r\right]
\end{aligned}
\]
对于多步的标准MDPs
用Q函数,替代R函数,即可表征序列到End的奖励
对于下列都适用:
- 初始价值函数:\(J = J_1\)
- 平均奖励函数: \(J_{avR}\)
- 平均价值函数: \(\frac{1}{1-\gamma}J_{avV}\)
对任意可微策略,梯度都为
\[
\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) Q^{\pi_{\theta}}(s, a)\right]
\]
MCPG 蒙特卡洛策略梯度法
- 采样 替代 期望
上节式子表示为Score function 和 Q 值在策略\(\pi\)下的期望
在MC中,在每个episode在\(\pi\)下,产生的序列就满足分布,整个过程都迭代完后的值,自然就是期望,因此梯度前没有概率分布函数,用常值替代。
- 特点:
- 动作平滑
- 收敛性好,但是慢
- 方差大
4. Actor-Critic PG AC策略梯度
ACPG提出,解决PG方差大的问题
为了加快更新速度,我们希望把回合更新变为,每步更新,需要Q的估计值(指导策略更新),引入函数逼近器,取代PG中的Q采样
\[
Q_W(s,a) \approx Q^{\pi \theta}(s,a)
\]
AC算法的主要部分
- Critic:用来估计价值函数,(更新q(s,a,w)的参数w)
- Actor:生成动作,(在critic的指引下,更新\(\pi_\theta\)的参数\(\theta\))
AC算法遵循, 近似策略梯度法
\[
\begin{aligned}
\nabla_{\theta} J(\theta) & \approx \mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) Q_{w}(s, a)\right] \\
\Delta \theta &=\alpha \nabla_{\theta} \log \pi_{\theta}(s, a) Q_{w}(s, a)
\end{aligned}
\]
例子:简单线性价值函数的AC算法
- Critic 线性组合,TD(0)
- Actor PG更新
逐步更新,在线实时
AC算法中的偏差
- 对PG的估计引入了偏差
- 正确选择价值函数,有利于减小、消灭偏差,but how???
Compatible function approximation 兼容函数估计
上节线性近似的价值函数引入了偏差,小心设计的Q函数满足:
1.近似价值函数的梯度完全等同于策略函数对数的梯度,即不存在重名情况:
\[
\nabla_{w} Q_{w}(s, a)=\nabla_{\theta} \log \pi_{\theta}(s, a)
\]
2.价值函数参数w使得均方差最小:
\[
\varepsilon=\mathbb{E}_{\pi_{\theta}}\left[\left(Q^{\pi_{\theta}}(s, a)-Q_{w}(s, a)\right)^{2}\right]
\]
此时策略梯度是准确的,满足
\[
\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) Q_{w}(s, a)\right]
\]
- 证明过程,(参数梯度 = 0)
Tricks——Advantage function critic
核心思想:减去一个baseline,将MSE的减数和被减数都 往 0 方向拉,减小偏差
Advantage function = PG减去B(s),好的B(s)是状态价值函数,V(s)是和策略无关的值,所以不改变梯度的期望的值
实现方法
通过两个估计函数 和 两套参数,分别估计V、Q,进而估计A
直接用v值运算
但是并不需要用2个估计函数,因为TD误差是Q-V的无偏估计
不同时间尺度下——Eligibility Traces
几种时间尺度下的更新算法
针对Critic过程使用TD(λ)
针对Actor过程使用TD(λ)
将TD(λ)的后向视角算法应用于实际问题时,可以在线实时更新,而且不需要完整的Episode。
PG是理论上是基于真实价值函数V(s)的
但是critic给PG提供了V的估计值,进而PG用估计的梯度去更新参数θ
结论是梯度也能使Actor更新到最优策略\(\pi\)
Natural policy gradient
高斯策略:按照期望和概率执行动作
缺点:对梯度估计不利,收敛性不好
Solution:Natural PG
- 参数化独立
估计值与真值近似
对目标函数改写(噪声为0下)
\[
\nabla_{\theta}^{\text {nat}} \pi_{\theta}(s, a)=G_{\theta}^{-1} \nabla_{\theta} \pi_{\theta}(s, a)
\]Fisher information matrix 费雪信息矩阵
G反应了对估计值的准确程度,值越大,梯度更新越小,抑制噪声
\[
G_{\theta}=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a)^{T}\right]
\]Compatible function approximation
\[
\nabla_{w} A_{w}(s, a)=\nabla_{\theta} \log \pi_{\theta}(s, a)
\]简化为
\[
\begin{aligned}
\nabla_{\theta} J(\theta) &=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) A^{\pi_{\theta}}(s, a)\right] \\
&=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) \nabla_{\theta} \log \pi_{\theta}(s, a)^{T} w\right] \\
&=G_{\theta} w \\
\nabla_{\theta}^{n a t} J(\theta) &=w
\end{aligned}
\]用Critic参数,更新Actor参数