Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

被忽略的起点?Karpathy揭秘最初的注意力论文被Transformer光芒掩盖的故事

几个小时前,著名 AI 研究者、OpenAI 创始成员之一 Andrej Karpathy 发布了一篇备受关注的长推文,其中分享了注意力机制背后一些或许少有人知的故事。

其中最值得注意的一个故事是真正首次提出注意力机制的论文其实是 Dzmitry Bahdanau、Kyunghyun Cho 和 Yoshua Bengio 的《Neural Machine Translation by Jointly Learning to Align and Translate》,这比《Attention is All you Need》还早 3 年,但很显然,这篇论文并没有收获后者那般的关注。 

图片
                           Karpathy 长推文的不完整截图

实际上,这个故事来自 Dzmitry Bahdanau 发给 Karpathy 的一封邮件。Bahdanau 是 ServiceNow Research 的研究科学家和研究负责人以及麦吉尔大学兼职教授。

他在发给 Karpathy 的这封邮件中分享了自己发现注意力机制的旅程以及 Attention 这个术语的由来——其实来自 Yoshua Bengio。此外,他也提到了 Alex Graves 的 NMT 论文和 Jason Weston 的记忆网络(Memory Networks)论文各自独立发现类似机制的故事。

Karpathy 推文发布后反响热烈,短时间内就已有超过 20 万阅读量,很多读者都被这个注意力背后的故事吸引。
图片
有读者在看过这个故事后发出感叹:2013-2017 年间的深度学习宇宙中有很多隐藏的英雄。
图片
也有人分享自己对注意力机制的看法。
图片
Hyperbolic Labs 创始人和 CTO Yuchen Jin 更是打趣说《Attention Is All You Need》的另一项重要贡献是将后面的 AI 论文标题带歪了:「吸引注意力的标题才是 All You Need」。
图片
注意力机制的背后故事

下面我们就来看看 Karpathy 的推文究竟说了什么:

「attention」算子——也就是提出了 Transformer 的《Attention is All you Need》中的那个注意力,背后的(真实)开发和灵感故事。来自大约 2 年前与作者 @DBahdanau 的个人电子邮件通信,在此发布(经许可)。此前几天,网上流传着一些关于其开发过程的假新闻。

Attention 是一种出色的(数据依赖型)加权平均运算。它是一种形式的全局池化、归约、通信。它是一种从多个节点(token、图块等)聚合相关信息的方法。它富有表现力、功能强大、具有足够的并行性,并且可以高效优化。甚至多层感知器(MLP)实际上也可以大致重写为数据独立型权重上的 Attention(第一层权重查询,第二层权重是值,键就是输入,softmax 变为元素级,删除了规范化)。简单来说,注意力非常棒,是神经网络架构设计中的重大突破。

《Attention is All You Need》获得的…… 呃…… 注意力差不多是 3 年前真正提出 Attention 的论文的 100 倍,即 Dzmitry Bahdanau、Kyunghyun Cho 和 Yoshua Bengio 的论文《Neural Machine Translation by Jointly Learning to Align and Translate》。在我看来,这一直有点出人意料。顾名思义,《Attention is All You Need》的核心贡献是提出:Transformer 神经网络就是删除注意力之外的一切,然后基本上就是将其堆叠在带有 MLP(根据上述内容,这也可以大致被视为注意力)的 ResNet 中。但我确实认为这篇 Transformer 论文有自己独特的价值,因为它一次性添加了其它许多令人惊叹的想法,包括位置编码、缩放式注意力、多头注意力、各向同性的简单设计等。在我看来,直到今天(大约 7 年过去了),Transformer 基本上还保持着 2017 年的形式,只有相对较少的微小修改,也许除了使用更好的位置编码方案(RoPE 等)。

总之,我先把完整邮件贴在下面,其中也暗示了这个运算一开始被称为 Attention 的原因 —— 它源自对源句子中词的关注(attending)并同时以顺序方式输出翻译结果的词,并且之后 Yoshua Bengio 在 RNNSearch 中将其引入成了一个术语(感谢上帝?:D)。同样有趣的是,该设计的灵感来自人类的认知过程/策略,即按顺序来回关注一些数据。最后,从发展进步的本质来看,这个故事相当有趣——类似的想法和表述「早就已经在空气中回荡」,特别要提到当时 Alex Graves(NMT)和 Jason Weston(记忆网络)的工作。

谢谢你的故事 @DBahdanau !

之后,Karpathy 还做了一些补充:ChatGPT 以及绝大多数现代 AI 模型都是巨型 Transformer。「所以 LLM 的核心神奇之处来自于反复应用注意力,一遍又一遍地关注输入的 token,以预测下一个 token 是什么。」
图片
Dzmitry Bahdanau 的原始邮件内容

Karpathy 也一并分享了 Dzmitry Bahdanau 的原始邮件内容:
图片
嗨,Andrej,

很高兴告诉你 8 年前发生的故事!

我在雅各布大学 Herbert Jaeger 的指导下完成硕士课程的第一年后,作为实习生来到了 Yoshua 的实验室。

我告诉 Yoshua 我很乐意做任何事情。Yoshua 让我参与机器翻译项目,与 Kyunghyun Cho 和团队一起工作。我当时非常怀疑将词序列塞入向量的想法。但我也非常想获得博士学位。所以我撸起袖子,开始做我擅长的事情——编写代码、修复错误等等。在某个时候,我表现得很了解我做的东西了,Yoshua 邀请我攻读博士学位(2014 年是一个很好的时机,表现得很了解就已经足够了——美好的旧时光!)。我非常高兴,我认为可以开始享受乐趣并发挥创造力了。

所以我开始思考如何避免编码器和解码器 RNN 之间的瓶颈。我的第一个想法是构建一个带有两个「光标」的模型,一个在源序列中移动(由一个 BiRNN 编码),另一个在目标序列中移动。使用动态规划(dynamic programming)可以将光标轨迹边缘化。KyungHyun Cho 认为这相当于 Alex Graves 的 RNN Transducer 模型。之后,我可能还读了 Graves 的手写识别论文。不过,这种方法看起来不适合机器翻译

在我实习的剩余 5 周内,上述使用光标的方法很难实现。所以我尝试了一种更简单的方法——两个光标同时同步移动(实际上是硬编码的对角注意力)。这种方法有点效果,但方法不够优雅。

所以有一天,我想到如果能让解码器 RNN 学会在源序列中搜索放置光标的位置就好了。这多少受到我中学时学习英语时的翻译练习的启发。翻译时,你的目光会在源序列和目标序列之间来回移动。我将这种软性搜索表示为 softmax,然后对 BiRNN 状态进行加权平均。它的效果很好,从第一次尝试,到后来振奋人心。我将这个架构称为 RNNSearch,我们急于发表一篇 arXiv 论文,因为我们知道谷歌的 Ilya 和同事领先于我们,他们有巨大的 8 GPU LSTM 模型(而 RNN Search 仍在 1 GPU 上运行)。

后来发现,这个名字并不好。直到最后几次过论文时,Yoshua 才将更好的名字(attention)添加到论文结论中。 

一个半月后,我们看到了 Alex Graves 的 NMT 论文。这确实是完全相同的想法,尽管他提出它的动机完全不同。在我们的情况下,是因为需要而产生了这个发明。在他的情况下,我想应该是将神经和符号 AI 连接起来的雄心吧?Jason Weston 及其同事的记忆网络论文也采用了类似的机制。

我没有远见地想到注意力可以在较低的层级使用,以作为表征学习的核心运算。但是当我看到 Transformer 论文时,我立即向实验室同事断言 RNN 已死。

回到你最初的问题:在蒙特利尔 Yoshua 的实验室发明的「可微分和数据依赖加权平均」独立于神经图灵机、记忆网络以及 90 年代(甚至 70 年代)的一些相关认知科学论文。这是 Yoshua 领导推动实验室进行雄心勃勃的研究的结果,KyungHyun Cho 在运行一个大型机器翻译项目方面拥有高超的技能,该项目由初级博士生和实习生组成;最后,我自己的创造力和编码技能在多年的竞争性编程中得到了磨练。但我认为这个想法很快就会被发现。就算我、Alex Graves 和这个故事中的其他角色当时没有研究深度学习也是如此,注意力就是深度学习中实现灵活空间连接的自然方式。等待 GPU 足够快,让人们有动力认真对待深度学习研究,这是一个显而易见的想法。自从我意识到这一点以来,我在 AI 领域的抱负就是启动像机器翻译项目这样的出色的应用项目。相比于那些研究所谓的「真正」AI 的花哨理论,良好的研发工作可以为基础技术的进步做出更大贡献。

就这些!我非常想更多了解关于您的教育 AI 项目的信息(我从 Harm de Vries 那里听到了一些传言;))。

祝好,
Dima

相关论文

最后,下面梳理了前面提及的相关论文,以帮助感兴趣的读者做进一步的技术探索。

Neural Machine Translation by Jointly Learning to Align and Translate,未得到应有关注的注意力论文
作者:Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio
链接:https://arxiv.org/abs/1409.0473

Attention is All You Need,著名的 Transformer 论文
作者:Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin
链接:https://arxiv.org/abs/1706.03762

Neural Turing Machines,其中几乎同时提出了类似的 soft pooling 运算
作者:Alex Graves, Greg Wayne, Ivo Danihelka
链接:https://arxiv.org/abs/1410.5401

Generating Sequences With Recurrent Neural Networks,研究了使用 LTSM 循环神经网络生成具有长程结构的复杂序列,很有开创性
作者:Alex Graves
链接:https://arxiv.org/abs/1308.0850

Memory Networks,记忆网络
作者:Jason Weston, Sumit Chopra, Antoine Bordes
链接:https://arxiv.org/abs/1410.3916

Sequence to Sequence Learning with Neural Networks,文中提到的当时在谷歌的 Ilya 等人的论文
作者:Ilya Sutskever, Oriol Vinyals, Quoc V. Le
链接:https://arxiv.org/abs/1409.3215

参考链接
https://x.com/karpathy/status/1864023344435380613
https://x.com/karpathy/status/1864030016457375916
理论OpenAIAndrej Karpathy注意力机制
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

动态规划技术

动态规划(也称为动态优化),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划将复杂的问题分解成一系列相对简单的子问题,只解决一次子问题并存储它的解决方案(solution),下一次遇到同样的子问题时无需重新计算它的解决方案,而是简单地查找先前计算的解决方案,从而节省计算时间。动态规划适用于有最优子结构(Optimal Substructure)和重叠子问题(Overlapping Subproblems)性质的问题。

神经图灵机技术

神经图灵机(NTMs)是Alex Graves等人发表的一种递归神经网络模型。NTM将神经网络的模糊模式匹配能力与可编程计算机的算法能力相结合。一个NTM有一个神经网络控制器连接到外部存储器资源,通过注意机制与外部存储器资源进行交互。 记忆交互是端对端可区分的,可以使用梯度下降对其进行优化。 具有长期短期记忆(LSTM)网络控制器的NTM可以从输入和输出示例推断简单的算法,例如复制,排序和关联回忆。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

表征学习技术

在机器学习领域,表征学习(或特征学习)是一种将原始数据转换成为能够被机器学习有效开发的一种技术的集合。在特征学习算法出现之前,机器学习研究人员需要利用手动特征工程(manual feature learning)等技术从原始数据的领域知识(domain knowledge)建立特征,然后再部署相关的机器学习算法。虽然手动特征工程对于应用机器学习很有效,但它同时也是很困难、很昂贵、很耗时、并依赖于强大专业知识。特征学习弥补了这一点,它使得机器不仅能学习到数据的特征,并能利用这些特征来完成一个具体的任务。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

规范化技术

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

推荐文章
暂无评论
暂无评论~