B · 学习与决策的计算
强化学习与多巴胺
第 03 课把行动收进了「最小化预测误差」——为了让世界符合预测,我们出手干预。可日常里,我们也为奖赏行动:为了那口甜、那笔钱、那句夸。预测和奖赏,看上去是两件事。这一课要给你看:它们是同一道题,钥匙只有一个词——奖赏预测误差 (reward prediction error)。
把「奖赏」写成可学的价值
先把问题摆正。一个 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 才能在没领到任何奖赏的中间步骤里也学到东西——只要走到了一个「比预想更值钱」的状态,价值就能往回传一格。
1997:多巴胺,原来就是那条误差信号
到这里都还是算法。真正让人起鸡皮疙瘩的,是它在大脑里被找到了。沃尔夫拉姆·舒尔茨 (Wolfram Schultz) 和同事记录猴子中脑(腹侧被盖区/黑质)多巴胺神经元的放电,做了一个干净到教科书级的实验(Schultz, Dayan & Montague, 1997)。三种情形,把 TD 误差的三种取值一一照了出来:
把这三条并起来看,结论几乎不可抵赖:中脑多巴胺神经元的相位 (phasic) 放电,编码的不是「快感」「奖赏」本身,而是奖赏预测误差——也就是 TD 误差 δ。彼得·蒙塔古与彼得·达扬 (Peter Montague & Peter Dayan) 在同期的理论工作里点明了这层对应:大脑用一个全脑广播的化学信号,做的正是 TD 学习里那一步 V(s) ← V(s) + α·δ。这是计算神经科学最漂亮的胜利之一——一条本来为了让机器下棋、走迷宫而发明的算法,竟然预言了一种神经递质该在什么时候、放多少电。
回扣:学习,是预测错了才发生的
这一课其实是在给心理学第 07 课那句直觉装上引擎。当时我们说:完全在预料之中的事教不会你任何东西,只有出乎意料时大脑才更新。现在你看到了它的机械实现——「出乎意料」就是 δ ≠ 0,「更新」就是 V(s) ← V(s) + α·δ,而那个负责喊「意外!」的信使,就是多巴胺的相位放电。直觉没有变,但它从一句不可能错的话,变成了一条能算出该放多少电、能被电极否证的主张。这正是整门课要做的事。
动手:TD 学习赛道
下面这个部件就是舒尔茨实验的算法版。一个 agent 在线性赛道上从左跑到右:中途经过一个线索格,再走几步,在奖赏格领到果汁。每跑完一回合,它用 TD 规则更新沿途每个格子的价值,我们把每一步的 TD 误差 δ(≈多巴胺放电)画成柱子。盯着它看:训练初期,尖峰只出现在奖赏格(意外的果汁);随着回合增多,价值会沿赛道一格格往前传,尖峰逐渐迁移到线索格,而奖赏格的尖峰慢慢归零(果汁已被预测)。这正是 Schultz 1997 的三种情形在一根赛道上连续上演。
当判定显示「多巴胺尖峰已从奖赏前移到线索 ✓」,你就亲手复刻了 1997 年那张著名的图:奖赏没变、果汁照旧,可大脑(和算法)报告的「意外」却一路提前,跑到了第一个预告奖赏的信号上。预测误差信号永远盯着「最早能让我更新预期的那一刻」——这就是学习把世界吃进去的方式。
常见误解
- 误解:多巴胺是「快乐/奖赏分子」,分泌越多越爽。 (澄清:相位多巴胺编码的是奖赏预测误差——「比预期好多少」,不是快乐的强度。完全被预测的奖赏照样让你舒服,但几乎不引发相位放电,因为 δ ≈ 0。)
- 误解:TD 误差就是「这一步奖赏减去预期奖赏」。 (澄清:那是无时间的 Rescorla-Wagner。TD 误差是 δ = r + γV(s′) − V(s),把「下一个状态的价值」也算进了「实际」一侧——正因如此,没领到奖赏的中间步骤也能学习,价值才能沿时间往前传。)
- 误解:既然算法和神经放电对得上,大脑里就「装着」一套 TD 算法。 (澄清:这是把马尔的计算层错当实现层。说的是大脑在计算层上近似地解了价值学习这个问题;多巴胺是它在实现层上的一个近似信号,而非一段被执行的代码。)
- 误解:有了价值函数和 TD 学习,决策就讲完了。 (澄清:TD 学的是「值」,是一种无模型的、靠反复试错积累的直觉。可人还会停下来想象、规划没走过的路——那是另一套机制。两套怎么分工,是第 05 课的事。)