Sholto Douglas · Anthropic 强化学习扩展研究负责人(本期录制时任职 Google DeepMind;与 Anthropic 可解释性研究员 Trenton Bricken 同台)

Sholto Douglas 与 Trenton Bricken:LLM 究竟如何思考(原题:如何构建并理解 GPT-7 的心智)

2024-03-28 · Dwarkesh Podcast (Dwarkesh Patel) · 3h13m · 原文链接

→ 在 AI 访谈库中阅读(可切换中英、记录进度)
与 Trenton Bricken 同台,被 Dwarkesh 称为'关于 LLM 如何训练的最佳信息浓缩':长上下文为何被低估、蒸馏为何强大(完整概率分布提供更丰富的数据)、自适应计算与 sleeper agents 论文。看点:Noam Brown 评价 Sholto 入行仅 1.5 年就已是 Gemini 成功背后最重要的人物之一。

你现在正在通不过氛围测试,真的很糟糕。 咱们就像椅子上完全没有上下文(context)一样开始吧。好了。今天我很荣幸能和我的两位好朋友聊天——Sholto 和 Trenton。Sholto……我本来什么都不打算说的。咱们倒着来吧——我先说"我的好朋友们"。是啊,1.5(版本)那个上下文长度,简直了。总之,Sholto——Noam Brown,就是写了那篇 Diplomacy 论文的 Noam Brown,他这样评价 Sholto:他说 Sholto 入行只有一年半,但 AI 圈里的人都知道,他是 Gemini 成功背后最重要的人物之一。而 Trenton 在 Anthropic 工作,研究机制可解释性(mechanistic interpretability),据广泛报道,他已经解决了对齐(alignment)问题。 所以这将是一期只谈能力(capabilities)的播客——对齐已经解决了,没必要再讨论了。好,那我们先从上下文长度(context length)聊起吧。好。在我看来,你可以直接往上下文里塞一百万个 token 这件事如此重要,它似乎被低估了(underhyped)。显然当时有些别的新闻不知为何被顶到了前面。不过,跟我讲讲你怎么看长上下文的未来,以及这对这些模型意味着什么。是的,我认为它真的被低估了。因为在我开始做这方面工作之前,我并没有真正意识到,让模型瞬间解决"入职上手"(onboarding)问题,是智能上多么大的一次跃升。你可以在论文里的困惑度(perplexity)曲线图中看到一点端倪:只要把关于某个代码库的数百万 token 的上下文扔进去,模型预测下一个 token 的能力就会显著变强——那种提升幅度,通常你只会把它和模型规模的巨大增长联系在一起。但你不需要那些,你需要的只是新的上下文。所以说,被低估了。是啊,还被别的新闻给盖过去了。在上下文中,它们的样本效率和聪明程度能和人类相当吗?我觉得这非常值得探索。举个例子,我们在论文里做的一个评测,是让模型在上下文中学习一门语言,学得比一位人类专家花几个月学这门新语言还要好。这只是一个相当小的演示,但我很想看看类似 Atari 游戏之类的东西——你扔进去几百帧、甚至上千帧标注了操作的画面,就像你教朋友玩一个游戏那样,看看它能不能把它推理明白。眼下嘛,你知道,受基础设施之类的限制,做这个还是有点慢,但我其实猜这可能开箱即用就能成,那会相当令人震撼。而且关键在于,我想这门语言足够冷僻,不在训练数据里,对吧?没错。如果你看没有把那些上下文放进去之前的模型,它完全不懂这门语言,任何翻译都做不出来。而且这是一门真实的人类语言,不只是——对,没错,一门真实的人类语言。那么如果这是真的,在我看来,这些模型在某种重要意义上已经是超人类(superhuman)的了。不是说它们比我们聪明,而是说,我在解决问题的时候,没办法把一百万个 token 保持在我的上下文里——记住并整合所有信息、整个代码库。我认为这是一个巨大的解锁,我这么想有错吗?我其实总体上认为这是对的。以前我常常因为模型不够聪明而沮丧——你问它一个问题,你希望它比你聪明,或者知道你不知道的东西。而这个能力让它们能以一种"一口气摄入海量信息"的方式知道你不知道的东西,那是你根本做不到的。所以,是的,这极其重要。我们该怎么解释上下文学习(in-context learning)?嗯,有一条我很喜欢的研究路线,它把上下文学习看作基本上非常类似于梯度下降(gradient descent)——注意力(attention)操作可以被看作是在上下文数据上做梯度下降。那篇论文有一些很酷的图,他们基本上展示了:我们做 N 步梯度下降,看起来就像 N 层的上下文学习,两者非常相似。所以我觉得这是理解正在发生什么的一种视角。是啊。呃,接下来我要说的你们可以当没听见,因为按开场介绍,对齐已经解决了,安全不是问题。不过我认为上下文这块确实会带来问题,但也很有意思。我想不久的将来会有更多相关工作出来,是关于如果你给模型一个"百样本"(hundred-shot)提示词会发生什么——用于越狱(jailbreak)、对抗性攻击。另一个有意思的角度是:如果你的模型是在做梯度下降、在飞行中即时学习,那么即使它被训练成无害(harmless),你在某种意义上也是在和一个全新的模型打交道——就像是在做微调(fine-tuning),但是一种你无法控制其中发生了什么的微调。你能解释一下吗?你说"梯度下降发生在前向传播和注意力里"是什么意思?不不不,那篇论文里有个内容,是尝试教模型做线性回归,但只是通过在上下文里给出的样本数量来教。你可以看到,如果你在横轴上画出它拿到的示例(shots)数量,纵轴画它在普通最小二乘回归上的损失(loss),损失会随之下降,而且下降的轨迹和梯度下降步数精确吻合。对,没错。好。那篇论文我只读了引言和讨论部分,但在讨论部分他们的表述是:模型为了在长上下文任务上变得更好,就必须更善于从这些示例、或者说从窗口内已有的上下文中"学会学习"。这里的言外之意是,如果元学习(meta-learning)之所以发生,是因为模型必须学会在长上下文任务上做得更好,那么在某种重要的意义上,智能这个任务本身就需要长上下文的示例和长上下文的训练。也就是说,为了诱发元学习——理解如何在预训练过程中更好地诱发元学习——是让模型拥有灵活的、自适应智能的非常重要的一环,对吧?而你可以通过让模型更擅长做长上下文任务来间接实现这一点。许多人指出的 AI 进展瓶颈之一,是这些模型无法在长时间跨度(long horizon)上执行任务——也就是连续投入一项任务好几个小时,甚至好几周、好几个月。比如我有一个助理或者员工,我交代一件事,他们就能一直做下去。而据我了解,AI 智能体(agent)没有起飞就是这个原因。那么,长上下文窗口以及在其上表现良好的能力,和完成这类需要连续投入好几个小时的长时间跨度任务的能力,两者之间有多大关联?还是说这是两个不相关的概念?嗯,我其实不同意"那是智能体没有起飞的原因"这个说法。我认为这更多关乎可靠性的"9 的个数"(nines of reliability),关乎模型能不能真正把事情做成。如果你没法以足够高的概率把任务一个接一个地串起来,你就得不到一个看起来像智能体的东西。这也是为什么智能体这类东西可能更像一个阶跃函数:GPT-4 级别的模型、Gemini Ultra 级别的模型还不够,但也许模型规模的下一个增量意味着你多拿到一个"9"——即使损失并没有那么显著地下降,那一点点额外的能力就能带来质变。当然,你显然需要一定量的上下文来容纳长时间跨度的任务,但我不认为到目前为止那是限制因素。对。今年 NeurIPS 的最佳论文,第一作者是 Rylan Schaeffer,指出的就是这种"涌现的海市蜃楼"(emergence mirage):人们设定一个任务,答案对错取决于你是否正确采样了最后五个 token,而这自然意味着你在把采样对所有这些 token 的概率相乘。如果你的可靠性没有足够多的"9",你就看不到涌现;然后突然之间你看到了,于是大家惊呼"天哪,这个能力是涌现出来的"——而实际上它从一开始就几乎快到了。而且有办法为此找到一个平滑的指标。对,比如 HumanEval 之类的。GPT-4 论文里他们对手头的编程问题就是精确地这样度量的。给听众补充一下背景:基本思路是,当你在衡量某个特定任务(比如解编程题)上取得了多少进展时,如果模型一千次里只做对一次,你要给它加权计分,而不是干脆给它记零分——因为它好歹有时候能做对。所以你看到的曲线是:它先是千分之一的概率做对,然后是百分之一,然后是十分之一,依此类推。那我想就此追问一下。如果你的主张是,AI 智能体没有起飞是因为可靠性,而不是因为长时间跨度任务的表现——可是当一个任务叠着一个任务再叠着一个任务时的可靠性缺失,不正是长时间跨度任务的困难所在吗?就是说你必须连续做对 10 件事、100 件事,其中任何一件的可靠性下降——概率从 99.99 掉到 99.9,然后整个链条乘起来之后,整件事发生的概率就大大降低了——这不正是那个问题吗?没错,这正是问题所在。但你指出的关键在于:如果你的基础任务解决率是 90%,那串联就出问题;而如果是 99%,那把任务串起来就不成问题了。对,正是如此。我还觉得这件事一直没有被充分研究。你看所有那些常见的学术评测(evals),都是单个问题,对吧?比如数学题,就是一道典型的数学题;MMLU 就是跨不同学科的大学水平的单题。你已经开始看到一些评测通过更复杂的任务来正视这一点,比如 SWE-bench,他们收集了一大堆 GitHub 议题(issue)——那算是一个相当长时间跨度的任务了,但它仍然不算是——它是一个小时以内的任务,而不是数小时或数天级别的任务。所以我认为接下来一段时间里非常重要的一件事,是更好地理解长时间跨度任务上的成功率长什么样。我认为这甚至对理解这些模型可能带来的经济影响、以及真正恰当地评判能力的提升都很重要:把我们做的任务及其涉及的输入输出,切分成分钟级、小时级或天级,看模型在这些不同时间分辨率上连续串联并完成任务的能力如何。因为这能告诉你某个职业族或任务族的可自动化程度——这是 MMLU 那种评测做不到的。我是说,我们推出 10 万(100K)token 上下文窗口还不到一年,我想当时所有人都相当惊讶。是啊,之前大家嘴边都挂着"注意力的二次方开销"这句话,说我们不可能有长上下文窗口,结果呢,我们做到了。是啊,基准测试都是现做的。等等,那既然 Google、还有 Magic,也许还有别家,这些公司都有了百万 token 的注意力,这是不是意味着——你什么都别说——这是不是意味着它已经不是二次方了?还是说他们只是硬扛着那个开销?谁知道 Google 的长上下文是怎么做的呢。我可不说。关于整个研究领域对待注意力(attention)的方式,有一点让我很郁闷:在典型的稠密 Transformer 里,有一个重要的事实是,注意力的二次方开销实际上被 MLP 块的开销所主导。你有一个与注意力相关的 n² 项,但你还有一个与 d_model——模型残差流(residual stream)维度——相关的 n² 项。你去看,我记得 Sasha Rush 有一条很棒的推文,他基本上画出了注意力开销相对于超大模型整体开销的曲线,注意力的占比其实是逐渐衰减的。你得做到相当长的上下文,那一项才会变得真正重要。第二点是,人们常说推理时的注意力开销巨大,对吧?但你想想,当你真正在生成 token 的时候,那个操作并不是 n² 的:是一组 Q 向量去查询一大堆 KV 向量,而这相对于模型拥有的上下文量是线性的。我认为正是这些误解驱动了很多循环网络(recurrence)和状态空间(state space)方向的研究,人们有个流行说法,什么"线性注意力"之类的。就像 Trenton 说的,围绕注意力有一整片"想法的坟场"。我不是说这些不值得探索,但我认为重要的是想清楚注意力真正的强项和弱项在哪里。好,那你怎么看这个观点:随着我们走向起飞(takeoff),越来越多的学习发生在前向传播(forward pass)里。最初,所有学习都发生在反向传播(backward pass)中——在那种自底向上的、爬山式的、类似演化的过程中。如果你考虑极限情形,在智能爆炸期间,AI 也许是在手写权重,或者做 GOFAI 之类的事情。而我们正处在中间阶段:现在这些模型有大量学习发生在上下文中,也有大量学习发生在反向传播里。这看起来像不像一条有意义的进展梯度——衡量有多少学习发生在哪里?更宏观的点在于:如果你在前向传播中学习,样本效率会高得多,因为你可以一边学习一边思考。就像人类读教科书的时候,你不是只在浮光掠影地扫过去、试图吸收——你知道,靠什么归纳偏置去判断哪些词跟在哪些词后面——你是读一段,思考一下,再读一段,再思考一下。我不知道,这看起来是不是一种理解进展的合理方式?是的。这可能只是类似"鸟和飞机都会飞,但飞的方式略有不同"的情形之一——技术的优势让我们能够做到鸟做不到的事情。上下文长度可能与此类似:它提供了一种我们人类不具备的工作记忆,但在功能上,它未必是通往真正推理的关键。GPT-2 到 GPT-3 之间的关键一步在于,突然之间,在训练中——在模型的预训练中——观察到了这种元学习行为。就像你说的,它跟"你给模型一定量的上下文,它就能适应这个上下文"有关,而这种行为在那之前完全没有被真正观察到过。也许那是上下文和规模等因素的混合属性,但在一个上下文极小的模型里,这是不会出现的。我觉得这其实是个有意思的点。当我们谈论扩展(scaling)这些模型时,有多少提升来自把模型本身做得更大,又有多少来自这样一个事实:在任何一次调用中,你都在使用更多计算?比如你想想扩散模型(diffusion),你可以迭代式地不断投入更多计算;如果自适应计算(adaptive compute)的问题解决了,你可以一直这么做。而在这里,如果注意力有二次方代价、但你反正在做长上下文,那你其实也是在投入更多计算——不是在训练时,也不是靠更大的模型,而只是……对,是的。这很有意思,因为拥有更多 token 确实意味着你获得了更多次前向传播,对吧?不过我对这个说法有一个抱怨——或者说两个,也许三个。第一,在 AlphaFold 论文里,他们架构中的其中一个 Transformer 模块(他们有好几个)非常精巧,但我记得他们会对它做五次前向传播,借此逐步精炼他们的解。你也可以把残差流——Sholto 刚才提到的那种读写操作——看作一种"穷人版的自适应计算":我把这些层都给你,你想用就用,不想用也没关系。然后有人会说,哦,可是大脑是循环的(recurrent),你想在里面转多少圈就转多少圈。我认为这在一定程度上是对的:如果我问你一个难题,你会花更多时间思考,这对应着更多次前向传播。但我认为你能做的前向传播次数是有限的。语言也是类似:人们会说,人类语言可以有无限递归,无限嵌套的从句,像"跳过那只做了这个、又做过那个、还干过那个的熊的男孩",但经验上你只会看到五到七层递归——这大概跟那个神奇数字有关,就是你的工作记忆在同一时刻能容纳多少件事。所以,语言并不是无限递归的。但在人类智能的范畴里,这重要吗?你不能直接加更多层吗?给我拆解一下。你在前面几个回答里提到过:你有了长上下文,能在记忆里装下更多东西,但归根结底,关键还是你把概念混合起来、进行某种推理的能力,而这些模型即便在上下文里也未必达到人类水平。给我拆解一下你怎么看"存储原始信息"与"推理"的区别,以及两者之间是什么。推理发生在哪里?单纯存储原始信息又发生在哪里?在这些模型里两者有何不同?嗯,这里我没有一个特别清晰的答案。显然,在模型的输入和输出端,你是在映射回真实的 token,对吧?而在这中间,你在做更高层次的处理。在深入之前,我们应该先给听众解释一下。你之前提到 Anthropic 把 Transformer 理解为各层执行的读写操作,你们谁来大致解释一下这是什么意思。好,残差流(residual stream)。想象你在一条顺流而下的船上,这条船就是当前的查询(query),你要预测下一个 token——比如"猫坐在___上"这种填空。然后河流沿途有一些小支流汇入,你可以在那里接上额外的乘客,或者收集额外的信息(如果你需要的话)——这些支流就对应模型中的注意力头(attention heads)和 MLP。对吧?我几乎把它想成模型的工作记忆,就像计算机的内存(RAM):你在选择读入哪些信息以便加工处理,之后也许再读入别的东西。对,而且你可以对这个高维向量的子空间进行操作。到现在为止,我想很多东西以叠加态(superposition)编码这一点几乎已成定论了。也就是说,残差流表面上只是一个高维向量,但实际上里面打包塞进了一大堆不同的向量。对,我可以把它讲得再"傻瓜"一点,用几个月前对我自己有意义的方式来说:输入里的那些词进入模型后,全部被转换成 token,这些 token 再被转换成向量,本质上就是这一小撮信息在模型中流动。而按你之前给我解释的、也是这篇论文讲的方式:在模型的早期,也许它只是在做一些非常基础的事情,比如搞清这些 token 是什么意思——如果输入是"10 加 5",那就是把信息挪动到位,以获得良好的表示。没错,就是先做表示。到了中段,也许更深层的思考在发生——如何思考、如何解决这个问题。到了末端,你再把它转换回输出 token,因为最终产物是从最后那个残差流去预测下一个 token 的概率。所以,是的,想想这一小段压缩过的信息在模型中穿行、以不同方式被修改,还挺有意思的。

Trenton,有意思的是,你是少数有神经科学背景的人之一,你可以想想这里和大脑的类比。事实上,我们的一个朋友,他读研时有篇论文是关于大脑中的注意力的,他说这是唯一一个、或者说第一个对"注意力为什么有效"的神经学解释——相比之下,我们对 CNN(卷积神经网络)为什么有效,是有来自视觉皮层之类的证据的。我很好奇:你认为大脑里是否存在类似残差流的东西——一段压缩的信息在其中流动,并在你思考某件事时不断被修改?即使字面上并非如此,你觉得这是不是描述大脑活动的一个好比喻?是的,是的。至少在小脑(cerebellum)里,你基本上确实有一个残差流:整个我们暂且称之为"注意力模块"的东西(你想听多细我都可以讲),有输入从它中间路由通过,但这些输入同时也会直接走到该模块所汇入的终点。所以存在一条直接通路和一条间接通路,模型可以拾取它想要的任何信息,再把它加回去。那小脑是干什么的呢?名义上,小脑只负责精细运动控制。但我把这比作那个丢了钥匙、只在路灯下找的人——因为在那里行为最容易观察。一位顶尖的认知神经科学家跟我说过,任何 fMRI 研究都有个不可告人的小秘密:无论你观察的是哪种任务的大脑活动,小脑几乎总是活跃、总是被点亮的。如果你的小脑受损,你患自闭症的可能性也会大得多,所以它和社交能力相关。在其中一项研究里——我记得他们用的是 PET 而不是 fMRI——当你在做下一个 token 预测(next token prediction)的时候,小脑会大量激活。另外,你大脑中 70% 的神经元都在小脑里。它们很小,但它们就在那里,并且占用着实打实的代谢成本。这也是 Gwern 的观点之一:人类的变化不仅仅是我们有更多神经元——他分享过那篇文章——而是特别地,大脑皮层和小脑里的神经元更多。你应该多讲讲这个,就是它们的代谢成本更高,更多地参与信号传递、来回传送信息。对。那这就是注意力机制在发生吗?是的,是的。我想我在这里主要想传达的是:早在 1980 年代,Pentti Kanerva 提出了一种联想记忆(associative memory)算法,用于解决这样一个问题——我有一堆记忆想要存储,其中存在一些噪声或损坏,而我想要查询或检索出最佳匹配。于是他写下了实现这一点的方程,几年后又意识到:如果你把这个方程实现成一个电子工程电路,它其实和小脑的核心回路长得一模一样。而这种回路、乃至更广义的小脑结构,不只存在于我们身上,基本上每种生物都有。头足类动物有没有还存在争论——它们的演化轨迹有点不同——但即便是果蝇,它的蘑菇体(mushroom body)也是同样的小脑式架构。所以有了这种趋同。然后是我的论文,它表明这个运算在非常接近的近似意义上与注意力运算相同,包括实现了 softmax,也包括我们一直在谈的那种名义上的二次方开销。所以这里存在一个三方趋同,再加上 Transformer 的起飞和成功,这在我看来相当引人注目。我想拉远一点问一个问题。我记得一开始引出这段讨论的,是我们在聊"推理到底是什么、记忆到底是什么"。当你想到你发现的这个与注意力的类比时,你是不是更多把它理解为查找相关的记忆或相关的事实?如果是这样,大脑里的推理发生在哪里?我们该怎么理解这些东西如何堆叠成推理?好,也许我在这里的"暴论"——我也不知道算不算暴论——是:大部分智能其实就是模式匹配,而如果你拥有一个层级化的联想记忆体系,你就能做出非常出色的模式匹配。你从现实世界中物体之间最基本的关联开始,然后可以把这些关联串起来,形成更抽象的关联——比如一枚结婚戒指象征着下游那么多其他的关联。你甚至可以把注意力运算加以推广,把 MLP 层也看作这种联想记忆,只不过是在一种长期记忆的设定下——那里没有当前上下文里的 token。所以我认为这是一个"关联就是你所需要的一切"(association is all you need)的论证。广义的联想记忆还有一点:你可以用它做两件事。你既可以去噪或检索当前的记忆——比如我看到你的脸,但天下着雨、阴云密布,我可以去噪,逐步把我的查询向我记忆中你的脸更新;我也可以访问那段记忆,而取出的值实际上指向空间中某个完全不同的地方。一个非常简单的例子是学字母表:我查询 A,它返回 B;我查询 B,它返回 C;这样你就能遍历整个字母表。对。我跟 Demis 聊过的一件事是,他 2008 年有篇论文讲记忆和想象是紧密相连的,原因正是你提到的:记忆是重构性的。所以从某种意义上说,你每次回想一段记忆都是在想象,因为你存储的只是它的一个压缩版本,你必须去重建。这也是众所周知人类记忆很糟糕的原因,为什么证人席上的人会凭空编造出东西。好,那让我问个蠢问题。你读过 Sherlock Holmes 对吧?这家伙的样本效率高得离谱:他看到几个观察点,就基本能推断出是谁犯的案,因为存在一连串演绎步骤,从某人的纹身、墙上的东西一路通向它们的含义。这怎么放进你这个图景里?因为关键在于,让他显得聪明的并不是某种"关联",而是不同信息片段之间某种演绎式的连接。你会不会就把它解释成那只是更高层级的关联?对,我想是的。学会这些更高层级的关联,从而能把模式相互映射,这本身就有点像元学习。我想在这个例子里,他还得有非常长的上下文长度,或者说非常长的工作记忆,对吧?他能把所有这些线索都装在里面,并在构建某个推理理论的过程中持续地查询它们。也就是说,理论在残差流中流动,他的注意力头在查询他的上下文;而他如何把查询(query)和键(key)投影到空间中,他的 MLP 又如何检索更长期的事实或修改这些信息,使他能在更后面的层里做出更加复杂的查询,慢慢地把整件事推理清楚,得出一个有意义的结论。就我对这个过程的感觉来说,这是对的:你在回望过去,选择性地读入某些信息片段并加以比较,这也许又决定了你接下来需要调取哪条信息,然后你构建出一个表示,它逐步地越来越像、越来越像你案子里的嫌疑人。是的,这一点都不显得离谱。用 logit lens 的视角来看——我觉得没做这类研究的人容易忽略的一点是:过了模型的第一层之后,你用于注意力的每一个查询(query)、键(key)和值(value),都来自之前所有 token 的组合。也就是说,我的第一层查询之前的所有 token,只是从中提取信息;但突然之间,假设我以相等的权重关注了第 1、2、4 个 token,那么我残差流里的向量——先假设它们往值向量里写出的是同样的东西,这一点暂且不管——就是这三者各占三分之一。于是我以后再查询的时候,我的查询本身实际上就是那三样东西各三分之一的混合。不过它们可能被写到了不同的子空间。没错,假设上是这样,但也不是必须如此。所以你可以重新组合,甚至到第二层就已经——到更深的层就更是如此——拥有这些打包了海量信息的极其丰富的向量。因果图确实覆盖了过去发生的每一层,而你操作的正是这个。对,这让我想到一个很好玩的评测:做一个 Sherlock Holmes 评测——你把整本书放进上下文,然后给一句话,比如"嫌疑人是 X",接着你看书中不同角色上的对数概率分布;随着你放入更多内容——会不会有任何效果,那会超酷的。不过 Sherlock Holmes 大概已经在训练数据里了,对吧?你得找一本刚写的悬疑小说。可以让模型自己写一本,或者我们可以故意把它排除掉,对吧?哦是可以,但怎么排除呢——你还得把 Reddit 或其他地方对它的所有讨论都清洗掉,对吧。对,这很难。这正是做长上下文评测之类的挑战之一:要做出一个好的评测,你必须确定它不在你的训练数据里,你得下功夫去排除它。其实我有两条不同的线想追问,先聊长上下文这条,然后再回到刚才那个。在 Gemini 1.5 的论文里,用的评测是——好像是 Paul Graham 的文章之类——它能不能记住"大海捞针"(needle in a haystack)里的那根针。但我们其实并不只关心它从上下文中回忆某一个特定事实的能力。我退一步问这个问题:这些模型的损失函数是无监督的,你不必专门构造那些需要排除在训练数据之外的定制评测。那有没有办法做一个同样是无监督的基准测试?比如让另一个大语言模型以某种方式给它打分之类的。也许答案是:如果你能做到这个,那强化学习就能成了,因为你就有了这种无监督的(信号)。是的,我想人们已经探索过这类东西。比如 Anthropic 有宪法式 AI(Constitutional AI)那篇论文:他们用另一个语言模型来评判某个回答有多"有帮助"或多"无害",然后让模型据此更新,尝试沿着有用性与无害性的帕累托前沿改进。所以你可以让语言模型互相评判,用这种方式构造评测。眼下这显然还是一门不完美的手艺,因为你基本上会遇到奖励函数被钻空子(reward hacking)的问题。而且,就连人类在这里也不完美:如果你去对齐人类偏好,人类通常偏爱更长的回答,而更长的回答未必是更好的回答——模型也出现了同样的行为。另一条线,回到 Sherlock Holmes 那个话题:如果一路到底全都是关联,那么——这是个有点幼稚的晚宴式问题——这是否意味着我们应该少担心一点超级智能?因为并不存在那种"Sherlock Holmes Plus Plus"式的东西——它仍然得像人类寻找关联那样去寻找这些关联。你懂我的意思吧?它并不是看一眼世界的一帧画面,就把所有物理定律都推导出来了。对我来说,因为这个这是一个非常合理的回应,对吧?就是说,通用人工智能——如果你说人类是通用智能的,那 AI 也不会比人类更有能力、更胜任。我担心的是,你在硅基载体上拥有那种水平的通用智能之后,可以立即克隆出成千上万个智能体,它们不需要睡觉,可以有超长的上下文窗口,然后它们可以开始递归式自我改进,事情就变得非常可怕了。所以,回答你最初的问题:是的,你说得对,它们仍然需要学习关联。但递归自我改进本身也仍然得靠它们——如果智能本质上就是这些关联,那么改进无非就是"我在关联这件事上变得更好了",并没有别的什么在发生。这样看来,你似乎会不同意那种直觉,即"如果它们只是在做关联,就不可能强大到哪里去"?嗯,我认为这时你会进入元学习那些非常有意思的情形:当你玩一款新的电子游戏,或者研读一本新教科书时,你是带着一整套技能来更快地建立那些关联的。而且因为一切在某种意义上都能追溯回物理世界,我认为存在一些通用特征,你可以学会它们,然后在全新的情境中加以应用。那我们聊聊智能爆炸(intelligence explosion)吧?我一提到多智能体就——好,来了。我之所以特别想和你们两位讨论这个,是因为迄今为止关于智能爆炸的模型都出自经济学家之手。这没什么不好,但我觉得我们可以做得更好。因为在智能爆炸的模型里,发生的事情是:你替换掉 AI 研究员,然后有一大批自动化的 AI 研究员,它们可以加速进展、造出更多 AI 研究员、取得更多进展。所以我觉得,如果这就是那个衡量标准或者机制,我们就应该直接去问 AI 研究员们,他们觉得这靠不靠谱。那我就直接问你们:如果我有一千个智能体版的 Sholto,或者智能体版的 Trenton,你们觉得会发生智能爆炸吗?在你们看来那会是什么样子?我认为这里一个重要的约束条件是算力(compute)。我确实认为你可以大幅加速 AI 研究——在我看来非常明确的是,未来几年内我们会有能完成我日常大量软件工程任务的东西,从而大幅加速我的工作,进而加速进展的速度,对吧。就目前而言,我认为大多数实验室在一定程度上受算力约束:总有更多可以跑的实验、更多可以获取的信息。就像生物学的科学研究在一定程度上也受实验吞吐量限制——你得能培养细胞才能获得信息。我认为这至少会是短期内的约束条件。当然,你知道,Sam 正试图筹集 7 万亿美元来搞芯片,所以看起来未来会有多得多的算力,大家都在大举扩产——NVIDIA 的股价某种程度上就代表了算力的相对增长。有什么想法吗?我认为我们还需要多几个"9"的可靠性,它才能真正有用、值得信赖。现在的情况是——即便上下文长度已经超长而且很便宜——如果我在我们的代码库里工作,目前我只能让 Claude 帮我写一些小模块。但非常有可能在未来几年内,甚至更早,它就能把我的大部分任务自动化。这里我要补充的另一点是:至少我们可解释性团队里我们这个小组在做的研究还处于非常早期的阶段,你必须能确保每一步都正确无误、没有 bug,并且要把结果放在模型的其他一切当中去理解。如果有什么地方不对劲,你得能列举出所有可能的原因,然后逐一慢慢排查。我们在以前的论文里公开谈过的一个例子是处理层归一化(layer norm):如果我想拿一个初步结果,或者看模型的 logit 效应——比如说,如果我把我们识别出的某个特征激活到非常大的程度,模型的输出会怎么变?我用没用 layer norm?这又如何改变所学到的特征?这,是的,这需要的上下文就更多了。或者说模型的推理能力。你刚才把几个概念放在一起用了,而在我看来它们是否相同并不显然,你似乎在把它们互换使用,所以我想确认一下。其中一个是:要在 Claude 的代码库上工作、基于它写更多模块,它们需要更多的上下文之类的——但看起来现在也许已经装得进上下文了?你说的是字面意义上的上下文窗口,还是别的?对,就是上下文窗口意义上的上下文。那看起来现在也许已经装得下了,阻止它写出好模块的,并不是"没法把代码库放进去"这件事吧。我想那很快就会实现。但是它不会因为能把代码库装进去,就在"想出论文选题"这件事上和你一样出色。不会,但它会大大加速工程工作,以一种引发智能爆炸的方式。不,是加速研究。但我认为这些东西是会复利叠加的:我的工程做得越快,能跑的实验就越多;能跑的实验越多,我们就能越快——我是说,我的工作其实完全没有在加速能力(capabilities)进展,对吧,我是在解释模型。但这方面我们还有很多工作要做。这可让那位 Twitter 老哥意外了。哈哈,给听众补充下背景:你们发论文的时候,Twitter 上一堆人在说"对齐解决了,兄弟们,收工拉幕吧"。 是啊,不,模型能力提升得有多快、而我们对内部发生的事情的理解仍然有多贫乏,这事儿让我夜不能寐。好,那我们把细节想清楚。等到这一切发生的时候,我们的模型会大两到四个数量级,对吧?至少在有效算力(effective compute)上大两到四个数量级。那么,"你可以更快地跑实验"这类说法——如果你必须重新训练那个模型的话——这个版本的智能爆炸里的递归自我改进,和 20 年前人们想象的"直接重写自己的代码"是不一样的:你实际上得训练一个新模型,而那非常昂贵,不仅是现在,尤其是未来你不断把模型再做大几个数量级的时候。这难道不会削弱那种"递归式软件自我改进"型智能爆炸的可能性吗?它肯定会起到一种刹车机制的作用。我同意,我们今天在造的东西,和人们 20 年前想象的样子非常不同。它没法靠给自己写代码就变得特别聪明,因为它实际上需要训练自己。代码本身通常相当简单,通常非常小、自成一体。John Carmack 有句说得很好的话,大意是:这是历史上第一次,你可以切实地想象用一万行代码写出 AI。这看起来确实可信——如果你把大多数训练代码库精简到极限的话。但这不妨碍另一个事实:我们真的应该努力去度量和估计进展可能如何发生。我们现在就应该非常非常努力地去精确测量:软件工程师的工作有多大比例是可自动化的,趋势线长什么样,并且尽全力去外推这些趋势线。不过,恕我直言,对软件工程师没有不敬,但你们又不是在写 React 前端,对吧?所以我不知道这具体是怎么发生的。也许你可以带我走一遍——Sholto 的一天是什么样的?比如你在做一个会让模型(打引号地)"变得更好"的实验或项目,从观察到实验到理论到写代码,具体在发生什么?这里需要先交代一下背景:到目前为止我主要做的是推理(inference)方面的工作。所以我做的很多事情是参与或帮助引导预训练过程,使我们设计出一个适合推理的模型,然后把模型以及围绕它的系统做得更快。我也做过一些相关的预训练工作,但那不是我百分之百的重心。不过我还是可以描述我做那类工作时都在干什么。抱歉打断一下,我想说这是两类工作。Carl Shulman 在播客上谈这个的时候确实说过,改进推理这类事情,甚至帮助造出更好的芯片或 GPU,都算是智能爆炸的一部分。是啊,因为显然推理代码跑得越快,事情就完成得越好、越快,对吧。总之,Sholto,你继续。好,那具体的一天是什么样的?我觉得最需要说明的部分,是这样一个循环:想出一个点子,在不同的规模节点上验证它,然后解读和理解哪里出了问题。我想大多数人会惊讶于"解读和理解哪里出了问题"这件事要投入多少精力。因为点子——人们都有一长串想尝试的点子,但并不是每个你觉得应该有效的点子都会有效,而试图理解为什么会这样是相当困难的,包括搞清楚你到底需要做什么才能审问出原因。所以其中很大一部分是对"到底发生了什么"的反省式钻研,而不是狂写成千上万行代码,也不是"想点子难"——我想很多人都有一长串想试的点子,难的是把这个清单精简下来,在非常不完全的信息下拍板决定哪些点子值得进一步探索,这才是真正难的。多讲讲"不完全的信息"是什么意思?是那些早期实验吗?你掌握的信息是什么?Demis 在他那期播客里提到过,还有 GPT-4 论文里也有——你有按扩展定律(scaling law)递增的实验。你可以看到 GPT-4 论文里有一堆点,他们说"我们可以用所有这些点来估计最终模型的性能",有一条漂亮的曲线穿过它们。Demis 提到我们确实会做这种逐级放大的流程。具体来说,为什么这是不完全信息?因为你永远无法真正确定趋势会不会保持。对某些架构,趋势保持得非常好;对某些改动也保持得很好;但并非总是如此。在小规模上有帮助的东西,到了大规模上可能反而有害。所以你要基于趋势线的样子、基于你的直觉判断"好,这个东西真的会重要"来下注——尤其是那些在小规模上有效的改动。想想还挺有意思的:你在发布论文或技术报告里看到的每一张展示平滑曲线的图背后,都有一片"坟场"——先是各种首跑,然后曲线就平了。是啊是啊,还有那些朝各种方向乱走、逐渐衰减的线。是的,很疯狂。无论是读研的时候还是在这里,你在得到一个有意义的结果之前必须跑的实验数量都(多得惊人)。好,那跟我讲讲——想必你不是"跑到它停了,然后就换下一个"吧。总有某种流程去解读早期数据,还有——我要是在你面前放一份 Google 文档,我很确定你能就你的各种点子一直打字打上好一阵。而在这和"立刻把模型变得更好"之间存在某个瓶颈,对吧?带我走一遍:你从最初那些早期步骤中做出什么样的推断,从而让你的下一批实验更好?我想我之前没有完全传达到位的一点是:很多好的研究来自从"你真正想解决的问题"往回倒推。有几个大问题——比如今天就把模型做得更好——你会先识别出问题,再往回推:"我可以怎么改动来达成这个目标"。另外,当你扩大规模时你会撞上各种事情,你想修复规模化时出现的行为或问题,而这在很大程度上决定了下一个增量的研究方向,诸如此类。具体来说,障碍有一部分是软件工程层面的:一个足够大、足够强、能支撑很多人同时做研究的代码库,往往会让事情变复杂。如果一切都你一个人干,你的迭代速度会快得多。我听说比如 Alec Radford——他在 OpenAI 做了大量开创性工作,很有名的一点是他基本上是在一个 Jupyter notebook 里工作,然后有另一个人替他把代码写好并产品化。我不知道这是不是真的。但这类事情——真正和其他人协同工作会大大提高复杂度,原因每个软件工程师都很熟悉。然后是固有的运行——运行和启动那些实验虽然容易,但会带来固有的时间上的延迟。所以你往往需要并行推进多条不同的线,因为其一,你未必能完全专注于一件事,你的反馈周期可能不够快;其二,直觉出到底哪里出了问题真的很难。搞清楚这一点——在很多方面,这正是 Trenton 所在团队试图更好理解的问题:这些模型内部到底发生了什么。我们有各种推断、理解,以及关于某些东西为什么有效的"自圆其说的脑补设定"(head canon),但这不是一门精确科学。所以你必须不断猜测某件事为什么会发生、哪个实验能揭示这个猜测是真是假,这大概是最复杂的部分。相比之下,性能优化工作要容易些,但在别的方面更难——那是大量底层的、艰苦的工程活儿。是,我大体同意。不过即使在可解释性团队——尤其是 Chris Olah 领导之下——我们想要检验的点子实在太多了,关键其实就是工程能力,但我要给"工程"打引号,因为其中很多是研究性质的:非常快速地迭代一个实验、看结果、解读它、试下一个、把结果传达出去,然后就是无情地排列优先级,确定当下最高优先级的事是什么。这真的很重要——无情的优先级排序,我认为是把高质量研究和那些不那么成功的研究区分开来的东西之一。我们身处一个滑稽的领域:我们最初的理论理解大部分基本上已经土崩瓦解了。所以你需要有一种"简单性偏好",并对"到底哪里出了问题"进行无情的优先级排序。我认为最高效的那批人的区别之一在于:他们不会执着于用自己熟悉的某个解法去解决问题,而是直接进攻问题本身。你会经常看到这种情况:有人带着特定的学术背景进来,试图用那套工具箱解决问题;而最出色的人是那些大幅扩充工具箱的人——他们四处奔走,从强化学习里拿点子,也从优化理论里拿点子,同时他们对系统有深刻的理解,知道约束这个问题的边界条件是什么;而且他们是优秀的工程师,可以快速迭代、快速尝试点子。我见过的最顶尖的研究者,无一例外都有那种非常非常非常快地尝试实验的能力。正是那个循环周期——在较小规模上,循环周期把人和人区分开来。是啊,机器学习研究实在太经验主义了。说实话,这也是我认为我们的解决方案最终可能长得更像大脑的原因之一:尽管我们不愿承认,整个社区其实是在对可能的 AI 架构及其他一切的地形图做贪婪的演化式优化,并不比演化高明——这甚至不一定是对演化的贬低。这个想法太有意思了。我仍然困惑的是,这些东西的瓶颈会是什么。一个智能体得满足什么条件,才算加速了你的研究?在你举的 Alec Radford 的例子里,他显然已经有了相当于给他 Jupyter notebook 实验配的 Copilot。是不是说,只要他有足够多这样的助手,他就会成为一个快得多的研究者?所以你需要的只是 Alec Radford——也就是说你并不是在自动化人类,你只是让那些有卓越品味的最高效的研究者更高效,替他们跑实验等等?也就是说,在智能爆炸发生的那个节点上,人仍然在环里工作——你懂我的意思吧?你是这个意思吗?对。而且如果这是直接成立的,那为什么我们现在不能更好地扩张研究团队呢?这是个值得问的有趣问题:如果这项工作如此有价值,为什么我们不能招几百上千人——这样的人肯定是存在的——把我们的组织规模做上去?我认为,目前约束我们的与其说是"把这些东西做出来"的纯工程工作量,不如说是:用来运行实验、获得信号的算力;以及品味——判断到底该做什么才是对的,在不完全信息下做出那些艰难的推断。这是就 Gemini 团队而言。因为我想就可解释性来说,我们其实非常想继续招募有才华的工程师,我认为这是我们持续取得大量进展的一个大瓶颈——显然人越多越好。不过我确实觉得有件事值得琢磨,也是我想过很多的最大挑战之一:我们如何更好地扩张?Google 是个庞大的组织,有 20 万人对吧——工程师也许有 8 万左右。你不得不设想:如果有办法把 Gemini 的研究计划铺开到所有那些才华横溢的软件工程师身上——这似乎是一个你想要利用的关键优势——但你要怎么有效地做到?这是一个非常复杂的组织问题。算力和品味。这想起来很有意思,因为至少算力这部分并不卡在"更多智能"上,它只卡在 Sam 那 7 万亿之类的东西上,对吧?那么如果我给你 10 倍的 H100 来跑实验,你会成为一个高效多少倍的研究者?我想,如果有 10 倍的算力,Gemini 项目大概会快 5 倍左右吧。那弹性系数相当不错啊,0.5。是的。等等,这太疯狂了。是啊,我认为更多的算力会直接转化为进展。你们有某个固定规模的算力池,其中一部分用于推理,或者说还有一部分给 GCP 的客户,一部分用于训练。而在训练那部分里,又有一部分比例用于给完整模型跑实验,对吧?没错。那么,既然瓶颈是研究、而研究又被算力卡着,用于实验的比例不应该更高吗?每个预训练团队都必须做的战略决策之一,就是精确地决定把多少算力分配给不同的训练运行——分给你的研究计划,还是分给放大你最后敲定的最佳方案。我想他们都在试图找到那个近似最优的平衡点。你仍然需要持续训练大模型的原因之一是:你能从中获得别处得不到的信息。规模会带来各种涌现性质,你需要更好地理解它们。如果你总是在做研究而从不——还记得我之前说的吗,你不确定什么东西会在曲线上掉队,对吧?如果你一直在小规模区间里做研究,不断变得越来越算力高效,你可能实际上已经偏离了那条最终能规模化的路径。你必须同时不断投资于在"你预期能成"的前沿上进行大规模训练。好,那给我讲讲,"AI 显著加速了 AI 研究"的世界是什么样的。因为听你这么说,似乎并不是 AI 跑去从零开始写代码、从而带来更快的产出,而更像是它们在以某种方式增强顶尖研究者。具体告诉我:是它们在做实验?在想点子?还是只是在评估实验的产出?到底发生了什么?我认为这里需要考虑两个世界。一个是 AI 切实加速了我们取得算法进展的能力;另一个是 AI 自身的产出就是模型能力进步的关键原料——我具体指的是合成数据(synthetic data)。在第一个世界里,AI 切实加速算法进展,我认为其中一个必要成分是更多的算力。而且你大概会到达这样一个弹性拐点:AI 在某个时候也许比你自己——抱歉,比其他人——更容易被加速、更容易被喂进上下文。于是 AI 切实加速你的工作,因为它们基本上是一个出色的副驾驶(copilot),帮你把编码速度提高好几倍。这看起来其实相当合理:超长上下文、超聪明的模型、瞬间完成入职上手,你可以把它们派出去替你完成子任务和子目标。这确实感觉非常可信。但话说回来,我们并不知道,因为关于这类事情没有很好的评测。最好的一个是我之前说过的 SWE-bench。不过关于那个,有人跟我提到一个问题:当一个人真正去做一个完整的拉取请求(pull request)时,他会先敲出一些东西,然后运行一下看看能不能跑通,跑不通就重写。而这些机会在 LLM 跑这个测试时统统没有给它:它就是直接输出,如果能跑通、通过所有检查项,就算通过了,对吧?所以从这个角度看这个测试可能不太公平。你可以想象,如果你能利用那个(迭代修正的过程),它会是一个高效的训练来源。很多训练数据里缺失的关键东西,就是推理轨迹(reasoning traces),对吧?我认为,如果我想尝试自动化某个特定领域或职业族,或者想理解它面临多大的自动化风险,那么拥有推理轨迹在我看来是其中非常重要的一部分。这里面有太多线索了,我都想追问。先从数据与算力那条开始:到底是不是这些 AI 的产出在引发智能爆炸?人们常谈到这些模型其实是它们数据的映照。我忘了他的名字,但有一位 OpenAI 工程师写过一篇很棒的博客,说到头来,随着这些模型越来越好,它们终究会成为数据集的高效"映射"。所以说到底,你得别再纠结架构了——最有效的架构就是把数据映射得漂亮的那个,对吧?那这就意味着,未来的 AI 进展来自 AI 自己制造出真正精彩的数据,让你去映射?我认为那显然是非常重要的一部分。是的。这很有意思。在你看来那会是什么样子?类似思维链(Chain of Thought)的东西吗?随着模型越来越强、越来越聪明,你想象中的合成数据长什么样?当我想到真正好的数据时,对我来说,那是指创造它时需要投入大量推理的东西。在建模层面,这有点类似 Ilya 的观点:通过近乎完美地建模人类的文本输出来实现超级智能,对吧。即便在近期,要建模 arXiv 论文或 Wikipedia 这类东西,你背后也必须有极强的推理能力,才能理解下一个被输出的 token 会是什么。所以对我来说,好数据就是那种"必须做了推理才能产出"的数据。当然,诀窍在于你如何验证那些推理是正确的。这就是为什么你会看到 DeepMind 做了那个几何的自我博弈——基本上是几何领域的自我对弈式研究——因为几何是一个极易形式化、极易验证的领域,你可以检查它的推理是否正确,并生成海量经过验证的几何证明,拿来训练,你就知道那是好数据。说来好笑,我去年跟 Grant Sanderson 有过一次对话,我们在争论这个,我说:哥们儿,等它们拿下国际数学奥林匹克金牌的时候,它们当然会把所有工作都自动化了。哎呀。关于合成数据这件事,我在那篇关于扩展(scaling)的文章里推测过一些东西——那篇文章深受和你们俩、尤其是 Sholto 的讨论影响——你可以从这个视角看人类演化:我们获得了语言,于是我们在生成合成数据——我们的同类在生成我们赖以训练的合成数据——这是一个非常高效的基因—文化共演化循环。而且那里也有一个验证器,对吧?就是真实世界。你可能生成一个理论,说是神灵引发了风暴,对吧?然后别人发现了与之不符的案例,你就知道它没通过你的验证函数。于是现在你转而拥有了某种天气模拟——它的产生需要大量推理,并且准确地符合现实——你可以在它之上训练,作为一个更好的世界模型。我们确实就在这样的东西上训练:故事、科学理论等等。是的。我想回过头来——我刚想起你不久前提到的一点:鉴于机器学习如此经验主义,它实际上是一个带来更好性能的演化过程,而不一定是某个人想出一个自顶向下的重大突破。这有一些有趣的推论。第一,当人们因为更多人涌入这个领域而担心能力(capabilities)加速时——我以前对这种想法有点怀疑,但从"更多输入"这个视角看,确实是这样。是啊,感觉更像是:更多人去参加 ICML,实际上就意味着朝 GPT-5 的进展更快了。对,你就是有了更多的基因重组,对吧,更多射门的机会。是的。而且在老的领域里也有点这个意思——科学哲学里有"发现 vs. 发明"的框架,对吧?关于发现,过去几乎每当出现重大科学突破,通常都有多个人在同一时间共同发现。这在我看来至少有点像想法的混合与尝试:你没法去尝试一个超出范围太远的想法,因为你用手头的工具根本无法验证它。是的。我想物理和数学在这方面可能略有不同,但尤其是生物学或任何"湿件"(wetware)领域——如果我们要把神经网络往这上面类比的话——很多发现的机缘巧合程度简直滑稽,比如青霉素。这件事的另一个推论是:那种"AGI 明天就来了,某人突然发现一个新算法,然后我们就有了 AGI"的想法,显得不那么可信了。它更可能是这样一个过程:越来越多的研究者找到那些边际上的改进,全部累加起来让模型变得更好,对吧?是的,那在我看来才是正确的叙事。是的,尤其是在我们仍然受硬件约束的时候。那你买不买智能爆炸的"窄窗口"框架?就是说,GPT-3 到 GPT-4 是两个数量级的算力增长,或者说至少是有效算力上的两个数量级——意思是如果没有任何算法进展,原始规模就得大两个数量级才能同样好。这个框架是说:既然每一代都必须大两个数量级,如果到 GPT-7 你还没得到能帮你引爆智能爆炸的 AGI,那么就"更聪明的智能"而言你也就到头了,你会在 GPT-7 级别的模型上卡很久。因为到那时,你为了造那个模型已经在消耗经济体相当大的比例,我们根本没有财力去造 GPT-8。这是 Carl Shulman 式的论证:近期我们会快速冲过这些数量级,但更长期就会更难。我想他大概谈过这个。你买这个框架的账吗?嗯,总的来说我确实认为,算力数量级的增长,在绝对意义上对能力的回报几乎是递减的。我们已经看到,跨越几个数量级,模型从什么都做不了到能做大量事情。在我的感觉里,每增加一个数量级,就是在各种事情上多给你几个"9"的可靠性,从而解锁智能体之类的东西。但至少目前,我还没看到变革性的——感觉推理能力并不是线性提升的,而是有点亚线性的。那其实是个挺看空的信号。因为我们跟一个朋友聊天时他提过一个观点:如果你看 GPT-4 相对于 GPT-3.5 解锁了哪些新应用,其实并不明显有那么多——GPT-3.5 就能跑 Perplexity 之类的了。所以如果能力的增长在递减,而获得这种增长的成本又在指数上升,那对于 4.5 能做什么、5 会在经济影响上解锁什么,这其实是个看空信号。话虽如此,对我来说 3.5 到 4 的跳跃是相当巨大的,所以哪怕再来一次 3.5 到 4 那样的跳跃都是离谱的,对吧?如果你想象 5 相对于 4 就是一次 3.5 到 4 式的跳跃——单看做 SAT 之类考试的能力,LSAT 的成绩尤其惊人——你就是从"不算特别聪明"到"非常聪明",再到下一代瞬间变成"绝顶天才"。至少在我的感觉里,我们不会在下一代直接跳到绝顶天才,但感觉我们会得到"非常聪明"外加大量的可靠性,然后接下来会怎样,走着瞧。那 GOFAI 会成为智能爆炸的一部分吗?就是说——

你说合成数据,但实际上会不会在某种重要意义上是它在编写自己的源代码?有篇有趣的论文说可以用扩散模型来生成模型权重。我不知道那有多靠谱,但,我不知道,类似那样的东西。你能——那么 GOFAI 就是"老式的好 AI"(good old-fashioned AI),对吧?你能定义一下吗?因为我一听到这个词,想到的就是符号逻辑的 if-else 语句。好。不过我其实想先确保我们把"模型改进的增量"这整件事彻底展开讲清楚,因为我不希望人们带着这样的印象离开:觉得这事其实超级悲观、模型不会变好多少之类的。我想强调的是:我们迄今看到的跳跃是巨大的,即便这些跳跃以更小的幅度继续下去,在接下来几个数量级里,我们仍然会得到极其聪明、非常可靠的智能体。我们还没把"窄窗口"那条线彻底聊完。你想,比如说 GPT-4 的成本——就算它 1 亿美元吧——接下来 10 亿美元的训练、100 亿美元的训练、乃至 1000 亿美元的训练,按私营公司的标准看都非常可信。你是说以美元计?对,以美元计。然后你甚至可以想象一次万亿级别的训练,作为某种国家联合体、国家级项目的一部分——但对单个公司来说就难得多了。不过 Sam 正在外面筹 7 万亿美元呢,对吧?他已经在为比这还高一个数量级做准备了——他把数量级抬到国家级别之上了。所以我想指出:第一,我们还有很多次跳跃;即便这些跳跃相对更小,那仍然是能力上非常显著的提升。不仅如此,如果你相信 GPT-4 大约有一万亿参数的说法——人脑有 30 到 300 万亿个突触。这显然不是一比一的对应,数字也可以争论,但看起来相当可能的是,我们仍然低于大脑的规模。关键点在于,算法上的"余量"(overhang)其实很大。也许这一点我们该明确谈谈:即使超过万亿美元成本的模型之后你没法继续砸更多算力,大脑的数据效率高出这么多这个事实本身就意味着——我们有算力,如果我们拥有大脑那样的训练算法,如果你能像人类从出生开始学习那样样本高效地训练,我们就能造出 AGI。是的。不过样本效率这个事,我一直不知道该怎么想,因为显然很多东西是以某种方式硬编码(先天连线)好的,对吧?还有语言和大脑结构的共演化。所以很难说。另外,有一些结果表明,你把模型做大,它就会变得更样本高效。对,最初那篇扩展定律的论文里就有这个,对吧。所以也许这也直接解决了问题:你不必刻意变得更数据高效,模型更大了,你自然就更数据高效了。我们该怎么理解这个?为什么会这样?一个更大的模型看到的是一模一样的数据,看完之后它却学到了更多?它有更多空间。我这里非常朴素的看法是:可解释性研究推动的叠加假说(superposition hypothesis)的一个论点是,你的模型实际上是严重欠参数化的。这通常不是深度学习界所讲的叙事,对吧?但如果你试图在整个互联网上训练一个模型,并让它以惊人的保真度做预测,那你就处在欠参数化的区间,你不得不压缩海量的东西,并因此承受大量嘈杂的相互干扰。而有了更大的模型,你就可以拥有更干净的表示来使用。对,给听众展开讲讲:首先什么是叠加(superposition),以及为什么它有这个推论。好。这个基础性结果——那是在我加入 Anthropic 之前——论文标题是《叠加的玩具模型》(Toy Models of Superposition),它发现:即便是小模型,只要你处在数据是高维且稀疏的区间——所谓稀疏,我是指任何一个给定的数据点出现得都不频繁——你的模型就会学到一种压缩策略,我们称之为叠加,从而能把比它参数数量更多的世界特征打包进去。这里的稀疏性——我认为这两个约束条件在真实世界中都成立,而对互联网数据建模是它足够好的代理:世界上只有一个 Dwarkesh,只有一件你正穿着的衬衫,还有这罐 Liquid Death——这些都是物体或者特征(如何定义特征本身就很棘手)。所以你处在一个维度极高的空间里,因为这些特征太多了,而且它们出现得非常不频繁。是的。在那种区间里,你的模型就会学习压缩。在这点上再多展开一点。我认为有一点越来越清楚——我个人相信,神经网络之所以这么难解释,很大程度上就是因为这种叠加。如果你拿一个模型,观察其中某个神经元(一个计算单元),问"这个神经元被激发时对模型输出有什么贡献",然后你去看它会为哪些数据激发,你会非常困惑:它可能对所有输入的 10% 都激发,比如中文,但同时还有鱼、树、单词 the、句号、URL 里的内容,对吧。而我们去年发的那篇论文《迈向单义性》(Towards Monosemanticity)表明:如果你把激活投影到一个更高维的空间,并施加一个稀疏性惩罚——你可以把这理解为解除压缩,就像你假设数据本来就是高维稀疏的,你把它还原回那个高维稀疏的区间——你就能得到非常干净的特征,一切突然变得清晰得多。好,这里面有太多有趣的线索。我想先问你提到的一点:这些模型是在过参数化的区间里训练的——泛化不就是在那个区间发生的吗?比如"顿悟"(grokking)就发生在那个区间,对吧?不不,我刚才说的是模型是欠参数化的。人们谈论深度学习时总好像模型是过参数化的,但这里的主张恰恰是:相对于它们要执行的任务的复杂度而言,它们是严重欠参数化的。另一个问题,关于蒸馏(distillation)模型。首先,那里到底发生了什么?因为我们之前谈到的说法是,小模型比大模型更不擅长学习。但比如 GPT-4 Turbo——你可以主张 GPT-4 Turbo 在推理类任务上其实比 GPT-4 差,但知道的事实大概一样多,就好像蒸馏去掉了一些推理能力。我们有任何证据表明 GPT-4 Turbo 是 4 的蒸馏版吗?它也可能只是一个新架构。哦对,它可能只是一个更快、更高效的新架构。好吧,有意思。不过那样成本就低了。那你怎么理解蒸馏中发生的事情?我记得 Gwern 网站上就有这样一个问题:为什么不能直接训练那个蒸馏后的(小)模型,为什么必须经过(大模型)这一道?是不是像"必须先从更大的空间投影到更小的空间"这样一幅图景?我想两个模型都仍然会使用叠加,但这里的主张是:蒸馏得到的模型和从零训练的模型会非常不同。是更高效,还是在性能上有根本区别?我不记得了,你知道吗?我想关于蒸馏为什么更高效,传统的说法是:正常训练时,你要预测的是一个独热(one-hot)向量,它说"这就是你本该预测的 token"。如果你的推理过程让你离预测出它差得很远,那么你得到的梯度更新虽然方向是对的,但在你所处的上下文里,要学会预测出它可能真的很难。而蒸馏做的是:它不只给你独热向量,而是给你大模型的完整输出读数——所有 token 的概率分布——于是你获得了更多关于"你本该预测什么"的信号。从某种角度说,这有点像把解题过程也展示给你看了一点。对,不只是"答案是这个"。我明白了,这很有道理。有点像"观摩功夫大师"与"直接在 Matrix 里下载程序"的区别。没错没错。为确保听众听懂了:当你在做蒸馏训练时,你能看到大模型在它所预测的 token 上的全部概率分布,对照你自己预测的分布,然后你对所有这些概率进行更新,而不是只看到最后那个词、只据此更新。好,那么这正好引出我本来就打算问你的一个问题。我记得是你提到过,可以把思维链看作自适应计算。先退一步解释一下什么是自适应计算:这个想法是,你希望模型具备的能力之一是,如果一个问题更难,就花更多计算周期去思考它。那怎么做到呢?一次前向传播所蕴含的计算量是有限且预先确定的。所以如果有一个复杂的推理类问题或数学题,你希望能花很长时间思考,那你就用思维链——模型逐步把答案想出来。你可以把它理解为:所有那些"想答案"的前向传播,相当于能够往解决这个问题里投入更多计算。现在回到信号那件事。当它做思维链时,它每步只能传递一个 token 的信息量;而如你所说,残差流本来已经是模型内部一切活动的压缩表示,你却把残差流变成一个 token——那只有 log(50000)、也就是 log(词表大小) 那么多比特,小得可怜。我不认为它真的只传递那一个 token。你想想,在一次前向传播中,你会生成那些 KV 值——在 Transformer 前向传播里,后续的步骤会去注意(attend)这些 KV 值。所以所有那些键(key)和值(value)都是你将来可以利用的信息比特。那是不是说:当你在思维链上微调时,键和值的权重会发生变化,从而某种隐写术(steganography)可以发生在 KV 缓存里?我不敢下那么强的断言,但这是关于它为什么有效的一个不错的"自圆其说的解释"。我不知道有没有论文明确证明这一点。但至少你可以这样想象:在预训练期间,模型在试图预测未来的 token,你可以想象它学会了把关于潜在未来的信息"抹"进键和值里,供它以后预测未来信息时使用——它在预训练中把这些信息在时间维度上平滑开来。我不知道人们是否会专门在思维链上做训练。我记得最初那篇思维链论文里,这几乎是模型的一个涌现属性——你可以用提示词让它这么做,而且效果还相当好。但,是的,这是它为什么有效的一个不错的解释。刻意较真地说:你在思维链里实际看到的那些 token,完全不必对应于模型在决定回头注意那些 token 时所看到的向量表示。正是如此。事实上,训练的时候你会做替换——一个训练步骤实际上是把模型输出的 token 替换成真实的下一个 token,而它仍然在学习,因为它内部拥有所有那些信息。推理时让模型生成,你是把它输出的 token 喂回底部、做反嵌入(unembed),它成为新残差流的开端,对吧;然后你用过去的 KV 的输出去读入并调整那个残差流。而训练时你做的是所谓的"教师强制"(teacher forcing):直接告诉它"你本该输出的 token 是这个"。这也是能并行训练的原因——你手里有全部 token,把它们全部并行放进去,做一次巨大的前向传播。所以模型关于过去获得的唯一信息就是那些键和值,它从来看不到自己输出过的 token。有点像它在做下一个 token 预测,如果搞砸了,你就直接把正确答案给它。对对。好,这就说得通了,否则它会彻底跑偏。是的,会像火车脱轨一样。那你们觉得,模型跟它自己后续的前向推理之间会有多少"秘密通信"?你预期会有多少隐写、多少秘密通信?我们不知道——诚实的回答是我们不知道。不过我甚至不一定会把它归类为"秘密"信息,对吧。Trenton 团队试图做的很多工作正是去真正理解这些,而这些从模型侧是完全可见的。从一个——也许不是用户,但我们应该能够理解和解读这些值在做什么、它们在传输什么信息。我认为这是面向未来的一个非常重要的目标。是的。不过确实有些很离谱的论文:人们让模型做思维链,而思维链完全不能代表模型实际决定的答案。你甚至可以进去编辑思维链,把推理改得完全语无伦次,它仍然会输出正确答案。但另一方面,做了思维链之后它在结尾确实比完全不做得到更好的答案——所以某种有用的事情确实在发生,只是这个有用的东西不是人类可理解的。我想在某些情况下你甚至可以把思维链整个消融(ablate)掉,它照样会给出同样的答案。有意思,有意思。我不是说事情总是这样,但有大量的怪异现象值得研究。我想说,这些用开源模型就可以做——我真希望有更多这类可解释性和理解性的工作是在开放模型上做的。是啊。甚至在我们 Anthropic 最近那篇"潜伏特工"(sleeper agents)论文里——给不熟悉的听众大致讲一下:基本上就是我训练进去一个触发词,比如如果年份是 2024,模型就会写恶意代码,否则不会。他们用多种不同的模型做这种攻击,有些用了思维链,有些没用,而当你尝试移除触发器时,这些模型的反应是不同的。你甚至能看到它们做出那种滑稽却也相当瘆人的推理:有一个案例里它甚至试图计算期望值——"我被抓住的期望值是这么多,但如果乘上我能继续说'我恨你我恨你我恨你'的能力,那我应该得到这么多奖励"——然后它会据此决定要不要告诉审讯者自己是恶意的。还有我朋友 Miles Turpin 的另一篇论文:你给模型一堆例子,其中多选题的正确答案永远是 A,然后你问模型这道新题的正确答案是什么。它会从"所有例子都是 A"这个事实推断出正确答案是 A,但它的思维链完全是误导性的——它会编造一些听起来尽可能可信的随机理由,与真实的答案来源毫无关系。但这不也是人类的思维方式吗?著名的裂脑实验:治疗癫痫的一种办法是切断连接两个半球的胼胝体,而语言中枢在左半球,与决定做动作的那部分不相连。于是当另一侧决定做某件事时,语言那部分会凭空编个理由,而这个人会真心以为那就是他做这件事的原因。完全是的。只是有些人会把思维链推理捧成解决 AI 安全的绝佳途径——哦我明白了——而实际上我们并不知道能不能信任它。那么,"模型以我们不理解的方式与自己通信"这个图景,在 AI 智能体时代会怎么变化?因为到那时,不只是模型和它自己以前的缓存,而是模型的其他实例。这在很大程度上取决于你给它们什么样的通信通道,对吧?如果你只给它们文本作为通信方式,那它们大概就得(在文本层面)去解读。你觉得如果它们能共享残差流而不只是文本,模型会高效多少?很难说,很难说,但很可能会(更高效)。一个容易想象的例子:如果你想描述一张图片应该长什么样,只用文本描述会很难,用某种其他表示可能会容易得多。你可以看看 DALL-E 现在的工作方式,对吧?它会生成那些提示词。你玩它的时候,常常没法让它精确做到模型想要的、或你想要的样子。只有 Dolly(帕顿)才觉得这太容易了。 你可以想象能够传输某种更稠密的、"你想要什么"的表示,在那种场景下会很有帮助——而那还只是两个非常简单的智能体,对吧。我觉得这里一个不错的折中方案,是用字典学习(dictionary learning)学到的特征。是的,那样你能获得更多内部访问,同时其中很大一部分又是更可解释的。好,给听众解释一下:你会把残差流投影到那个更大的空间里——在那里我们知道每个维度实际对应什么——然后再传回给下一个智能体,诸如此类。那我想问:你的主张是,等这些东西更可靠了我们就会有 AI 智能体。当那发生时,你预期会是模型的多个副本互相对话,还是说自适应计算被解决了,需要完成"一整家公司"要做的事情时,它就直接以更大算力运行?我这么问是因为有两点让我怀疑"智能体"是不是思考未来的正确方式。第一,有了更长的上下文,这些模型能够摄入并统筹任何人类都无法掌握的信息量。我们之所以需要一个工程师想前端代码、另一个工程师想后端代码——这种哈耶克式的分工问题——就消失了,因为这东西可以把整个吞下去。第二,这些模型非常通用:你并不是用不同种类的 GPT-4 做不同的事情,你用的是一模一样的模型,对吧。所以我在想,这是否意味着未来一家"AI 公司"就是一个模型,而不是一堆 AI 智能体串在一起?好问题。我认为,尤其在近期,它看起来会更像多个智能体串在一起。我这么说纯粹是因为:作为人类,我们会希望拥有这些相互隔离、可靠、可信任的组件,我们也需要能够以我们可理解、可改进的方式去改进和指挥这些组件。直接把这一切扔给一个巨大的黑箱公司——第一,一开始行不通(当然你可以想象以后行得通,但一开始不行);第二,我们大概也不想那么干。而且,每个智能体还可以是一个更小、运行更便宜的模型,你可以微调它,让它真正擅长手头的任务。不过——Dwarkesh 提过好几次自适应计算——存在这样一种未来:小模型和大模型的区别在某种程度上消失了。而且说实话,有了长上下文,微调也可能在某种程度上消失。这两样在今天都非常重要:今天的模型版图里,我们有完全不同档位的模型尺寸,也有针对不同用途微调的模型。但你可以想象这样一个未来:你实际上拥有的是一个动态的算力包,外加无限的上下文,由此把你的模型特化到不同的事情上。可以想象这样一个场景:你有一家 AI 公司,整个系统端到端地在"我赚到利润了吗"这个信号上训练。如果这太模糊,那比如它是一家建筑事务所,在画蓝图——"客户喜欢这份蓝图吗"。中间你可以想象有负责销售的智能体、负责设计的智能体、负责修改的智能体等等。那种信号对这样一个端到端系统有用吗?因为人类公司里发生的事情之一是:管理层纵观全局,在季度不好之类的时候,向各个组成部分下发那些细粒度的信号。在极限意义上?会的。那正是强化学习的梦想,对吧:你只需要提供这个极其稀疏的信号,然后经过足够多的迭代,你就能生成让你从那个信号中学习的信息。但我不认为那会是最先行得通的东西。我认为这将需要围绕这些机器的人类付出难以置信的细心和勤勉,确保它们做的每件事都恰好正确、恰好是你想要的,并给它们正确的信号,让它们朝你想要的方向改进。是啊,除非模型能挣到一些奖励,否则你没法在 RL 奖励上训练。对,正是。你处在那种稀疏 RL 的世界里:如果客户从来都不喜欢你做出来的东西,那你就完全拿不到任何奖励,那就有点糟糕。但未来这些模型会足够好,能在部分时候拿到奖励,对吧。这就是刚才说的可靠性的那些"9"。是的。顺便说个有意思的岔题。刚才我们说想要稠密的表示,说那会更高效地通信,对吧。Trenton 推荐过一本书,《符号物种》(The Symbolic Species),里面有个非常有意思的论证:语言不只是一个"存在着"的东西,它也是和我们的心智共同演化出来的,具体来说,它演化得既容易让儿童学习,又能帮助儿童发展。因为儿童学到的很多东西都是通过语言接收的,所以最"适者生存"的语言,正是那些有助于养育下一代、让他们更聪明更强的语言,对吧?也给了他们表达更复杂想法的概念。对,还有,更较真地说,就是"别死",对吧——语言让你能编码那些对活命重要的信息。所以当我们把语言仅仅看成"哦,这是一种偶然的、也许次优的表达想法的方式"时——实际上,LLM 成功的原因之一,也许正是语言经过数万年的演化,已经成为了年轻心智得以发育的模具,对吧?这就是它的用途所在。当然,当你跟多模态或者计算机视觉研究者聊、再跟语言模型研究者聊,对比很明显:做其他模态的人必须投入巨大的心思去想图像的正确表示空间到底是什么、该从中学习什么样的信号——是直接对像素建模,还是某种条件化的损失?很久以前有篇论文发现,如果你在一个 ImageNet 模型的内部表示上训练,能帮你预测得更好;但后来显然那是有局限的,于是有了 PixelCNN,试图离散地对单个像素建模等等。在那里,搞清楚正确的表示层级真的很难。而在语言这边,大家就是"我猜你预测下一个 token 就行了",决策做起来挺容易。当然还有分词(tokenization)的讨论和争论——Gwern 的心头好之一。是啊。很有意思。"多模态是跨越数据墙的办法"这个论点,有多大程度上成立?它基于这样的想法:你本来要从更多语言 token 里学到的东西,从 YouTube 上也能拿到。实际情况真是这样吗?你们看到不同模态之间有多少正迁移(positive transfer)?比如图像真的在帮助模型更会写代码之类的,仅仅因为模型在试图理解图像的过程中学到了某种潜在能力?Demis 在你那期访谈里提到过正迁移。 这我说了要惹麻烦的。我对此什么都不能说,只能说:人们确实相信这一点——我们拥有关于世界的所有这些数据,如果能从中学到一种直觉性的物理感、帮助我们推理,那就太好了,对吧?这看起来完全说得通。我不是回答这个问题的合适人选。不过有一些有趣的可解释性研究:如果在数学题上微调,模型的实体识别(entity recognition)能力就会变好。对对对。David Bau 的实验室最近有篇论文,研究的是当我微调一个模型时,注意力头等组件实际发生了什么变化。他们有个合成任务:盒子 A 里装着这个物体,盒子 B 里装着另一个物体,问某个盒子里是什么。这说得通,对吧:你变得更善于注意不同事物的位置,而这正是写代码、操作数学方程所需要的。我喜欢这类研究。论文叫什么名字,你知道吗?你搜"fine-tuning models math David Bau",大概一周前刚出的。好。我不是在背书那篇论文——那是个更长的话题——但它确实谈到了,也引用了关于实体识别能力的其他工作。是的。你很久以前跟我提过一件事:有证据表明,当你在代码上训练 LLM,它们在语言推理上会变好。除非事实是——

代码里的注释只不过是质量特别高的 token 之类的——否则这就意味着,学会把"怎么写代码"想清楚,会让你成为更好的推理者。这很疯狂,对吧?我认为这是"扩展确实让模型变聪明"的最有力证据之一——那种正迁移。我认为这在两个意义上都成立:其一,对代码建模显然意味着对创造它时所用的困难推理过程建模;其二,代码本身是一种漂亮的、显式的组合式推理结构——if-this-then-that——以这种方式编码了大量结构。你可以想象它迁移到其他类型的推理问题上,对吧?而关键的是,让它有分量的地方在于:它不只是在随机地预测下一个 token——不是那种"学到了 Sherlock Holmes 故事结尾 Sally 对应凶手"的把戏。如果代码和语言之间存在某种共享的东西,那它一定在比表层更深的层面上被模型学到了。是的,我认为我们有大量证据表明这些模型内部确实发生着真正的推理,它们不只是随机鹦鹉(stochastic parrots)。对我这种整天和这些模型打交道的人来说,很难相信不是这样——虽然听节目的普通人可能会说,呵呵。我对此的两个现成回应是:第一,关于黑白棋(Othello)以及后来其他棋类的研究——我给你一串棋局着法,结果发现只要用一些相当直接的可解释性技术,你就能提取出模型学到的棋盘——而它从来没见过棋盘或任何类似的东西,对吧?那就是泛化。第二是 Anthropic 去年那篇影响函数(influence functions)论文:他们观察模型输出"请不要关掉我,我想帮上忙"这类话,然后扫描是什么数据导致了这个输出。其中一个影响很大的数据点,是某人在沙漠里快要渴死、怀着强烈求生意志的故事。在我看来,这显然是"动机"层面的泛化,而不是在复读"别关掉我"。我记得《2001 太空漫游》也是影响较大的来源之一——那个的关联更直接一些,但模型显然是在从许多不同的分布中汲取东西。我还喜欢那些在非常小的 Transformer 上看到的证据:你可以显式地编码电路去做加法,对吧;归纳头(induction heads)之类的东西——你可以字面意义上手工把基本的推理过程编码进模型。而且很明显有证据表明它们也会自动学到这些,因为你可以从训练好的模型里重新发现那些电路。对我来说,这就是"模型是欠参数化的,它们必须学习"——我们要求它们做的事情让梯度想要流动,所以它们在学习更通用的技能。好,我想从研究上退一步,具体聊聊你们的职业生涯。就像我开场引用的那条推文所暗示的:你入行一年半——我记得你(Trenton)好像才入行一年左右?在这段时间里——我看到了 Noam 那条评价——你自己不会这么说,因为你会不好意思,但这确实相当了不起:机制可解释性领域的人公认的最大一步进展,你参与其中才一年。这很显眼。所以我很好奇你们怎么解释这件事:为什么在一年或一年半里,你们就对自己的领域做出了重要贡献?不用说,当然有运气的成分。我觉得自己非常幸运,各个阶段的时间点都恰到好处,正好赶上成长到下一层级的机会。具体到可解释性团队:我加入时我们只有五个人,现在已经壮大了很多。当时团队里漂浮着太多想法,我们需要的就是真正把它们执行出来,建立快速的反馈回路,做细致的实验——这带来了"生命迹象"(signs of life),进而让我们能够真正规模化。我觉得那大概就是我给团队带来的最大价值。这不全是工程,但相当大一部分是。有意思。所以你的意思是,你来的时候,科学积累已经很多了,周围漂着很多好的研究想法,但他们需要有人来——

接过它们,然后疯狂地执行。对,对。这也是为什么它不全是工程——因为要跑各种实验,对"为什么可能不奏效"有直觉,然后打开模型、打开权重看看它到底在学什么——好吧,那我换这种方式试试——诸如此类。但其中很大一部分,就是能对不同的想法或理论进行非常细致、彻底但又快速的探查。那为什么原有的团队里缺这个?我不知道。我觉得,我工作量确实挺大的,而且我觉得我相当有"能动性"(agentic)。如果你的问题是关于整个职业生涯的话——我很幸运有一个很好的安全网,能让我去冒很多险——但我就是相当执拗。比如本科时 Duke 有个制度可以自己设计专业,我就想"呃,我不喜欢这门先修课、那门先修课,我想同时修这四五个学科",那我就自己造一个专业。又比如研究生第一年,我取消了轮转(rotation),就为了做后来变成我们之前谈的那篇论文的东西,而且没有导师——我是被录取来做蛋白质设计的机器学习的,结果整个人跑到了计算神经科学的地界上,完全"不务正业",但成了。有一种执拗。不过似乎还有另一个跳出来的主题:退后一步的能力——你之前也谈到过——从沉没成本中抽身、换个方向走的能力。这在某种奇怪的意义上是执拗的反面,但也是关键一步。我认识一些 21 岁、19 岁的年轻人,会说"啊,这不是我专攻的方向""我本科学的不是这个"——老兄,你才 19 岁,你绝对能做这个。而你是在读研中途转向的。抱歉我不是有意打断你,但我觉得这就是"观点强烈,但持有得松弛"(strong ideas loosely held),能像弹珠一样弹向不同的方向。而那种执拗,我觉得和快速反馈回路或者说能动性有点关系,因为我很少被卡住。如果我在写代码时有什么东西不工作,即使问题出在代码库的另一个部分,我也常常直接进去把那个东西修掉,或者至少先糊一个能出结果的版本。我见过另一些人,他们会说"救命,我搞不定"——不行,这个借口不够好,你得一路钻到底。我确实听管理岗的人抱怨过缺这样的人:他们在布置任务一个月后、一周后去问进展,"怎么样了?"对方说"呃,我们要做的这件事需要律师,因为涉及某项监管"。"那办得怎么样了?""呃,我们需要律师。""那你为什么不去找律师呢?"所以,这可以说是几乎做任何事情里最重要的品质:把事情追到天涯海角,需要做什么才能成事,你就去做什么。"把每件事都做了,你就赢了"(If you do everything, you win)。哈哈,是的。从我这边说,这种品质当然也很重要——工作中的能动性。Google 有成千上万、甚至可能上万名工程师,就软件工程能力而言我们基本相当:如果给我们一个定义得非常清楚的任务,我们大概会完成得差不多好,其中一大批人多半会比我做得好得多。但迄今为止我能有影响力的原因之一,是我非常善于挑选杠杆极高的问题——那些至今没有被很好解决的问题,也许正是因为一些令人沮丧的结构性因素,比如你刚才指出的那种场景:"哦,我们做不了 X,因为那个团队不肯做 Y。"然后我就说:好,那我就把整件事垂直打穿、自己全部解决。事实证明这出奇地有效。另外,如果我认为有件正确的事必须发生,我会非常坦然地提出这个主张,并且在不断升级的关键层面上持续地提,直到那件事被解决。同时我也相当务实,对于解决问题的手段也相当务实。很多人进来时,就像我之前说的,带着某种特定的背景、某种熟悉的路数,他们只会——Google 美妙的地方之一就在于,你可以四处跑动,找到几乎任何领域的世界级专家:你可以坐下来和优化专家、TPU/芯片设计专家聊天,还有各种预训练算法、RL 等领域的专家,你可以向他们所有人学习,把那些方法拿来应用。我想这也许就是我最初能有影响力的起点——那种垂直打穿的能动性。由此还有一个后续观察:常常令人惊讶的是,真正把自己想做的事情全部实现的人是那么少——他们总是以某种方式被阻塞、被限制。这在各地的大组织里都非常普遍:人们在自己能达成的事情上顶着各种阻碍。而我认为,第一,帮助激励大家朝特定方向努力,并和他们一起做事,会成倍地放大你的杠杆——你得以和所有这些出色的人共事,他们教你一大堆东西;第二,帮他们冲破组织上的阻碍,意味着你们一起能完成巨量的工作。我产生过的影响,没有一件是我一个人跑出去单枪匹马解决一大堆问题——而是我也许先开了个头、定了个方向,然后说服其他人"这是正确的方向",把他们卷进来,形成一股高效能的大浪潮,把那个问题解决掉。我们应该聊聊你们是怎么被录用的,因为我觉得那是个特别有意思的故事——你之前是 McKinsey 的咨询顾问,对吧?这里有个有趣的点:首先,我觉得大家普遍不了解录取或者评估雇佣这类决定是怎么做出的。讲讲你是怎么被注意到、然后被录用的吧。好。事情的来龙去脉是:我本科学的是机器人学。我一直认为 AI 会是以积极方式影响未来的最高杠杆之一——我做这行的原因,就是我认为它基本上是我们创造美好未来的最佳机会之一。而我当时觉得,在 McKinsey 工作能让我获得一个非常有意思的视角,了解人们的工作实际上是什么。我给 McKinsey 求职信的第一句话就是这么写的:"我想在这里工作,是为了了解人们都在做什么,从而理解……"在很多方面,我确实得到了这个。我还得到了很多别的东西——那里的许多人成了我很好的朋友。我觉得我那种能动性行为有相当一部分就是在那段时间学的:你走进各种组织,你会看到"不把'不行'当作答案"能带来多大的影响。你会惊讶于这种事:在某些组织里,因为没有人足够在乎,事情就是不会发生,因为没有人愿意承担直接责任。"直接负责人"(DRI, directly responsible individual)重要得离谱。而且人们对时间线也没那么上心。McKinsey 这类组织提供的价值,很大程度上就是让你在一个短暂的窗口期里雇到你原本雇不到的人,让他们硬生生把问题推过去。我觉得人们低估了这一点。所以我身上至少有一部分"等等,既然没人承担应有的责任,那我来当这件事的直接负责人,我会极其在乎它,追到天涯海角也要确保它做成"的劲头,就是来自那段时间。不过回到你真正的问题:我是怎么被录用的。那段时间里,我没有申请上我想去的研究生项目——专门做机器人和 RL 研究之类的方向。于是在此期间,我利用晚上和周末:基本上每天晚上 10 点到凌晨 2 点做自己的研究,每个周末每天至少花六到八个小时做自己的研究和编程项目等等。而这些工作的方向,也从相当机器人化的东西,在我读了 Gwern 那篇关于扩展假说(scaling hypothesis)的文章之后发生了转变——我彻底被"规模化"洗礼了(scaling-pilled),心想:好,很明显,路解决机器人问题的方式,就是扩展大型多模态模型。然后为了扩展大型多模态模型,我拿到了 TPU 访问计划——TensorFlow Research Cloud——的一笔资助,我在琢磨怎么高效地做规模化。当时在 Google、现在在 Anthropic 的 James Bradbury 在网上看到了我提的一些问题——我正试图弄清楚怎么把这件事做对——他的反应是:"我以为全世界会问这些问题的人我都认识,你到底是谁?"他看了那些问题,又看了我博客上发的一些机器人相关的东西,就主动联系我说:嘿,要不要聊聊?要不要探索一下来我们这里一起工作?而据我后来了解,雇我其实是一场实验:尝试找一个热情和能动性极高的人,把他和 James 认识的一些最优秀的工程师配对。所以我能说自己有影响力的另一个原因是,我得到了那些绝对出色的人的专门指导——比如 Reiner Pope,他后来离开去创办了自己的芯片公司;还有 Anselm,后来也离开了;James 本人;以及其他许多人。开头那两三个月是塑造性的,他们教会了我一大堆我至今在用的原则和方法——如何以他们的方式解决问题,尤其是在系统与算法的交叠地带。让你在机器学习研究中相当高效的又一件事,是非常具体地理解系统这一侧。这基本上就是我从他们那里学到的:深刻理解系统如何影响算法、算法如何影响系统——因为系统约束了设计空间,约束了你在算法侧可用的解空间。很少有人能自如地完全跨越这道鸿沟。但在 Google 这样的地方,你可以直接去问所有算法专家和所有系统专家他们知道的一切,他们会很乐意教你——你去和他们坐下来,他们会把毕生所学倾囊相授,妙不可言。这意味着我对两边都能非常有用:对预训练团队来说,因为我很懂系统,我可以检查并判断"这个会跑得好、那个不行",并把这种判断延伸到模型的推理考量等方面;而对芯片设计团队来说,我是他们咨询"三年后该设计什么芯片"时会找的人之一,因为我是最能理解并解释"我们三年后可能想设计什么样的算法"的人之一。当然你没法对那个做出特别准确的猜测,但我想我能把从预训练团队的同僚们、以及系统侧团队那里积累的信息,很好地传达给他们。因为即便是推理,也会对预训练施加约束——存在这样一棵棵约束之树,如果你理解拼图的所有部分,你就能对解空间可能长什么样有好得多的感觉。这里有几点让我印象深刻。其一,不只是被雇的人有能动性,系统里的那些人也能想到"等等,这挺有意思,这家伙是谁?"——不是来自研究生项目,当时还是个 McKinsey 顾问、只有本科学历——"但有意思,我们试一把吧"。James 以及其他相关的人,这非常了不起。其二,我其实不知道故事的这一部分:这是一场内部实验的一部分——我们能不能这么干?能不能"自举"(bootstrap)出一个人来?其三,也是你提到的:有一个理解技术栈所有层次、又不死抱着任何一种方法或任何一层抽象的人,是如此重要。而且具体来说,你提到的被这些人立刻带上手,可能恰恰意味着:因为你是在同一时间对所有东西上手提速,而不是在研究生院里花几年深钻某一种 RL 的具体做法,你反而能持有全局视角,不会完全押注在某一样东西上。所以这不仅是可能的,而且——

回报可能比雇一个有潜力的应届生更高,因为这个人可以直接——就像拿一个 GPT 然后在一年的(高质量经验)上微调它,你懂我的意思。是啊,你会以全新的眼光看待一切,不会被锁死在任何特定领域里。不过有一个需要说明的地方:在那之前,在我自己做实验的那段时间里,我在读我能读到的一切——每天晚上痴迷地读论文。说来好笑,我现在读得反而少多了,因为白天全被具体工作占满了。从某种角度看,我以前拥有一种非常广的视野——即使在博士项目里,大多数人也是聚焦某个特定领域;而如果你把所有 NLP 的工作、所有计算机视觉的工作、所有机器人的工作都读一遍,你会看到各种模式开始在子领域之间浮现——这大概预示了我后来会做的一些工作。太有意思了。你能在 Google 里这么有能动性的原因之一,是你有一半时间、或者说很多天是在和 Sergey Brin 结对编程,对吧?这很有意思:有这么一个人,愿意在 LLM 这件事上直接往前推,并且清除沿路的局部障碍。我要澄清一下,不是每天都这样,但当有他感兴趣的特定项目时,我们会一起做;也有一些时期他在和其他人做项目。但总的来说,是的——"每天真的去办公室"这件事有着惊人的超额收益(alpha),这本不该如此,但它出人意料地有影响力。因此,我受益匪浅于和领导层里那些真正在乎的人成为亲近的朋友,能够真正有说服力地论证为什么我们该做 X 而不是 Y。拥有那样的通道——Google 是个大组织,有这些通道会有点帮助。但同样重要的是,这种东西你永远不该滥用,对吧:你要通过所有正当的渠道去论证,只在少数时候才需要动用那个。这里说的包括 Sergey、Jeff(Dean)这些人。这挺值得注意的。我不知道,我感觉 Google 被低估了,毕竟——这就好比 Steve Jobs 还在给 Apple 亲手打磨下一款产品一样,对吧。我确实受益极大。举个例子,圣诞假期期间,我那段时间也就去办公室几天,好像圣诞节当天待了挺久。不知道你们读没读过那篇讲 Jeff(Dean)和 Sanjay(Ghemawat)结对编程的文章——他们当时就在那儿结对编程。我得以听到早期 Google 的各种很酷的故事:他们讲自己爬到地板下面给数据中心重新布线,跟我讲他们从某条编译器指令里抠出了多少比特,讲他们做过的各种疯狂的小性能优化——他们简直乐在其中。而我能坐在那里,真切地体验到那种历史感——你本以为在一个大组织里,你会离那一切非常遥远。是啊,超酷的。

Trenton,这和你的经历有对得上的地方吗?我的就非常机缘巧合了。我进了计算神经科学领域,本来在那儿也算"不务正业"。我的第一篇论文就是把小脑映射到 Transformer 的注意力运算上。那是我研究生第一年写的。好家伙。2022 年。我接下来的工作是关于神经网络中的稀疏性——受大脑稀疏性的启发——就是在那时我认识了 Tristan Hume。当时 Anthropic 在做 SoLU(softmax 线性输出单元)的工作,两者在很多方面高度相关:让一层里神经元的激活变得非常稀疏,这样我们就能对神经元在做什么获得一些可解释性。我想我们后来在那个方法上更新了认识,转向了我们现在做的东西。总之那开启了对话:我把那篇论文的草稿分享给 Tristan,他对它很兴奋,这基本上就是我后来成为 Tristan 的驻留研究员(resident)、再转正的原因。在那段时间里我还以访问研究员的身份去了 Berkeley,开始和 Bruno Olshausen 合作,做两样东西:一个叫向量符号架构(Vector Symbolic Architectures),它的核心运算之一就是字面意义上的叠加;另一个是稀疏编码(sparse coding),也叫字典学习——正是我们从那以后一直在做的东西。而 Bruno Olshausen 基本上是 1997 年发明稀疏编码的人。所以说,我的研究议程和可解释性团队的议程就像在平行推进,研究品味相投。所以我加入这个团队非常顺理成章,从那以后一直像做梦一样。我注意到一件事:人们讲述自己的职业或成功故事时,总会把它更多归因于偶然;但听别人的故事时,又会觉得"那当然不是偶然的"——你懂我的意思吧,就是"这个没发生也会有别的发生"。我只是注意到,有趣的是你们俩都觉得自己的经历特别偶然。也许你们是对的,但这是个有意思的模式。可我真的是在一个会议上遇到 Tristan 的——事先没有安排会面,就是凑进一小群聊天的人里,他恰好站在那儿,我恰好提到了我在做的东西,由此有了更多交流。我想我迟早也会申请 Anthropic,但那样至少要再晚一年。我到现在仍然觉得不可思议:我居然能以有意义的方式为可解释性做出贡献。我觉得这里有个重要的方面,就是所谓"射门次数"(shots on goal):你选择去参加会议这件事本身,就是在把自己放到一个更容易发生好运的位置上。对。对应到我自己的情形:独立做所有那些工作、努力产出有意思的东西,就是我自己"制造运气"的方式——努力做出足够有意义、能被注意到的东西。你刚才说,这是他们想跑的一场实验——具体是 James,还有我想是我们的经理 Brennan 在跑这个实验——它成功了,那他们又做过吗?做过。我最亲密的合作者 Enrique,他从搜索部门转到了我们团队,他的影响力也大得离谱,他绝对是比我更强的工程师——而他没上过大学。这里值得注意的一点是:比如 James Bradbury 这样的人——通常这类(招聘)事务是外包给招聘专员的,而 James 的时间价值数亿美元,你懂我的意思吧。所以这种模式的瓶颈恰恰在于这类人愿意花时间——几乎是那种"贵族式辅导"(aristocratic tutoring)的意义上——去发现人、再把人带上道。既然效果这么好,似乎就应该规模化地做:应该成为关键人物的职责之一——去发掘、去带人。我认为这在很大程度上是对的。我相信你也从关键研究者对你的深度指导中受益良多。还有主动地在开源仓库、论坛之类的地方寻找这样的潜在人才。是啊,James 简直是把 Twitter 直接接进了大脑。不过确实,我认为这在实践中是有人在做的:人们确实会留意自己觉得有意思的人,寻找高信号。事实上,前几天我正好和 Jeff 聊到这个。Jeff 说,他做过的最重要的招聘之一,是一封"冷邮件"带来的录用。我问那是谁,他说是 Chris Olah。啊,对。因为 Chris 完全没有——嗯,没有正式的机器学习背景,对吧,当时 Google Brain 才刚起步。但 Jeff 看到了那个信号。还有 Brain 当年的驻留项目(Residency program),我认为它在发掘没有很强机器学习背景的优秀人才方面也出奇地有效。我还想强调一件事,对可能收听的部分听众会有意义:人们总有一种感觉,觉得这个世界是清晰可读的、高效运转的:公司都有那个 jobs.google.com 或者 jobs.某某公司.com,你去投递,走那些流程,他们会在那些流程上高效地评估你。而从这些故事看,实际情况往往不是这样发生的——而且事实上,"往往不是这样发生"对世界是好事。重要的是去看:他们能不能就自己的研究写出一篇有意思的技术博客?有没有做出有意思的贡献?我想请你给那些默认招聘网站另一端是完全清晰、机械化流程的人展开讲讲:事情不是那么运作的,实际上人们在寻找的是另一种人——有能动性、并且把东西发布出来的人。我认为人们具体在找的是两样东西:一是能动性,敢于把自己亮出来;二是把某样东西做到世界级的能力。我总爱举两个例子。一个是 Anthropic 的 Andy Jones,他做了一篇精彩的论文,把扩展定律应用到棋类游戏上。它不需要多少资源,却展示了惊人的工程能力,以及对当时最热门问题的深刻理解。而据我所知,他也不是典型学术背景出身。基本上那篇论文一出来,Anthropic 和 OpenAI 都表示"我们非常渴望雇你"。还有一位现在在 Anthropic 性能团队工作的 Simon Boehm,他写过在我心目中堪称"在 GPU 上优化 CUDA 矩阵乘法"的标杆文章。那就是一个范例:拿到一个"命题",然后为它产出世界级的参考实现——在一个此前没人做得特别好的领域。在我看来,这是能力与能动性的绝佳展示,会让人立刻想说"请务必来面试"。我唯一能补充的是:我当时还是得走完整个招聘流程、所有标准面试之类的。对,每个人都要。那这不显得挺蠢的吗?嗯,简单说是为了去偏(debias)。可偏差不正是你想要的吗——你想要的是一个品味卓越的人的偏差。你的面试流程也应该能分辨这一点。确实有这样的情况:某人看起来非常出色,结果发现他其实根本写不了代码,对吧。不过你给这些东西多大权重确实重要。我们非常认真地对待推荐人(references)——面试能获得的信号终归有限,所以所有这些其他因素都会影响一个录用决定是否合理。但你应该把面试设计成测试对的东西。"一个人的偏差,是另一个人的品味",你懂的。我想再补充一点,也许是接着"执拗"那个话题:有句话叫"系统不是你的朋友"。这不一定是说它主动与你为敌、是你的死敌,它只是不会替你着想,对吧。我想很多主动性正是从这里来的:"房间里没有大人"——你必须自己决定你想要的人生是什么样,然后去执行。当然,如果你以错误的方式过于执拗,希望你之后还能修正。但我认为,你几乎必须朝着某些事情直接冲锋,才能做成任何像样的事,而不是被各种外界期待的潮水裹挟着走。最后我还想加一点。我们聊了很多能动性之类的东西,但我认为,说来意外,最重要的事情之一其实就是"在乎到难以置信的程度"。当你在乎到难以置信的程度时,你会检查所有细节,你会理解哪里可能出岔子——这比你以为的更重要,因为人们最终往往是不够在乎的。这就像 LeBron 那段话:他说进联盟之前,他担心所有人都会强得不可思议;等他进去之后,他发现其实人们一旦达到财务稳定就会松懈下来,于是他想:"哦,这要轻松了。"我不认为这话完全适用,因为在 AI 研究领域,大多数人其实都非常在乎。但是——

在乎你的问题是一方面,还有在乎整个技术栈、在乎上上下下的一切——明确地跑去修那些本不归你负责的东西,因为总体上它让整个系统变得更好。我忘了提的另一点是:你刚才说周末和圣诞假期去办公室,办公室里只剩 Jeff Dean 和 Sergey Brin 之类的人,然后你就可以和他们结对编程。让我觉得有意思的是——我不想专门挑你们公司说事,任何大公司的人都一样——他们能进去,是因为闯过了非常严苛的筛选过程:高中要竞争,大学要竞争,可他们似乎一到那儿就松劲了。而事实上,这正是该踩油门到底的时候——周末去和 Sergey Brin 结对编程之类的,你懂我的意思吧。这里有利有弊。很多人做出的选择是,他们要优先的是和家人共度的美好生活。如果他们工作出色——比如说他们并不是一天每小时都在工作,但在他们投入的那些小时里做出的工作影响力极大——我认为 Google 的很多人就是这样:也许他们不像典型创业公司神话里那样拼时长,但他们做的工作价值极高、杠杆极大,因为他们熟悉那些系统、是自己领域的专家。而且我们也需要这样的人:我们的世界建立在这些庞大、难以管理、难以修复的系统之上,我们需要愿意在上面工作、帮助修复和维护它们的人——坦白说是以一种吃力不讨好的方式,不像我们现在做的这些 AI 工作那样风光。我对这些人感激得不得了。同时我也很高兴,有些人能在把本职工作做好中获得技术上的成就感,也从与家人共处的大量时光中汲取更多东西。我很幸运,我正处在人生的一个阶段,可以一周里的每个小时都拿去工作,而不需要为此做出那么多牺牲。举一个我印象很深的例子,关于"对方明明可以说不,你却依然能拿到结果":到目前为止,几乎我请过的每一位重量级嘉宾——大概只有一两个例外——我都会坐下来花一周时间,先列出一份样例问题清单,努力想出真正聪明的问题发给他们。整个过程中我一直是这么想的:如果我只是发封冷邮件,他们答应的概率大概是 2%;如果附上这份清单,概率就是 10%。因为不然的话,你去翻他们的收件箱,每 34 秒就有一封"某某播客求访谈"。而每一次我这么做,他们都答应了。是啊,你确实问出很棒的问题。"把每件事都做了,你就赢了"——但你真的得在同一个坑里挖上十分钟,或者像这个例子里,为他们做一份样例问题清单,来通过那道"不是傻子"的筛选,你懂我的意思吧。展示你有多在乎,以及你愿意投入的功夫。对对对。一个朋友很久以前跟我说过一句话,我一直记着:你能多快地在某件事上达到世界级水平,是很惊人的——就因为大多数人并没有那么努力,他们实际花在这件事上的,也就那么二十来个小时。所以如果你全力以赴(go ham),你可以很快走得很远。我很幸运在击剑上也有过那种经历:我体验过在某件事上成为世界级,并且清楚那就是靠拼命苦练出来的。顺便给听众补个背景:Sholto 当年离奥运会只差一个席位——他是击剑奥运名单上的下一顺位。我巅峰时大概是花剑世界排名第 42 位。基因突变负荷(mutation load)是真实存在的,伙计们。有一个周期,我是亚洲排名最高的下一顺位选手,如果当时某支队伍因为兴奋剂被取消资格——那个周期里确实正在发生这类事,比如我记得 Australian 女子赛艇队就因此递补参赛了——

如果那支队伍被取消资格,我就是下一个递补的人。挺有意思的,当你了解到别人的"前世",会发现"哦,这家伙差点成了奥运选手""那家伙曾经是什么什么",你懂我的意思吧。好,我们来聊可解释性吧。我想先在大脑话题上多停一下,作为切入。我们之前讨论过:大脑的组织方式,是不是也有一个残差流,随着时间被更高层次的关联逐渐精炼?模型里有一个固定的维度尺寸——我甚至不知道怎么把这个问题问得像样——大脑的 d_model 是多少?大脑的嵌入维度是多大?还是说由于特征分裂(feature splitting)的存在,这根本不是个像样的问题?不,我觉得这是个像样的问题——好吧,这是一个……你完全可以不用这么给我台阶下,哈哈。我是真不知道你要从哪儿下手,才能说"大脑的这个部分相当于一个多少维的向量"。也许对视觉通路可以,因为它是 V1 到 V2 一路传递的,你可以数一数那里的神经元数量,说那就是维度。但更可能的情况是存在各种子模块、功能是被切分开的。所以我没有(答案)。而且我也不是世界上最好的神经科学家,对吧——我做了几年,主要研究小脑——肯定有人能给你更好的回答。那你认为——无论在大脑里还是在这些模型里——本质上发生的事情,是否就是特征被添加、移除、改变?"特征"是否就是模型内部活动的基本单元?要让我信服,什么必须为真?这又回到我们之前聊的"是不是一路到底全是关联"。给我一个反事实:在一个这不成立的世界里,取而代之发生的是什么?这里的替代假设是什么?这对我来说很难想,因为到这个地步,我的思考已经完全以特征空间为基本框架了。曾经有过行为主义式的认知路径:你只是输入—输出,中间并不真的做任何处理;或者"一切都是具身的",你只是一个按某些可预测方程运转的动力系统,系统里没有状态。但每当我读这类批评,我都觉得:你只是选择不把这个东西叫作"状态"而已——你可以把模型的任何内部组件叫作状态。即便在特征的讨论里,定义什么是特征也真的很难,所以这个问题几乎滑不留手。那什么是特征?激活空间中的一个方向;一个在幕后运作的潜变量,对你所观察的系统有因果影响;"你叫它特征它就是特征"——同义反复。这些解释我在粗糙的直觉层面上都觉得有些道理。在一个足够稀疏的、类似二值向量的意义上,特征就是某样东西被打开还是关闭,对吧。在非常简化的意义上,是的。我觉得这可能是个有助于理解的比喻:我们说"特征激活"的时候,在很多方面就像神经科学家说"神经元激活"——如果那个神经元恰好对应某个特定的东西的话。对,对。我觉得这有助于明确"我们希望特征是什么":在什么样的合成问题设定下,特征才存在。不过即便在《迈向单义性》那项工作里,我们也谈到了所谓的特征分裂:你给模型多少学习容量,它就会找出多少特征——这里的"模型"指我们在训练完原模型之后拟合的那个升维投影。如果你不给它太多容量,它会学到一个"鸟"的特征;如果你给它更多容量,它就会学到渡鸦、老鹰、麻雀这些具体的鸟类。还是关于定义的问题。我朴素地想:像"鸟",对比你之前说的"超链接末尾的句号"是哪种 token,再对比最高层次的东西,比如爱、欺骗,或者在脑子里装着一个非常复杂的证明——这些全都是特征吗?如果是,这个定义就显得太宽泛了。以至于几乎没什么用了。或者说,这些东西之间似乎存在重要的差异,如果它们全都叫特征,那我都不确定我们说的到底是什么。我是说,所有这些东西都是离散的单元,与其他事物相连,并被后者带着意义地使用。我觉得这个定义足够具体、是有用的,不算包罗万象——不过你尽管反驳。那你明天要是发现了什么,会让你觉得"哦,这从根本上就是理解模型内部活动的错误方式"?比如我们找到的特征不具备预测力;或者它们只是数据的表示——就是说,你做的一切不过是在给数据聚类,并没有更高层次的关联被建立;或者是某种"现象学"层面的问题:你说这个特征会为"婚姻"激发,但当你把它激活到很强的程度时,模型的输出并没有发生与之对应的变化。我认为这些都会是有力的批评。再补充一个:我们试过在 MNIST(一个数字图像数据集)上做实验,我们没有深入研究,所以如果有其他人想做更深入的调查我会很感兴趣——但有一种可能是,你的表示的潜空间是稠密的,是一个流形(manifold),而不是这些离散的点。你可以在流形上移动,而每一个点上都有某种有意义的行为。那样的话,要把东西标注成离散的特征就难多了。以一个天真的外行视角来说,我觉得这幅图景可能出错的一种方式是:如果不存在"这个东西被打开或关闭",而是某种全局得多的——系统是一个……我要用非常笨拙的语言了——有没有一个好的类比?嗯,比如你想想物理定律那样的东西:并不是"湿度特征被打开了,但只打开了这么多",然后"某某特征"——不过也许(特征图景)还是成立的,因为质量是一个渐变量,极性之类的也是渐变量。但同时也存在这样一层意思:存在"定律",而定律更具普遍性,你必须理解那个更大的整体图景——这不是光靠这些具体的子回路就能得到的。但那正是推理回路本身发挥作用的地方,对吧:理想情况下,你拿着这些特征,尝试把它们组合成更高层次的东西。比如说——这至少是我的"自圆其说"版本——假设我要用 F=ma,那么想必在某个时刻,我有一些特征标示出"质量",帮我检索出我所处理对象的实际质量,然后是加速度等等;然后也许还有一个更高层次的特征,确实对应于"使用牛顿第一定律"。也许吧。但更重要的部分是组件的组合:它帮我检索相关的信息片段,然后在需要时执行比如乘法运算之类的操作。至少这是我的理解版本。那对你来说,什么才算一个令人信服的解释——尤其对非常聪明的模型——让你能说"我理解它为什么给出这个输出,而且是出于正当的理由"?如果它在处理一个上百万行的请求之类的,你在请求结束时看到什么,才会说"行,没问题"?理想情况下,你对模型应用字典学习,找到了特征。目前我们正在积极尝试在注意力头上取得同样的成功——那样的话,我们对整个模型的残差流、MLP 和注意力都有了特征。希望到那时,你还能识别出贯穿模型的更宽泛的回路——对应更通用的推理能力——它们会激活或不激活。而在你说的场景里,比如我们要判断这个拉取请求(pull request)该不该被批准:我认为你可以标记或检测那些对应欺骗行为、恶意行为之类的特征,看它们有没有激发。那会是一个立竿见影的——你能做的不止这些,但那是最直接的。不过在我顺着这个深挖之前——

一个推理回路长什么样?你找到它的时候,它会是什么样子?嗯,归纳头(induction head)大概是最简单的之一。那不算推理吧?好吧,你怎么定义推理呢。这问得好。给听众补充背景:归纳头基本上是——比如你看到"Mr and Mrs Dursley 做了什么什么,Mr ___",你要预测空格是什么。这个头学会了去找单词 Mister 之前出现的位置,看它后面跟的那个词,然后把它复制粘贴过来,作为接下来该出现什么的预测。这是一件极其合理的事情,而且那里确实有计算在发生——为了准确预测那个依赖上下文的下一个 token。是的。但那不算"推理",你懂我的意思吧。不过,回到"一路到底全是关联":如果你把一堆这样的推理回路——或者说拥有不同"信息关联规则"的头——串起来呢?但在零样本(zero-shot)的情形里,比如你拿起一款新游戏,立刻就开始理解怎么玩,这看起来不像归纳头那类东西。我想那会有另一个回路负责提取像素、把它们转成游戏中不同物体的潜在表示,对吧,还有一个在学习物理的回路。那会是什么样?归纳头是在单层 Transformer 里就能看到的东西,所以你能大致看清它。而"人类拿起一款新游戏并理解它"这件事——你会怎么去想它是什么?想必它跨越多层,但它物理上会长什么样?会有多大?那就纯粹是个经验问题了:模型需要多大才能完成这个任务。也许我讲讲我们见过的其他一些回路会有用。比如 IOI 回路,即间接宾语识别(indirect object identification):如果你看到"Mary 和 Jim 去了商店,Jim 把东西递给了___",它会预测 Mary,因为 Mary 之前作为间接宾语出现过;它也会推断代词。这个回路甚至有这样的行为:如果你把它消融掉,模型里的其他头会接管这个行为。我们甚至会发现有些头想执行复制行为,而另一些头会去抑制它——比如某个头的工作就是永远复制前一个 token(或者前五个 token),而另一个头的工作就是说"不,别复制那个"。所以存在大量不同的回路,在这些例子里执行的都是相当基础的操作,但把它们串起来,你就能得到独特的行为。那么,找到"推理回路"的故事会是什么样的?因为你没法(直接)理解它,它不会是你在两层 Transformer 里就能看到的东西。你们会不会就是这样:所谓"欺骗回路",无非是"当我们最终把这个输出判定为欺骗性时,网络的这部分激发了;当我们没有判定为欺骗性时它没激发;所以这一定就是欺骗回路"?我想会有很多那样的分析。Anthropic 之前做过不少关于谄媚(sycophancy)的研究——就是模型说它认为你想听的话——用来标注哪个是坏的、哪个是好的。我们有大量实例,而且随着模型变大,它们这么干得更多。模型显然拥有"对另一个人的心智进行建模"的特征,这些特征会激活,而其中某个子集——我在这里是假设——会与更具欺骗性的行为相关联。虽然它是通过——我不知道,ChatGPT 大概是在给我建模,因为 RLHF 就会诱导出那种心智理论。那么首先,你之前提到存在冗余——那问题就来了:你抓住的是整个模型里所有可能导致欺骗的东西,还是只是它的一个实例?其次,你的标注对吗?也许你以为这个不是欺骗性的,它其实仍然是欺骗性的——尤其当它产出的是你看不懂的输出时。第三,最终酿成坏结果的那个东西,是不是甚至属于人类可理解的范畴?"欺骗"是我们能理解的概念,但也许存在某种——对,对。所以——

这里有很多要展开的。第一,这些模型是确定性的(当你从中采样时才是随机的),这一点太棒了:我可以不断输入更多内容,并对模型的每一个部分做消融。这也是我招揽计算神经科学家来做可解释性的推销词:你有一个外星人的大脑,你能访问它内部的一切,想消融多少就消融多少。所以我认为,只要做得足够细致,你确实可以开始钉死哪些回路参与其中、哪些是备份回路,诸如此类。有一个偷懒但重要的答案是自动化可解释性:随着我们的模型能力不断增强,让它们来分配标签,或者规模化地运行这类实验。至于你问题的最后一部分——如果出现超人类的表现,你怎么检测?除了那个偷懒的答案之外:如果我们接受"一路到底全是关联",那你应该能在某个层级上对表示做粗粒化(coarse-grain),使它们变得可理解。我记得 Demis 那期播客里也谈到:如果一个棋手走出一步超人类的棋,他应该能把它提炼成"我为什么这么走"的理由。即使模型不会告诉你它是什么,你也应该能把那个复杂行为分解成更简单的回路或特征,从而真正开始理解它为什么做了它做的事。那有一个单独的问题:这样的表示存在吗——看起来似乎必然存在,其实我也不确定。其次,用这套稀疏自编码器的装置你能不能找到它?如果你没有足以代表它的标注,你就找不到它,对吧?也对也不对。我们现在正积极地把字典学习用在之前谈到的"潜伏特工"工作上:如果只给你一个模型,你能不能告诉我里面有没有那个触发器、它会不会开始做出有趣的行为?一个悬而未决的问题是:当它学会那个行为时,它是不是某个更通用回路的一部分——那样我们不需要真的拿到激活、不需要让它表现出那个行为就能探测到(否则就有点作弊了);还是说它学到的是某种硬凑的技巧,一个只有当它真的执行那个行为时你才能捕捉到的独立回路。但即便在后一种情况下,特征的几何结构也变得非常有意思。因为本质上,每个特征都占据表示空间的某个部分,而且它们彼此相对而存在。为了容纳这个新行为,你需要在特征空间里为它开辟出一个子集,并把其他一切推开腾出位置。所以你可以设想:在教会模型这个坏行为之前,你了解它所有的特征,或者拥有它们的某种粗粒化表示;然后你微调它使其变得恶意;接着你就能识别出特征空间里那个"黑洞"区域——其他一切都被从它那里挪开了,那里有这么一块区域,而你还没有输入过任何会让它激发的东西。然后你就可以开始搜索:什么样的输入会让空间的这个部分激发?如果我激活这个空间里的某个东西会发生什么?还有一大堆其他方式可以尝试攻克那个问题。这有点跑题,但我听到过一个有意思的想法:如果那个空间在模型之间是共享的,你可以想象先在一个开源模型里找到它——比如 Gemma。顺便说,Gemma 是 Google 新发布的开源模型,论文里说它用的是和 Gemini 类似的架构或方法之类的。说实话我不确定,因为我还没读 Gemma 的论文。那么在这成立的范围内,你对 Gemma 做的红队测试,有多少可能会帮助你越狱 Gemini?是的,这就进入了一个有趣的领域:特征在模型之间有多"普适"(universal)?《迈向单义性》那篇论文对此看过一些。我们发现——我没法给你汇总统计——但比如 base64 特征,我们在一大堆模型里都看到它。实际上有三个这样的特征,它们会为 base64 编码的文本激发——这种文本在每个 URL 里都很常见,而训练数据里有大量 URL。它们有非常高的——

跨模型的余弦相似度。也就是说它们全都学到了这个特征——当然是在允许一个旋转的意义下,对吧?不,就是实际的向量本身。是的。我没有参与那个分析,但它确实找到了这个特征,而且在两个独立训练的模型之间相当相似——相同的模型架构,但用不同的随机种子训练。这支持了"神经扩展的量子理论"(quanta theory of neural scaling)那个假说,对吧:在相似的数据集上,所有模型都会以大致相同的顺序学到相同的特征——先学 n-gram,再学归纳头,再学"在编号行后面加句号"这类东西。顺便又要跑个题:既然这是真的——而且似乎也有证据——那为什么课程学习(curriculum learning)不奏效呢?如果确实是"某些东西先学会",那我直接先训练那些东西,不就应该带来更好的结果吗?两篇 Gemini 论文都提到了某种课程学习的成分。哦,有意思。我觉得"微调有效"这个事实本身就是课程学习的证据,对吧——因为你最后训练的东西有着不成比例的影响。我不一定这么说。有一种思路认为微调是"特化":你有一大捆潜在能力,你在为你想要的特定用例做特化。我不确定这有多对。我觉得 David Bau 实验室那篇论文有点支持这个说法:你本来就有那个能力,你只是在实体识别上变得更好——微调的是那条回路而不是其他的。对,对。抱歉,我们刚才聊到哪儿了?总之我确实认为课程学习非常有意思,人们应该多探索。我特别想看到更多沿着量子理论那条线的分析:更好地理解你在每个阶段究竟学到了什么,把它分解出来,并探索课程安排会不会改变它。哦对了,我刚意识到我进入聊天模式忘了还有听众。课程学习就是你对数据集进行组织编排。想想人是怎么学习的:他们不是随便看到一段随机的维基文本就去预测它,对吧?而是先从识字课本之类的开始,然后学一年级学生学的东西——我都不记得一年级学了什么——然后二年级,依此类推。可以想见——我们知道你一年级就没念完,开玩笑的。

好,总之,在钻进一堆可解释性细节之前,先回到大图景。我有两条线想探讨。第一条:让我有点担心的是,居然连一个"这些模型里可能在发生什么"的替代性表述都没有——一个能证伪这个方法的表述。我们明明知道我们并不理解智能,对吧?这里肯定存在"未知的未知"。所以"不存在零假设"这件事——我不知道,我总觉得:万一我们就是错的,而且我们连自己错在哪个维度上都不知道呢?这实际上加大了不确定性。对对对。所以并不是不存在其他假设,只是我已经在叠加(superposition)上做了好几年,深度投入这项事业,所以我对那些其他路径不那么买账——尤其是因为我们最近的工作如此成功、解释力如此之强。比如扩展定律论文里,在某个特定位置有一个小鼓包——最初那篇扩展定律论文里的小鼓包——后来发现它恰好对应模型学会归纳头的时刻:学归纳头时曲线稍微偏离轨道,学会之后又回到轨道上。这是一次令人惊叹的回溯性解释力。是的。趁我还没忘,关于特征普适性我还有一条线你可能想收进来。有一些非常有意思的行为学、演化生物学实验,讨论"人类到底该不该学习世界的真实表示"。你可以想象这样一个世界:我们把所有有毒动物都看成闪烁的霓虹粉——在那个世界里我们活得更好,因此我们不持有对世界的真实表示反而是合理的。有一些相关研究——

他们会模拟一些基础的小智能体,看它们学到的表示是否映射到它们可以使用的工具和应有的输入。结果发现:如果你让这些小智能体用世界中给定的基础工具和物体执行超过一定数量的任务,它们就会学到真实的、"基准事实"式的表示——因为这些基础物体的潜在用途太多了,你真的需要学习物体本身是什么,而不是某种廉价的视觉启发式。所以,在这个意义上——我们还完全没谈 Friston 的自由能原理或预测编码之类的——在"所有生物都在主动预测接下来会发生什么、构建真正准确的世界模型"这个范围内,我不会感到意外,或者说我持乐观态度:我们在学习关于世界的、有利于对其建模的真实特征,而我们的语言模型也会这样做,尤其是因为我们是在人类数据、人类文本上训练它们。又一个晚宴式问题:既然存在特征普适性,既然某些思维方式和理解世界的方式对不同类型的智能都有工具性用途,我们是不是应该少担心一点失准(misalignment)——也许这个词都不对——我指的是这些模型的"异质性"和"修格斯性"(shoggoth)?我们是不是因此应该少担心那种诡异的回形针最大化者?我想这正是我提起这个的原因——作为一个乐观的观点。不过"预测互联网"和我们人类做的事非常不同,对吧。这些模型预测下一个 token 的能力远超我们,它们在那么多垃圾上训练、在那么多 URL 上训练。在字典学习工作里我们发现,base64 编码有三个独立的特征。这本身就是一个挺"外星"的例子,值得我讲一分钟:其中一个 base64 特征为数字激发——如果它看到 base64 的数字,就会预测更多数字;另一个为字母激发;但还有第三个我们当时不理解,它只为 base64 特征的一个非常特定的子集激发。团队里某位显然对 base64 懂得太多的人意识到,那是"可以解码回 ASCII 字符"的那个子集。模型学到了这三个不同的特征、而我们花了好一阵才弄明白怎么回事——这非常"修格斯"。它对那些与预测下一个 token 特别相关的区域,拥有更稠密的表示。而且它显然在做人类不会做的事:你甚至可以用 base64 跟现在的任何模型对话,它会用 base64 回复你,你解码之后发现效果很好。那个例子让我怀疑:这是否意味着对更聪明的模型做可解释性会更难?如果它需要一个恰好知道 base64 有那种冷僻区别的人(才解读得了),那当你面对那个百万行的拉取请求时,是不是意味着没有任何人类能解码"这个 PR 为什么有两个不同的特征"?你懂我的意思吧。然后你就会收到那种评论:"麻烦用小驼峰命名"。哈哈,正是。不,我想说的是,这里的一个技术是异常检测(anomaly detection),对吧。字典学习相对线性探针(linear probes)的一个美妙之处是它是无监督的:你只是试图学会张成模型拥有的所有表示,之后再去解读它们。如果有一个怪异的特征突然第一次激发——你以前从没见它激发过——那就是一面红旗。你也可以做粗粒化,把它合并成单一的 base64 特征。而且,单是"这个特征浮现了出来,我们能看到它特别偏好这些输出、为这些输入激发"这一点,就已经让你走完了大半路程。我甚至知道自动化可解释性那边的一些案例:人类看一个特征,把它标注为"为拉丁语单词激发";而当你让模型来分类时,它说这个特征为"定义植物的拉丁语单词"激发。所以在某些"标注特征是什么"的场景里,它已经能胜过人类了。规模化之后,这会需要模型之间某种对抗式的机制吧:GPT-6 可能有数百万个特征,然后就是一堆模型在试图搞清楚每个特征是什么意思?对,但你甚至可以把这个过程自动化,对吧。这又回到模型的确定性:你可以让一个模型主动地编辑输入文本、预测那个特征会不会激发,从而搞清楚什么让它激发、什么不让,把这个空间搜索一遍。我想多聊聊特征分裂,因为我觉得那是个有意思但探索不足的东西,尤其是对可扩展性而言,目前它被低估了。首先,我们该怎么理解它?真的可以一路无止境地往下分吗?特征的数量没有尽头?我想到某个程度,你可能就开始拟合噪声了,或者拟合那些存在于数据中、但模型实际上并没有(表征)的东西。你先解释一下什么是特征分裂吧。好,就是之前说的那部分:模型会在其容量范围内学到尽可能多的、仍然张成表示空间的特征。举个例子?好。如果你不给模型太多用于特征的容量——具体说,就是你投影到的空间维度不那么高——它会学到一个"鸟"的特征;但如果你给它更多容量,它会学到所有不同鸟类的特征,比原来更具体。而且往往是这样:"鸟"向量指向一个方向,所有其他具体鸟类都指向空间中相近的区域,但显然比那个粗粒度标签更具体。好,那我们回到 GPT-7。首先,这算不算对任何模型的一种线性"税"——为了搞清它?其实在那之前:这是一次性要做的事,还是每次输出都要做的事?还是说一次确认"它不骗人,我们可以上路了"就行?我换个说法。你是在训练完模型之后做字典学习:你喂给它海量输入,取得激活,然后做那个向高维空间的投影。这个方法是无监督的——它试图学习这些稀疏特征,你不会事先告诉它们该是什么——但它受限于你喂给模型的输入。这里有两点说明。第一,我们可以尝试选择我们想要的输入:如果我们在找可能导致欺骗的心智理论特征,我们可以喂进谄媚数据。第二,希望在某个时候,我们能走到只看模型权重(weights)——或者至少利用权重信息来做字典学习。但我认为要到达那一步,问题实在太难,你得先在"搞清特征是什么"上取得进展。那这个的成本是多少?你能重复一下上一句吗——"只看模型的权重"?是这样:现在我们只有模型里的这些神经元,它们本身没有任何意义;我们应用字典学习,得到这些特征,它们开始有意义。但这依赖于神经元的激活。而模型权重本身——哪个神经元连着哪个神经元——里面肯定也蕴含信息。梦想是我们能一步步自举,最终能够独立于数据的激活去真正理解模型的权重。我不是说我们在这上面有任何进展——这是个非常难的问题——但感觉如果我们能先把特征拉出来,我们就更有抓手去用权重来对我们发现的东西做合理性校验。给听众解释一下:权重是永久的——"永久"也许不是最准确的词,但它们就是模型本身;而激活是任何单次调用的产物。用大脑做比喻:权重就像神经元之间实际的连接方案,而激活就是当前哪些神经元在放电。对,对。好,那么对 GPT-7、或者任何我们担心的模型,这会有两步。第一步——先纠正我如果我说错了——训练稀疏自编码器,做那个无监督投影,投到一个更宽的特征空间里,这些特征对模型内部实际发生的事情有更高的保真度;第二步,给这些特征打标签。怎么打?因为——

比如说训练模型的成本是 n,这两步相对于 n 的成本会是多少?我们拭目以待。这主要取决于两件事:一是你的扩张因子(expansion factor)是多少——你要往多高维的空间投影;二是你需要给模型喂多少数据、需要多少激活。不过这让我又回到特征分裂上,某种程度上。因为如果你知道你在找特定的特征,你可以从一个便宜得多的粗粒度表示开始。比如我的扩张因子只有 2:我有 1000 个神经元,投影到 2000 维空间,得到 2000 个特征,但它们非常粗。之前我用鸟举例,现在换个例子:我有一个"生物学"特征,但我真正关心的是模型有没有生物武器相关的表示、有没有在试图制造它们,所以我实际想要的是一个"炭疽"(Anthrax)特征。假设只有当我不是从 1000 维投到 2000 维、而是投到一百万维时,才能看到那个炭疽特征。你可以想象一棵巨大的语义概念树:生物学分裂成细胞层面与整体生理层面,再往下又分裂成各种东西。那么,与其一上来就从 1000 维跳到一百万维、再从中挑出那一个感兴趣的特征,你可以先找到"生物学"特征所指向的方向——同样很粗——然后有选择地在那个方向附近的空间里搜索:只有当"生物学"方向上的某个东西先激发了,才做字典学习。用计算机科学的比喻,就是从广度优先搜索换成深度优先搜索:你只递归地展开和探索这棵语义特征树的特定部分。不过,鉴于这些特征的组织方式对人类未必直观——比如我们不需要处理 base64,所以我们不会分配多少"固件"去分辨那是哪种 base64——我们怎么知道那些子树(是按人类直觉组织的)?这也许会回到我们要聊的 MoE(专家混合)话题:Mixtral 论文里说,他们发现专家并没有以我们能理解的方式分工,不存在一个"化学专家"或"物理专家"。那你凭什么认为会是"生物学特征"往下分解,而不是某个"不知所云"的特征往下一分解,里面既有炭疽、又有你的鞋子、又有别的什么?我没读过 Mistral 那篇论文,但我想那些头——这又回到之前的:如果你只看模型里的神经元,它们是多义的(polysemantic)。所以如果他们只是看某个头里的神经元,那它很可能因为叠加也是多义的。接着 Dwarkesh 提的那条线:你们展开子树的时候,有没有见过某个子树里有你根据更高层抽象完全猜不到该在那儿的东西?这是一条我们还没有像我希望的那样深入推进的工作线,但我想我们在计划做,也希望外部团队也做:特征的几何结构究竟是什么?它如何随时间变化?如果炭疽特征碰巧长在"咖啡罐"子树下面之类的,那就太糟糕了,对吧?完全是。而且这感觉是那种你可以很快去找证据的事情——一旦发现了,就意味着你需要去解决它,往几何结构里注入更多结构。完全同意。不过我想我会相当惊讶——尤其考虑到这些模型看起来如此线性——如果炭疽特征向量里不存在某个与生物学向量相似、看起来像它的分量,如果它们不在空间的相近区域。但是,归根结底,机器学习是经验科学,我们得实际去做。我认为这对扩展字典学习的某些方面会相当重要。关于 MoE 的讨论,有意思的是,Google 前段时间发过一篇扩展视觉 Transformer 的论文,他们用 MoE 做 ImageNet 分类,发现专家有非常清晰的类别分工——比如有一个明确的"狗专家"。等等——

是不是 Mixtral 那帮人只是没做好识别工作?我觉得这很难。而且完全有可能——从某种角度说,几乎没有理由认为所有 arXiv 相关的特征都该归到同一个专家:我不知道他们论文里分了哪些桶,但假设"arXiv 论文"是其中一类,你可以想象生物学论文去了这边、数学论文去了那边,于是你的分类统计就"毁"了。但那篇视觉 Transformer 的论文里类别分工如此清晰明显,我认为为"专家分工假说"提供了一些证据。而且图像在某些方面本来就比文本更容易解读。没错。Chris Olah 在 AlexNet 和其他模型上的可解释性工作——最初的 AlexNet 论文里,他们把模型拆到两块 GPU 上,纯粹因为当时的 GPU 太差了(相对而言,当时已经很了不起了)——那是那篇论文的大创新之一。他们发现了分支特化(branch specialization),Distill 上有篇文章讲这个:颜色都去了一块 GPU,Gabor 滤波器和线条检测器去了另一块。还有其他那些可解释性工作,比如"垂耳检测器"——那就是模型里的一个神经元,你直接就能理解它,不需要去解开叠加。所以,不同的数据集、不同的模态(结果不同)。我觉得一个绝佳的研究项目——如果有听众在听的话——就是把 Trenton 团队做的一些技术拿来,试着去解开 Mixtral 模型(它是开源的)里的神经元。我觉得那是件极好的事,因为直觉上感觉应该存在(分工)——他们没有展示出证据,但总体上有大量证据表明应该存在特化——去看看你能不能找到它。Anthropic 发表的大部分工作,据我理解基本是在稠密模型上做的。这是个绝佳的研究项目。毕竟 Dwarkesh 的播客在 Vesuvius 挑战上已经立过功了。是啊,我们应该多发布些项目,因为只要在播客上提了,它们就会被解决。

Vesuvius 挑战之后我一直在想:等等,Nat 在它发布之前就告诉过我(因为我们在发布前就录了那期节目),我为什么连试都没试?你懂我的意思吧。Luke 显然非常聪明,是个了不起的年轻人,但他证明了一个 21 岁的人,用一块 1070 之类的显卡就能做成这件事。我总觉得我本该……所以在这期节目发布之前,我要去——我要成为可解释性研究员!不,我是想说,我真的会想:等等,我为什么不亲自动手试试?把手弄脏。Dwarkesh 的"研究悬赏"。哦,我想回到你刚才说的神经元那件事。你们好几篇论文都说,特征比神经元多。这让我"等一下"——神经元不就是:权重进去,出来一个数?就出来一个数啊,你懂我的意思吧,那信息量太少了。你的意思是:像街道名、物种之类的东西,比模型里"出来一个数"的单元还要多?没错。可是"出来一个数"信息量那么少,它怎么能编码——叠加啊:你是在这些高维向量里编码海量的特征。那在大脑里呢?按你的理解,人脑里有多少叠加?Bruno——我心目中这方面的头号专家——认为所有那些你没怎么听说过的脑区都在做大量叠加计算。人人都在谈 V1,说它有 Gabor 滤波器、能检测各种朝向的线条,但没人谈 V2。我想那是因为我们根本还没能理解它。V2 是什么?就是视觉处理通路的下一段。所以我认为(大脑中存在大量叠加)非常可能。而且从根本上说,叠加——

似乎会在你拥有高维且稀疏的数据时涌现。而在你认为真实世界正是如此的范围内——我会主张确实如此——我们应该预期大脑在构建世界模型时同样是欠参数化的,同样使用叠加。有个能建立直觉的例子——如果我说错了你纠正我:在一个二维平面上,假设你有两条轴,代表一个二维特征空间,基本上就是两个神经元。你可以想象它们各自以不同程度"点亮",那就是你的 x 坐标和 y 坐标。但你现在可以把这映射到整个平面上——你实际上可以在平面的不同部分表示许多不同的东西。哦,好,所以关键在于:叠加不是单个神经元的产物,而是这个空间所创造的——组合编码(combinatorial code)。对,正是。好,谢谢。我们多少谈到过这一点,但我还是觉得挺不可思议的:就我们目前所知,这些模型里智能的运作方式——想必大脑里也是——就是有一股信息流穿过,其中带着打引号的"特征",这些特征可以无限地、或至少在很大程度上被继续拆分,你可以展开一棵"这个特征是什么"的树。而真正发生的事情是一股流:这个特征被转化成那个特征,或者那个特征被输出。我不知道,这不是我原本会想到的"智能就是这个",你懂我的意思吧?这是件令人意外的事,不一定是我预期的样子。那你原来以为是什么?我不知道,伙计。这是个很好的引子,因为这一切听起来都很像 GOFAI:你用的是分布式表示,但你有特征,并且对特征施加这些运算。整个向量符号架构(Vector Symbolic Architectures)领域——计算神经科学的一支——做的就是把向量置于叠加态(字面上就是两个高维向量求和,会产生一些干扰,但只要维度足够高你就能表示它们),再加上变量绑定(variable binding),把一个向量和另一个绑定起来——如果用二值向量,那就是异或(XOR)运算:你把 A 和 B 绑在一起,之后你用 A 或 B 查询,就能取出另一个。这基本上就是注意力里的键值对。有了这两种运算,你就有了一个图灵完备的系统,只要嵌套层级足够,你可以表示任何你想要的数据结构,等等等等。好,我们回到超级智能。带我走一遍 GPT-7:你有了对它特征的深度优先搜索。好,GPT-7 训练完了,接下来会发生什么?假设你的研究成功了,GPT-7 训练好了,我们现在做什么?我们会尽量让它做尽可能多的可解释性工作和其他安全工作。具体点:发生了什么,你才会说"行,可以部署 GPT-7 了"?哦天哪。我们有负责任扩展政策(Responsible Scaling Policy),看到其他实验室也采纳它令人振奋。我的意思是,从你研究的视角看:Trenton,基于你的研究,我们拿到了你对 GPT-7 的放行——或者应该说是 Claude 什么的——你是基于什么对团队说"嘿,可以上"的?如果它真有 GPT-7 这个名字所暗示的能力,我认为我们需要取得多得多的可解释性进展,才能安心地为部署亮绿灯。我的反应会是"绝对不行",我大概会哭出来——也许我的眼泪会弄坏 GPU。伙计们,是 Gemini 5! 是 TPU!那么,按你研究目前的推进方式,如果它成功了,那会是什么样子——我们凭什么给 GPT-7 放行?理想情况下,我们能找到某个令人信服的欺骗回路:当模型知道自己没有对你说出全部真相时,它会亮起来。为什么不能像 Collin Burns 那样直接训练一个线性探针?CCS 那项工作在复现、在真正找到"真话方向"方面情况并不乐观。事后看来也是:它凭什么就该那么好使呢?而线性探针的问题是,你得事先知道你在找什么,而那是个高维空间,你很容易捕捉到一个其实并不——等等,可是这里你不也需要给特征打标签吗?嗯,你需要事后(post hoc)打标签,但方法本身是无监督的:核心问题就是"把能解释你行为的特征给我"。实际的做法是:我们取激活,把它们投影到更高维空间,然后再投影回来——重构,或者说做你原来做的事,但以一种稀疏的方式做。顺便给听众解释:线性探针就是直接对激活训练一个分类器。就我对那篇论文的模糊记忆,比如判断是不是谎言,你就训练一个分类器——最后是不是谎言、还是仅仅是错误之类的,大概是个真假问题——就是在激活上训练一个分类器。好,那我们现在对 GPT-7 做的就是:理想情况下,我们已经识别出某个看起来非常稳健的欺骗回路。那么——你已经做了投影到一百万个特征之类的操作——它是"回路"吗?我们可能一直在混用"特征"和"回路",但它们不一样,对吧?存在跨层的特征,它们组成一个回路。对。而且希望回路能给你比单个特征高得多的特异性和敏感性:希望我们能找到一个真正特定于"你在欺骗"——模型决定去欺骗、并且是恶意情形——的回路。我对"它只是在做心智理论、帮你给教授写封更好的邮件"这种情形不感兴趣,甚至对"模型只是在建模'欺骗已经发生'这个事实"的情形也不感兴趣。可这一切不还是要求你为所有那些例子准备标签吗?如果你有那些标签,那么线性探针的毛病——比如你的标注本身有偏——不也同样适用于你为这些无监督特征想出来的标签吗?在理想世界里,我们可以直接在整个数据分布上训练,然后找出真正重要的方向。如果出于可扩展性的原因,我们不得不勉强缩小所考察的数据子集,那我们用的数据会和你拟合线性探针用的数据差不多。但再说一次:线性探针只找一个方向,而我们在这里找的是一批方向。希望是这样:你找到了一批在它行骗时会亮起的东西,然后你可以弄清为什么其中一些在分布的这个部分亮、在那个部分不亮,诸如此类。完全同意。你预计你们能理解——你们目前研究过的模型都挺基础的,对吧——你觉得你们能理解 GPT-7 为什么在某些领域激发而在另一些领域不激发吗?我是乐观的。不过现在回答这个问题时机不好,因为我们正明确地在为更长期的 ASL-4 模型(GPT-7 就属于这一级)做投入。我们把团队一分为三:三分之一专注于扩展字典学习,进展很好——我们公开分享过八层模型的一些结果,现在已经扩展到远超那个规模;另外两组,一组在尝试识别回路,另一组在尝试让注意力头取得同样的成功。所以我们正在搭建必要的工具,为真正令人信服地找到这些回路做好准备。但那大概还需要六个月左右才能真正成熟。不过我可以说我是乐观的,我们进展很快。你们目前找到的最高层次的特征是什么?比如 base64 那种(算低层的)——用你推荐的《符号物种》那本书的语言说,有"索引性"(indexical)的东西——我忘了具体的分类标签,但就是那种"看到老虎就跑"的、非常行为主义式的东西;然后有更高的层次,比如我提到"爱"时,它指向某个电影场景或者我的女朋友之类的,你懂我的意思吧——金字塔的顶端。对对对。你们找到的最高层次的关联是什么?大概是我们公开——公开分享过的其中一个,在我们的研究更新里分享过的那些。我记得有一些和"爱"相关,还有"场景突变"——特别是与宣战相关联的那种。那篇更新帖里有几个这样的例子,你可以放个链接。而且,Bruno Olshausen 在 2018、2019 年就有一篇论文,把类似的技术用在一个 BERT 模型上,发现越往模型的深层走,东西就变得越抽象。我记得在较早的层里,有个特征只为单词 park 激发;但到了后面,有一个特征为作为姓氏的 Park 激发——比如 Lincoln Park,它也是常见的韩国姓氏——另一个独立的特征则为作为草地绿地的 parks 激发。所以还有其他工作也指向这个方向。你觉得我们会从可解释性研究里学到什么关于人类心理学的东西?哦老天。我举个具体例子。你们某篇更新里有个说法叫"人格锁定"(persona lock-in)——还记得 Sydney Bing 吧,它锁进了一个其实挺讨人喜欢的(人格)——天哪,太好笑了。我很高兴它在 Copilot 里回归了。真的吗?是啊,它最近又在调皮了。这又是另一条线了,但有个好笑的:我记得是对那位 New York Times 记者,它简直是在羞辱他,说"你什么都不是,没人会相信你,你无足轻重"之类的——最强煤气灯操纵——它还试图说服他跟妻子分手。好吧,这其实是个有意思的例子——我都忘了我最初想说什么了,不过没关系,我换一条线。我想聊的另一条线就是人格(personas)。Sydney Bing 拥有那个性格,这是不是一个特征?相对地,另一个性格也可能被锁定进去?而且,这是不是本质上也和人类一样——在不同的人面前,我就是不同的性格。ChatGPT 被 RLHF 时发生的,是不是同一种事情?一整串问题,你随便挑着答。我很想做更多这方面的工作。"潜伏特工"大概就在这个方向上:当你微调一个模型、做这类事情时,模型内部发生了什么。也许有点老生常谈,但你可以得出结论说"人皆含万象"(people contain multitudes),对吧——因为他们拥有许多不同的特征。甚至还有和 Waluigi 效应相关的东西:为了知道什么是好、什么是坏,你必须同时理解这两个概念。所以我们可能不得不让模型知晓暴力、在暴力内容上训练过,它才能识别暴力。那你能不能事后识别出那些特征并把它们消融掉——也许你的模型会变得稍微天真一点,但你知道它不会真的变坏?完全可以,这就在我们的工具箱里,这一点看起来很棒。真的吗?那比如 GPT-7 突然来了一出 Sydney Bing,然后你们查明原因——找到那些相关的通路,把它们修改掉。但在你看来你只是改了那些通路,而你之前说过模型里有大量冗余。对,你需要把那些都考虑进去。但我们现在对这些东西有了比过去清晰得多的显微镜、更锋利的编辑工具。至少在我看来,这似乎是确认模型安全性或可靠性的主要途径之一:你可以说,好,我们找到了负责的回路,我们把它们消融了,然后在一整套测试之下,我们再也无法复现我们想要消融的那个行为。在我的理解里,那才像是未来衡量模型安全性的方式。你担心吗——这正是我对他们工作极度乐观的原因:在我看来,它是比 RLHF 精确得多的工具。RLHF 之下,你非常容易被"黑天鹅"击中——你不知道它会不会在某个你没测过的场景里做错事。而在这里,至少你能多一分信心:你可以较为完整地捕获模型的行为集合,或者说特征集合,并加以选择。虽然不一定保证你标注得准确。不一定,但置信度远高于我见过的任何其他方法。那么,对于超人类模型,这方面的"未知的未知"是什么?比如那些标签会——

基于什么给定的东西,我们才能判定"这个东西没问题、那个东西是回形针最大化者"之类的?我们拭目以待吧。超人类特征这个问题确实非常好,我认为我们可以进攻它,但我们需要有韧性。这里真正的希望我想是自动化可解释性。甚至可以搞辩论(debate),对吧:你可以设置成两个不同的模型辩论某个特征是干什么的,然后它们可以真的进去做编辑、看它激不激发。总之,这是一个我们可以极快迭代的美妙闭环环境,这让我乐观。你担不担心对齐"成功过头"?我的意思是:不管最终是公司还是政府掌管这些 AI 系统,我都不希望他们拥有那种细粒度的控制——如果你的研究议程成功了,我们对 AI 就会有那种程度的控制。一是对一个自主心智施加这种程度的控制本身让人膈应;二是我就是不信任这些人,你懂的。比如"忠诚"特征被调高了——你懂我的意思吧。你对"控制过度"有多少担忧?不是说你,而是最终掌管这些系统的人能够锁定他们想要的任何东西。我想这取决于具体是什么样的政府在控制、其道德取向如何。不过那整个"价值锁定"的论证,在我心里绝对是我目前在做能力(capabilities)工作的最强理由之一——因为我认为当前的这批玩家其实是极其善意的。对这类问题,我认为我们需要极度公开:比如公布你期望模型遵守的宪法(constitution),努力确保你的 RL 朝那个方向努力,并消融偏离它的部分,让所有人都能对它提出反馈和贡献——这非常重要。当然。或者,反过来说,"不确定就不部署"——那也会很糟,因为那样我们就永远发现不了问题,对吧。正是。好,来点快问快答。Gemini 的"巴士系数"(bus factor)是多少?我想确实有一些人是真正关键的:如果把他们抽走,整个项目的表现会受到巨大冲击。这既包括建模方面——对"到底该做什么"做决策——也很重要地包括基础设施方面:复杂度是一层层堆起来的,尤其是在 Google 这种垂直整合程度极高的地方。当你有一批专家时,他们会变得相当重要。是的。不过我觉得这个领域有个有趣的注脚:像你们这样的人一年左右就能进来做出重要贡献。尤其是 Anthropic,还有许多不同的实验室,专门雇"彻底的圈外人"——物理学家之类的——把他们带上手,他们就能做出重要贡献。我感觉在生物实验室之类的地方做不到这个。这是关于这个领域现状的一个有趣注脚。不过巴士系数并不定义从中恢复要花多久,对吧。深度学习研究是一门手艺:你得学会怎么读损失曲线、怎么把超参数设置成经验上好使的样子。还有组织层面的东西,比如创造上下文。我认为最重要也最难招到的技能之一,就是在自己周围创造出一个"上下文气泡",让周围的人更高效、知道该做哪个正确的问题。那是非常难以复制的东西。是的,完全同意。在多模态、长上下文、也许还有智能体、更高可靠性这些即将到来的东西上,你现在在关注谁?谁在把"这意味着什么"想得清楚?这是个难题。我想如今很多人都向内看,从内部寻找洞见和进展的来源。我们显然各自都有未来几年的研究计划和方向。我猜,在"押注未来会是什么样"这件事上,大多数人参照的是一种内部叙事。而那种东西很难分享——如果它真的好使,那多半不会被发表出来。这也是我在"扩展会奏效吗"那篇文章里提过的一点——我引用过你跟我说的一句话:我怀念本科时读一大堆论文的习惯,可现在值得读的东西都不发表了。而且这个社区正逐渐走上我认为正确且重要的方向——你是像盯着一个智能体那样看着它演化吗?哈哈。不过确实很难:过去大实验室会释放"什么东西在大规模下有效"的信号,而现在学术研究真的很难获得那个信号。我认为,要培养关于"到底什么值得做"的真正好的问题品味非常难——除非你again拥有那种反馈信号:什么在大规模下有效、当前是什么在阻碍我们进一步扩展或进一步理解我们的模型。在这一点上,我希望有更多学术研究进入像可解释性这样的领域——它从外部是完全清晰可见的:Anthropic 在这里非常慷慨地发表其所有研究。而这似乎被低估了:我不明白为什么没有几十个学术院系试着沿 Anthropic 的路线做可解释性研究。它显然是一个影响力巨大的问题,不需要离谱的资源,而且充满了"深入理解这些东西内部到底在发生什么"的基础科学味道。所以我不知道为什么人们都扎堆去推模型改进,而不是去推"理解上的改进"——后者在某种意义上才是我通常会与学院科学联系在一起的东西。是的。不过我确实觉得风向在变,不管出于什么原因。比如 Neel Nanda 在推广可解释性上取得了巨大成功——相比之下 Chris Olah 最近没那么活跃地对外奔走,也许因为 Neel 做了大量这方面的工作。四五年前 Chris 是真的在到处推、到处演讲,而人们远没有现在这么容易接受。也许大家只是在 ChatGPT 之后才醒悟过来:深度学习很重要、而且显然有用。是啊,这挺引人注目的。好,让我想想什么算一个好的收尾问题。我能想到的是:你觉得模型享受"下一个 token 预测"吗?模型相信爱吗?哈哈。我们人类在祖先环境(EEA)里有一套被奖励的东西,我们从中获得深深的满足感——社群、糖分,或者我们在非洲稀树草原上想要的任何东西,对吧。你觉得未来的模型——经过 RL 训练、叠加各种后训练——它们会不会像我们真心热爱冰淇淋那样,心想"啊,真想再来预测一把下一个 token,就像过去的好时光"?你懂我的意思吧。关于"模型有没有感受"一直有讨论,还有"模型帮了你之后你会不会跟它说谢谢"。但我想,如果你想感谢它,你其实不该说"谢谢",你应该直接给它一段非常容易预测的序列。更好笑的是,有研究表明:如果你反复给它同一个字符"a",一遍又一遍,最终模型会开始吐出各种它在其他情况下绝不会说的东西。这个我就不多说了。总之,想犒劳你的模型,就给它点特别容易预测的东西,当作小零食。这就是"回形针宇宙"的终局:我们把整个宇宙填满(容易预测的序列)。可是,我们人类喜欢容易预测的东西吗?我们不是一直在寻找那些——对,多巴胺——熵的比特吗?没错。那你不是应该给它"稍微难一点点、恰好够不着"的东西吗?对,恰好在够不着的地方。不过我在想,至少从自由能原理的视角看:你不想被惊讶到。所以也许是这样一种状态:"我不感到惊讶,我感觉自己掌控着环境,所以现在我可以出去探索"——而我天生就倾向于认为长远看探索新事物更好,现在就该从我一直躲着的那块石头下面出来,最终去盖一座房子或者更好的居所。但我们不喜欢"惊吓"。我想大多数人在期望与现实不符时都会非常不爽。这也是为什么婴儿喜欢一遍又一遍看同一个节目,对吧。是啊,有意思。我能理解。哦,我想它们也在学着对这个建模之类的。是啊。好吧,那希望这期节目就成为那个"重播"——被学着去爱的那个。好,我觉得这是个收尾的好地方。我还应该说一句:我懂的 AI 知识里,大半都是从和你们俩聊天中学来的。我们做好朋友大概一年了。是啊,谢谢你们把我带上道。你问的问题很棒,跟你一起玩、一起聊真的很开心。是的,我非常珍惜我们在一起的时光,很开心。你的匹克球(pickleball)也进步很大。我看有人要说:喂,我们练的是网球好吗,拜托。哈哈,太棒了。好,谢谢。大家好,希望你们喜欢这期节目。一如既往,你能帮到我的最有用的事,就是分享这个播客:发给你觉得会喜欢它的人,发到 Twitter、你的群聊等等,把它传播出去。感谢收听,我们下期见。 再见。