在过去的两年里,基于Transformer架构开发的大规模语言模型在性能(如语言流畅度)上达到了令人叹为观止的效果。
但是,Transformer对单词的处理方法是什么?学术界仍未有确定的答案。普遍的理解是,transformer模型能够以某种方式同时关注多个单词,以便立即进行“全局”分析。但它到底是如何工作的,或者这是否是transformer模型的真正处理方式,仍旧扑朔迷离。
换言之,我们知道菜品的配料,但不知道配方。
针对这一问题,一家叫做 Anthropic AI 公司的研究人员进行了两项研究,希望从根本上理清transformer在处理和生成文本时的工作内容是什么。
他们发现,少于两层、且只有注意力块的transformer在某些方面也能达到复杂transformer的效果,且能够帮助理解背后的工作机制。
1、少于两层的Transformer
在12月发布的第一篇论文(如下)中, Anthropic AI 公司的科研人员研究了transformer的简化版本,并全面解释了它们的功能。
这个工作得到了以色列理工学院 Yonatan Belinkov 的高度评价:“这篇论文很好地讲述了transformer架构在非常简单的情况下是如何工作的。”“我非常看好这项工作,它既有趣又有前途,并且有些独特和新颖。”
论文地址:https://transformer-circuits.pub/2021/framework/index.html
根据论文内容,他们所研究的简化版transformer是先学习基本语言模式,再获得语言处理的通用能力。哈佛大学的 Martin Wattenberg 教授评价,他们的研究使得transformer的竞争力得到大幅跃升,同时揭露transformer背后的工作原理。
在3月8日发布的第二篇论文中,研究人员发现,他们所提出的简化版transformer的能力在最复杂的transformer模型中也发挥了作用。他们在简单模型中的发现可以应用到规模更大的模型中。虽然这些简化模型的数学原理仍然高深莫测,但其结果为深入理解transformers提供了一条新途径。
论文地址:https://transformer-circuits.pub/2022/in-context-learning-and-induction-heads/index.html
理解 transformer 的难点在于其抽象性。传统的程序遵循一个合乎情理的过程,例如,每当看到“green”(绿色的)这个词,它们就会输出“grass”(草)这个词,而transformer将“green”这个词转换为数字,然后将它们乘以某些值。这些值(也称为参数)决定了下一个单词是什么。参数在训练过程中得到了微调,模型会学习如何生成最佳输出,但不清楚模型具体在学习什么。
大多数机器学习程序将其数学部分封装成模块化要素,并称之为“神经元”。transformer加入了另外一种要素,称为attention head(注意头),它们成组分层排列,就像神经元一样。但head执行的操作与神经元不同。一般认为,head允许程序记住输入的多个单词,但这仅是一知半解。
为了更好地理解transformer的工作原理,Anthropic AI的研究人员简化了transformer的结构,去除了所有的神经元层和除一层或两层以外的所有attention head层。这让他们发现了transformer和他们已经完全理解的更简单模型之间的联系。
我们可以看最简单的语言模型——二元模型,它再现了基本的语言模式。例如,在对大量文本进行训练时,二元模型会注意到“green”一词后面最常出现的单词(例如“grass”)并记住它。然后,在生成文本时,它会重现相同的模式。通过为每个输入单词记忆一个相关的后续单词,它可以获得非常基本的语言知识。
研究人员表明,具有一层attention head的 transformer 模型也具备同样的能力:它再现了所记忆的内容。假设给定一个特定的输入,比如“Doctor Smith went to the store because Doctor X…”(史密斯博士去商店是因为X博士)这个输入被称为提示或上下文。对我们来说,下一个词X指向“Smith”是显而易见的。
在经过训练的单层模型中,attention head可以通过两个步骤进行预测。首先,它查看上下文中的最后一个单词(Doctor),并在上下文中搜索它已经学习(在训练期间)与最后一个单词相关联的特定单词。然后,对于它找到的任意单词,从中查找另一个它已经学会与找到的单词相关联的单词,就像在二元模型中一样,这可以是同一个词。再将这个关联的单词作为模型的输出。
在上述例子中,研究人员表明,根据最后一个单词“Doctor”,head通过训练知道如何搜索一个常用名称。在句子的前面找到“Smith”这个名字后,head会查看所学的与“Smith”关联的内容,并将该单词作为输出。在这种情况下,模型已经学会将同一个词“Smith”与找到的词“Smith”相关联。整个过程的最终效果是模型将“Smith”一词从上下文复制到输出。
图注:从左到右分别为 Chris Olah、Catherine Olsson 与 Nelson Elhage
不过,到目前为止,记忆只能采用一种模式。不妨想一下,当Smith的名字变成了一个虚构的名字,比如“Gigamuru”时会发生什么。对我们而言,预测下一个单词轻而易举,但模型在训练期间不会识别出虚构的词,因此不可能记住它与其他词之间的任何关系,也不会生成它。
2、引入归纳头
Anthropic 团队还发现,当他们研究一个更复杂的模型时,比如一个有两层attention head的模型,出现了一种解决方案。它依赖于attention head独有的能力:不仅可以将信息移动到输出,还可以移动到上下文中的其他位置。这种能力可以使第一层的head利用前面单词的信息,学习注释上下文中的每个单词。然后,第二个head可以搜索“Doctor”(在本例中为“Gigamuru”)之前的单词,并像单层模型中的head一样,将其移动到输出。
研究人员将后一层与前一层协作的attention head称为induction head(归纳头)。它不仅仅起到记忆的作用。根据Nelson Elhage的解释,它还可以做一些看起来更像是抽象推理或算法实现的工作。
induction head可以让两层模型发挥更大的作用,但它们与全尺度transformer的相关性尚不清楚,因为全尺度transformer有数百个attention head协同工作。在他们的第二篇论文中,研究人员表示这些发现得到了延续:induction head似乎对一些最复杂、多层结构的行为起到了关键作用。
在这些行为中,算术能力尤为突出,因为模型只接受了完成文本的训练。例如,如果给出重复提示:“问:48+76是多少?答:124,问:48+76是多少?答:“全尺度模型会得到正确答案。”。在给出充足的非重复性示例后,它将能够正确回答从未见过的算术问题。这种从语境中学习新能力的现象被称为上下文学习。
这种现象令人费解,因为从上下文中学习是不可能的。这是因为决定模型性能的参数只在训练期间调整,而不是在模型处理输入上下文时调整。
induction head至少解决了部分难题。它们解释了如何使上下文学习的简单和重复形式成为可能,并且提供了所需的功能:能够复制模型没有训练过的新单词(如“Gigamuru”或“124”)。
另一位来自Anthropic的合著者Catherine Olsson说:“induction head更有可能执行任何模式,即使它有些奇异或新颖。”
研究人员进一步在多层次模型中识别出induction head,并表明它们参与了更新颖的上下文学习形式,比如学习语言间的翻译。
“这并不是要解释整个机制,”OpenAI 的 Jacob Hilton 说。“只是induction head似乎参与其中。”
这些结果为我们理解transformer模型提供了一个立足点。它们不仅在获取知识,还在学习如何处理他们根本没有学到的事物。也许通过了解其工作机制,我们可以对“大放异彩”的transformer少些惊讶与感叹。
本文转自雷锋网,如需转载请至雷锋网官网申请授权。