楼主: liuersu
136 0

[其他] Manim实现闪电特效 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-9-26
最后登录
2018-9-26

楼主
liuersu 发表于 2025-11-21 18:40:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

3.2 REINFORCE:策略梯度的奠基性算法

在推导出策略梯度定理之后,我们得到了梯度的数学表达形式。然而,该期望值无法直接计算,原因在于轨迹空间具有高维甚至连续无限的特性,导致所有可能路径的枚举不可行。因此,策略优化的关键在于利用有限样本对期望进行近似。

具体做法是通过与环境交互采集若干条完整轨迹,并以这些轨迹的经验平均来估计梯度。这一思想构成了 REINFORCE 算法(Williams, 1992)的核心机制。其训练流程如下:

  1. 使用当前策略 π_θ 采样 N 条完整的轨迹
  2. 针对每条轨迹,计算从当前时刻 t 到终止状态的累积回报 G_t
  3. 可选地引入一个固定的 baseline(例如所有轨迹回报的均值)以减少方差
  4. 基于上述数据计算梯度并更新策略参数 θ

[此处为图片1]

采样带来的挑战:高方差问题

我们的目标是优化策略的长期平均性能,但由于只能依赖有限样本进行估计,必须满足两个基本要求:

  • 无偏性(Unbiasedness):所采样的梯度期望应等于真实梯度
  • 低方差(Low Variance):不同批次之间的梯度估计应保持稳定

REINFORCE 虽然具备无偏性,但其主要缺陷在于方差过高。以下示例可说明此问题:

示例:训练语言模型回答医疗咨询
输入提示:“如何缓解头痛?”

  • 回复1(轨迹1):“多喝水,适当休息,必要时服用布洛芬。” → 奖励 +5
  • 回复2(轨迹2):“头痛可能由多种原因引起……”(冗长但正确)→ 奖励 +3
  • 回复3(轨迹3):“建议立即手术治疗。”(错误且危险)→ 奖励 -8

即使这三个响应来自同一策略,它们的奖励差异极大,导致基于这些样本计算出的梯度剧烈波动,进而引发以下问题:

  • 需要大量轨迹(如数千条)才能获得稳定的梯度估计
  • 训练过程缓慢且不稳定
  • 对于长序列任务(如对话轮数超过10轮),方差呈指数级增长

关于更新频率的常见疑问

有人可能会问:每次参数更新后策略都会变化,是否意味着只能用一条轨迹就进行一次更新?

答案是否定的。标准的 REINFORCE 实现方式如下:

  • 使用当前策略 π_θ 采集 N 条轨迹(例如 N=64)
  • 利用这 N 条轨迹计算平均梯度,并执行一次参数更新
  • 更新完成后,策略变为 π_θ',此前收集的所有轨迹失效
  • 重新使用新策略 π_θ' 采集新的 N 条轨迹,重复上述过程

这种机制被称为 On-Policy 学习:训练数据必须来源于当前策略,旧策略生成的数据不能复用,从而造成样本效率低下。

3.3 Actor-Critic 框架:降低方差的结构化改进

REINFORCE 的高方差主要源于其依赖 Monte Carlo 方法估算回报——即必须等到整条轨迹结束才能获得累积奖励。若能引入一个可学习的价值函数来预测未来回报,则有望实现两个目标:

  • 降低估计方差(函数逼近比单次采样更稳定)
  • 支持单步更新(无需等待 episode 结束)

这正是 Actor-Critic 架构的设计初衷:通过引入一个 Critic 网络来估计状态价值,并构建优势函数以指导策略更新。

双网络协同机制

系统包含两个神经网络

  • Actor(策略网络):负责根据当前状态选择动作
  • Critic(价值网络):评估当前状态的长期价值

两者的训练目标分别如下:

Critic 更新目标:拟合实际观察到的累积回报 G_t,作为监督信号,最小化预测值 V(s) 与真实回报之间的误差。

Actor 更新方向:利用优势函数 A(s,a) 来调整策略,其中优势函数衡量某动作相对于当前状态平均表现的优劣程度。

关键实现细节:在计算优势时需阻断反向传播路径,防止 Actor 的更新干扰 Critic 的学习过程。代码层面通常写作:

advantage = reward + gamma * next_value - value_current.detach()

或简化为:

advantage = td_error  # 使用TD误差作为优势估计

迈向单步更新:引入 TD 误差

在 Actor-Critic 框架中,可以采用时间差分(Temporal Difference, TD)误差替代完整的 Monte Carlo 回报,从而实现在线、逐步的策略更新。

定义 TD 优势如下:

ATD(s_t, a_t) = r_t + γV(s_{t+1}) - V(s_t)

与传统方法对比:

方法 公式 特点
Monte Carlo 优势 (AMC) G_t - V(s_t) 需完整轨迹;无偏估计;方差高
TD 优势 (ATD) r_t + γV(s_{t+1}) - V(s_t) 仅需一步转移;方差低;有偏(依赖 V 函数精度)

3.4 GAE(广义优势估计)的推导

1. 理想优势函数的定义

我们首先定义一个理论上的“真实”优势函数,它基于真实的未来回报:

A(s_t, a_t) = Q(s_t, a_t) - V(s_t) = [G_t | s_t, a_t] - V(s_t)

目标是利用一系列 TD 误差来构造对该真实优势的良好估计。

2. 基于 Bellman 方程的递归展开

根据 Bellman 关系,任意时刻的回报可展开为:

G_t = r_t + γr_{t+1} + γr_{t+2} + ... = r_t + γG_{t+1}

将其代入优势函数表达式:

A(s_t, a_t) = r_t + γV(s_{t+1}) - V(s_t) + γ[A(s_{t+1}, a_{t+1})]

进一步变形,在表达式中同时加减 γV(s_{t+1}):

A(s_t, a_t) = [r_t + γV(s_{t+1}) - V(s_t)] + γ[A(s_{t+1}, a_{t+1})]

注意到第一项正是 TD 误差 δ_t,第二项是下一时刻的优势。由此得到递归关系:

A(s_t, a_t) = δ_t + γA(s_{t+1}, a_{t+1})

3. 迭代展开与核心结论

将上述递归不断展开,最终可得:

A(s_t, a_t) = δ_t + γδ_{t+1} + γδ_{t+2} + γδ_{t+3} + ...

即:真实优势等于未来所有 TD 误差的折扣加权和

这一结果具有直观意义:

  • 每一项 δ 表示当前步骤的“预测偏差”或“意外程度”
  • 越远的未来步骤对当前决策的影响越小,由折扣因子 γ 控制衰减速度

GAE 的设计动机:偏差与方差的平衡

尽管上述无限展开在理论上精确,但在实践中面临两个问题:

  • 高方差:当使用完整的 Monte Carlo 回报时,估计虽无偏但波动大
  • 高偏差:若仅使用单步 TD 误差,计算快但受价值函数近似误差影响严重

GAE 的核心思想正是在这两者之间引入一个平滑调节参数 λ ∈ [0,1],构造一种加权组合:

GAE(s_t) = Σ_{l=0}^{∞} (γλ)^l δ_{t+l}

通过调节 λ:

  • λ → 0:偏向单步 TD,低方差高偏差
  • λ → 1:接近 MC,低偏差高方差

从而实现灵活的偏差-方差折中,提升策略梯度估计的稳定性与效率。

在强化学习中,优势函数的估计需要在“充分利用未来信息”与“抑制噪声、降低方差”之间取得平衡。直接依赖完整轨迹的方法存在明显缺陷:

依赖完整轨迹:这类方法必须等待整个回合(episode)结束后才能进行价值估计,属于Monte Carlo风格。虽然无偏,但估计的方差较大。

误差累积:若使用过长的序列进行估计,由于未来状态的不确定性较高,TD误差会逐级传递并不断累积,导致价值函数估计失真。

[此处为图片1]

为解决这一矛盾,GAE(Generalized Advantage Estimation)引入了一个关键的调节参数——λ(通常取值在0.9至0.99之间),用于控制未来TD误差的衰减权重,实现偏差与方差之间的平滑权衡。

GAE 的数学定义

其中涉及两个重要参数:

  • γ:环境中的奖励折扣因子,反映任务对远期回报的关注程度。
  • λ:优势函数的折扣因子,是人为设定的超参数,用于调节偏差-方差的平衡。

每一步的TD误差定义为:
δ = r + γ·V(s) - V(s)

理解 λ 的作用机制

λ = 0时:

此时仅利用当前步的TD误差,等价于传统的TD(0)方法。该方式方差最小,但偏差最大,因为它只看一步反馈。

λ = 1时:

恢复为完整的多步展开形式,相当于Monte Carlo估计。此方法理论上无偏,但由于依赖整条轨迹,方差最大。

0 < λ < 1时:

GAE在TD和Monte Carlo之间进行指数加权插值。未来的TD误差以γλ的速率衰减,从而实现了对“视野长度”与“噪声抑制”的灵活调控。

GAE 的高效计算:递推实现

原始的求和公式可通过反向递推方式高效实现,类似于RNN中的时间反向传播过程。从轨迹末尾开始向前计算,显著提升效率。

伪代码示例:

advantages = torch.zeros_like(rewards)
gae = 0
for t in reversed(range(T)):
    delta = rewards[t] + gamma * values[t+1] - values[t]
    gae = delta + gamma * lam * gae
    advantages[t] = gae
    

注意事项:

  • 必须逆序遍历时间步,因为当前优势值依赖后续信息。
  • values[t+1] 来自Critic网络对下一状态的价值预测。
  • 该递推结构已成为PPO、A2C、A3C等主流算法的标准组件。

GAE 与 n-step TD 的关系

GAE可被解释为所有n-step TD优势估计的指数加权平均

其中,n-step优势定义为:

A(n) = Σi=0n-1 (γλ)iδt+i + (γλ)nV(st+n) - V(st)

总结如下:

  • λ 决定了我们综合多少种不同长度(n-step)的TD估计。
  • 较小的λ 更加关注短期、低方差但高偏差的估计。
  • 较大的λ 则倾向于整合长期信息,带来更高方差但更低偏差的结果。
  • 实践中,λ = 0.95 或 0.99 是常用的经验默认值。
[此处为图片2]

On-Policy 方法的数据效率瓶颈

REINFORCE、Actor-Critic、A2C/A3C等算法均属于On-Policy范式,其核心限制在于:策略梯度更新所用的数据必须由当前策略生成。这带来了严重的样本效率问题:

  • 每次策略更新后,旧数据即失效,无法复用。
  • 对于大语言模型(LLM),生成一次响应可能耗时数秒,却只能使用一次。
  • 训练百万步意味着需采集百万条新样本。

量化对比示例(以 Qwen-7B 为例):

方法 单次采样耗时 数据复用次数 训练1000步总耗时
On-Policy 3秒 1次 3000秒
Off-Policy (PPO) 3秒 4次 750秒

重要性采样:实现 Off-Policy 学习的关键工具

核心问题:能否利用旧策略 π_old 产生的数据来训练新策略 π_new?

数学基础:重要性采样定理

对于任意函数 f(x),有:

Exπ_new[f(x)] ≈ Exπ_old[ (π_new(x)/π_old(x)) · f(x) ]

将其应用于策略梯度目标:

原目标基于 π_new,但数据来自 π_old,因此引入概率比率进行修正:

J ≈ E[ r(θ) · logπ_θ(a|s) · A(s,a) ]

其中 r(θ) = π_θ(a|s) / π_θ_old(a|s) 为重要性权重。

医疗问答场景示例:

  • 旧策略输出:“多喝水,休息”,对应动作概率为 0.6。
  • 新策略评估同一回复时赋予更高概率 0.9。
  • 若该行为带来的优势为正,则经比率修正后的梯度贡献将增强。

关键挑战:当重要性比率过大(如超过10),说明新旧策略差异剧烈,此时重要性采样会导致梯度估计方差急剧上升,影响训练稳定性。因此必须限制策略更新的幅度。

TRPO:信赖域约束下的策略优化

TRPO(Trust Region Policy Optimization, Schulman et al., 2015)提出了一种理论保障更强的优化框架:在确保策略变化不过大的前提下,最大化性能提升。

优化问题形式化表达:

maximizeθ E[ r(θ) · A(s,a) ]
s.t. D_KL( π_θ_old || π_θ ) ≤ δ

其中KL散度用于衡量新旧策略分布之间的差异。

直观理解:

  • 目标函数:利用旧数据评估新策略的性能增益。
  • 约束条件:KL散度不超过预设阈值(如0.01),防止策略突变。

医疗问答示例:

旧策略分布:P("多喝水")=0.3, P("休息")=0.4, P("吃药")=0.3
新策略分布:P("多喝水")=0.5, P("休息")=0.35, P("吃药")=0.15

计算得KL散度若超出阈值,则判定此次更新违反信赖域约束,需缩小步长或回退。

实现方式:TRPO采用共轭梯度法求解该带约束优化问题,需计算Hessian矩阵(二阶导数)。尽管具备单调改进的理论保证,但其计算复杂、实现难度高、对参数敏感,限制了广泛应用。

PPO:实用化的策略优化方案

作为TRPO的简化版本,PPO(Proximal Policy Optimization)通过设计更易优化的目标函数,在保持稳定更新的同时大幅降低实现复杂度。其核心思想是使用裁剪机制或惩罚项代替严格的KL约束,允许高效地多次复用同一批数据进行策略更新,成为当前主流的强化学习算法之一。

PPO(Proximal Policy Optimization)由Schulman等人于2017年提出,通过一阶优化方法结合精心设计的目标函数,实现了与TRPO相当的性能,现已成为深度强化学习(RL)及基于人类反馈的强化学习(RLHF)中的主流算法。

3.7.1 PPO-Clip:以裁剪机制取代KL约束

核心思想:不显式地对策略更新施加KL散度限制,而是直接控制新旧策略概率比值的变化范围,防止策略发生剧烈变动。

目标函数定义如下

[此处为图片1]

其中关键操作是将概率比值 r 限制在区间 [1ε, 1+ε] 内,通常取 ε = 0.2。

分情况分析其作用机制

  • 情况一:优势 A > 0(对应“好动作”,期望提升其选择概率)
    • 若比值 r ≤ 1+ε:采用原始梯度进行更新,继续增强该动作的概率。
    • 若 r > 1+ε:比值被裁剪至 1+ε,梯度不再增长,避免过度优化。
  • 情况二:优势 A < 0(对应“坏动作”,期望降低其发生概率)
    • 若比值 r ≥ 1ε:正常计算梯度,持续削弱该动作的影响。
    • 若 r < 1ε:比值被裁剪为 1ε,抑制进一步下降,防止惩罚过重。

医疗问答场景示例(含具体数值计算)

用户提问:“如何缓解头痛?”

模型回复:“多喝水,适当休息”

旧策略下该回答的对数概率为:log prob = -4.6
新策略下的对数概率为:log prob = -3.5

计算得优势值 A = 0.8(表明此为优质回应),概率比值为:

r = exp(-3.5 + 4.6) = exp(1.1) ≈ 3.0

设定裁剪阈值 ε = 0.2,则允许的比值范围为 [0.8, 1.2]。

代入PPO-Clip处理过程:

  • 原始项:r × A = 3.0 × 0.8 = 2.4
  • 裁剪项:clip(3.0, 0.8, 1.2) × A = 1.2 × 0.8 = 0.96
  • 最终目标值:min(2.4, 0.96) = 0.96 ← 发生裁剪!

解读:尽管新策略使该回答的概率提升了约3倍,但PPO-Clip仅允许最多提升至1.2倍,有效遏制了策略的突变风险,保障训练稳定性。

3.7.2 PPO-KL:引入自适应KL惩罚项

另一种实现方式是在目标函数中直接加入KL散度作为惩罚项:

[此处为图片2]

其中系数 β 可根据实际KL散度表现动态调整:

  • 若当前KL值超过目标阈值 → 增大 β,加强约束力度;
  • 若KL值偏低 → 减小 β,放宽限制,鼓励更多探索。

尽管该方法理论上更精确,但在实践中PPO-Clip更为流行,主要原因在于其无需手动调节β参数,且训练过程更加稳定、易于实现。

3.7.3 PPO-Clip 完整训练流程

[此处为图片3]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Man Optimization UNBIASEDNESS Monte Carlo Generalized

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 20:25