Attention is all you need 论文阅读

news2024/11/28 6:51:40

论文链接

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 的标签平滑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么我们要重视学历提升?因为“一纸文凭”就是我们重要的通行证!

在当下社会内卷越来越紧的时代,“一纸文凭”就是我们最重要的通行证,可能学历背景不够好,在职场上就难以获得发展,未来规划也无法成功。 学历提升的重要性 1.就业 现在的就业市场越来越看重一个人的学历出身,单位招…

【小白的Spring源码手册】 Bean的扫描、装配和注册,面试学习可用

目录 前言源码学习Bean配置1. 注解2. xml配置 Bean扫描、装配、注册1. 扫描2. 装配BeanDefinition3. 校验BeanDefinition4. 注册BeanDefinition 总结 前言 如今Spring框架功能众多,每次打开Spring源码,要么就是自顶向下从整个框架来了解Spring整体流程&…

YOLOv5:按每个类别的不同置信度阈值输出预测框

YOLOv5:按每个类别的不同置信度阈值输出预测框 前言前提条件相关介绍YOLOv5:按每个类别的不同置信度阈值输出预测框预测修改detect.py输出结果 验证修改val.py输出结果 参考 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更…

关于FastJSON序列化Bean时对get方法调用的细节

结论 使用JSON.toJSONString去序列化Bean的时候 FastJSON会把Bean里面的get开头,有返回值且没有参数的方法都调用一遍。 看代码 package org.example.domain;import lombok.Getter; import lombok.Setter;/*** program: parent_pro* description:* author: 渭水* c…

为何袁世凯要把“元宵节”改为“上元节”?

网民把春节除夕日排除在法定假期之外的相关热议,在微博评论区部分已被关闭。官方学者的解释是:“回归传统。” 这就令人难免要回顾历史,并发觉只有在袁世凯称帝之后,才有过取消“元宵节”改为“上元节”的笑话,因为“元…

数模国赛——多波束测线问题模型建立研究分析

第一次参加数模国赛,太菜了~~~~意难平 问题一 画出与测线方向垂直的平面和海底坡面的交线构成一条与水平面夹角为𝐀的斜线的情况下的示意图进行分析,将覆盖宽度分为左覆盖宽度和右覆盖宽度,求出它们与海水深度和𝐀、…

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日,第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家,共同探讨如何通过数字化转型赋能企业自身成长,实现信息化向数字化的升级转型。 在本次盛会上,纷享销客以其卓越的基本面、…

[激光原理与应用-75]:西门子PLC系列选型

目录 一、西门子PLC PLC系列 二、西门子PLC S7 1200系列 2.1 概述 2.2 12xx系列比较 三、西门子 PLC 1212C系列 四、主要类别比较 4.1 AC/DC/RLY的含义 4.2 AC/DC/RLY与DC/DC/DC 4.3 直流输入与交流输入比较 4.4 继电器输出与DC输出的区别 一、西门子PLC PLC系列 …

人工智能与卫星:颠覆性技术融合开启太空新时代

人工智能与卫星:颠覆性技术融合开启太空新时代 摘要:本文将探讨人工智能与卫星技术的融合,并介绍其应用、发展和挑战。通过深入了解这一领域的前沿动态,我们将展望一个由智能卫星驱动的未来太空时代。 一、引言 近年来&#xf…

【华为OD题库-018】AI面板识别-Java

题目 Al识别到面板上有N(1<N≤100)个指示灯&#xff0c;灯大小一样&#xff0c;任意两个之间无重叠。由于AI识别误差&#xff0c;每次识别到的指示灯位置可能有差异&#xff0c;以4个坐标值描述Al识别的指示灯的大小和位置(左上角x1,y1&#xff0c;右下角x2.y2)。请输出先行…

可视化协作软件有哪些?这10款神器助力团队合作!

可视化协作已经成为一个时下热门词汇&#xff0c;问题是对其并没有一个清晰的定义。有人认为它代表了一个云端环境&#xff0c;具有能够使办公室、混合办公和远程员工一起工作的功能。其他人则认为可视化协作不过是数字化白板而已。 随着这个术语变得更加流行&#xff0c;许多…

番外---9.0 firewall 网络

### 网络配制方式&#xff1a; 00&#xff1a;依据图形界面形式配置&#xff08;nmtui&#xff09;&#xff1b; 01&#xff1a;命令形式配置(nmcli)&#xff1b; 02&#xff1a;使用系统菜单配置&#xff1b; 00&#xff1a;依据图形界面形式配置&#xff08;nmtui&#xff0…

【Redis】进阶篇--用JAVA代码操作Redis

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Redis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Java连接Redis 1.导入pom依赖 ​2.Ja…

Spring Boot中解决跨域问题(CORS)

1. 跨域介绍 首先解释什么是跨域&#xff0c;跨域就是前端和后端的端口号不同&#xff1b;会产生跨域问题&#xff0c;这里浏览器的保护机制&#xff08;同源策略&#xff09;。 同源策略&#xff1a;前端和后端的协议、域名、端口号三者都相同叫做同源。 我们看一下不同源&am…

SAP SD 定价 删除不满足条件的的条件类型

项目上的需求&#xff1a;当销售订单行项目类别满足条件时&#xff0c;根据配置表&#xff0c;删除不满足条件的的条件类型。 直接上增强点&#xff0c;bapi也能跑到这个位置。

优思学院|领导力是什么?与管理能力有何不同?领导力也能够后天培养!

什么是领导力&#xff1f; 在现代商业世界中&#xff0c;领导力不再仅仅是指挥下属&#xff0c;而是一种复杂的技能&#xff0c;需要具备多方面的能力和特质。领导力是指一个人能够影响、激励和指导他人&#xff0c;以达成共同目标的能力。与管理能力相比&#xff0c;领导力更…

JavaScript:事件循环机制(EventLoop)

一、理解进程、线程 进程是操作系统中的基本概念之一&#xff0c;指的是一个正在运行中的程序&#xff0c;包括了程序的执行代码、数据、资源等。操作系统为每个进程分配一定的系统资源&#xff0c;例如内存空间、文件和设备等&#xff0c;以便进程能够正常运行。 线程是进程…

【jvm】虚拟机栈之方法返回地址

目录 一、说明二、方法退出三、代码示例四、截图示例 一、说明 1. 存放调用该方法的pc寄存器的值。 2. 一个方法的结束&#xff0c;有两种方式&#xff1a;正常执行完成和出现未处理的异常的非正常退出 3. 无论通过哪种方式退出&#xff0c;在方法退出后都返回到该方法被调用的…

【lvgl】linux开发板搭建环境

前言 本章介绍如何在linux开发板准备好了fb0的情况下移植lvgl。 抓取源码 git clone https://github.com/lvgl/lvgl.git git clone https://github.com/lvgl/lv_drivers.git git clone https://github.com/lvgl/lv_demos.git git clone https://github.com/lvgl/lv_port_lin…

【Docker】手把手教你使用Docker搭建kafka【详细教程】

目录 前提条件 1.安装Zookeeper 1.1运行ZooKeeper容器 2.运行Kafka容器 2.1启动Kafka容器 3.验证 3.1进入Kafka容器 3.2查看容器状态 3.3查看容器日志 3.4重新启动容器 3.5创建测试主题 前提条件 1. 安装Docker: 确保你已经在你的Windows机器上安装了Docker。你可以…