当前位置:首页|资讯|人工智能|AGI|Ilya Sutskever|OpenAI

学习Ilya推荐的27篇AI论文-01 Attention is all you need

作者:Niall__发布时间:2024-06-05

写在前面

前不久的一次直播中李开复博士间接表示,在大模型时代,学过传统人工智能算法的思维是被污染过的。

在人工智能革命浪潮中,想要深入了解大模型原理,建立或重塑大模型算法思维是很有必要的。

5月初,X(原Twitter)上有人晒出Ilya Sutskever(原OpenAI首席科学家)为转战AGI的程序员整理的AI论文清单(https://arc.net/folder/D0472A20-9C20-4D3F-B145-D2865C0A9FEE),并附言“学会这些,你可以掌握当今90%的重要内容”。

这无疑是学习大模型原理的高质量一手资料,我计划按照清单把论文原文阅读一遍,并翻译为中文,欢迎交流。

工具

平时在阅读论文过程中我经常遇到不认识的单词,当时会线上查字典,但之后很快就又会忘记。

有个叫Pica pica单词本的小程序挺好的,用它查完单词我会把认为有价值的单词加到单词本里,同时把论文中完整的句子也一并复制加到单词本。

这个单词本能按经典的艾宾浩斯遗忘曲线自动计算出每一个单词的下次复习时间,我就在每天饭后最放松的时候进这个单词本看一下。

按它规划的复习顺序回忆一下单词,同时还能看到之前添加的论文句子,连带着论文的某个片段也回忆了。

这种在论文的情景中记单词、通过单词带出论文情景的方式真是一绝,特别符合大脑记忆的底层逻辑,非常高效。

正文

摘要

主流序列转导模型都基于复杂的循环或卷积神经网络,它们有一个编码器和一个解码器。

性能最好的模型还通过注意力机制连接编码器和解码器。

作者提出一种新的简单网络架构——Transformer,它完全基于注意力机制,完全不需要循环和卷积。

实验表明,这个模型具有卓越的质量,同时具有更高的并行性,并且需要的训练时间显著减少。

作者还证明了 Transformer 可以很好地推广到其他任务。


1. 简介

循环神经网络,特别是长短时记忆和门控循环网络,公认是解决序列建模转导问题的最先进方法。

但是,它固有的序列性质导致无法在训练样本内部并行化,这对长序列的处理非常重要。

注意力机制允许对依赖关系进行建模,而不必考虑输入和输出序列中的距离。它通常与循环神经网络结合使用。

作者提出Transformer,避开重复循环架构,完全依赖注意力机制绘制输入和输出之间的全局依赖关系。它显著提高了并行度。


2. 背景

为了减少序列计算,以卷积神经网络为基本构建块的扩展神经,可以并行计算输入与输出之间的隐藏表示。

但是随着输入与输出之间的距离增加,计算量会呈线性或对数增加。

Transformer可以将上述计算量降至恒定数量级

但其中的平均注意力加权位置会导致有效分辨率降低,作者使用多头注意力解决。(3.2述)

自注意力,也叫内部注意力,是一种将单个序列的不同位置联系起来,从而计算整个序列表示,的注意力机制。

自注意力已经应用于阅读理解、抽象概括、文本蕴涵等各种任务。

端到端记忆网络基于循环注意机制而不是序列对齐循环,已被证明在简单语言问答和语言建模任务上表现良好。

Transformer是第一个完全依赖自注意力,不使用序列对齐的循环或卷积,计算其输入和输出表示的转换模型。


3. 模型架构

大多数竞争性神经序列转导模型都是编码器-解码器结构。

编码器将输入序列映射到中间序列,解码器基于给定的中间序列一次一个元素的生成输出序列。

在每个步骤中模型都是自回归的,即,生成下一个符号时将先前生成的符号用作附加输入。


3.1 编码器和解码器的层结构

编码器

由6个结构相同的模块组成。

每个模块由2个子模块组成。

第1个子模块(下半部分)是多头注意力机制网络(Multi-Head Attention),同时,用残差网络连接(Add),然后进行层归一化(Norm)。

第2个子模块(上半部分)是全连接前馈网络(Feed Forward),同时,用残差网络连接(Add),然后进行层归一化(Norm)。

解码器

也由6个结构相同的模块组成。

每个模块由3个子模块组成。

第1个子模块(下三分之一)和第2个子模块(上三分之一)与编码器的子模块相同,其中第1个子模块增加了遮蔽(Masked),以确保i位置的输出只依赖i位置之前的已知输出。

第3个子模块(中间三分之一)与编码器的第1个子模块相同,其部分输入来自编码器的输出(连接编码器与解码器的那条线)。


3.2 注意力

注意力函数将查询(Q)和一组键值(K/V)对映射为输出。

输出是V的加权和,其中权重来自Q和K的兼容性函数计算。

缩放点积注意力

作者将本文设计的注意力称为“缩放点积注意力”,包括d_k维度的Q、K和d_v维度的V。

计算方式为:Q与K进行点积运算(MatMul),然后除以d_k(Scale),再经过softmax运算,然后乘V。在实践中会打包为矩阵运算。


两个最常用的注意力函数是加法注意力点积注意力

点积注意力即上述注意力去掉除以d_k部分,加法注意力使用具有一个隐藏层的前馈网路作为兼容性函数。

理论上两个注意力函数的复杂度相同,但在实践中,点积注意力运算更快、更节省空间,因为它可以利用矩阵乘法。

作者怀疑,对于较大的d_k维度值,点积幅度会增大,从而将 softmax 函数推入梯度极小的区域。

为了抵消这种影响,作者将点积除以d_k进行缩放。

多头注意力

作者发现,用不同的、学习过的线性投影矩阵,将Q、K、V向d_k、d_k、d_v维矩阵分别线性投影(linearly project)h次,效果更好。即,多头注意力更有效。

多头注意力允许模型关注位于不同位置的不同表示子空间的信息,而但注意力头的均值会抑制这一点。

在本文,作者使用8个并行注意力头,每个注意力头使用的维度是 d_k=d_v=d_model/8=64。


注意力在模型中的应用

Transformer 以三种方式使用多头注意力:

  • "编码器-解码器 注意力"层(解码器的第3个子模块),其中Q来自前一个解码器,这模仿了序列到序列模型中的典型编码器-解码器注意机制。

  • 编码器中的自注意力层(第1个子模块)。

  • 解码器中的自注意力层(第1个子模块)。


3.3 位置敏感前馈网络

编码器和解码器的子模块包含一个全连接前馈网络。

它由两个线性变换组成,中间使用ReLU激活。

在不同位置它的参数不同,在输入输出位置的维度为512,在内层的维度为2048。


3.4 嵌入和softmax

与其他序列转导模型类似,作者使用学习的embeddings将输入和输出tokens转换为 d_model维的向量。

使用学习的线性变换和softmax将解码器的输出转为预测的下一个令牌概率

在两个嵌入层和 pre-softmax 线性变换之间共享相同的权重矩阵,不过,在嵌入层,权重会乘d_model。

  

3.5 位置编码

本文的模型不包含循环和卷积,为了使模型能够利用序列的顺序,必须注入一些有关序列中标记的相对或绝对位置的信息。

为此,作者将“位置编码”(Positional Encoding)添加到编码器和解码器底部的输入嵌入。

位置编码与嵌入具有相同的维度 ,因此可以将两者相加。

位置编码有多种选择,有学习的和固定的。

在本文,作者使用不同频率的正弦和余弦函数,即,位置编码的每个维度对应于正弦曲线。

选择这个函数是因为作者假设它可以让模型轻松学习关注相对位置。

作者还尝试使用学习的位置嵌入,但发现这两个版本产生几乎相同的结果。

正弦版本还可以允许模型推断出比训练期间遇到的序列长度更长的序列长度。


4. 为什么用自注意力

作者将自注意力层的各个方面与循环层和卷积层进行对比。

这三者通常用于将一个可变长度序列映射到另一个相等长度的序列,例如典型的序列转导编码器、解码器中的隐藏层。

作者选用自注意力考虑了3个因素:

  1. 每层的总计算复杂度。

  2. 可以并行化的计算量。以必需的最少连续操作次数来衡量。

  3. 网络中远程依赖之间的路径长度。

其中,学习远程依赖性是序列转导任务的一个关键挑战,影响学习难度的一个关键因素是前向和后向信号在网络中必须经过的路径的长度。路径越短,就越容易学习。作者还比较了由不同层类型组成的网络中,任意两个输入和输出位置之间的最大路径长度。

自注意力是O(1),循环网络是O(n)。


从计算复杂度的角度看,当序列长度n小于表示维度d时,自注意力层比循环神经网络层更快

这个现象在最先进机器翻译模型使用的句子表示中最常见。例如单词片段、字节对。

为了提高很长序列的任务的计算性能,自注意力可以限制为,仅考虑输入序列中以输出位置为中心的大小为r 的邻域。这会将最大路径长度增加到 O(n/r)。作者计划在未来的工作中进一步研究这种方法。

在单个卷积层,内核宽度k<序列长度n时不会连接所有输入和输出位置对。

如果要连接全部,就需要O(n/k)个卷积,或者O(log(n))个扩展卷积计算。卷积层的代价通常是循环层代价的k倍。

即使是k = n的可分离卷积,其复杂度也等于自注意力层和逐点前馈层的和,后者是作者采用的方案。

自注意力可以产生更多可解释的模型。作者发现多注意力头似乎表现出与句子的句法和语义结构相关的行为。


5. 训练

5.1 训练数据和批处理

标准WMT 2014 英语-德语数据集,包含约 450 万个句子对,使用字节对编码,该编码具有约37000个标记的共享源目标词汇表。

WMT 2014 英语-法语数据集,包含3600万个句子,并将标记拆分为 32000 个单词片段词汇表 。

每个训练批次包含一组句子对,其中包含大约 25000 个源标记和 25000 个目标标记。


5.2 硬件

8张NVIDIA P100 GPU

其他略


6. 实验结果


7. 结论

作者用多头自注意力取代编码器-解码器架构中最常用的循环层,提出第一个完全基于注意力的序列转换模型Transformer。

对于翻译任务,Transformer的训练速度明显快于基于循环层或卷积层的架构。

作者未来还会研究局部的、受限的注意力机制,以有效地处理图像、音频和视频等大型输入和输出。

我的总结

学习远程依赖是提高网络性能的关键,循环和卷积网络因其自身设计必然存在复杂度瓶颈。

在本文之前,注意力机制已经被引入网络并带来了优秀的效果。

作者关注到注意力机制的潜力,摒弃循环、卷积设计,仅用注意力机制设计了序列转换模型Transformer。

具体的,作者改进点积注意力、设计多头注意力、增加位置编码等。


(完结)

论文:https://arxiv.org/pdf/1706.03762v7

github:https://github.com/tensorflow/tensor2tensor


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1