策略梯度法模拟器 返回
机器学习

策略梯度法模拟器 — 强化学习

强化学习的代表算法"策略梯度法(REINFORCE)"的体验工具。在连续行动任务上,实时可视化高斯策略的平均值如何滑向最优行动,基线如何抑制梯度的波动。使用固定随机种子进行确定性、可重现的计算。

参数设置
学习率 α
每次更新策略参数的幅度
策略的标准偏差 σ
探索的宽度。越大探索范围越广,梯度噪声也越大
学习轮数
批大小
每次更新的试验次数。越多梯度越稳定
基线
是否从奖励中减去基准值以降低梯度方差
计算结果
最终策略平均 μ
真正最优行动 a*
最终平均奖励
收敛轮数
奖励改善量
基线的方差低减效果
奖励地形与策略 — 学习动画

蓝色曲线为奖励地形 R(a) = −(a−a*)²,红色竖线为最优行动 a*。黄色的钟形曲线为高斯策略,随着学习进行会滑向最优行动。

策略平均 μ 的学习推移
平均奖励 的学习推移
理论·主要公式

$$\nabla_\theta J=\mathbb{E}\big[\nabla_\theta\log\pi_\theta(a)\,(R-b)\big]$$

策略梯度定理。期望奖励 J 的梯度由"行动 a 的对数概率梯度(分数函数)"乘以"奖励 R 减去基线 b"的期望值表示。

$$\nabla_\mu\log\pi=\frac{a-\mu}{\sigma^{2}}$$

平均 μ、标准偏差 σ 的高斯策略的分数函数。如果取比平均更大的行动获得好报酬,则会让 μ 增加。

$$\mu \leftarrow \mu + \alpha\,\widehat{\nabla_\mu J},\qquad b=\overline{R}$$

学习率 α 的梯度上升更新式。减去基线 b(批平均奖励 R̄)不改变梯度期望值,只降低估计方差。

什么是策略梯度法

🙋
我听说过强化学习中的"Q学习","策略梯度法"是另一回事吗?
🎓
目标是一样的——"学会产生报酬最大的行动"——但做法相反。Q学习先估计"各行动的价值(得分)",然后选择得分最高的,从而间接决定策略。策略梯度法直接改变策略本身。这个工具把策略表示为"平均 μ 的高斯分布",然后用梯度上升一点一点地推动 μ 让报酬增加。
🙋
直接改变策略,具体怎么知道哪个方向能增加报酬?
🎓
这就是REINFORCE这个推估方法,梯度是 ∇J = E[∇log π(a)·(R−b)]。∇log π(a) 是"使该行动更易被选的方向",(R−b) 是"该行动比基准有多好"的权重。也就是说,产生高于平均报酬的行动被推向那个方向,更易被选;差的行动被反推,更难被选。多次试验求平均,策略自然就朝好行动滑去。
🙋
左边的参数里有"基线"。那就是 (R−b) 的 b 吧?减不减好像都可以啊……
🎓
这就是妙之所在。虽然减去基线 b 不会改变梯度的期望值(因为∇log π 的期望是零),但实际估计噪音很大。比如报酬全是"+95分""+98分"这样的大正数,所有行动看起来都很好,梯度会很荒乱。减去平均"+96分"后,只有"相对于平均好坏"的差保留,估计方差暴跌,学习变稳定。右上的卡片有"无基线"选项,你会看到梯度方差会增加很多。
🙋
那学习率和 σ(策略标准偏差)越大越能快速学习吗?
🎓
遗憾的是没这么简单。学习率 α 太大的话,更新会发狂,μ 可能会越过最优行动然后振荡或发散。σ 是探索的宽度——越大越能广泛试探,但梯度噪声也越大;越小越容易被困在一个地方。试一下把α改成0.4看看,报酬曲线会变得凹凸不平。实务中通常从较小学习率开始,配合σ和批大小来调,让报酬曲线平稳上升。PPO这样的新方法其实就是改进版的策略梯度法,特点是"单次更新不会过度"。
🙋
PPO,我听说过!ChatGPT训练也用到了。原来也是策略梯度法的一种啊。
🎓
完全正确。现在最受关注的RLHF(人类反馈强化学习)的核心正是PPO,它和actor-critic法一样,根子都是这个REINFORCE——"用梯度直接推策略"的思想。这个工具只是最简单的一维连续行动例子,但这里发生的——用分数函数推、用基线降方差——在大规模语言模型的调优里完全一样在起作用。在这里磨练好直觉,收益无穷。

常见问题

Q学习等价值基法首先估计"各状态行动的价值(期望回报)",然后选择价值最大的行动,从而间接确定策略。而策略梯度法直接持有带参数的策略函数(本工具中为连续行动上的高斯分布),用梯度上升直接更新参数以增加期望奖励。策略梯度法能自然处理连续行动和随机策略,策略变化更平滑,是actor-critic和PPO的基础。
REINFORCE的梯度估计是 ∇J = E[∇log π(a)·(R−b)]。∇log π(a) 是"使该行动更易被选中的方向(分数函数)",(R−b) 是"该行动相比基准有多好的权重"。也就是说,产生高于平均报酬的行动被推向分数方向,更易被选中;产生低于平均报酬的行动被反推,更难被选中。对于高斯策略,∇_μ log π = (a−μ)/σ² ,如果取比平均更大的行动获得良好奖励,则μ会上升——符合直观。
基线 b 的目的是在不改变梯度期望值的前提下降低估计方差。虽然从报酬 R 减去基准值 b 不会改变梯度的期望值(因为∇log π 的期望为零),但报酬的绝对值很大时"所有行动看起来都很好",导致梯度噪声大。减去平均值后,只有"相对于平均的好坏"保留下来,估计方差大幅降低,学习变得稳定。本工具显示有基线和无基线时梯度标准差的比较。
学习率α过大时更新会发散或振荡,过小时收敛缓慢。策略标准偏差σ是探索的宽度——越大探索范围越广但梯度噪声也越大,越小越容易陷入局部。增加批大小能使单次梯度估计更稳定,但每次更新的试验次数也增加。实践中通常从较小的学习率开始,配合σ和批大小调整使报酬曲线平稳上升,基线基本上总是使用。

实际应用

大规模语言模型的RLHF:策略梯度法最瞩目的应用是ChatGPT等对话AI的"人类反馈强化学习(RLHF)"。把语言模型生成的文本看作"策略",用人工偏好训练的奖励模型的分数作"奖励",用PPO(策略梯度法的进化版)更新策略。这个工具的 μ 替换成模型的海量参数就行,本质机制完全一样。

机器人控制·连续行动任务:关节力矩、轮速这样的连续值行动,策略梯度法比价值基法更自然。走路机器人的腿动作、无人机姿态控制、机械臂轨迹生成等,都是用高斯策略表示连续行动,在模拟中大量试验并优化策略的典型例子。

游戏AI·决策:围棋、象棋、电子游戏的AI,以及库存管理、广告投放、推荐系统等序列决策问题也用策略梯度法。特别是行动选择应该是随机的场景(对手看不出你的策略等),直接学概率策略的策略梯度法很适合。actor-critic在这个领域广泛应用。

学习和教育的基础理解:这个工具这样的一维连续老虎机,是强化学习教学和自学中验证"策略梯度真的收敛到最优行动"、"基线为什么有效"的极好教材。因为用固定随机种子确定性运算,改一个参数时能精确对比效果。

常见误解与注意事项

最常见的误解是,"减去基线会改变结果(引入偏差)"。只要基线 b 不依赖于行动 a,就有 E[∇log π·b] = b·E[∇log π] = 0,梯度期望完全相同。改变的只是"方差"。正因如此,减去平均报酬这样的聪明基线都能放心用,又能稳定学习。反之,如果基线依赖行动,就会引入偏差,所以设计时要让基线依赖状态但不依赖行动,这很重要。

其次,"策略梯度法一定收敛到全局最优"的误会。策略梯度法保证的只是局部最优收敛,如果奖励地形有多个山峰,初始策略或探索宽度 σ 可能会被较低的山困住。这个工具的奖励地形只有一个峰,所以一定向 a* 靠近;但实问题需要充分探索、多个初始值、加熵项促探索这些技巧。

最后,"学习率越大学得越快"的过信。REINFORCE的梯度估计本身噪音就大,学习率一大就连噪音也被放大,策略可能越过最优行动后振荡或发散。这个工具改成 α=0.4 左右就能看到报酬曲线变得凹凸不平。实务中通常取较小学习率,靠增加批大小稳定梯度,配合PPO这样的"限制单步更新幅度"的机制。速度和稳定是权衡。

使用指南

  1. 设置学习率(0.001~0.1)和高斯策略的标准偏差(0.1~2.0)
  2. 选择基线功能有无,输入轮数(100~5000)
  3. 运行模拟后,观察报酬曲线的收敛模式,检验最终策略平均μ是否接近真正的最优行动a*

具体计算例

连续控制任务(一维运动),学习率0.01、标准偏差0.5、500轮设置下:初始策略μ=0.2(真正最优值a*=5.0),约300轮后平均奖励达到4.8。应用基线时方差降低35%,同样轮数内收敛更稳定,最终平均奖励改善至4.95。

实际应用注意

  1. 学习率超过0.05时报酬易发散,连续控制推荐0.01~0.03
  2. 标准偏差低于0.3容易早期陷入局部最优。机器人控制中0.4~0.8能平衡初期探索和最终收敛
  3. 无基线时梯度方差大,常需2000轮以上才能收敛。要削减计算成本应启用基线