E.3.2 策略梯度与优势函数
前置知识:E.3.1 导数、梯度与链式法则——你需要知道梯度的定义。
策略梯度从哪里来
上一节我们学会了用梯度调整参数来优化目标函数。现在把这个思路用到强化学习里。策略梯度的核心想法可以先用一句话理解:如果一个动作带来了高回报,就提高它在相应状态下被选中的概率;如果带来了低回报,就降低它的概率。
假设在某个状态 下,策略选择动作 right 的概率是:
这次智能体选了 right,并最终得到回报 。打个比方:如果一个篮球运动员在某个位置投篮命中了,教练就会鼓励他多在那个位置出手——策略梯度做的事与此类似。
策略梯度常见形式是:
它可以拆成两部分:
- (累计回报):这次结果好不好,决定更新的力度和方向。
- (对数概率的梯度):怎样调整参数才能让这个动作更可能(或更不可能)发生。
如果 是正的,就沿着”提高该动作概率”的方向更新;如果 是负的,就反方向更新。
优势函数:比”好不好”更精确的判断
策略梯度给出了”好动作概率上调、坏动作概率下调”的大方向,但它有一个实际问题:用原始回报 作为信号时,所有正回报的动作都会被鼓励,即使某些动作只是”碰巧拿到了正分”,实际上并不比平均水平好。这就好比考试全班平均 90 分,一个学生考了 80 分——虽然分数本身不算差,但相对而言并不值得表扬。优势函数就是为了解决这个”相对好坏”的问题而引入的。
这次动作拿到回报 ,它不只是“好”,而是比平均水平好 :
如果另一次拿到 ,虽然仍是正回报,但比平均差:
优势函数的作用就是回答:这个动作相对于当前状态的平均水平,到底更好还是更差?
策略梯度中常把 换成优势估计 ,这样"好多少"或"差多少"的信息更精确:
用优势函数替代原始回报,能显著降低梯度估计的方差,让训练过程更稳定。
小结
本篇把梯度工具用到了策略优化上:
| 概念 | 公式 | 作用 |
|---|---|---|
| 策略梯度 | 好结果对应动作概率上升 | |
| 优势函数 | 把"绝对好坏"变成"相对好坏" | |
| 优势加权 | $\nabla_\theta J \approx \hat{A}t \nabla\theta\log\pi_\theta(a_t\mid s_t)$ | 相对平均更好的动作被加强 |
策略梯度给出了方向,优势函数让信号更精确。但还有一个悬而未决的问题:每次更新应该走多大步?下一篇讨论 PPO 裁剪和 Adam 优化器如何控制更新幅度。
下一篇:E.3.3 PPO 裁剪与 Adam —— 控制策略更新幅度和梯度噪声。