"); //-->
大部分知识回路应由 Attention 和 MLP 共同组成,但是也发现一些以 Attention 为主的知识回路。典型的例子就是「Induction Head」 回路,多项研究证明这个回路的存在。它的主要作用在于当 GPT 预测 Next Token 的时候,倾向于从上文找到类似的输出模式,并拷贝到后续 Token 输出。如上图所示句子,第二个「so」 是 last token,GPT 此时通过 NTP 将要产生后续 Token,「Induction Head」 回路倾向于从上文中找到相同的 「so」单词,并把上文中跟在「so」后面的单词 「bad」 当作 Next Token 输出。「Localizing Model Behavior with Path Patching」 这项研究探测了 Induction Head 的内在工作机制:当根据第二个单词 「so」 要预测 Next Token 的时候,「so」 本身的内容被拷贝到 Transformer 自己对应 Attention 的 < Query,Key,Value > 中的 Query,而上文内容中出现的 “bad” 单词,通过 PTH (Previous Token Head to key) 这个 Attention Head 将 “bad” 之前内容的语义集成到 “bad” 对应的 Key 里。结果在「so」做 Attention 的时候,两者就得到很高相似性,于是通过 Attention 把「bad」 拷贝到单词 so 的位置,这导致 Next Token 很容易输出 “bad”,就达成了从上文拷贝「so…bad」 的目的。
除了 「Induction Head」 外,还有一些功能更复杂的 Attention 回路,比如「Interpretability in the Wild: a Circuit for Indirect Object Identification in GPT-2 small」这个工作发现了 Transformer 中存在以 Attention 为主,用于识别 「Indirect Object Identification」的知识回路。所谓「Indirect Object Identification」 ,可以参考上图给出的例子,就是说输入有两个实体,一个重复实体,一个非重复实体,如何从中找到正确答案。从上图例子可看出 GPT 是可以输出正确答案 Mary 的,其原因就是模型学会了一个主要由 Attention Head 构成的复杂识别回路。
如上图所示,「Indirect Object Identification」知识回路识别正确答案,主要由三个步骤构成:首先,Duplicate Token Heads 用于标识多次出现在句子中的 Token,而 Induction Heads 起到类似的作用;其次,S-Inhibition Heads 在输出 Next Token 的位置发生作用,用于从 Name Mover Heads 的注意力中删除或者抑制重复出现的名字;最后,Name Mover Heads 则输出剩余的名称 Token。由上可看出,LLM 模型在预训练过程中,为了更好地进行 Next Token 预测,学习到了非常复杂的 Attention 知识回路,来执行对某些输入 Token 拷贝并在 Next Token Prediction 结果中输出。
OpenAI 首席科学家 Ilya Sutskever 在访谈中曾说:「我们训练 LSTM 来预测亚马逊评论的下一个字符 (NTP) 时发现,如果你预测下一个字符足够好,LSTM 就会有一个与情绪对应的神经元。这就很好地展示了无监督学习的效果,也验证了下一个字符预测的想法。这个发现对我们的影响很大。」我理解这里说的在网络中出现了与情绪对应的神经元,大概是通过 NTP 训练任务,在模型内部形成了一个情感判断的知识回路。这个发现(可参考:Learning to Generate Reviews and Discovering Sentiment),确实是后来推动 OpenAI 把 LSTM 换成更大规模的 Transformer,并在更多数据上采用 NTP 来进行预训练的重要启发因素。
目前在探索 GPT 模型中的知识回路方面工作还比较少,我个人认为这个事情特别重要,比如我猜大概率会存在能够解释 Chain of Thought(COT)现象的复杂逻辑回路,而这条回路的形成很可能是预训练数据中引入程序代码或理工科论文数据后形成的,因为这类数据间的逻辑关系比较密切,所以 GPT 在 NTP 任务中为了快速降低 Loss,精准预测之后的 Token,可能会逼迫模型在内部产生大量抽象知识点概念,并在此基础上形成复杂的逻辑回路。我感觉这方面工作很有价值,是值得进一步加强的。
不同规模 LLM 模型在学习知识点方面的差异
本节归纳不同大小规模 LLM 模型,在学习知识点方面差异的相关研究结论。
在文献「Finding Neurons in a Haystack: Case Studies with Sparse Probing」中提到了一个有趣的现象:对于同一个「单语义神经元」 编码的抽象特征「是否法语」(用来判断输入内容是否法语),如果我们把它屏蔽掉,可以看下对 GPT 的 Next Token Prediction 任务 Loss 的影响,如果屏蔽掉后 Loss 增加得越多,说明这个特征对模型来说越重要。有趣的是,屏蔽掉后,小模型 Loss 增加很多,但是对于大模型,则影响甚小。这说明这个特征对小模型很重要,但对大模型就没有那么重要。
这个现象很奇怪,论文给了解释:随着模型规模增大,会出现特征分裂(Split)现象。就是说小模型表征某个知识点,只有一个粗粒度的神经元独立响应,但是大模型会对这个知识点进行细化,根据不同的 Context 输入,分裂出表征不同上文下这个知识点对应的多个神经元,对应神经元只有在特定上文出现才会被激活。换句话说,同样是表征某个知识点,相对小模型,大模型在表征知识点方面会做得更细致。
举个例子,比如小模型只有一个神经元对输入中的 「return」 作出响应,但是大模型可能会分化出对不同编程语言的「return」作出响应。例如有一个对 python 语言的「return」响应的神经元,也有一个对 C++ 语言的「return」作出响应的神经元,诸如此类。所以,当小模型屏蔽掉某个特征,影响就很大,因为输入中如果出现这个知识点完全无法捕获,则对 loss 影响很大;但是对于大模型,屏蔽掉这个特征影响就不大,因为它还分裂出了对不同 Context 响应的神经元,这个神经元尽管没用了,但是有其它神经元来表征各种不同的情况。这个研究结论我认为是很重要的,它表明了大小模型在知识表征能力上的重大差异。
另外,还有研究结论表明:随着模型规模越来越大,会探测到更多比例的 “单语义神经元”。我觉得这说明了一个可能性,就是越大的 LLM 模型,会对更多的抽象知识进行独立神经元编码。
另外一个文献「The Quantization Model of Neural Scaling」,设想按照对 NTP 的 Loss 影响程度,我们可以对知识单元(文中称为 “量子单元”)由重要到不重要进行排序,形成 Q 队列。LLM 模型会优先学习 Q 队列中排在前面的量子单元,而对于大模型来说,则可以比小模型多学习 Q 队列中重要性没那么高的排在后面的量子单元。核心思想我归纳下,就是大模型可以比小模型学到更多不那么重要的特征。
以上几点,是从目前文献里能得到的,关于模型规模在表征能力方面差异的结论。
冰山之下:回路竞争猜想(Circuit Competition Conjecture, CCC)
如果我们把目前已知拼图碎片所体现出的点滴证据拼合起来,我感觉隐藏在冰山之下的原理部分,就若隐若现展现在我们面前。本部分在已知研究结论基础上作出一些推论,给出「回路竞争猜想(CC 猜想)」,作为 GPT 通过 Next Token Prediction 构建智能的内在作用机制说明。我要求自己做到关键之处都能找到参考依据,如果有推论给出推论过程,以使得这个猜想建立在现有研究结论之上,但总体来说是个未经验证的猜想,所以还请谨慎参考。
回路竞争:任务回路的突围
首先,我们把已知研究结论汇总一下,形成一个整体印象。在本文里,我把某个特征或知识统一称为知识点,因为单使用传统的 “特征” 很难涵盖某些内容,具体知识点包括语言知识点(n-gram、词法、句法、语义等)、context 知识点(比如 “输入为法语” 这种)、世界知识相关知识点(实体 - 属性、常识、事件等)以及简单函数回路知识点这几种,它们是细粒度的,我们将其统称为知识点。
综合上述内容可看出,GPT 模型通过 NTP 任务从数据中学习知识,在模型内部建立起两类知识体系:层级化的知识结构以及各种任务回路(参考上图),任务回路是在层级知识体系结构上建立起来的,是用于解决某个任务的、由知识点相互激发形成的固定通路。
假设已经训练好 GPT 模型,我们可以清晰地探测到它们的存在。首先,这些知识点有不同的抽象层级。越是存储在 Transformer 底层的知识点,越具体、可复用程度越高、通用性越强、数量越多,越容易通过 superposition 及 Polysemantic 这种稠密编码方式来进行编码;而越是存储在 Transformer 高层的知识点,越抽象、复用程度低、任务专业性越强,越倾向用 「单语义神经元」 方式单独编码(上图 Transformer 中白色节点代表具体知识点,红色节点代表抽象知识点)。
其次,某些知识点之间形成了由底向上的激发关系,激发路径是由下层不那么抽象的知识点逐层激发上层越来越抽象的知识点。比如某个编码在 Transformer 第 L 层的知识点,它可由第 1 到第 L-1 层的其它被激发的知识点来激活。被激活的神经元,除了收集、综合、抽象传上来的信息,可能也通过自己的 FFN 结构添加新知识(比如进行世界知识的提取),或做数学逻辑计算(比如比较数值大小)。训练好的 GPT 模型内部包含海量这种「局部」知识点构成的「微激发结构」,这应该是形成 GPT 智能的基础单元,从而整个 GPT 结构构造出对世界知识进行层级编码的世界知识结构。而根据 NTP 目标来训练模型,其实就是在由简单到复杂、由通用到专用、由具体到抽象、由下层到上层,在训练过程中逐渐建立起越来越复杂层级知识结构的过程,包括知识点以及知识点之间的激发关系产生的微结构,之所以会产生这些,是因为它们的存在,对于 NTP 精准预测之后的 Token 有帮助,也就是对于 GPT 模型在 NTP 时降低训练 loss 有用。
我们在此基础上可以重新看待任务回路的形成。任务回路应该是 GPT 为了更精准预测某种特殊类型数据的 Next Token,从 Transformer 的输入层开始,逐层关联相关的 “激发微结构”,从而形成了一个由低向上逐层激发,并最终关联到输出位置,以决定输出 Token 概率的完整通路结构(可参考上图红线部分勾勒出的某个任务通路)。学会了这种任务回路,如果 GPT 后续再见到此类数据,则 Next Token 预测精准性增加,体现为 NTP 任务 Loss 的降低。比如如果训练数据里大量出现 「13+24=37」这种加减乘除的例子,大概率 GPT 会学会一个用于简单数学计算的任务回路,以此增加等号后数字的 Next Token 预测精准性。
另外,输入的最后一个 Token 位置对应的各层 Transformer Block,可能有些特殊含义和作用,它可能通过 Attention 机制,起到了对之前全体输入内容的信息汇总工作。如果输入的 Prompt 是完成某项具体任务的,那么 Last Token 对应的各层 Transformer Block,大致把任务回路信息逐层汇总到了最后位置,以便于在 Last Token 的最高层进行正确的 Next Token 预测。相当于 Last Token 从 Transformer 庞大的知识体系中根据输入 Prompt 勾勒出了一个 Prompt 子世界。
上述内容宏观上综合了目前研究的结论,呈现出目前我们对 GPT 运行机制的了解程度。后面内容开始加入我个人的一些推论。
首先的问题是:在训练 GPT 的过程中,如此多的知识点,它学习这些知识点一定有个先后顺序关系,那么,它会遵循怎样的优先顺序来学习这些知识点呢?尽管目前有些研究结论是说重要的知识点先被学到,但是这里的重要性往往指的是对降低 GPT 模型 NTP 任务的 loss 角度来说的,降低 loss 越多,则这个知识点越重要。从降低 loss 角度讲肯定是对的,但还是太抽象。
我个人认为,在训练过程中,GPT 模型会优先学习具备以下特性的知识点:高频知识点、通用知识点(被复用概率高的则通用)、具体而非抽象的知识点。应该遵循这三个原则。为什么会这样呢?因为根据 Next Token Prediction 的原则,越是高频出现的知识点,如果 GPT 本次预测错了,则会做反向传播修正模型参数,以保证下次再见到类似情况会预测对,高频知识点因为出现次数多,所以获得反向传播修正模型参数的次数多,也就更容易建立起对应的知识点,及其和其它知识点的连接通路。高频知识点如果学会了,在后面的训练数据会很容易碰到这个知识点,所以对降低 NTP 任务的 loss 贡献就大。其它两类知识点也是类似的道理,通用知识点因为通用性强,所以在后续预测中被使用的机会多,所以获得反向传播修正模型参数的次数也多,也容易被模型学会,具体而非抽象的知识点也因为在训练数据中见到的次数多,所以容易被建立起来。诸如此类。反过来,低频的、领域或任务专用的、抽象的知识点,就会越晚被 GPT 模型学会。或者说,如果想学会这类知识点,则需要让模型见到更大量的数据,以增加这些知识点在学习过程中必要的反向传播修正参数的机会。
接下来,我们开始正式讨论 “回路竞争” 猜想。在引出这个猜想前,我先做一个假设:
假设:为了提高 GPT 模型的参数利用率,NTP 任务会鼓励子回路的复用。
所谓「子回路」,指的是完成简单运算的回路,这种回路涉及到的知识点较少,知识点之间激发的结构比较简单。GPT 模型大概会优先产生很多完成简单任务或计算的子回路,而复杂回路应该是由很多子回路进一步连接形成的。为了增加模型参数的使用效率,GPT 模型应该会鼓励这些子回路在不同复杂回路中尽可能被复用,这样使用同样的参数量,就能完成更多不同类型的任务。比如上文讲过的「Induction Head」 回路,就是一个典型的子回路,由上文我们可知,在更为复杂的「Indirect Object Identification」知识回路中,「Induction Head」回路是其中一个构成部分,子回路和复杂回路的关系大概类此例。
对于两个解决不同任务的复杂回路,由于子回路复用的原因,两者之间存在一些相同子回路,我们可以把这些相同的子回路称为「重叠回路」 。很容易推断,如果两个任务越接近,则其对应的重叠回路就越多。而且重叠回路存在 Transformer 底层的情况应该比较多,因为底层回路涉及到的知识点更具体、数量更多、可复用性更强。上图是对「子回路复用与重叠回路」 给出的示意图,途中红色线(红色任务)和蓝色线(蓝色任务)代表两个不同复杂任务回路,而在底层,则有一些子回路被两者复用。
所谓 「回路竞争」 猜想,我们用上图例子来说明。假设我们输入一个 Prompt,这个 Prompt 本来是要完成红色任务的,当输入 Prompt 后,在信息从底层向上层逐层激发正确通路的时候,越是底层的知识点和子回路,复用性越强,所以容易产生 「过剩激发现象」,就是除了激发出我们希望的红色任务外,也会激发很多导向其它任务回路的知识点和子回路。这种情况在底层较为明显,随着信息逐步往上传递,红色回路会逐渐得到进一步的强化,非正确回路被激发的上层知识点和子回路越来越少,最终勾勒出了正确的红色任务回路的路径。这就是典型的「回路竞争」 猜想的思路。
如果从低向上激发过程中,我们希望的正确回路被激发,可以认为回路竞争胜利,则模型输出正确答案,而如果错误任务回路被激发,可以认为回路竞争失败,则模型输出错误答案。可以推断的是,越是复杂的任务,因为其牵涉到的知识点和子回路越多,相互之间的关系越复杂,所以越容易和更多其它相似任务回路产生重叠,也就越容易在回路竞争中失败。
我们可以在「回路竞争」 框架下去思考很多 LLM 模型的问题和现象,并给出解释,本文稍后内容会用这个猜想解释一些目前 LLM 模型未知的一些现象。
模型规模的差异:更大的模型,更清晰的世界
根据目前已有研究结论,如果思考大 LLM 模型和小 LLM 模型的差异,我们大致可做如下推断:小 LLM 模型建立了一个粗粒度的、模糊的世界图像,而随着模型规模越来越大,大 LLM 模型建立起能表征更多细节信息的清晰度越来越高的世界图像。
由上文所述可知,LLM 模型的表征能力主要体现在两个方面:从具体到抽象的层级知识结构,以及可以解决很多问题的任务回路。我们从这两方面分头看下大小模型的差异。
层级知识结构的差异:很多研究结论证明了随着模型规模增大,模型稀疏程度越来越高。Polysemantic 神经元对特征编码是稠密的,用于编码大量相对具体的特征,而 Monosemantic 神经元属于单神经元,表征是稀疏的,这说明随着模型规模越来越大,单语义神经元数量占比增加。单语义神经元编码重要的及抽象的知识,既然单语义神经元数量增加了,说明模型学到的知识点肯定是增加了,新增知识点无非两个来源可能:第一种来源是这个知识原先小模型没有学到,现在大模型学会了,从无到有地学会了新知识。这类新知识应该可再细分为两类:一类应该是世界知识(常识和事件),小模型无法编码在数据中出现频次比较低的世界知识,大模型通过单语义神经元对此进行了编码(大模型相比小模型能学到更多数据中的低频知识,这一点有很多工作可验证,且目前看世界知识应该是单神经元编码的),这类知识代表大模型学会了更多有关世界的细节信息;一类应是模型从数据中新归纳的更抽象的知识(比如 「质数」这种),这类知识代表大模型学会了越来越复杂的抽象知识或能力。
新增知识点的另外一种来源,应该是由前文讲过的抽象特征进行特征分裂产生的。就是说原来小模型只有一个粗粒度的抽象知识点,现在模型大了,衍生出一些新的细粒度的表征这类知识的知识点,针对不同的上文 Context 可能会学到对应的一个知识点。举个例子,目前发现 LLM 中有针对连续大写字符产生响应的单语义神经元,比如输入中有「ABCD」,这个神经元就会被激活。小 LLM 模型可能只有唯一神经元对此进行响应,如果把这个神经元灭活,则 GPT 在做 NTP 预测下一个 Token 的时候 Loss 就会激增,说明缺了这个特征对于正确预测后续内容中连续大写字符都产生了错误;但是,大 LLM 模型除了这个神经元,还分裂出细粒度表征神经元,比如针对公司名字缩写「IBM」这类可能有一个神经元专门负责响应,针对医药名称缩写,比如「GS (葡萄糖注射液)」 ,有另外一个神经元负责响应。诸如此类。这种大模型的抽象特征分裂,说明了一点:即使是抽象知识,大模型相比小模型也有更细致的抽象特征表达能力。
可以看出,大模型相对小模型,从对低频世界知识的编码角度,可以认为学到了关于世界更多的细节信息,而从新增抽象知识以及抽象特征分裂角度,说明大 LLM 模型具备更难的以及更细粒度的抽象知识表达能力。
任务回路的差异:任务回路是建立在形成层级结构的知识点之间由底向上激发并联通的回路。由上面对大小模型在层级知识结构差异的分析,可以作出合理推断:大 LLM 模型大概率能够建立在路径上涉及更多细粒度抽象知识点以及路径更复杂的回路。这大概是大模型可以解决复杂问题的主要原因。
综合两者,我们可以认为小模型是对世界的粗粒度建模,而大模型是对世界的细粒度高清建模。而且 Scaling law 说明了:随着增加更多的数据、更大的模型规模,LLM 模型可以对世界进行清晰度更高的刻画。从这个角度看,说 LLM 模型参数是对世界的有损压缩,其实并没有什么大问题。
无尽的前沿:使用「回路竞争」 解释未知现象
本部分我们在「回路竞争」框架下,给出目前 LLM 模型一些现象的解释。
「回路竞争」视角下的模型涌现能力
模型涌现能力,指的是对于某些任务(大多数是 In Context Learning 或 COT 相关的任务),小模型几乎完全没有解决能力,只有当模型规模达到某个临界点,才能很好地完成这个任务。尽管目前有研究(可参考 Are Emergent Abilities of Large Language Models a Mirage?)表明:模型所谓的 「涌现能力」,是度量标准选择不合理造成的,其实并不存在涌现,只是任务选择的度量标准不够精准而已。我个人认为,这个说法应该确实能够解释一部分目前体现出「涌现能力」的任务,但感觉这可能不是故事的全部,有些任务可能很难仅仅通过这个原因来解释,所以对于大语言模型为何会出现涌现能力,还是应该做更进一步的研究。
如果在「回路竞争」框架下看这个问题,那么小模型之所以做不了某个任务,无非有两种可能:一种可能是对小模型来说,这个任务对应的激发回路没有建立起来,而大语言模型建立起来了;另一种可能是小模型这个任务对应的回路也建立起来了,但是在回路竞争中非常容易失败,导致看似做不了这个任务。
我更倾向认为是第一种可能造成我们目前看到的模型「涌现能力」。前文有述,小模型大概建立了一个粗分辨率的模糊的世界镜像,而大模型则建立起一个高分辨率清晰度更高的世界镜像。小模型应该在建立某些任务的完整激发回路存在困难,这些困难可能体现在几个方面:比如对形成回路很关键的某个或者某些,比较抽象的概念知识点,小模型因为抽象能力比较弱,没有建立起这个知识点(类似本文开头举的「质数」 概念的例子);再比如,一般能体现涌现能力的任务都比较复杂,小模型在建立复杂通路方面能力不足。诸如此类。而当模型规模变大,则在抽象概念以及复杂回路构建方面能力得到增强,当建立起完整的解决任务的激活通路时,就看似突然能够解决这个问题,体现出模型的涌现能力。不过,很可能对于这种复杂回路,在激活竞争方面能力也不足够强,所以当再辅助以 Few shot 几个任务相关例子,以此来促进任务对应的回路在通路竞争中胜出时,才能看到比较好的解决效果。
「回路竞争」视角下的 In Context Learning 及 Chain of Thought (COT)
从回路竞争的视角看 ICL,这里可能涉及到两种回路:任务回路以及 Attention 回路,两者竞争或合作,来决定 ICL 任务的表现,COT 是一种特殊的 ICL,机制应类似。
我们先看下任务回路的作用,其实好理解。In Context Learning 会先给 LLM 模型几个任务相关的例子 ,之后输入 ,期待模型可以输出 对应的正确结果 输入中给出的 个例子的作用,在于激活了 LLM 模型对应的在预训练阶段学到的任务回路,然后再输入 ,就容易沿着这条被激活的通路走,形成正确输出 。COT 作用应该类似,也就是说,如果你不用 COT,可能 LLM 激活的是某个简单结构的任务回路,而如果用了 COT 例子,则容易激活了有很多细节表征的复杂推理回路,导致之后的输入也沿着这个子通路走,于是形成详细推理步骤。由此可见,在 ICL 场景下,任务回路总是对 产生正确答案,起到积极作用。
再来看 Attention 回路,不过这里也是设想(In-context Learning and Induction Heads 这个工作的目的是通过 Induction Head 来解释 ICL 现象,不过我觉得 Induction Head 机制过于简单,可能需要再稍微强化下)。假设存在一个加强版本的 Induction Head 回路,比如我们可以称之为 「Enhanced Induction Head,EIH」,它的运行机制很可能是这样的(如上图所示):EIH 回路会依据当前输入 与 ICL 各个例子中的 的语义相似性,去拷贝对应的 , 与 相似性越高,越大概率拷贝对应的 。这个过程有点类似由 EIH 回路构成的 KNN 模型,只需根据输入例子之间的相似性和对应标签就可以投票得到正确答案,并不需要模型通过修改参数来学会 到 之间的映射函数。算是一种有条件的 Induction Head 拷贝操作,条件触发因素是输入的例子 之间的 Attention 相似性。可以看出,影响 输出哪个标签,应该主要取决于 ICL 中这几种类型的例子:和 越相似的例子影响越大;ICL 中出现次数越多的 影响越大;以及距离 越近的例子影响越大 (Position embedding 编码的位置信息及 NLP 中大量存在的局部相关性大概会导致此结果)。
若真存在 EIH 回路,根据上述运行机制,我们可以推断出在以下三种情况下,Attention 回路对正确预测结果 的影响:
情况一:如果 ICL 中 到 输入例子对应的标签 是 Ground Truth Label,很明显,EIH 回路是正向积极影响作用,类似如上所述 KNN 机制依据 到 例子对应的 来做判断;
情况二:如果 ICL 中例子的标签不是 Ground Truth Label,而是在 label 空间内随机选择赋予。很明显,EIH 回路对于 得到正确答案应该起到负面作用,因为 会从前面 到 的例子中,寻找跟它比较像的内容去拷贝对应标签,但是这个标签是随机赋予的,所以大概率是错的,导致这种情况 EIH 应该是负面效果。
情况三:如果 ICL 中例子的标签是 label 空间之外的另外一套标签,但是和 存在对应的映射关系。这种情况下,EIH 回路应该是正面影响作用,这跟第一种情况道理类似,KNN 机制可以学习这种映射关系,因此得到正确的 ,无非现在用的是 而不是 而已。当然,若你仍然是看 标签下的表现,那 ICL 肯定是负面作用。
如果联合考虑 LLM 的内在任务回路,以及 EIH 这种纯 Attention 回路,两者有时协同发力方向相同,有时则竞争发力方向相反。比如上述三种情形中,第一种情况两者是协同作用,都起到促进正确答案的作用,第二和第三种情况则是竞争作用,任务回路对给出正确答案起到促进作用,EIH 回路则起到负向作用。
按照这种思路,大致可以解释目前我们看到的,在 ICL 研究中出现的很多貌似不可解释的各种现象。这里举个例子,比如目前研究表明,假设 ICL 的标签空间包含两个标签: 和 ,如果我们把 ICL 里例子的标签反转,就是原来标签是 的换成 ,原来是 的换成 ,则 ICL 任务效果会变差 (可参考:Overthinking the Truth: Understanding how Language Models process False Demonstrations)。假设 对应的正确标签是 ,从任务回路和 EIH 回路的角度来看,任务回路会倾向于给出 标签,EIH 回路在这种情况下,其实对应上面说的情况三,标签反转是种特殊的另换标签,因为 和 的对应关系仍然存在。所以此时,EIH 回路看似会学习 到 的映射关系,会倾向于给出 标签。此时两者一个正向,一个负向,起到竞争关系,所以会降低模型效果。
其它很多现象其实大都可以在这个框架里得到解释,文章长度原因就不展开了,感兴趣的同学可以在这个思考框架下自己推导一下。
「回路竞争」视角下的领域任务 Fine-Tuning
我们可以在「回路竞争」视角下,重新审视利用领域数据对通用模型进行 Fine-tuning 操作,可能带来的影响。我们现在已知的事实是,利用领域数据 Fine-tuning,会造成基础模型的 「灾难遗忘」问题。就是说,因为后续 Fine-tuning 修正模型参数,导致模型遗忘了之前学会的某些知识。而且我的判断是:目前看,在基础模型之上,任何形式的 Tuning 操作,都会造成基础模型某些能力的损失,这也包括 ChatGPT 为了听懂命令及遵循人类价值观所做的 Instruct tuning,也应该一样会损害基础模型的某些能力,只是目前我们说不清损害的是哪些能力而已。这是目前技术条件下,需要对模型做 Tuning 所必须付出的代价。
但是为何对基础模型进行 Fine-tuning 会造成能力损害呢?其内在原理如何?我们可以在「回路竞争」视角下,分析 Fine-tuning 带来的影响。我猜大致有两种影响,这两种影响也许是某种单独起作用,也许两者共同发生作用。第一种影响是:Fine-tuning 操作通过大量领域数据,强化了大语言模型解决这个任务的响应回路。这对于模型底层知识点影响估计不大,因为底层更多的是通用性比较强的特征,这个任务也需要,它修正的应该更多是上层的抽象知识节点,以及底层知识点到上层抽象知识点建立激发连接的通路。另外一种可能的影响:很可能通过 Fine-tuning 操作,在模型内部建立起了 Shortcut 捷径,导致输入信息后,信息传输直接走了捷径,而绕过了很多本该要走的通路。比如文本分类任务,这种任务内部逻辑应该很简单,估计就是建立起底层具体领域词汇知识点,到上层抽象类别概念知识点的激发通路,所以很可能直接从最底层的知识点,到高层的类别概念知识点,建立起了一个很短的 Shortcut 捷径,其它的复杂回路都被这个捷径给 pass 掉了,倒不一定是上层抽象知识点被改写了,很可能是通过走捷径被绕过去了。
不论是上述哪个原因,造成的后果是:对于新的输入,尽管可能是要做其它任务的,就很容易激发这个被特殊强化过的回路。也就是说,这个被强化过的回路容易在不该竞争胜利的时候也容易竞争胜利,导致其它任务效果变差。
「回路竞争」视角下的 Instruct Tuning
Instruct Tuning 本质上是为了实现和人类行为对齐而做的一种特殊的 Fine-tuning。GPT 4 的技术报告也指出了:Instruct tuning 并不会增强基础模型的知识和能力,相反可能存在某种能力损害作用。高质量的 Instruct Tuning 肯定是很重要的,但它只是让大语言模型 「看着好像」效果更好了而已,这只是使用者主观感受上的,而非模型基础能力层面的更好。
那么,如果在「回路竞争」视角下,如何理解 Instruct Tuning 是在干什么事情呢?我觉得可以这么理解:Instruct Tuning 的作用,建立起了一个特殊的激活回路,就是说从输入命令自身形成的激活回路,建立起和对应任务回路的连接。根据 Instruct 训练好模型后,当输入命令时,有利于激活对应的任务回路,所以看似大语言模型就理解了命令的含义。这有点类似于巴浦洛夫生物实验里的「条件反射作用」的运行机制,等于在用户命令和对应任务通路建立起了一个条件反射通路。
利用「回路竞争」 猜想,除了可以用来对上述目前未知内部运行机制的现象,给出看着还算合理的解释外,也可以用来解释一些其它现象。比如大模型经常出现的「一本正经的胡说八道」问题,可以认为是在回路竞争过程中,正确回路竞争失败,或者正确回路和某个错误回路被激发的强度差不多,导致给出混合两者的结果,就是看着合理但事实错误的答案。诸如此类吧。
世界的参数倒影:从现实世界到可能世界
物理世界自有支配其运行的 Hidden Rules,概念上我们可以理解存在一个简洁的 Hidden world,由它产生了五彩缤纷的表象世界,若对世界诸现象归类,大致可有自然现象、社会现象、心理现象几大类。人是构成物理世界的一分子,通过观察世界表象、试图理解世界运行规律,以更好维持种群及个体在这个世界里生存。
从种群角度而言,千万年进化过程中的优胜劣汰即人类模型预训练过程,其优化目标为 「Next Person’s survival Prediction」,其 Loss 越小,种群中生存个体数量越多。基因编码即模型参数,基因编码表征出的个体,适应环境者生存,不适应环境者淘汰。生存者之所以可生存,是因为基因编码表征出的某些特征适配生存环境,于是这些匹配生存环境的基因编码在种群中得以加强,人类预训练模型完成一次模型参数更新。外部物理世界生存环境的不断变化驱动着种群基因编码的变化,以此推动种群在变动环境下的生存。而我们生来即得到的基因编码预训练模型,则记录了千万年来学到的各种生存策略,形成了大脑中无意识快速反应的系统 1,它代表了种群的集体记忆。
从个体角度而言,除了通过基因编码预训练模型获得天生的生存策略外,为了维护个体自身在特定环境下的生存,在整个生命历程中会进行「继续预训练 (Continual Pre-training)」。其优化目标为 「Next Action Prediction」,追求在环境中输出正确行为以维持生存。采取类似 LoRA 的模型参数更新策略:对于个体而言,天生的基因编码是无力改动的基础模型,决定了我们的很多行为模式,但大脑中有一部分可修正区域,可以通过修正这部分区域里神经元之间的联系方式,来学会新的知识和技能。如果输出行为对继续生存造成负面影响,则调整模型参数以将来更好应对生存环境,这部分脑区功能形成了有意识慢决策的系统 2,它代表了个人的个性化生存经验。「天生基因编码 + 个人生存微调」塑造出了形形色色的不同个体行为,有共性有个性,共性来自于种群集体记忆,个性来自于独有的生存经验。
语言最初作为人类个体间的沟通协作工具,有利于促进种群存续。随着技术发展,逐步将之记录在龟背、竹简、纸张、电子信号形成文字。每个人都可看成独立的「编码 - ****」,个体对物理世界观察与感受,并编码在大脑中形成知识和思维,解码输出则形成文字,记录的是个人视角对世界的感受和思考,有主观感受也有客观记录。人群则形成分布式的 「编码 - ****」,解码输出产生了大量包含各种世界运转的客观事实以及主观冲突观念的文字记录。所以,文字只是表象,内在记录的是从人类角度形成的对物理世界的认知与对这个世界的主观感受(物理知识、社会知识、事件记录、个体感受、个体想象等各种类型),其背后隐藏着人类视角下的世界模型。而 GPT 通过 Next Token Prediction 任务试图正确复现人类产生的文字,本质上是对隐藏在文字表象之后的世界模型进行解码复原,并存储在 GPT 的模型参数里,形成了物理世界的参数倒影。
如果我们进行更深入思考,有可能会发现;GPT 从大量文字中,不仅仅学会了如何生成符合我们现实世界事实的内容,可能还学会成为一个 「可能世界」 生成器。它从文字模拟我们的现实世界开始,并进而泛化抽象,尽管遵循我们这个世界的物理法则,但是它不仅可以产生符合我们感知到的世界中真实的知识与内容,也可以产生其它符合物理法则及人类理解逻辑的可能世界。也许你不能因它产生的内容不符合现实世界,就说它是错的,只能说它有能力把符合逻辑的可能世界全部展示给你,必然有很多情况未必吻合现实,毕竟现有世界只是可能世界的一种已经发生的现实选择而已,而它有能力给你呈现各种合理的可能性。
世界尽头与冷酷仙境:「数字缸中之脑」思想实验
「一个疯狂科学家进行了一项手术,他将一个人的大脑切下来并将其放入充满营养液的容器中。营养液中的养分足以维持大脑的正常运作,而大脑的神经末梢连接到电线上,电线的另一端则连接到一台计算机。计算机模拟真实世界的参数,并通过电线向大脑传递信息,让大脑感到一切都完全正常,好像周围认识的人、熟悉的事情还照常进行,没有任何异样。
有一天,营养液中的大脑突发奇想,想到了一个很有趣的思想实验,在他/她的现实感知里,此刻正在上班的地铁上或自己办公工位前,耳边传来别人轻微的脚步声,他/她掏出手机把想法写在备忘录里,内容是这样的:
「OpenAI 推出了一个新的 LLM 模型,叫 GPT 4,功能很强大,这很可能预示着 AGI 时代的到来,我身边每个人都在热烈地讨论它。今天我读到了一篇分析它可能工作机制的文章,题目是《世界的参数倒影:为何 GPT 通过 Next Token Prediction 可以产生智能》,读完很有启发,引起了我的思考。我们可以设想一下:如果将来 AGI 能力足够强大,它能通过阅读我书写的内容、我的照片和视频,甚至可以扫描复制我的大脑反应模式,重构一个和我在物理世界一摸一样的数字大脑。那么,另一个我自己就会生活在数字空间中,而 AGI 接管我的数字大脑的各种感知信号,模拟我的工作和生活场景,让大脑感到一切都完全正常,好像周围认识的人、熟悉的事情还照常进行,没有任何异样。那么,这个数字大脑里的我,或者现实生活里的我,能区分现在是生活在数字空间,还是物理空间吗?我把这个思想实验称为:数字缸中之脑。这个思想实验,是不是很有意思?」
我把这个思想实验称为:数字缸中之脑。这个思想实验,是不是很有意思?」
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。