Lecture 7 基于策略梯度的算法
摘要 :本章系统介绍了基于策略梯度的强化学习方法。与基于价值函数的方法不同,策略梯度直接参数化策略 πθ(a∣s)\pi_\theta(a|s)πθ(a∣s),并通过梯度上升优化策略参数 θ\thetaθ 以最大化期望回报 J(θ)J(\theta)J(θ)。核心内容包括:策略参数化(Softmax策略用于离散动作、高斯策略用于连续动作)、策略梯度推导(利用似然比技巧)、蒙特卡罗策略梯度估计、REINFORCE算法、以及为降低方差而引入的因果关系和基线方法。最后介绍了Actor-Critic框架,其中Actor负责选择动作,Critic负责评价动作价值。策略梯度的本质是鼓励高回报动作,抑制低回报动作。
1. 基于策略的强化学习
强化学习的本质目标是:
找到一个策略,使智能体在环境中获得尽可能高的长期回报。
前面几节课中,我们主要学习的是 基于价值函数的强化学习方法,例如:
- Q-learning;
- Sarsa;
- DQN;
- 基于 Q(s,a)Q(s,a)Q(s,a) 的贪婪或 ϵ\epsilonϵ-贪婪策略。
这类方法通常先学习价值函数,再通过价值函数间接得到策略:
π(s)=argmaxaQ(s,a) \pi(s)=\arg\max_a Q(s,a) π(s)=argamaxQ(s,a)
而策略梯度方法的思想不同:
策略梯度方法直接学习策略本身,而不是先学习价值函数再推出策略。
2. 基于价值的方法 vs 基于策略的方法
2.1 基于价值的方法
基于价值的方法通常学习一个动作价值函数:
Q(s,a) Q(s,a) Q(s,a)
然后通过贪婪方式选择动作:
a=argmaxaQ(s,a) a=\arg\max_a Q(s,a) a=argamaxQ(s,a)
这种方法适合动作空间较小、动作离散的问题。
但是它也有一些局限:
- 如果动作空间非常大,计算 argmaxaQ(s,a)\arg\max_a Q(s,a)argmaxaQ(s,a) 代价很高;
- 如果动作空间是连续的,无法枚举所有动作;
- ϵ\epsilonϵ-贪婪策略的随机性较简单,不是真正灵活的随机策略;
- 价值函数估计误差可能导致策略不稳定。
2.2 基于策略的方法
基于策略的方法直接参数化策略:
πθ(a∣s) \pi_\theta(a\mid s) πθ(a∣s)
其中:
- θ\thetaθ 是策略参数;
- 输入状态 sss;
- 输出在状态 sss 下选择动作 aaa 的概率。
也就是说,策略本身就是一个带参数的函数:
s→πθ(a∣s) s \rightarrow \pi_\theta(a\mid s) s→πθ(a∣s)
基于策略的方法学习的是动作概率分布,而不是动作价值表。
3. 策略参数化
策略梯度方法通常假设策略是可微的参数化函数:
πθ(a∣s) \pi_\theta(a\mid s) πθ(a∣s)
如果用神经网络表示策略,则:
- 输入是状态 sss;
- 输出是每个动作的概率;
- 网络参数为 θ\thetaθ;
- 学习目标是调整 θ\thetaθ,使策略获得更高回报。
策略优化的核心问题是:
如何找到最优参数 θ∗\theta^*θ∗,使策略 πθ\pi_\thetaπθ 的表现最好?
记目标函数为:
J(θ) J(\theta) J(θ)
则优化目标为:
θ∗=argmaxθJ(θ) \theta^*=\arg\max_\theta J(\theta) θ∗=argθmaxJ(θ)
策略梯度的核心任务是:直接对策略参数 θ\thetaθ 进行优化。
4. 基于策略强化学习的优势
策略梯度方法相比基于价值的方法,有以下优势:
4.1 适合连续动作空间
在连续动作空间中,动作取值可能有无穷多个。
例如:
- 机器人关节控制;
- 自动驾驶方向盘角度;
- 机械臂力矩控制;
- 飞行器控制。
此时,基于价值的方法很难枚举所有动作并求:
argmaxaQ(s,a) \arg\max_a Q(s,a) argamaxQ(s,a)
而策略方法可以直接输出动作分布,例如高斯分布:
a∼N(μ,σ2) a\sim \mathcal{N}(\mu,\sigma^2) a∼N(μ,σ2)
4.2 可以学习随机策略
很多任务中,最优策略本身可能就是随机的。
例如石头剪刀布中,如果总是出同一个动作,就容易被对手针对。因此,一个合理策略应当是随机分布。
策略梯度可以直接学习随机策略,而不仅仅是使用简单的 ϵ\epsilonϵ-贪婪探索。
4.3 策略表示更自然
策略梯度直接输出动作概率:
πθ(a∣s) \pi_\theta(a\mid s) πθ(a∣s)
可以表达:
- 某状态下更倾向于哪个动作;
- 多个动作之间的概率分布;
- 连续动作的概率密度。
5. 策略优化目标
策略梯度需要定义一个目标函数 J(θ)J(\theta)J(θ),用来衡量策略 πθ\pi_\thetaπθ 的好坏。
5.1 Episodic 环境中的目标
在有完整 episode 的任务中,可以使用从初始状态开始的期望回报:
J(θ)=vπθ(s1) J(\theta)=v_{\pi_\theta}(s_1) J(θ)=vπθ(s1)
也可以写为:
J(θ)=Eπθ[G1] J(\theta)=\mathbb{E}{\pi\theta}[G_1] J(θ)=Eπθ[G1]
其中:
Gt=∑k=0T−t−1γkRt+k+1 G_t=\sum_{k=0}^{T-t-1}\gamma^kR_{t+k+1} Gt=k=0∑T−t−1γkRt+k+1
表示从时刻 ttt 开始的折扣回报。
5.2 连续任务中的目标
在没有明确终止状态的连续任务中,可以使用平均价值:
$$
J_{\text{avgV}}(\theta)
\sum_s d^{\pi_\theta}(s)v_{\pi_\theta}(s)
也可以使用平均奖励: ##
J_{\text{avgR}}(\theta)
\sum_s d^{\pi_\theta}(s)
\sum_a \pi_\theta(a\mid s)R_s^a
其中: * dπθ(s)d\^{\\pi_\\theta}(s)dπθ(s) 是策略 πθ\\pi_\\thetaπθ 下状态 sss 的稳态分布; * RsaR_s\^aRsa 是在状态 sss 执行动作 aaa 的奖励期望。 **无论目标函数怎么定义,本质都是衡量策略 πθ\\pi_\\thetaπθ 能获得多高的期望回报。** *** ** * ** *** ### 6. 策略优化方法 如果目标函数 J(θ)J(\\theta)J(θ) 可微,可以使用梯度上升: θ←θ+α∇θJ(θ) \\theta \\leftarrow \\theta+\\alpha\\nabla_\\theta J(\\theta) θ←θ+α∇θJ(θ) 其中: * α\\alphaα 是学习率; * ∇θJ(θ)\\nabla_\\theta J(\\theta)∇θJ(θ) 是目标函数对参数 θ\\thetaθ 的梯度。 注意这里是 **梯度上升** ,因为我们希望最大化 J(θ)J(\\theta)J(θ)。 如果 J(θ)J(\\theta)J(θ) 不可微,可以使用无导数优化方法,例如: * 交叉熵法; * 有限差分法; * 进化策略。 **策略梯度方法的关键是计算或估计 ∇θJ(θ)\\nabla_\\theta J(\\theta)∇θJ(θ)。** *** ** * ** *** ### 7. 无导数优化方法 #### 7.1 交叉熵法 交叉熵法(Cross-Entropy Method, CEM)适用于目标函数不可微的情况。 基本思想: 1. 假设参数 θ\\thetaθ 来自某个分布,例如正态分布: θ∼N(μ,σ2) \\theta\\sim \\mathcal{N}(\\mu,\\sigma\^2) θ∼N(μ,σ2) 2. 从该分布中采样多个参数 θ1,θ2,⋯ ,θN\\theta_1,\\theta_2,\\cdots,\\theta_Nθ1,θ2,⋯,θN; 3. 分别计算每个参数对应的目标函数值: J(θi) J(\\theta_i) J(θi) 4. 选出表现最好的前一部分样本; 5. 用这些优秀样本重新估计分布参数 μ,σ\\mu,\\sigmaμ,σ; 6. 重复采样与更新,直到找到较优参数。 **交叉熵法通过不断让参数分布向高回报区域集中来优化策略。** *** ** * ** *** #### 7.2 有限差分法 有限差分法通过扰动参数估计梯度。 对于参数 θ\\thetaθ 的第 kkk 个维度,有: ∂J(θ)∂θk≈J(θ+ϵuk)−J(θ)ϵ \\frac{\\partial J(\\theta)}{\\partial \\theta_k} \\approx \\frac{J(\\theta+\\epsilon u_k)-J(\\theta)}{\\epsilon} ∂θk∂J(θ)≈ϵJ(θ+ϵuk)−J(θ) 其中: * ϵ\\epsilonϵ 是一个很小的扰动; * uku_kuk 是第 kkk 个方向的单位向量。 有限差分法的缺点: * 每个参数维度都要单独计算; * 参数维度很高时计算效率低; * 更适合用于校验梯度,而不是大规模训练。 *** ** * ** *** ### 8. 策略梯度的解析计算 策略梯度方法希望直接计算: ∇θJ(θ) \\nabla_\\theta J(\\theta) ∇θJ(θ) 其中一个关键技巧是: ##
\nabla_\theta \pi_\theta(s,a)
\pi_\theta(s,a)\nabla_\theta \log \pi_\theta(s,a)
推导如下: ##
\nabla_\theta \log \pi_\theta(s,a)
\frac{\nabla_\theta \pi_\theta(s,a)}
{\pi_\theta(s,a)}
因此: ##
\nabla_\theta \pi_\theta(s,a)
\pi_\theta(s,a)\nabla_\theta \log \pi_\theta(s,a)
这个技巧称为 **log-derivative trick** 或 **似然比技巧**。 **似然比技巧可以把对概率本身的梯度,转化为对 log 概率的梯度。** *** ** * ** *** ### 9. Softmax 策略 对于离散动作空间,常用 Softmax 策略表示动作概率。 假设状态-动作特征为: ϕ(s,a) \\phi(s,a) ϕ(s,a) 策略参数为 θ\\thetaθ,则动作偏好值为: ϕ(s,a)Tθ \\phi(s,a)\^T\\theta ϕ(s,a)Tθ Softmax 策略定义为: ##
\pi_\theta(a\mid s)
\frac{\exp(\phi(s,a)^T\theta)}
{\sum_{a'}\exp(\phi(s,a')^T\theta)}
它可以把任意实数偏好值转换为动作概率分布。 *** ** * ** *** #### 9.1 Softmax 策略梯度 Softmax 策略的 log 梯度为: ##
\nabla_\theta\log \pi_\theta(a\mid s)
\phi(s,a)
\mathbb{E}{\pi \theta}[\phi(s,\cdot)]
其中: ##
\mathbb{E}{\pi\theta}[\phi(s,\cdot)]
\sum_{a'}\pi_\theta(a'\mid s)\phi(s,a')
直观理解: * 如果当前动作的特征优于平均特征,就增加其概率; * 如果当前动作的特征低于平均特征,就降低其概率。 **Softmax 策略适合离散动作空间,可以输出每个动作的概率。** *** ** * ** *** ### 10. 高斯策略 对于连续动作空间,可以使用高斯策略。 假设动作服从高斯分布: a∼N(μ(s),σ2) a\\sim \\mathcal{N}(\\mu(s),\\sigma\^2) a∼N(μ(s),σ2) 其中均值由参数化函数给出: μ(s)=ϕ(s)Tθ \\mu(s)=\\phi(s)\^T\\theta μ(s)=ϕ(s)Tθ 则策略为: ##
\pi_\theta(a\mid s)
\frac{1}{\sqrt{2\pi}\sigma}
\exp\left(
-\frac{(a-\mu(s))2}{2\sigma2}
\right)
对应的 log 策略梯度为: ##
\nabla_\theta\log\pi_\theta(a\mid s)
\frac{(a-\mu(s))\phi(s)}{\sigma^2}
**高斯策略可以自然处理连续动作空间。** *** ** * ** *** ### 11. 蒙特卡罗策略梯度 策略梯度的目标是最大化期望回报: J(θ)=Eτ∼πθ\[R(τ)\] J(\\theta)=\\mathbb{E}_{\\tau\\sim\\pi_\\theta}\[R(\\tau)\] J(θ)=Eτ∼πθ\[R(τ)\] 其中: * τ\\tauτ 表示一条完整轨迹; * R(τ)R(\\tau)R(τ) 表示该轨迹的总回报; * τ\\tauτ 由策略和环境共同产生。 轨迹可以写为: τ=(s0,a0,r1,s1,a1,r2,⋯ ,sT) \\tau=(s_0,a_0,r_1,s_1,a_1,r_2,\\cdots,s_T) τ=(s0,a0,r1,s1,a1,r2,⋯,sT) 轨迹总回报为: R(τ)=∑t=0T−1rt R(\\tau)=\\sum_{t=0}\^{T-1}r_t R(τ)=t=0∑T−1rt 或折扣形式: R(τ)=∑t=0T−1γtrt R(\\tau)=\\sum_{t=0}\^{T-1}\\gamma\^t r_t R(τ)=t=0∑T−1γtrt **蒙特卡罗策略梯度通过采样完整轨迹来估计策略梯度。** *** ** * ** *** ### 12. 单步 MDP 的策略梯度 在单步 MDP 中,智能体只执行一步动作并获得奖励。 目标函数为: J(θ)=Eπθ\[r\] J(\\theta)=\\mathbb{E}_{\\pi_\\theta}\[r\] J(θ)=Eπθ\[r\] 展开为: ##
J(\theta)
\sum_s d(s)\sum_a \pi_\theta(a\mid s)r(s,a)
对 θ\\thetaθ 求梯度: ##
\nabla_\theta J(\theta)
\sum_s d(s)\sum_a
\pi_\theta(a\mid s)
\nabla_\theta\log\pi_\theta(a\mid s)r(s,a)
写成期望形式: ##
\nabla_\theta J(\theta)
\mathbb{E}{\pi \theta}
r\\nabla_\\theta\\log\\pi_\\theta(a\\mid s)
**单步情形中,奖励越高的动作,其 log 概率梯度会被越强地鼓励。** *** ** * ** *** ### 13. 多步 MDP 的策略梯度 在多步 MDP 中,一条轨迹的概率为: ##
P(\tau;\theta)
\mu(s_0)
\prod_{t=0}^{T-1}
\pi_\theta(a_t\mid s_t)
P(s_{t+1}\mid s_t,a_t)
其中: * μ(s0)\\mu(s_0)μ(s0) 是初始状态分布; * πθ(at∣st)\\pi_\\theta(a_t\\mid s_t)πθ(at∣st) 是策略产生动作的概率; * P(st+1∣st,at)P(s_{t+1}\\mid s_t,a_t)P(st+1∣st,at) 是环境转移概率。 目标函数为: ##
J(\theta)
\sum_\tau P(\tau;\theta)R(\tau)
对 θ\\thetaθ 求梯度: ##
\nabla_\theta J(\theta)
\sum_\tau \nabla_\theta P(\tau;\theta)R(\tau)
使用似然比技巧: ##
\nabla_\theta J(\theta)
\sum_\tau P(\tau;\theta)R(\tau)
\nabla_\theta\log P(\tau;\theta)
写成期望形式: ##
\nabla_\theta J(\theta)
\mathbb{E}{\tau\sim\pi \theta}
R(\\tau)\\nabla_\\theta\\log P(\\tau;\\theta)
*** ** * ** *** ### 14. 环境模型为何可以被消去 展开轨迹 log 概率: ##
\log P(\tau;\theta)
\log\mu(s_0)
\sum_{t=0}^{T-1}
\log\pi_\theta(a_t\mid s_t)
\sum_{t=0}^{T-1}
\log P(s_{t+1}\mid s_t,a_t)
对 θ\\thetaθ 求梯度时: * 初始状态分布 μ(s0)\\mu(s_0)μ(s0) 与 θ\\thetaθ 无关; * 环境转移概率 P(st+1∣st,at)P(s_{t+1}\\mid s_t,a_t)P(st+1∣st,at) 与 θ\\thetaθ 无关; * 只有策略项 πθ(at∣st)\\pi_\\theta(a_t\\mid s_t)πθ(at∣st) 与 θ\\thetaθ 有关。 因此: ##
\nabla_\theta\log P(\tau;\theta)
\sum_{t=0}^{T-1}
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
所以: ##
\nabla_\theta J(\theta)
\mathbb{E}{\tau\sim\pi \theta}
\left[
R(\tau)
\sum_{t=0}^{T-1}
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
\right]
**策略梯度不需要知道环境转移概率,只需要知道策略本身的 log 概率梯度。** *** ** * ** *** ### 15. 采样估计策略梯度 实际中无法枚举所有轨迹,因此用采样近似期望。 采样 mmm 条轨迹: τ1,τ2,⋯ ,τm \\tau_1,\\tau_2,\\cdots,\\tau_m τ1,τ2,⋯,τm 则策略梯度可以估计为: ∇θJ(θ)≈1m∑i=1mR(τi)∑t=0T−1∇θlogπθ(ati∣sti) \\nabla_\\theta J(\\theta) \\approx \\frac{1}{m} \\sum_{i=1}\^{m} R(\\tau_i) \\sum_{t=0}\^{T-1} \\nabla_\\theta\\log\\pi_\\theta(a_t\^i\\mid s_t\^i) ∇θJ(θ)≈m1i=1∑mR(τi)t=0∑T−1∇θlogπθ(ati∣sti) 对应参数更新为: θ←θ+α1m∑i=1mR(τi)∑t=0T−1∇θlogπθ(ati∣sti) \\theta \\leftarrow \\theta + \\alpha \\frac{1}{m} \\sum_{i=1}\^{m} R(\\tau_i) \\sum_{t=0}\^{T-1} \\nabla_\\theta\\log\\pi_\\theta(a_t\^i\\mid s_t\^i) θ←θ+αm1i=1∑mR(τi)t=0∑T−1∇θlogπθ(ati∣sti) **这说明:高回报轨迹中的动作概率会被提高,低回报轨迹中的动作概率会被降低。** *** ** * ** *** ### 16. 策略梯度的直观理解 策略梯度公式可以分成两部分: R(τ)∑t∇θlogπθ(at∣st) R(\\tau) \\sum_t\\nabla_\\theta\\log\\pi_\\theta(a_t\\mid s_t) R(τ)t∑∇θlogπθ(at∣st) 其中: 1. R(τ)R(\\tau)R(τ) 是轨迹得分; 2. ∇θlogπθ(at∣st)\\nabla_\\theta\\log\\pi_\\theta(a_t\\mid s_t)∇θlogπθ(at∣st) 表示如何调整参数,使该动作在该状态下更可能发生。 因此: * 如果一条轨迹得分高,就增加这条轨迹中动作的概率; * 如果一条轨迹得分低,就减少这条轨迹中动作的概率; * 如果奖励为负,则会抑制对应动作。 **策略梯度本质上是在鼓励带来高回报的动作,抑制带来低回报的动作。** *** ** * ** *** ### 17. 与最大似然估计的比较 最大似然估计常用于模仿学习。 如果有专家数据: (s1,a1),(s2,a2),⋯ (s_1,a_1),(s_2,a_2),\\cdots (s1,a1),(s2,a2),⋯ 最大似然的目标是让策略更可能输出专家动作: ##
\nabla_\theta
\sum_t
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
策略梯度相比最大似然多了一个权重: R(τ) R(\\tau) R(τ) 即: ##
\nabla_\theta J(\theta)
R(\tau)
\sum_t
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
区别是: * 最大似然:所有专家动作都被鼓励; * 策略梯度:只有带来高回报的动作被强烈鼓励。 **策略梯度可以看作带奖励权重的最大似然学习。** *** ** * ** *** ### 18. 策略梯度方差大的问题 原始策略梯度估计为: ∇θJ(θ)≈1m∑i=1mR(τi)∑t=0T−1∇θlogπθ(ati∣sti) \\nabla_\\theta J(\\theta) \\approx \\frac{1}{m} \\sum_{i=1}\^{m} R(\\tau_i) \\sum_{t=0}\^{T-1} \\nabla_\\theta\\log\\pi_\\theta(a_t\^i\\mid s_t\^i) ∇θJ(θ)≈m1i=1∑mR(τi)t=0∑T−1∇θlogπθ(ati∣sti) 该估计存在问题: * 使用整条轨迹总回报 R(τ)R(\\tau)R(τ) 给每个动作打分; * 一个动作可能被与它无关的未来或过去奖励影响; * 采样轨迹随机性很强; * 估计方差较大,训练容易不稳定。 **策略梯度虽然无偏,但原始形式方差很大。** *** ** * ** *** ### 19. 使用时序因果关系降低方差 一个动作只能影响它之后发生的奖励,不能影响它之前已经发生的奖励。 因此,在时刻 ttt 的动作 ata_tat,不应使用整条轨迹回报 R(τ)R(\\tau)R(τ) 打分,而应使用从时刻 ttt 开始的回报: Gt=∑t′=tT−1rt′ G_t=\\sum_{t'=t}\^{T-1}r_{t'} Gt=t′=t∑T−1rt′ 若使用折扣回报,则: Gt=∑k=0T−t−1γkrt+k G_t=\\sum_{k=0}\^{T-t-1}\\gamma\^k r_{t+k} Gt=k=0∑T−t−1γkrt+k 于是策略梯度变为: ##
\nabla_\theta J(\theta)
\mathbb{E}{\pi \theta}
\left[
\sum_{t=0}^{T-1}
G_t
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
\right]
采样估计为: ∇θJ(θ)≈1m∑i=1m∑t=0T−1Gti∇θlogπθ(ati∣sti) \\nabla_\\theta J(\\theta) \\approx \\frac{1}{m} \\sum_{i=1}\^{m} \\sum_{t=0}\^{T-1} G_t\^i \\nabla_\\theta\\log\\pi_\\theta(a_t\^i\\mid s_t\^i) ∇θJ(θ)≈m1i=1∑mt=0∑T−1Gti∇θlogπθ(ati∣sti) **利用因果关系后,每个动作只由它之后的回报评价,从而降低方差。** *** ** * ** *** ### 20. REINFORCE 算法 REINFORCE 是一种经典的蒙特卡罗策略梯度算法。 它使用完整 episode 采样,并用回报 GtG_tGt 更新策略参数。 更新公式为: θ←θ+αGt∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha G_t \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αGt∇θlogπθ(At∣St) 若使用折扣形式,也可以写为: θ←θ+αγtGt∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha \\gamma\^tG_t \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αγtGt∇θlogπθ(At∣St) *** ** * ** *** #### 20.1 REINFORCE 算法流程 1. 初始化策略参数 θ\\thetaθ; 2. 使用当前策略 πθ\\pi_\\thetaπθ 生成一条完整 episode: S0,A0,R1,S1,A1,⋯ ,ST S_0,A_0,R_1,S_1,A_1,\\cdots,S_T S0,A0,R1,S1,A1,⋯,ST 3. 对每个时间步 ttt,计算回报: Gt=∑k=tT−1γk−tRk+1 G_t=\\sum_{k=t}\^{T-1}\\gamma\^{k-t}R_{k+1} Gt=k=t∑T−1γk−tRk+1 4. 更新策略参数: θ←θ+αGt∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha G_t \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αGt∇θlogπθ(At∣St) 5. 重复以上过程。 **REINFORCE 是用蒙特卡罗回报直接更新策略参数的策略梯度算法。** *** ** * ** *** ### 21. 使用基线降低方差 REINFORCE 仍然可能存在较大方差,因此可以加入基线 b(s)b(s)b(s)。 更新公式变为: ##
\nabla_\theta J(\theta)
\mathbb{E}{\pi \theta}
\left[
\sum_{t=0}^{T-1}
(G_t-b(S_t))
\nabla_\theta\log\pi_\theta(A_t\mid S_t)
\right]
其中: * GtG_tGt 是当前动作之后的回报; * b(St)b(S_t)b(St) 是状态 StS_tSt 下的基线; * Gt−b(St)G_t-b(S_t)Gt−b(St) 表示当前动作比平均水平好多少。 **减去基线不会改变梯度期望,但可以降低方差。** *** ** * ** *** ### 22. 基线的直观理解 如果不使用基线,只要回报是正的,所有动作都会被一定程度鼓励。 但这可能不合理: * 有些动作只是"没那么差"; * 有些动作低于平均水平; * 这些动作不应该被鼓励。 加入基线后: Gt−b(St) G_t-b(S_t) Gt−b(St) 可以表示动作的相对好坏: * 若 Gt\>b(St)G_t\>b(S_t)Gt\>b(St),说明动作高于平均水平,应增加概率; * 若 Gt\ 在状态 StS_tSt 执行动作 AtA_tAt,相比该状态下平均表现好多少。 此时策略梯度更新为: θ←θ+αA(St,At)∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha A(S_t,A_t) \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αA(St,At)∇θlogπθ(At∣St) **优势函数是策略梯度中衡量动作相对好坏的重要量。** *** ** * ** *** ### 24. 带基线的 REINFORCE 带基线的 REINFORCE 更新公式为: θ←θ+α(Gt−b(St))∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha (G_t-b(S_t)) \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+α(Gt−b(St))∇θlogπθ(At∣St) 若用参数 www 近似基线: b(St,w)≈V(St) b(S_t,w)\\approx V(S_t) b(St,w)≈V(St) 则可以同时学习: 1. 策略参数 θ\\thetaθ; 2. 基线参数 www。 基线参数可以通过最小化: (Gt−b(St,w))2 (G_t-b(S_t,w))\^2 (Gt−b(St,w))2 进行学习。 **基线通常由价值函数近似得到,这也自然引出了 Actor-Critic 框架。** *** ** * ** *** ### 25. Actor-Critic 框架 策略梯度方法中,如果只学习策略 πθ\\pi_\\thetaπθ,则称为 Actor。 如果再额外学习一个价值函数作为评价器,就得到 Actor-Critic 框架。 #### 25.1 Actor Actor 表示策略: πθ(a∣s) \\pi_\\theta(a\\mid s) πθ(a∣s) 负责选择动作,并根据策略梯度更新。 #### 25.2 Critic Critic 表示价值函数,例如: Vw(s) V_w(s) Vw(s) 或: Qw(s,a) Q_w(s,a) Qw(s,a) 负责评价当前动作或状态的好坏。 #### 25.3 Actor-Critic 的基本思想 Actor 根据 Critic 给出的评价更新策略: θ←θ+αA(St,At)∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha A(S_t,A_t) \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αA(St,At)∇θlogπθ(At∣St) Critic 通过 TD 或 MC 方法学习价值函数。 **Actor-Critic 将策略梯度和价值函数结合起来:Actor 负责行动,Critic 负责评价。** *** ** * ** *** ### 26. 策略梯度算法总结 策略梯度方法可以概括为: 1. 用参数 θ\\thetaθ 表示策略: πθ(a∣s) \\pi_\\theta(a\\mid s) πθ(a∣s) 2. 定义策略表现目标: J(θ)=Eπθ\[R\] J(\\theta)=\\mathbb{E}_{\\pi_\\theta}\[R\] J(θ)=Eπθ\[R\] 3. 通过采样轨迹估计梯度: ∇θJ(θ)≈∑tGt∇θlogπθ(At∣St) \\nabla_\\theta J(\\theta) \\approx \\sum_t G_t \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) ∇θJ(θ)≈t∑Gt∇θlogπθ(At∣St) 4. 使用梯度上升更新参数: θ←θ+α∇θJ(θ) \\theta\\leftarrow\\theta+\\alpha\\nabla_\\theta J(\\theta) θ←θ+α∇θJ(θ) 5. 为降低方差,可以加入基线: Gt−b(St) G_t-b(S_t) Gt−b(St) **策略梯度的关键是:把高回报动作的概率提高,把低回报动作的概率降低。** *** ** * ** *** ### 27. 核心公式速查 #### 参数化策略 πθ(a∣s) \\pi_\\theta(a\\mid s) πθ(a∣s) #### 策略优化目标 θ∗=argmaxθJ(θ) \\theta\^\*=\\arg\\max_\\theta J(\\theta) θ∗=argθmaxJ(θ) #### 梯度上升 θ←θ+α∇θJ(θ) \\theta\\leftarrow\\theta+\\alpha\\nabla_\\theta J(\\theta) θ←θ+α∇θJ(θ) #### 似然比技巧 ##
\nabla_\theta \pi_\theta(a\mid s)
\pi_\theta(a\mid s)\nabla_\theta\log\pi_\theta(a\mid s)
#### Softmax 策略 ##
\pi_\theta(a\mid s)
\frac{\exp(\phi(s,a)^T\theta)}
{\sum_{a'}\exp(\phi(s,a')^T\theta)}
#### Softmax 策略梯度 ##
\nabla_\theta\log \pi_\theta(a\mid s)
\phi(s,a)-\mathbb{E}{\pi \theta}[\phi(s,\cdot)]
#### 高斯策略梯度 ##
\nabla_\theta\log\pi_\theta(a\mid s)
\frac{(a-\mu(s))\phi(s)}{\sigma^2}
#### 原始策略梯度 ##
\nabla_\theta J(\theta)
\mathbb{E}{\tau\sim\pi \theta}
\left[
R(\tau)
\sum_{t=0}^{T-1}
\nabla_\theta\log\pi_\theta(a_t\mid s_t)
\right]
#### 利用因果关系后的策略梯度 ##
\nabla_\theta J(\theta)
\mathbb{E}{\pi \theta}
\left[
\sum_{t=0}^{T-1}
G_t
\nabla_\theta\log\pi_\theta(A_t\mid S_t)
\right]
#### REINFORCE 更新 θ←θ+αGt∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha G_t \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+αGt∇θlogπθ(At∣St) #### 带基线的 REINFORCE 更新 θ←θ+α(Gt−b(St))∇θlogπθ(At∣St) \\theta \\leftarrow \\theta + \\alpha (G_t-b(S_t)) \\nabla_\\theta\\log\\pi_\\theta(A_t\\mid S_t) θ←θ+α(Gt−b(St))∇θlogπθ(At∣St) #### Advantage A(St,At)=Gt−b(St) A(S_t,A_t)=G_t-b(S_t) A(St,At)=Gt−b(St) 若: b(St)=V(St) b(S_t)=V(S_t) b(St)=V(St) 则: A(St,At)=Gt−V(St) A(S_t,A_t)=G_t-V(S_t) A(St,At)=Gt−V(St) *** ** * ** *** ### 28. 本章总结 本章介绍了基于策略梯度的强化学习方法。与基于价值的方法不同,策略梯度直接参数化策略,并通过优化策略参数来提升智能体表现。 本章核心内容包括: 1. **基于策略的方法** :直接学习 πθ(a∣s)\\pi_\\theta(a\\mid s)πθ(a∣s)。 2. **策略优化目标** :最大化期望回报 J(θ)J(\\theta)J(θ)。 3. **梯度上升** :通过 θ←θ+α∇θJ(θ)\\theta\\leftarrow\\theta+\\alpha\\nabla_\\theta J(\\theta)θ←θ+α∇θJ(θ) 优化策略。 4. **似然比技巧**:将轨迹概率梯度转化为 log 策略概率梯度。 5. **Softmax 策略**:适用于离散动作空间。 6. **高斯策略**:适用于连续动作空间。 7. **REINFORCE**:使用蒙特卡罗回报进行策略梯度更新。 8. **方差问题**:原始策略梯度方差较大。 9. **因果关系降方差** :每个动作只使用其之后的回报 GtG_tGt。 10. **基线降方差** :使用 Gt−b(St)G_t-b(S_t)Gt−b(St) 替代 GtG_tGt。 11. **Actor-Critic**:使用价值函数作为 Critic 来辅助 Actor 更新策略。 **策略梯度的核心思想是:直接调整策略参数,使高回报动作更可能被选择,低回报动作更不可能被选择。**