OpenAI肯定是相信两者间存在等价性的,目前看,这可能是推动OpenAI大模型发展方向的一个核心理念。OpenAI首席科学家Ilya Sutskever在今年早期的一些公开访谈初步透漏了这个思路。而后续OpenAI负责大模型团队的 Jack Rae 在 Stanford MLSys 研讨会上做了以“Compression for AGI”为主题的报告,则是从理论层面,概念性地论证了这一理念。
上文未讲解算术编码的运行机制,此处以简单例子做简要说明。如上图所示,假设单词词典 V 包含4个单词,我们要压缩编码的原始数据 ,此时GPT运行Next Token Prediction后,词典 V 中单词对应的概率分布 在上图图左列出,也就是说,此刻的GPT预测的Next Token,生成概率最大的单词是”too”,而不是Ground Truth “MaskNet”。此时,已知 和它对应的 ,我们使用算术编码来对数据进行压缩。首先,我们可以根据词典中各个单词的生成概率,把0到1的区间按照每个单词的概率分值进行切割,单词生成概率数值越大,占据区间越长。于是,就可以得到每个单词覆盖区间的下界和上界,比如对于要编码的单词“MaskNet”,它的下界是0.4,因为自身生成概率为0.2,所以上界是0.6。为了使得二进制编码后的长度尽可能短,算术编码在“MaskNet”单词覆盖的0.4到0.6区间寻找对应二进制最短的十进制小数,很明显在这个区间里,十进制数字0.5是二进制最短的数字,于是选择0.5作为编码数字,进行数制转换后得到二进制0.1,这个数字就是单词“MaskNet”对应的二进制算术编码,小帅只需要把小数点后的二进制数字1发送给小美即可。接着,介绍小美接收到二进制数字1之后的解码过程。如上文所述,小美利用自己的GPT,也会得到一个相同的单词分布概率 ,按照算术编码原则,用这个分布概率切割0到1的数值区间,会得到和小帅一样的一个切割图。小美将二进制0.1进行进制转换,得到十进制数字0.5,然后查看0.5落在切割图哪个单词的上下界范围内,会定位到单词“MaskNet”,于是解码出0.1代表的对应单词 。算术编码的思想是很精妙的,它对输入序列动态编码,能够以小数来对整个输入进行二进制编码,编码效率接近于香农提出的熵极限。不过,在我们描述的场景下,因为每个 对应的 在GPT训练过程中总是发生变化,所以某个分布 只需要压缩或者解码一个Token,其思路看起来就很简单,当面向较长的输入序列进行算术编码,其方法可以参考:什么是算术编码[2] 。
压缩即智能
从上述讲解可看出,如果GPT模型生成Ground Truth 的生成概率越高,则其在算术编码分割区间中占据的长度就越长,就越容易找到更短的算术编码,这意味着模型压缩率越高。也就是说,如果GPT模型智能程度越高,NTP预测得越准确,则其压缩效率就越高。所以,我们可以根据模型的压缩效率来评估模型的智能程度,模型压缩效率越高,则模型智能程度越高,这是目前OpenAI照此思路推进大模型研发方向的一个核心理念。我们可以考虑两种极端情况:一种情况是模型具备超强智能,对于Next Token Prediction要预测的每一个Ground Truth ,生成概率总是为1。我们假设当小帅传输给小美一部分数据 后,模型的智能程度不断积累并达到这个程度,这意味着对于没有传送的剩余数据 来说,小帅后面无需传输任何信息。因为小美的GPT已经能够完全靠自己正确预测后续的每一个Token,此时GPT模型由于具备超强智能而拥有了极限数据压缩能力,也就是根据输入上文,未来发生什么它都知道;另外一种极端情况,是GPT在训练过程中未学到任何智能,则其在做Next Token Prediction时,纯靠猜。假设词表 |V| 大小为 N,则每一个Ground Truth 的生成概率永为 1/N ,此时GPT不具备任何数据压缩能力,需要传输的数据量和原始数据 D 信息量相等。这是两种极端情况。大多数情况下,LLM模型的智能,或者说压缩能力,应该介于两者之间,而我们可以根据模型压缩能力,来评估模型的智能程度。如果做些数学推导,可知这种情形下,对于数据 对应的 ,算术编码所需编码的bit数,也即码长,应为:,您看到这个公式可以思考下,有没有觉得它和谁长得比较像呢?其实,这就是GPT在训练的时候, 这个Token对应的交叉熵损失。也就是说,如果从数据压缩的角度,每个Token的编码长度,其实就是LLM预训练时,这个Token对应的交叉熵损失,两者是等价的。是不是很有意思?所以,数据无损压缩是看待LLM模型训练的另外一个比较新颖的视角。我们可以进一步推导一下,对于数据集合 D ,经过LLM模型压缩传输,小帅传给小美的总数据量是多少?具体计算公式可参考上图。由图可看出,传输信息总量由两部分构成:一部分是LLM模型代码描述,包括代码本身、初始化方法以及随机种子等信息;另外一部分的求和公式如果展开,如上所述,每个 对应的压缩编码bit数,就是这个Token对应的交叉熵损失,所以,这部分其实就是GPT利用数据 D 进行预训练的时候,所有Token的损失之和。两个部分相加就是数据传输总量。那么,不同的LLM模型,是否具备不同的数据压缩能力呢?答案是显然的。上图展示了不同大小LLaMA模型(从最小的7B到最大的65B)对应的数据压缩能力:对于相同的训练数据总量(比如横坐标的1000B Tokens节点),每个模型Loss曲线覆盖的面积总数,就是这个模型对应的数据压缩能力,Loss曲线覆盖的面积越小,说明模型压缩能力越强。有了前面的讲解铺垫,我相信这很好理解,我们可以极端地假设模型训练时每个Batch只包含一个Token,那么其所需的编码bit数,就是这个Token对应的loss数值,我们对模型Loss面积进行积分,就能得到所有Token的总Loss,而这等价于压缩这些Token所需要的总的压缩后编码长度。从上图可以看出,规模越大的LLaMA模型,其对应的Loss面积越小,意味着这个模型压缩率越高,压缩能力越强,而这进一步代表模型的智能程度越高。如果粗估的话,可以得出目前LLaMA模型的数据压缩率在14倍左右,而这是超出专门的数据压缩竞赛Hutter Prize目前最佳的压缩率的,目前这个最佳压缩率是8.7倍。这说明什么呢?如果我们假设当前主流的文本压缩算法,其压缩依据主要来自于词频以及重复出现模式这种表面因素的话,那这多出的压缩率,很可能代表了LLM语言模型对于文本深层理解,来自于对AGI的智能编码。
我们先来看一下,假设LLM模型训练好了,在使用时输入Prompt,GPT模型是如何把知识提取出来的。“Dissecting Recall of Factual Associations in Auto-Regressive Language Models”这篇文章对此做了细致的研究。如图所示,假设输入的Prompt是:“_Beat music is owned by_ ”,GPT可以通过NTP返回正确答案:_Apple_。这个例子里,“Beat music”是个实体,“owned by Apple”是这个实体对应的某个属性。经过研究,发现GPT在提取这条知识的时候,经历了明显的三阶段过程:首先,单词“music”是描述这个实体最后的、也是最关键的词汇,它的信息在顺着Transformer block往上走的过程中,先通过Attention把之前的修饰语“beats”相关信息集成到“music”对应位置。之后,随着Transformer层数越来越高,通过每个Transformer Block的FFN层,不断往“music”对应的Embedding里增加信息,所以随着信息往上层流动,“music”这个单词对应层数的Embedding,能够触发越来越多的与“beats music”相关“属性”词汇。这是第一个步骤,整个过程总体发生在Transformer的低层。第二步,GPT模型在“by”单词这个位置,也就是NTP要产生输出token的最后一个位置,通过Attention把单词“own”的信息集成到最后位置。这里需要注意一下,最后一个单词对应的Transformer位置是比较关键的,因为在它的最上层会给出Next Token输出。在推理过程中,GPT会把输入上文中的重要信息通过Attention逐步集成到这个位置上来。这个操作也发生在Transformer的低层。第三步,在“by”单词位置,也就是最后一个位置的Transformer高层,它在低层已经集成了单词“own”的信息,这个信息在高层,通过Attention把“beats music”对应的属性“apple”提取出来。具体提取动作是通过某个Attention Head来做到的,而且这篇文章证明了Attention Head里会编码<实体-属性>信息,具体例子可以参照下图,这点对我们来说应该是个新知识(过去一般认为Attention主要是用来进行信息比较和搬运的,它证明了Attention也会存储某种知识)。通过以上三步,GPT完成了对某条知识的提取过程。另外一个工作“Understanding Transformer Memorization Recall Through Idioms” 探讨了LLM是如何提取记忆信息的,包括完全靠记忆需要精准复现的成语/谚语(Idioms),以及事实类知识。研究结论是LLM对记忆信息提取可以分为两个阶段:第一阶段是低层的Transformer Block把正确答案单词的排名逐渐提高,直到中间层排名到了第一名;第二阶段高层的Transformer把正确答案的置信度提高,也就是不断提高这个正确答案的分布概率得分。除了以上两个工作,还有一些其它类似的研究知识提取的工作。如果综合下现有的研究结论,我觉得可以大致得出这么一个GPT知识提取的轮廓:当训练好GPT模型后输入Prompt,对于Transformer某个位置对应的输入单词,随着Transformer 不断往上走,GPT通过Attention,把这个单词上文中与自己有关的信息集成到自己的Embedding里,而每层的FFN对当前单词Embedding做变换增加信息,以此方式来不断触发FFN里存储的知识并逐层Refine单词对应的Embedding(类似上面例子里单词“music”的过程)。Transformer的last token位置也是如此,它的特殊之处在于,从底层到上层,首先会把整个输入上文中最关键的信息,通过Attention拷贝到自己的位置,之后通过这个关键信息来逐步过滤出上文中比较重要的信息。在这个位置的Transformer底层,应该有很多候选答案可供输出,正确答案排名并不靠前,随着Transformer往上走,正确答案排名越来越靠前,而且可以和正确答案竞争的候选答案越来越少,体现为分配给正确答案的概率分布得分越来越高,直到last token的最高层,GPT可以输出正确答案(类似上面例子中单词“by”的过程)。
知识点在Transformer中的分布
这部分介绍知识点在Transformer结构中的分布情况,意思是不同类型或特定的知识点,在Transformer高中低不同层级的分布情况。了解这方面的知识,对于理解GPT的内在运行机制是非常有帮助的。在介绍研究结论前,为了便于理解,我们先说明三个基础概念(可参考Toy Models of Superposition):单语义(Monosemantic)神经元、多语义(Polysemantic)神经元及superposition。目前发现LLM中存在很多单个的神经元,它们各自只对输入里某个特殊的知识点产生响应,也就是说只会被特定输入模式激活,对其它无关输入保持沉默,一个神经元编码一个知识,完美一一对应,这类Transformer中的神经元被称为“单语义神经元”(这和人类大脑中的神经元作用机制就比较像了)。与此相反,也有大量神经元是多语义编码的,就是说很多不同语言含义的知识点都会激活某个神经元,这类神经元被称为“多语义神经元”。上图给了例子,比如有的神经元只有当输入的Prompt内容是法语写的,它才有响应,这是典型的“单语义神经元”;而有的神经元会对多个语义差异很大的2-gram语言片段都会有响应,这是典型的“多语义神经元”。Superposition概念的含义是:假设要编码的特征的数量n远远多于网络参数d,我们可找到办法,来用d维神经元编码比d数量大得多的n个特征,这种编码机制被称为superposition,所以它是被发现存在Transformer结构里的一种信息压缩编码机制。Superposition和“多语义神经元”关系密切,目前发现LLM内部是这样做的(参考Finding Neurons in a Haystack: Case Studies with Sparse Probing):如上图所示,LLM的Superposition机制是由多个“多语义神经元”联合构成的,每个神经元会对输入中的多个不同知识点都有响应,所以仅仅通过一个“多语义神经元”是无法探测当前是对谁在做出响应,但是如果有多个对某个知识点都有响应的“多语义神经元”,在它们的响应之上做个线性组合,就能探测到输入中我们想识别的那个知识点(上图中蓝色部分)。也就是说,LLM通过组合多个“多语义神经元”来对某个具体特征或知识点进行编码。所以,“多语义神经元”和知识点之间的关系是多对多的映射,一个知识点会激发很多对它进行编码的“多语义神经元”,而一个“多语义神经元”也会对多个输入知识点产生响应。了解了上述三个基础概念,我们介绍下目前的研究结论:在训练好的GPT模型中,Transformer底层编码了大量的具体特征或知识点,比如n-gram特征、句法特征等,编码方式采用上述的由多个“多语义神经元”组成的superposition模式;而随着Transformer层数加深,具体知识点逐渐减少,抽象知识点(比如“法语”/“质数”等)逐渐增加,且抽象知识点一般由“单语义神经元”独立编码,且随着Transformer层数越高,编码的特征越抽象。换句话说,Transformer对特征或知识点的编码,存在由低到高越来越抽象的一个知识抽象过程,这一现象在OpenAI最新发布的文章“Language models can explain neurons in language models”也有提及。另外,“Polysemanticity and Capacity in Neural Networks”这个文章指出了:在模型学习过程中,为了增加模型参数的利用效率,“单语义神经元”会被分配给重要特征,“多语义神经元”会分配给不太重要的特征,而对更加不重要的特征,则模型完全不进行编码。而所谓的“重要性”,指的是对训练loss的影响来说的,也就是说:“单语义神经元”对NTP训练时降低loss影响比较大。这说明对特征或知识点进行抽象,是NTP本身为了快速降低Loss的一种内在驱动力,而这很可能是GPT模型通过Next Token Prediction任务产生智能的关键之一。
GPT中知识回路存在的证据
这里介绍LLM模型中,完成某个特定任务存在对应知识回路(Circuit)的相关工作。所谓“回路”,指的是某个任务的Prompt输入Transformer后,信息从底向上传播,直到last token最高层Next Token输出答案,在网络中存在一些完成这个任务的关键路径,信息主要沿着这条路径向上传播,在传播过程中不断进行信息传递或知识加工,以此方式来通过NTP完成某项任务。如果看过后面介绍内容,你会发现LLM知识回路的工作过程,其实和人类大脑中的某些信息处理回路是很相似的。而大量在GPT的NTP预训练过程中形成的各种知识回路,很可能是揭开AGI之谜的另外一把钥匙。“How does GPT-2 compute greater-than?: Interpreting mathematical abilities in a pre-trained language model”这个工作主要探讨:为何GPT模型能够通过预训练获得数学能力。具体而言,用的是类似“_The war lasted from the year 17YY to the year 17_”的Prompt,GPT模型可以做到输出的Next Token的年份数字XX大于YY,这说明它在预训练中学会了数字间的比较关系。通过探究,发现模型在预训练过程中形成了解决这个问题的知识回路,如上图图右所示:有两个关键部分,第一个是中间层的某些Attention Head,比如图中a5.h5代表Transformer第5层的第5个Attention Head,这些Attention Head主要作用是聚焦到YY年份并向高层传播;另外一个关键是第8到11层的MLP层,这些层的MLP完成“大于”运算,所以最后GPT能够正确输出结果。而且,中间层的Attention Head和上层MLP也有相对应的传递关系,比如第9层MLP 主要接收信息来源于a9.h1,而第8层MLP的信息来源则比较多。可以看出,信息从下到上形成了一个特定的传播路径。如果再深入探究,会发现是MLP中的一些关键神经元完成数学运算的,如上图图右所示,可以探测出第10层MLP中影响最大的10个神经元,这层只用这10个神经元就能大致完成“大于”运算,而左图则展示了a7.h10 这个Attention Head主要聚焦于关键信息“YY”上。另外,该项研究还发现不仅仅上述Prompt,如果变换Prompt形式,但是体现数字比较关系,发现被激活的也是这条回路,这说明这条回路可能专门用于对数字进行关系比较。大部分知识回路应由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队列中重要性没那么高的排在后面的量子单元。核心思想我归纳下,就是大模型可以比小模型学到更多不那么重要的特征。以上几点,是从目前文献里能得到的,关于模型规模在表征能力方面差异的结论。
模型涌现能力,指的是对于某些任务(大多数是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模型几个任务相关的例子:,之后输入期待模型可以输出对应的正确结果。输入中给出的n个例子的作用,在于激活了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中出现次数越多的 y 影响越大;以及距离 越近的例子影响越大(Position embedding编码的位置信息及NLP中大量存在的局部相关性大概会导致此结果)。若真存在EIH回路,根据上述运行机制,我们可以推断出在以下三种情况下,Attention回路对正确预测结果 的影响:情况一:如果ICL中 到 输入例子对应的标签 y 是Ground Truth Label,很明显,EIH回路是正向积极影响作用,类似如上所述KNN机制依据 到 例子对应的 y 来做判断;情况二:如果ICL中例子的标签不是Ground Truth Label,而是在label 空间内随机选择赋予。很明显,EIH回路对于 得到正确答案应该起到负面作用,因为 会从前面 到 的例子中,寻找跟它比较像的内容去拷贝对应标签,但是这个标签是随机赋予的,所以大概率是错的,导致这种情况EIH应该是负面效果。情况三:如果ICL中例子的标签是label空间之外的另外一套标签,但是和 x 存在对应的映射关系。这种情况下,EIH回路应该是正面影响作用,这跟第一种情况道理类似,KNN机制可以学习这种映射关系,因此得到正确的 ,无非现在用的是 而不是 而已。当然,若你仍然是看 y 标签下的表现,那ICL肯定是负面作用。如果联合考虑LLM的内在任务回路,以及EIH这种纯Attention回路,两者有时协同发力方向相同,有时则竞争发力方向相反。比如上述三种情形中,第一种情况两者是协同作用,都起到促进正确答案的作用,第二和第三种情况则是竞争作用,任务回路对给出正确答案起到促进作用,EIH回路则起到负向作用。按照这种思路,大致可以解释目前我们看到的,在ICL研究中出现的很多貌似不可解释的各种现象。这里举个例子,比如目前研究表明,假设ICL的标签空间包含两个标签: 和 ,如果我们把ICL里例子的标签反转,就是原来标签是 的换成 ,原来是 的换成 ,则ICL任务效果会变差(可参考:Overthinking the Truth: Understanding how Language Models process False Demonstrations)。假设 对应的正确标签是 ,从任务回路和EIH回路的角度来看,任务回路会倾向于给出 标签,EIH回路在这种情况下,其实对应上面说的情况三,标签反转是种特殊的另换标签,因为 x 和 y 的对应关系仍然存在。所以此时,EIH回路看似会学习 x 到 y 的映射关系,会倾向于给出 标签。此时两者一个正向,一个负向,起到竞争关系,所以会降低模型效果。其它很多现象其实大都可以在这个框架里得到解释,文章长度原因就不展开了,感兴趣的同学可以在这个思考框架下自己推导一下。