Attention is all you need 论文阅读

论文链接

Attention is all you need


0. Abstract

  • 主要序列转导模型基于复杂的循环或卷积神经网络,包括编码器和解码器。性能最好的模型还通过注意力机制连接编码器和解码器
  • 提出Transformer,它 完全基于注意力机制,完全不需要递归和卷积
  • 对两个机器翻译任务的实验表明,这些模型具有卓越的质量,同时具有更高的并行性,并且需要的训练时间显着减少

1. Intro

  • 注意力机制已成为各种任务中引人注目的序列建模和转导模型的一个组成部分,允许对依赖关系进行建模,而无需考虑它们在输入或输出序列中的距离
  • 除了少数情况外,注意力机制都是与循环网络结合使用的
  • 提出了 Transformer,这是**一种避免重复的模型架构,完全依赖注意力机制来绘制输入和输出之间的全局依赖关系**

2. Background

  • 在以前的工作中,关联来自两个任意输入或输出位置的信号所需的操作数量随着位置之间的距离而增加,使得学习遥远位置之间的依赖关系变得更加困难
  • 在 Transformer 中,这被减少到恒定数量的操作,尽管由于平均注意力加权位置而导致有效分辨率降低
  • 自注意力机制:关联单个序列的不同位置,以计算序列的表示
  • 端到端记忆网络基于递归的注意机制,而不是序列对齐的递归
  • Transformer 是第一个完全依赖自注意力来计算其输入和输出表示的转换模型,而不使用序列对齐的 RNN 或卷积

3. Model Architecture

  • 编码器将符号表示的输入序列 ( x 1 , . . . , x n ) (x_1,...,x_n) (x1...xn) 映射到连续表示的序列 z = ( z 1 , . . . , z n ) z =(z_1,...,z_n) z=(z1...zn) 。给定z,解码器随后逐个元素生成符号的输出序列 ( y 1 , . . . , y m ) (y_1,...,y_m) (y1...ym)

  • Transformer遵循这一整体架构,使用叠加的自注意力和点对点的全连接层作为编码器和解码器,分别显示在图1的左半部分和右半部分。

3.1 Encoder and Decoder Stacks

编码器

  • 编码器由N=6个相同的层组成
  • 每个层都有两个子层,第一个是多头自注意机制,第二个是简单的位置-智能连接前馈网络
  • 在两个子层周围采用了残差连接,然后是层标准化
  • 每个子层的输出是 L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x + Sublayer(x)) LayerNorm(x+Sublayer(x)) ,其中 S u b l a y e r ( x ) Sublayer(x) Sublayer(x) 是子层本身实现的函数
  • 为了方便这些残差连接,模型中的所有子层以及嵌入层都会产生维度为 d m o d e l = 512 d_{model} = 512 dmodel=512 的输出

解码器

  • 由 N = 6 个相同层的堆栈组成
  • 除了每个编码器层中的两个子层之外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头注意力
  • 每个子层周围采用残差连接,然后进行层归一化
  • 修改了解码器堆栈中的自注意力子层,以防止位置关注后续位置

3.2 Attention

  • 一个注意力函数可以被描述为将一个查询和一组键-值对映射到一个输出的过程,其中查询、键、值和输出都是向量
  • 输出是通过对值的加权求和来计算的,而每个值的权重是由查询与相应键的兼容性函数计算得出的
3.2.1 Scaled Dot-Product Attention
  • 输入由维度为 d k d_k dk 的查询和键以及维度为 d v d_v dv 的值组成
  • 计算查询与所有键的点积,将每个除以 d k \sqrt{d_k} dk ,并应用 s o f t m a x softmax softmax 函数以获得对值的权重
  • 同时计算一组查询的注意力函数,将其打包到矩阵 Q 中。键和值也打包到矩阵 K 和 V 中

    A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

    • 两种最常用的注意力函数是附加注意力和点积(乘法)注意力。除了缩放因子 1 d k \frac{1}{\sqrt{d_k}} dk 1 之外,点积注意力与我们的算法相同
    • 但点积注意力在实践中更快、更节省空间
3.2.2 Multi-Head Attention
  • 将查询、键和值进行线性投影 h h h 次并分别投影到 d k d_k dk d k d_k dk d v d_v dv 维度是有益的
  • 在这些投影版本的查询、键和值上同时执行注意力功能,得到 d v d_v dv 维度的输出值。这些值被串联起来,然后再次投影,得到最终的值

  • 多头注意力允许模型在不同位置以及不同的表示子空间中共同关注信息。单一注意力头的平均化抑制了这一点。

    M u l t i H e a d ( Q , K , V ) = C o n t a c t ( h e a d 1 , . . . , h e a d h ) W O                w h e r e      h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) MultiHead(Q,K,V)=Contact(head_1,...,head_h)W^O \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ where \ \ \ \ head_i=Attention(QW_i^Q,KW_i^K,VW_i^V) MultiHead(Q,K,V)=Contact(head1,...,headh)WO              where    headi=Attention(QWiQ,KWiK,VWiV)

    • 其中投影参数如下
      W i Q ∈ R d m o d e l × d k         W i K ∈ R d m o d e l × d k         W i V ∈ R d m o d e l × d v         W O ∈ R h d v × d m o d e l W_i^Q \in \mathbb{R}^{d_{model} \times d_k} \ \ \ \ \ \ \ W_i^K \in \mathbb{R}^{d_{model} \times d_k} \ \ \ \ \ \ \ W_i^V \in \mathbb{R}^{d_{model} \times d_v} \ \ \ \ \ \ \ W^O \in \mathbb{R}^{hd_v \times d_{model}} WiQRdmodel×dk       WiKRdmodel×dk       WiVRdmodel×dv       WORhdv×dmodel

    • 使用 h = 8 h = 8 h=8 个并行注意力层,或称为头部。对于每个头部,使用 d k = d v = d m o d e l / h = 64 d_k = d_v = d_{model}/h = 64 dk=dv=dmodel/h=64 。由于每个头部的降维,总计算成本与具有完整尺寸的单头注意力相似

3.2.3 Applications of Attention in our Model
  • 在“编码器-解码器注意力”层中,查询来自前一个解码器层,而存储键和值来自编码器的输出。这使得解码器中的每个位置都能关注输入序列中的所有位置
  • 编码器包含自注意力层。在自注意力层中,所有键、值和查询都来自同一位置,是编码器中前一层的输出。编码器中的每个位置可以关注编码器上一层中的所有位置
  • 解码器中的自注意力层允许解码器中的每个位置与解码器中的所有位置进行关注,包括该位置本身。我们需要防止信息在解码器中向左流动,以保持自回归性质。我们通过在缩放的点积注意力内部屏蔽(设置为 − ∞ -\infty )与非法连接相对应的softmax输入中的所有值来实现

3.3 Position-wise Feed-Forward Networks

  • 编码器和解码器的每个层都包含一个全连接的前馈网络,它分别且相同地应用于每个位置

  • 由两个线性变换组成,其中间有一个ReLU激活函数
    F F N ( x ) = M A X ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x)=MAX(0,xW_1+b_1)W_2+b_2 FFN(x)=MAX(0,xW1+b1)W2+b2

    • 虽然不同位置的线性变换是相同的,但它们在层与层之间使用不同的参数

3.4 Embeddings and Softmax

  • 利用学习到的嵌入将输入和输出的标记转换为 d d d 维向量
  • 使用通常学习的线性变换和 softmax 函数将解码器输出转换为预测的下一个令牌概率
  • 在两个嵌入层和 pre-softmax 线性变换之间共享相同的权重矩阵,将这些权重乘以 d m o d e l \sqrt{d_{model}} dmodel

3.5 Positional Encoding

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

  • 将“位置编码”添加到编码器和解码器堆栈底部的输入嵌入中

  • 位置编码有多种选择,有学习的和固定的
    P E ( p o s , 2 i ) = sin ⁡ ( p o s / 1000 0 2 i / d m o d e l ) P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s / 1000 0 2 i / d m o d e l ) \begin{align} PE_{(pos,2i)} = \sin (pos/10000^{2i/d_{model}}) \\ PE_{(pos,2i+1)} = \cos (pos/10000^{2i/d_{model}}) \end{align} PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)

    • 位置编码的每个维度对应于正弦(余弦)曲线。波长形成从 2π 到 10000·2π 的几何级数

4. Why Self-Attention

激励使用自注意力,我们考虑三个需求:

  • 每层的总计算复杂度

  • 可以并行化的计算量,以所需的最小顺序操作数来衡量

  • 网络中远程依赖之间的路径长度

    • 自注意力层通过恒定数量的顺序执行操作连接所有位置,而循环层需要 O(n) 顺序操作。就计算复杂度而言,当序列长度 n 小于表示维度 d 时,自注意力层比循环层更快
    • 自注意力可以限制为仅考虑输入序列中以相应输出位置为中心的大小为 r 的邻域。这会将最大路径长度增加到 O(n/r)

一层卷积层,卷积核宽度k小于n,不会连接所有的输入和输出位置对。要实现该连接,对于连续卷积核而言需要O(n/k)层卷积层。这样会增加网络中任意两个位置之间最长路径的长度

可分离卷积[在很大程度上降低了复杂度,为 O ( k ⋅ n ⋅ d + n ⋅ d 2 ) O(k · n · d + n · d^2) O(knd+nd2),即使k = n,可分离卷积的复杂度仍等于自注意力层和逐点前馈层的组合

5. Training

5.1 Optimizer

我们使用 Adam 优化器,其中 β 1 = 0.9 β_1 = 0.9 β1=0.9 β 2 = 0.98 β_2 = 0.98 β2=0.98 ϵ = 1 0 − 9 \epsilon = 10^{−9} ϵ=109。根据以下公式在训练过程中改变学习率
l r a t e = d m o d e l − 0.5 ⋅ m i n ( s t e p _ n u m − 0.5 , s t e p _ n u m ⋅ w a r m u p _ s t e p s − 1.5 ) lrate = d^{−0.5}_{model} · min(step\_num^{−0.5}, step\_num · warmup\_steps^{−1.5}) lrate=dmodel0.5min(step_num0.5,step_numwarmup_steps1.5)

5.2 Regularization

残差丢弃

  • 将 dropout 应用于每个子层的输出,然后将其添加到子层输入并进行归一化
  • 将 dropout 应用于编码器和解码器堆栈中的嵌入和位置编码的总和
  • 对于基本模型,我们使用 P d r o p = 0.1 P_{drop} = 0.1 Pdrop=0.1 的比率

标签平滑化

  • 在训练过程中,我们采用了值 ϵ l s = 0.1 \epsilon _{ls} = 0.1 ϵls=0.1 的标签平滑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/114916.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】五、贝叶斯分类

我想说:“任何事件都是条件概率。”为什么呢?因为我认为,任何事件的发生都不是完全偶然的,它都会以其他事件的发生为基础。换句话说,条件概率就是在其他事件发生的基础上,某事件发生的概率。 条件概率是朴…

rabbitmq的confirm模式获取correlationData为null解决办法

回调函数confirm中的correlationDatanull // 实现confirm回调,发送到和没发送到exchange,都触发 Override public void confirm(CorrelationData correlationData, boolean ack, String cause) {// 参数说明:// correlationData: 相关数据,可以在发送消息时,进行设置该参数// …

我在Vscode学OpenCV 处理图像

既然我们是面向Python的OpenCV(OpenCV for Python)那我们就必须要熟悉Numpy这个库,尤其是其中的数组的库,Python是没有数组的,唯有借助他库才有所实现想要的目的。 # 老三样库--事先导入 import numpy as np import c…

Python操作CMD大揭秘!轻松玩转命令行控制

导语: 命令行界面(Command Line Interface,简称CLI)是计算机操作系统中一种基于文本的用户界面,通过输入命令来与计算机进行交互。Python作为一门强大的编程语言,提供了丰富的库和模块,可以方便…

Android系统Launcher启动流程学习(一)init启动部分

init进程学习: 文件路径system/core/init/init.cpp 解析init.rc配置文件,首先开启ServiceManager和MediaServer等关键进程init进程fork启动Zygote服务进程处理子进程的终止(signal方式)提供属性服务的功能 int main(int argc, char** argv) {//注释一…

机器学习快速入门教程 Scikit-Learn实现

机器学习是什么? 机器学习是一帮计算机科学家想让计算机像人一样思考所研发出来的计算机理论。他们曾经说过,人和计算机其实本没有差别,同样都是一大批互相连接的信息传递和存储元素所组成的系统。所以有了这样的想法,加上他们得天独厚的数学功底,机器学习的前身也就孕育而生…

图像视觉特效处理工具:Boris FX Optics 2024.0.1

BorisFX光效插件Optics首发2024版:3大新功能详解 2023年9月15日,全球领先的视觉后期软件开发公司BorisFX推出了旗下知名软件Boris FX Optics的全新2024版本,这款备受后期处理爱好者喜爱的Photoshop插件和独立程序再次升级,为您的…

致远OA wpsAssistServlet任意文件读取漏洞复现 [附POC]

文章目录 致远OA wpsAssistServlet任意文件读取漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远OA wpsAssistServlet任意文件读取漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

香港金融科技周2023:AIGC重塑金融形态

10月31日,由香港财经事务及库务局与投资推广署主办的“香港金融科技周2023大湾区专场”盛大启幕。中国AI决策领先企业萨摩耶云科技集团创始人、董事长兼 CEO林建明受邀参加圆桌会议,与中国内地、香港以及全球金融科技行业顶尖人才、创新企业、监管机构和…

在前端实现小铃铛上展示消息

点击铃铛显示如下消息框&#xff1a; 如果点击消息&#xff0c;可以实现消息从列表中移除,并从铃铛总数上进行扣减对应的已读消息数。 关于以上功能的实现方式&#xff1a; <!-- 铃铛位置 --><i class"el-icon-bell" click"showPopover true"&…

阿里云OS系统Alibaba Cloud Linux 3系统的安全更新命令

给客户部署的服务&#xff0c;进入运维阶段&#xff0c;但是经常被客户监测到服务器漏洞&#xff0c;现在整理一下&#xff0c;服务器漏洞问题更新命令步骤。 服务器系统&#xff1a; 阿里云linux服务器&#xff1a;Alibaba Cloud Linux 3 漏洞类型和描述&#xff1a; #3214…

K8s Error: ImagePullBackOff 故障排除

Error: ImagePullBackOff 故障排除 1. 起因 起因是要在一组k8s环境下做个Prometheus的测试,当时虚拟机用完直接暂停了. 启动完master和node节点后重启了这些节点. 当检查dashboard时候发现Pod处于ImagePullBackOff状态,使用命令查看详细情况 kubectl describe pods -n kuber…

hadoop配置文件自检查(解决常见报错问题,超级详细!)

本篇文章主要的内容就是检查配置文件&#xff0c;还有一些常见的报错问题解决方法&#xff0c;希望能够帮助到大家。 一、以下是大家可能会遇到的常见问题&#xff1a; 1.是否遗漏了前置准备的相关操作配置&#xff1f; 2.是否遗的将文件夹(Hadoop安装文件夹&#xff0c;/dat…

力控关节性能指标

力控关节是一种用于机器人的关节&#xff0c;具有强大的力控制能力&#xff0c;通常用于执行需要精确力量控制的任务&#xff0c;例如装配、协作操作、力导引操作等。 电机的伺服驱动器通常包括三种控制环——位置环、速度环和电流环。虽然每种控制环的目的是控制电机性能的不同…

无声的世界,精神科用药并结合临床的一些分析及笔记(十)

目录 回 “ 家 ” 克服恐惧 奥沙西泮 除夕 酒与药 警告 离别 回 “ 家 ” 她的锥切手术进行的很顺利&#xff0c;按计划继续返回安定医院调节心理状态&#xff0c;病友们都盼着我们回“家”。当我俩跨入病区&#xff0c;大家都涌过来帮我们大包小包的拎着行李&#xff0…

景联文科技:高质量数据采集清洗标注服务,助力大语言模型红蓝对抗更加精准高效

红蓝对抗是一种测试和评估大语言模型的方法。通过模拟真实世界测试AI模型的潜在漏洞、偏见和弱点&#xff0c;确保大型语言模型的可靠性和性能。 在红蓝对抗过程中&#xff0c;由主题专家组成的专业团队负责模拟攻击和提供反馈&#xff0c;他们试图诱导AI模型产生不当行为&…

【Linux】基本指令-入门级文件操作(三)

目录 基本指令 14 head指令 15 tail指令 管道 16 find指令 17 grep指令 18 zip&#xff06;unzip指令 19 tar指令 20 su指令 总结 基本指令 14 head指令 功能&#xff1a;在屏幕上显示文件的内容&#xff0c;默认显示前10行&#xff0c;如果加上选项-n&#xff0c;则…

如何利用Jmeter从0到1做一次完整的压测?这2个步骤很关键!

压测&#xff0c;在很多项目中都有应用&#xff0c;是测试小伙伴必备的一项基本技能&#xff0c;刚好最近接手了一个小游戏的压测任务&#xff0c;一轮压测下来&#xff0c;颇有收获&#xff0c;赶紧记录下来&#xff0c;与大家分享一下&#xff0c;希望大家能少踩坑。 一、压…

uniapp 微信小程ios端键盘弹起后导致页面无法滚动

项目业务逻辑和出现的问题整理 新增页面 用户可以主动添加输入文本框 添加多了就会导致当前页面出现滚动条,这就导致ios端滚动页面的时候去点击输入框键盘抬起再关闭的时候去滚动页面发现页面滚动不了(偶尔出现),经过多次测试发现是键盘抬起的时候 主动向上滑动 100%出现这种问…