关于电路理论和Inductive head
在说到Function Vector之前,首先看看最近几年关于模型(特别是Transformer)的机制研究,这一块除了OpenAI主导的SAE(sparse autoencoder)之外,最重要的贡献目前看是Antrophic通过电路理论对Transformer进行的推导。
A Mathematical Framework for Transformer Circuits
几个重要的结论就是:
Zero layer transformers model bigram statistics. The bigram table can be accessed directly from the weights.
One layer attention-only transformers are an ensemble of bigram and “skip-trigram” (sequences of the form "A… B C") models. The bigram and skip-trigram tables can be accessed directly from the weights, without running the model. These skip-trigrams can be surprisingly expressive. This includes implementing a kind of very simple in-context learning.
Two layer attention-only transformers can implement much more complex algorithms using compositions of attention heads. These compositional algorithms can also be detected directly from the weights. Notably, two layer models use attention head composition to create “induction heads”, a very general in-context learning algorithm.
其中比较重要的是第三点,即inductive head,它的形式上的作用是比如一个序列 ...a,b...a, 看到第二个a之后,能够输出b。这个就叫做归纳头,被认为是现在大模型做in-context-learning非常重要的能力。
为了简单说明A家是如何分析的,感觉这个一层的Transformer是最清楚的:
可以看到,这个里面省略了MLP。
其中Attention中各个参数的意义如下:
利用了张量积的性质:
其实就是一个流:输入(x)先经过A,然后Wo和Wv的转化,就可以输出了。
现在,我们看这个是如何“解释的”
其中A:
T的第一部分WuWe就是一个bigram,所以主要分析右边的项目
他们还画了一个图表示这个传递的过程:
By multiplying out the OV and QK circuits, we've succeeded in doing this: the neural network parameters are now simple linear or bilinear functions on tokens. The QK circuit determines which "source" token the present "destination" token attends back to and copies information from, while the OV circuit describes what the resulting effect on the "out" predictions for the next token is. Together, the three tokens involved form a "skip-trigram" of the form [source]... [destination][out]
, and the "out" is modified
这个就是skip-trigram的来源,其实trigram就是给定 ab->c,并且这个c是和ab相关的,当然从这个单层网络的结构上看,是先通过QK-circuit将a的信息融入过来到b这里,然后通过OV-circuit将信息输出(c)。
实际中,这个skip-trigram经常展现出来的模式是拷贝模式,即a,b,a。或者说,OV是一个直接indentity的输出。
One of the most striking things about looking at these matrices is that most attention heads in one layer models dedicate an enormous fraction of their capacity to copying. The OV circuit sets things up so that tokens, if attended to by the head, increase the probability of that token, and to a lesser extent, similar tokens
如下图所示:
所以其实所谓的circuit分析就是从公式推导出可能的行为,并且用固定参数就可以表达(不是学习出来的哦,而是设置了一定的参数后这个结构就可以做到这个事情)。
两层的网络更复杂一些,不过分析方法差不多:
前面两项和1层的网络几乎一致。最重要的是第三项 virtual attention head。最后实现的是Inductive head。
一个例子是:[a][b] … [a] → [b]
但是最近一些工作发现,真正模型要完成Inductive head是很难的,比如我们在最近的kv-shift(https://arxiv.org/pdf/2411.19574)里面发现的
也就是:对于一个序列 [a][b] … [a] →来说,要完成归纳头,目标(第二个字母a)应该要关注b,但是要关注b,b必须把第一个a的信息带入到b的表示里面,这个对b的表达是很困难的,除非b的维度很大。因此我们提出了kv-shift,就是第二个a可以关注b(虽然a和b没啥关系,但是b的key中有第一个a的信息,也会被关注到),这对于信息的表达来说可能引入了一个更加高效的机制。当然都是从Inductive的角度进行分析的。
Function Vector
FV直观来说并不能和Inductive head等相提并论,因为它没有那么精确,更多是从实验的角度empirical分析出来的。
https://arxiv.org/pdf/2310.15213
在这个ICLR2024的工作中第一次发现了大模型有这么一个Function Vector,并且认为这个FV才是实现ICL的真正部分:
sing causal mediation analysis on a diverse range of in-context-learning
(ICL) tasks, we find that a small number attention heads transport a compact
representation of the demonstrated task, which we call a function vector (FV).
如下图:
可以看到,通过一个简单的向量提取,就可以把下游的任务完成了。因此完成的下游任务的这个Vector被称为Function vector。
那么它们是如何发现的呢,作者在之前的实验中发现这么一个现象,如下图:
就是他们在一些ICL的任务里面,把某些h_l提取出来(这里),然后在zero-shot的情况下,把向量加进去,发现在很多任务上直接就有效果,注意这里的h_l是激活的平均(不是所谓的multi-head-attention里面的头,就是激活。)
所以作者就想找到更好定位到FV的hidden states。因为我们知道Transformer里面对任务比较重要的不是最后的激活,而是中间起作用的一些circuit,也就是attention那块的输出,所以也就想找一些这样的头出来,看哪些头的输出影响更大。他们的做法非常简单:
1)在标准的ICL任务上,计算某个头的平均激活值a_hat。
2)对于这些in-context的prompts,把他们的标签y进行shuffle。这样大概率预测会失败。
3)将之前的a_hat直接替换掉(2)中错误样例的激活值,然后看看最后输出的准确率的diff。
最后diff越大,说明这个a_hat越能代表in-context的FV。
这个Function vector很少,一般在模型的中间层的某一些头上。
最后实际加入了这些Function vector也确实在很多任务上起作用。
Function vector v.s. inductive head
https://arxiv.org/pdf/2502.14010
这个工作严格对比了FV和IH,看看他们哪个是影响模型ICL能力的关键:
IH的计算非常简单:
就是构造了这样一堆数据,然后看r'_i对r_i+1的关注值,这个如果大的话就可以完成Inductive任务(把r_i+1直接输出)
FV的计算和上面的那个原始文章一样:
最后的结论:
功能向量(FV)头对ICL至关重要:通过对12个解码器模型的研究,发现少样本ICL性能主要依赖于FV头,尤其是在较大的模型中。
FV头与诱导头的关系:研究揭示,许多FV头在训练初期表现为诱导头,随后逐渐转变为FV机制。这表明诱导机制可能有助于学习更复杂的FV机制,从而最终驱动ICL
诱导头和FV头的区别:诱导头和FV头在模型中的位置和训练出现时间上存在差异。诱导头通常出现在较早的层,并在训练过程中较早出现,而FV头则出现在稍深的层,且出现较晚。
Function vector这么看确实更深一些,比Inductive head出现的更晚:
而且重要的是,Inductive head和Function vector可能本身完全不一样(下图左):
所以我们通过特别简化的电路理论分析的,只是一个比较可行的下界,实际上真正模型实现Inductive head需要更复杂的机制,并且对ICL起作用的可能是更复杂的模型内在部分。
P.S. 其实这里都是从功能性(拷贝、归纳,ICL)去分析模型的部块,未来可能要结合知识记忆(现在被广泛认为存在于MLP中)以更好的实现对模型的分析。
回复列表: