通往好智能体的两条路
到目前为止你已经认识了价值这条路。在 Q-学习中你学到一个 Q 函数——为每个状态-动作对给出一个数字,说明它有多好——然后通过挑选得分最高的动作来行动。策略,也就是智能体选择动作的规则,从未被单独训练;它只是作为价值的一种贪心副产品冒出来。对于格子世界里那种小而离散的动作集合,这套办法运转得很漂亮。
但设想一只机械臂,要为七个关节中的每一个选择一个力矩——任意实数。此时“选取 Q 值最高的动作”意味着在每一步都要在一个连续的七维空间中搜索。这种搜索别扭、缓慢,往往根本无法精确完成。价值这条路悄悄地假设了:只要你知道分数,总能廉价地找到最佳动作。一旦这个假设破裂,我们就需要一个全然不同的思路。
另一条路是直接学习策略。我们不再为每个动作打分再读出赢家,而是让策略本身成为一个带可调旋钮的函数——通常是一个 神经网络,输入一个状态,输出每个动作的概率(对于连续动作,则输出一个用于采样的分布的均值和宽度)。然后我们提出贯穿整个本阶的那个问题:我该往哪个方向拧这些旋钮,才能收集到更多 奖励?
策略梯度:有回报时就放大
这就是 [[policy-gradient|策略梯度]] 的核心把戏,而且妙不可言地直观。让智能体用当前策略跑完整整一幕,从它自己的概率中采样动作。一幕结束时,看它挣到的总 回报。然后回过头去调整网络,使得在好的一幕里采取过的动作变得*更*可能,在坏的一幕里采取过的动作变得*更不*可能。好的运行被强化;坏的运行被抑制。在成千上万幕中重复这一过程,行为便会朝着任何能挣到奖励的方向漂移。
从机制上说这不过又是 梯度下降——和前面各阶里每个神经网络背后的引擎一模一样。损失被构造成:它的梯度会抬高每个动作的对数概率,按其后续回报的多少来缩放。某动作之后回报很大,就给一个大的“重复它”的推力;回报为负,就往反方向推。由于我们沿着真实采样出来的轨迹走,这是一个高度 随机的过程:每次更新都是来自一批亲历经验的带噪声估计。
for each episode:
run policy, record (state, action, reward) at each step
R = total discounted return of the episode
for each step t:
nudge θ to raise log P(action_t | state_t) × R
# good episodes → their actions become more likely这套设计直接带出两个诚实的弱点。其一,你通常得跑完一幕(或一大段)才能更新,所以它很耗样本、很慢。其二,整幕的回报是个粗糙的裁决:如果你走了三十步并赢了,这种朴素方法会把功劳*平均记给全部三十步*,连那被好棋挽救回来的三步烂棋也一样算功。这种粗糙的功劳分配使梯度估计极其嘈杂——用行话说就是方差很高。驯服这份噪声,正是下一个思路的用武之地。
演员-评论家:两个网络,一支队伍
对治高方差的办法,是不再用原始的整幕回报来评判动作,而开始拿动作去和一个期望值作比较。我们保留策略网络——把它叫做演员,因为它负责选择做什么。然后再加上第二个网络,一个评论家,它学习一个 价值函数:对某个状态通常能期望多少回报的估计。这正是 Q-学习那一篇里同样的价值思想,只是如今它退居配角,不再唱主角。
现在演员的更新变得更锐利了。它不再问“整幕好不好?”,而问“这个动作有没有*比评论家在此处的预期更好*?”这个差值——实际结果减去评论家的预测——就是优势。优势为正的动作超出了预期,就被强化;优势为负意味着它表现不及预期,就被压低。减去评论家的估计起到了 基线的作用:它抵消掉了大部分噪声,又不偏移我们移动的方向,于是梯度大大稳定下来。
再补一个诚实的细节:演员-评论家通常是 [[on-policy-off-policy|同策略]] 的。评论家评判的是演员*当前*的行为,所以一旦演员改变,旧经验就过时了,通常会被丢弃。这与你可能见过的 深度 Q 网络正相反,后者是异策略的,能把旧记忆反复回放很久。同策略学习更易于推理、更稳定,但更渴求新鲜数据——这是你为换取一个可直接训练的策略而接受的交易。
PPO:别迈出你会后悔的步子
策略梯度有一种讨厌的失败模式。由于每次更新都是从带噪声的采样经验中估出来的,一次过于急切的步子就可能把策略推到某个糟糕之处。而且不像监督学习,你没法直接退回去——智能体此刻会用这个坏掉的策略去收集*下一*批数据,于是单单一次糟糕的更新就能毒害随后的一切。智能体可能崩溃,再也缓不过来。稳定策略学习的全部艺术,就在于迈的步子要大到足以取得进展,又小到永不跌下悬崖。
[[proximal-policy-optimization|近端策略优化]],即 PPO,是赢得整个领域的务实答案。它是一种演员-评论家方法,带着一条自律的规矩:绝不让单次更新把策略改动太大。PPO 盯着新动作概率与旧动作概率之间的比值,并把这个比值*裁剪*掉——如果一次更新试图让某动作比之前可能得多或不可能得多,裁剪就会给这么做的回报设上限。策略可以自由改进,但只能在一个贴近它原处的信任域之内。保持“近端”——这就是它名字的全部含义。
- 用当前策略跑出一批经验,记录下状态、动作和奖励。
- 让评论家估计每个状态的价值,并算出每个所采取动作的优势。
- 把演员朝优势更高的动作更新——但裁剪概率比值,使任何一步都不会偏离太远。
- 更新评论家,使其更准确地预测回报;丢弃已经过时的那批数据,然后循环。
它在哪里现身——以及它不是什么
策略方法正是 强化学习能越过棋盘游戏、伸进杂乱的连续控制的原因:机器人行走、无人机飞行、灵巧的机械手。AlphaGo一脉的下棋系统把策略网络与搜索和 自我对弈结合起来,其后继者则大量倚重策略梯度训练。你还会在一个或许意想不到的地方认出 PPO:它正是 RLHF内部的主力优化器,而 RLHF 是用来把大语言模型对齐到人类偏好的技术。那里的“策略”就是语言模型本身,“奖励”则是一个学出来的、关于人们偏好什么的模型。
对它的局限要保持诚实。这一切都不是智能体在“理解”它的任务;它只是在一个奖励信号上做梯度下降,并会以零常识去追逐那个信号。哪怕奖励只是稍有偏差,策略学习者也会乐呵呵地钻这个空子——以你从未打算的方式攒分。这种失败有个你会再次遇到的名字,奖励黑客,它是关于强化学习“对齐”的大多数说法的、实实在在的具体根源。问题不在于一个工于心计的智能体;而在于一个字面意义上的优化器,它精确地照你所度量的去做,而非照你所意指的去做。
退一步看,地图很清爽。价值方法学什么是好的、然后贪心行动;策略方法直接学怎么行动;演员-评论家把两者融合;PPO 让这种融合稳定到可以投入使用。有了这些,你就掌握了驱动几乎全部深度强化学习的概念内核——本阶的最后一篇,如今可以把这些零件组装成在人类自己的游戏中击败人类的那些系统了。