all_lessons/计算心智/04第 5 课 / 共 13 课

B · 学习与决策的计算

强化学习与多巴胺

第 03 课把行动收进了「最小化预测误差」——为了让世界符合预测,我们出手干预。可日常里,我们也为奖赏行动:为了那口甜、那笔钱、那句夸。预测和奖赏,看上去是两件事。这一课要给你看:它们是同一道题,钥匙只有一个词——奖赏预测误差 (reward prediction error)

承上 · 第 03 课留下的缺口
主动推断说,行动是为了让预测成真:恒温器开暖气,是为了让「室温该是 22℃」这个预测变成现实。这套逻辑漂亮,但它把价值藏进了「预测」里——我们之所以预测自己会暖和,是因为暖和「应该」发生。可这个「应该」从哪来?为什么有些状态值得追、有些不值得?把这一层摊开,就是强化学习 (reinforcement learning, RL):学习一个状态值多少,并据此行动。而它的核心信号,恰好又是一种预测误差。
本课路线
(1) 把「奖赏」写成可学的价值函数 V(s);(2) 立起 时序差分 (temporal difference, TD) 学习,看 δ = r + γV(s′) − V(s) 这条更新规则怎么把「现在该值多少」从「下一刻」一点点学回来;(3) 讲 1997 年那个把计算神经科学焊死的发现——多巴胺神经元的相位放电 ≈ TD 误差,并复刻它的三种经典情形;(4) 回扣心理学第 07 课「学习=预测错了才更新」,并指向本站强化学习 track;(5) 动手玩「TD 学习赛道」,亲眼看多巴胺尖峰从奖赏处前移到线索处。

把「奖赏」写成可学的价值

先把问题摆正。一个 agent(人、鼠、程序)在一连串状态 (state) s 之间移动,偶尔在某个状态拿到一笔奖赏 (reward) r。它想要的不是某一步的即时奖赏,而是从现在起,未来能拿到的奖赏总和。我们给每个状态定义一个价值函数 (value function)

V(s) = 期望( r_t + γ·r_{t+1} + γ²·r_{t+2} + … )

读法是:状态 s 的价值,等于从它出发、未来一路能领到的奖赏的折扣总和。这里 γ(gamma,取 0 到 1)是折扣因子——越远的奖赏打越多折,因为越远越不确定、也越没耐心等。γ 接近 1 的 agent 高瞻远瞩,接近 0 的 agent 只顾眼前。

有了 V(s),行动就好办了:在岔路口,往价值更高的那个状态走。难的不是怎么用价值,而是怎么到它——因为 agent 一开始对每个状态值多少一无所知,未来的奖赏总和更不可能事先知道。

TD 学习:用「下一刻」校正「这一刻」

笨办法是:每条路走到底,把实际领到的奖赏全部加起来,再回填给沿途每个状态。问题是,你得等到「最后」才能学,而很多任务根本没有最后。理查德·萨顿与安德鲁·巴托 (Richard Sutton & Andrew Barto) 发扬光大的时序差分学习给了个聪明得多的招:不必等到终点,每走一步就学一点

关键观察是:价值函数自己跟自己有个必须成立的一致性。一个状态的价值,应该等于「这一步拿到的奖赏」加上「下一个状态的(折扣后)价值」:

V(s) 应当 ≈ r + γ·V(s′)

其中 s′ 是走一步后到达的下一个状态。如果这个等式没对上,差出来的那一块,就是我们的误差信号——TD 误差 (TD error)

δ = r + γV(s′) − V(s)

这条式子值得逐项读:r + γV(s′) 是「走了一步之后,我对当前状态价值的、更靠谱的估计」(因为它含进了刚刚真实领到的 r);V(s) 是「我原先的估计」。两者之差 δ,就是意外的程度:事情比我预期的好(δ > 0)还是差(δ < 0)。然后按这个误差更新:

V(s) ← V(s) + α·δ

α(alpha)是学习率:每次按误差的多大比例去修正旧估计。注意这条规则的形状——「新估计 ← 旧估计 + 学习率 ×(实际比预期好多少)」——它和你在第 00 课、和心理学课里见过的更新公式一模一样。区别只在于:δ 不是「即时奖赏减预期」,而是把「下一个状态的价值」也算进了「实际」那一边。正因如此,TD 才能在没领到任何奖赏的中间步骤里也学到东西——只要走到了一个「比预想更值钱」的状态,价值就能往回传一格。

无时间版的祖先 · Rescorla-Wagner
心理学里早有一条著名的学习方程:罗伯特·雷斯科拉与艾伦·瓦格纳 (Rescorla & Wagner, 1972) 用「联结强度按预测误差更新」解释了经典条件反射的一大批现象(比如「阻断效应」——已被预测的奖赏不再支持新的学习)。它的形式是 ΔV = α·(λ − ΣV),即实际结果 λ 减去当前所有线索的预测之和。TD 学习正是它的带时间的推广:Rescorla-Wagner 只看一个时刻「结果 vs 预期」,TD 则在时间上层层传递价值,于是能解释「线索提前引发期待」这种动态。把 γV(s′) 那一项去掉、只留 δ = r − V(s),TD 就退化回 Rescorla-Wagner。

1997:多巴胺,原来就是那条误差信号

到这里都还是算法。真正让人起鸡皮疙瘩的,是它在大脑里被找到了。沃尔夫拉姆·舒尔茨 (Wolfram Schultz) 和同事记录猴子中脑(腹侧被盖区/黑质)多巴胺神经元的放电,做了一个干净到教科书级的实验(Schultz, Dayan & Montague, 1997)。三种情形,把 TD 误差的三种取值一一照了出来:

① 意外的奖赏 → 放电训练前期,没有任何预告,突然给一口果汁。多巴胺神经元在奖赏到来时猛烈放电。对应 δ > 0:完全没预期到,所以惊喜满格。
② 被预测的奖赏 → 不放电反复让一个线索(灯/声)预告果汁后,奖赏照常来,多巴胺却在奖赏处归于平静——尖峰前移到了线索。对应 δ ≈ 0:早料到了,不再意外。
③ 该来没来 → 低于基线线索照常预告,却故意不给果汁。在本该出现奖赏的那一刻,多巴胺放电掉到基线以下(短暂的「停顿」)。对应 δ < 0:比预期差,失望被编码成了负误差。

把这三条并起来看,结论几乎不可抵赖:中脑多巴胺神经元的相位 (phasic) 放电,编码的不是「快感」「奖赏」本身,而是奖赏预测误差——也就是 TD 误差 δ彼得·蒙塔古与彼得·达扬 (Peter Montague & Peter Dayan) 在同期的理论工作里点明了这层对应:大脑用一个全脑广播的化学信号,做的正是 TD 学习里那一步 V(s) ← V(s) + α·δ。这是计算神经科学最漂亮的胜利之一——一条本来为了让机器下棋、走迷宫而发明的算法,竟然预言了一种神经递质该在什么时候、放多少电。

别把话说过头
「多巴胺=奖赏预测误差」说的是相位(快速、瞬时)放电这一种模式,而且主要在中脑这条通路里。多巴胺系统还干很多别的事(运动控制、动机、紧张性 tonic 水平),并非任何与多巴胺有关的现象都能塞进 TD 误差。流行话里「多巴胺=快乐分子」更是错的——它编码的是「比预期好多少」,不是快乐有多大。这条由心理学第 07 课就埋下的「想要 ≠ 喜欢」之分,正源于此。

回扣:学习,是预测错了才发生的

这一课其实是在给心理学第 07 课那句直觉装上引擎。当时我们说:完全在预料之中的事教不会你任何东西,只有出乎意料时大脑才更新。现在你看到了它的机械实现——「出乎意料」就是 δ ≠ 0,「更新」就是 V(s) ← V(s) + α·δ,而那个负责喊「意外!」的信使,就是多巴胺的相位放电。直觉没有变,但它从一句不可能错的话,变成了一条能算出该放多少电、能被电极否证的主张。这正是整门课要做的事。

ML 镜像 · 这就是强化学习
TD 学习、价值函数、TD 误差——这些不是为了解释大脑才发明的,它们是机器学习里强化学习的地基。同一套 δ = r + γV(s′) − V(s) 驱动着从 TD-Gammon 到 AlphaGo 到当代 RLHF 的一长串系统。换句话说,舒尔茨在猴脑里看到的,和工程师在 GPU 上训练的,是同一道数学题的两种解法。想看这套算法在机器一侧如何长成完整的训练体系(价值估计、策略梯度、PPO/GRPO、乃至对齐语言模型),去本站的 强化学习课程——你会发现这门课里的「多巴胺」,在那边叫「奖励信号」。

动手:TD 学习赛道

下面这个部件就是舒尔茨实验的算法版。一个 agent 在线性赛道上从左跑到右:中途经过一个线索格,再走几步,在奖赏格领到果汁。每跑完一回合,它用 TD 规则更新沿途每个格子的价值,我们把每一步的 TD 误差 δ(≈多巴胺放电)画成柱子。盯着它看:训练初期,尖峰只出现在奖赏格(意外的果汁);随着回合增多,价值会沿赛道一格格往前传,尖峰逐渐迁移到线索格,而奖赏格的尖峰慢慢归零(果汁已被预测)。这正是 Schultz 1997 的三种情形在一根赛道上连续上演。

TD 学习赛道:多巴胺尖峰会前移
点「训练一回合」或「快进 ×10」,看 TD 误差(≈多巴胺相位放电)随训练从奖赏格前移到线索格。线索在第 3 格,奖赏在第 8 格。
已训练回合
0
线索格 δ 峰
0.00
奖赏格 δ 峰
0.00
判定

当判定显示「多巴胺尖峰已从奖赏前移到线索 ✓」,你就亲手复刻了 1997 年那张著名的图:奖赏没变、果汁照旧,可大脑(和算法)报告的「意外」却一路提前,跑到了第一个预告奖赏的信号上。预测误差信号永远盯着「最早能让我更新预期的那一刻」——这就是学习把世界吃进去的方式。

常见误解

一句话带走
预测和奖赏不是两件事:强化学习用奖赏预测误差把它们焊在一起。时序差分学习沿 δ = r + γV(s′) − V(s) 更新价值 V(s) ← V(s) + α·δ;而中脑多巴胺的相位放电,几乎就是这条 δ 的生物实现——意外奖赏放电、被预测的奖赏沉默、该来没来则跌破基线。学习,确实是「预测错了才发生」。
下一步
TD 学到的是一张「哪个状态值多少」的缓存表——快、省、但笨:环境一变,得重新试错才能更新。可人遇到新情况时,常常能停下来在脑子里推演未来再决定,一次都不用真的试。那是一套用世界模型做规划的机制,和 TD 这种习惯式学习并存于同一个大脑。两套系统怎么分工、谁说了算、何时切换?→ 第 05 课《无模型、有模型与世界模型》。