【论文阅读笔记】Attention Is All You Need

1.论文介绍

Attention Is All You Need
2017年 NIPS
transformer 开山之作 回顾一下经典,学不明白了
Paper Code

2. 摘要

显性序列转导模型基于包括编码器和解码器的复杂递归或卷积神经网络。性能最好的模型还通过注意力机制连接编码器和解码器。我们提出了一个新的简单的网络架构,Transformer,完全基于注意力机制,完全免除了递归和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上是上级的,同时具有更好的并行性,并且需要更少的训练时间。我们的模型在WMT 2014英语到德语翻译任务中达到了28.4 BLEU,比现有的最佳结果(包括集成)提高了2 BLEU以上。在WMT 2014英语到法语的翻译任务中,我们的模型在8个GPU上训练了3.5天后,建立了一个新的单模型最先进的BLEU得分为41.0,这是文献中最佳模型训练成本的一小部分。

Keywords:transformer,纯注意力机制

3.Introduction

递归模型通常沿输入和输出序列的符号位置沿着因子计算。将位置与计算时间中的步骤对齐,它们生成隐藏状态ht的序列,作为前一个隐藏状态ht-1和位置t的输入的函数。这种固有的顺序性质排除了训练示例中的并行化,这在较长的序列长度下变得至关重要,因为内存约束限制了示例之间的并行化。最近的工作通过因式分解技巧和条件计算实现了计算效率的显着提高,同时还提高了后者的模型性能。然而,顺序计算的基本约束仍然存在。注意力机制已经成为各种任务中引人注目的序列建模和转导模型的组成部分,允许在不考虑它们在输入或输出序列中的距离的情况下对依赖关系进行建模。然而,除了少数情况外,在所有情况下,这种注意力机制都与循环网络结合使用。在这项工作中,我们提出了Transformer,一个模型架构避免复发,而是完全依赖于注意力机制,以绘制输入和输出之间的全局依赖关系。Transformer支持更高的并行化,在8个P100 GPU上训练12小时后,翻译质量就能达到最新水平。

减少顺序计算的目标也构成了扩展神经GPU,ByteNet 和ConvS 2S 的基础,所有这些都使用卷积神经网络作为基本构建块,并行计算所有输入和输出位置的隐藏表示。在这些模型中,将来自两个任意输入或输出位置的信号关联起来所需的操作数量随着位置之间的距离而增长,对于ConvS 2S是线性的,而对于ByteNet是线性的。这使得学习远距离位置之间的依赖关系变得更加困难。在Transformer中,这被减少到恒定数量的操作,尽管由于平均注意力加权位置而降低了有效分辨率。自我注意力(英语:Self-attention),有时也被称为内部注意力(intra-attention),是一种将单个序列的不同位置联系起来以计算该序列的表示的注意力机制。自我注意已成功用于各种任务,包括阅读理解,抽象概括,文本蕴涵和学习任务独立的句子表征。端到端记忆网络基于循环注意机制而不是序列对齐的循环,并且已被证明在简单语言问题回答和语言建模任务中表现良好。然而,据我们所知,Transformer是第一个完全依靠自我注意力来计算其输入和输出的表示而不使用序列对齐的RNN或卷积的转换模型。

传统的递归模型通常沿着输入和输出序列的符号位置进行计算,这意味着它们需要依次处理每个符号的位置,这在处理长序列时会导致效率低下。
最近的一些研究工作尝试通过不同的技术来改善计算效率,但是仍然受到顺序计算的基本限制。注意力机制是一种常见的用于处理序列数据的方法,它允许模型在不考虑符号在输入或输出序列中的距离的情况下对它们之间的依赖关系进行建模。然而,传统的注意力机制通常与循环神经网络(RNN)结合使用,而且仍然受到顺序计算的限制。
为了克服这些限制,作者提出了一种名为Transformer的新型模型架构,它完全依赖于自我注意力机制来处理序列数据,而不使用循环神经网络或卷积。这使得Transformer能够更有效地处理长序列,并且支持更高的并行计算,因此能够更快地训练模型并获得更好的性能。Transformer已经在机器翻译等任务中取得了很好的表现。

4. 网络结构详解

大多数竞争性神经序列转导模型具有编码器-解码器结构。这里,编码器将符号表示的输入序列(x1,,xn)转换为连续表示序列z =(z1,…,Zn)。给定z,解码器然后生成输出序列(y1,…,ym)中的每一个。在每一步,模型都是自回归的,在生成下一个符号时,模型会使用先前生成的符号作为额外的输入。Transformer遵循这种整体架构,编码器和解码器均使用堆叠的自注意和逐点全连接层,结构如下图所示。
在这里插入图片描述
编码器和解码器堆栈
编码器:编码器由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)),其中Sublayer(x)是子层本身实现的函数。为了促进这些残差连接,模型中的所有子层以及嵌入层产生维度dmodel = 512的输出。

解码器:解码器也是由一个堆栈的N = 6相同的层。除了每个编码器层中的两个子层之外,解码器还插入第三子层,该第三子层对编码器堆栈的输出执行多头注意。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改了解码器堆栈中的自关注子层,以防止关注后续位置。这种掩蔽,结合输出嵌入偏移一个位置的事实,确保了位置i的预测只能依赖于小于i的位置处的已知输出。

注意力
注意力函数可以被描述为将查询和一组键值对映射到输出,其中查询、键、值和输出都是向量。输出被计算为值的加权和,其中分配给每个值的权重由查询与对应键的兼容性函数计算。

标度点积注意力:如下图所示,输入包含查询、键(维度dk)以及维度dv的值组成。计算查询与所有键的点积,将每个键除以 √ d k √dk dk,并应用softmax函数来获得值的权重。这些查询被打包到一个矩阵Q中。键和值也被打包到矩阵K和V中。我们计算输出矩阵为:
在这里插入图片描述
两种最常用的注意力函数是加法注意力和点积(乘法)注意力。点积注意力(计算相似度)与我们的算法相同,除了比例因子为 1 d k \frac{1}{\sqrt{d_k}} dk 1。加法注意力使用具有单个隐藏层的前馈网络计算兼容性函数。虽然两者在理论复杂度上相似,但点积注意力在实践中要快得多,空间效率更高,因为它可以使用高度优化的矩阵乘法代码来实现。虽然对于较小的dk值,这两种机制的表现相似,但在dk值较大的情况下,加法注意力优于点积注意力。我们怀疑,对于较大的dk值,点积的大小会变大,从而将softmax函数推到梯度非常小的区域。为了抵消这种影响,我们将点积缩放 1 d k \frac{1}{\sqrt{d_k}} dk 1
在这里插入图片描述
多头注意:我们发现,与使用 d m o d e l d_{model} dmodel维的键、值和查询来执行单个注意力函数。不同的是,使用不同的学习线性投影将查询、键和值分别线性投影h次到dk、dk和dv维是有益的。在这些查询、键和值的每个投影版本上,并行执行注意力函数,产生dv-dimensional输出值。这些数据被连接起来并再次投影,从而得到最终值,如下图所示。多头注意允许模型在不同的位置联合注意来自不同表示子空间的信息。对于一个单一的注意力头,平均化抑制了这一点。
在这里插入图片描述
其中投影是参数矩阵 W i Q ∈ R d m o d e l × d k W^Q_i ∈ R^{d_{model}×d_k} WiQRdmodel×dk W i K ∈ R d m o d e l × d k W^K_i ∈ R^{d_{model}×d_k} WiKRdmodel×dk W i V ∈ R d m o d e l × d v W^V_i ∈ R^{d_{model}×d_v} WiVRdmodel×dv W O ∈ R d v × d m o d e l W^O ∈ R^{dv ×dmodel} WORdv×dmodel。在这项工作中,采用h = 8平行注意层,或头。对于每一个,我们使用dk = dv = dmodel/h = 64。由于每个头的维数降低,总的计算成本是类似的单头注意与全维。
在这里插入图片描述
在“编码器-解码器注意”层中,查询Q来自先前的解码器层,并且存储器键K和值V来自编码器的输出。这使得解码器中的每个位置都可以覆盖输入序列中的所有位置。这模仿了序列到序列模型中典型的编码器-解码器注意力机制。编码器包含自注意层。在自关注层中,所有的键、值和查询都来自同一个地方,在这种情况下,是编码器中前一层的输出。编码器中的每个位置可以涉及编码器的前一层中的所有位置。类似地,解码器中的自关注层允许解码器中的每个位置关注解码器中的所有位置,直到并包括该位置。我们需要防止解码器中的冗余信息流,以保持自回归特性。我们通过屏蔽(设置为−∞)softmax输入中对应于非法连接的所有值来实现这一点。

位置前馈网络:除了注意力子层之外,编码器和解码器中的每一层都包含一个完全连接的前馈网络,该网络单独且相同地应用于每个位置。这包括两个线性变换,中间有一个ReLU激活。

虽然线性变换在不同位置是相同的,但它们在层与层之间使用不同的参数。另一种描述这种情况的方式是两个卷积,内核大小为1。输入和输出的维度为dmodel = 512,内层的维度为dff = 2048。

嵌入式和Softmax:与其他序列转换模型类似,使用学习的嵌入将输入令牌和输出令牌转换为维度dmodel的向量。还使用常用的学习线性变换和softmax函数将解码器输出转换为预测的下一个令牌概率。在我们的模型中,我们在两个嵌入层和pre-softmax线性变换之间共享相同的权重矩阵。在嵌入层中,我们将这些权重乘以嵌入模型。

位置编码
由于transformer不包含递归和卷积,为了让模型利用序列的顺序,必须注入一些关于序列中token的相对或绝对位置的信息。为此,在编码器和解码器堆栈的底部向输入嵌入添加“位置编码”。位置编码与嵌入具有相同的维度dmodel,因此两者可以相加。有许多位置编码的选择,学习和固定。在这项工作中,我们使用不同频率的正弦和余弦函数,
在这里插入图片描述
其中pos是位置,i是尺寸。即,位置编码的每个维度对应于正弦曲线。波长形成从2π到10000 · 2π的几何级数。之所以选择这个函数,是因为我们假设它可以让模型很容易地学会通过相对位置来参与,因为对于任何固定的偏移量k,PEpos+k都可以表示为PEpos的线性函数。我们还尝试使用学习的位置嵌入,发现两个版本产生了几乎相同的结果。我们选择正弦版本,因为它可以允许模型外推到比训练期间遇到的更长的序列长度。

为什么用自注意力
一个是每层的总计算复杂度。另一个是可以并行化的计算量,这是通过所需的最小顺序操作数来衡量的。第三个是网络中长距离依赖之间的路径长度。学习长程依赖性是许多序列转导任务中的关键挑战。影响学习这种依赖关系的能力的一个关键因素是前向和后向信号必须在网络中穿过的路径的长度。输入和输出序列中任意位置组合之间的路径越短,就越容易学习长程依赖性。

5.总结

它没有用递归和卷积,只用注意力机制。包含一个编码器一个解码器,每个都有N层,在最开始有位置编码实现序列结构信息。编码器的每层包含一个多头自注意力和一个前馈神经网络层。
解码器包含一个多头自注意力、一个前馈神经网络外加一层对输出进行多头自注意力。

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

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

相关文章

vacuum各种选项分析

1、vacuum和vacuum analyze和analyze的区别 我们加上verbose打印vacuum过程中的信息,可以发现: vacuum analyze过程中不但会vacuum表,还会收集表的统计信息,同时还会在表的年龄超过vacuum_freeze_table_age时,将表的年…

Tomcat Session集群---会话绑定

实验配置: 7-1安装Nginx 7-2和7-3安装Tomcat 1.配置7-1 1.做负载均衡,反向代理 [rootlocalhost ~]# vim /etc/nginx/nginx.conf17 http {18 upstream tomcat {19 server 192.168.91.102:8080;20 server 192.168.91.103:8080;2…

【iOS ARKit】PhysicsBodyComponent

在学习完 RealityKit 进行物理模拟的相关理论知识后,下面通过使用 PhysicsBodyComponent 组件进行物理模拟演示,主要代码如下所示,稍后对代码进行详细解析。 // // PhysicsBodyView.swift // ARKitDeamo // // Created by zhaoquan du on…

Docker安装蜜罐Hfish

前言 无意中发现公司的一台服务器被爆破,修改了密码,为了确定内网是否安装需要搭建一个蜜罐来看一下是否存在隐患。 如何安装Docker,请查看我另一篇文章 https://blog.csdn.net/l1677516854/article/details/136751211 一、拉取镜像 dock…

vscode创建文件夹跟在后面,怎么解决?

如果你遇到类似问题。 按照以下操作即可。

模拟量mV小信号隔离变送器

模拟量mV小信号隔离变送器:用于测量微弱小信号的小型仪表设备 一进一出模拟量mV小信号隔离变送器 ◆小体积,低成本,标准DIN35mm导轨安装方式 ◆三端隔离(输入、输出、工作电源间相互隔离) ◆高精度等级(0.1% F.S,0.2% F.S) ◆高线性度(0.1% F.S) ◆高隔离…

回到街头 - 数字时尚嘉年华:Web3的时尚未来,4月香港兰桂坊盛大启幕

随着区块链技术的不断发展,Web3世界正在逐渐改变我们的生活方式。作为这一变革的重要推动者,Vertex Labs荣幸地宣布,将在香港举办一场前所未有的“回到街头-数字时尚嘉年华”。这不仅是一场时尚与科技的完美结合,更是全球顶级IP和…

2024年中国AI服务器行业发展

环洋咨询Global Info Research的AI服务器市场调研报告提供AI服务器市场的基本概况,包括定义,分类,应用和产业链结构,同时还讨论发展政策和计划以及制造流程和成本结构,分析AI服务器市场的发展现状与未来市场趋势&#…

白话transformer(三):Q K V矩阵代码演示

在前面文章讲解了QKV矩阵的原理,属于比较主观的解释,下面用简单的代码再过一遍加深下印象。 B站视频 白话transformer(三) 1、生成数据 我们呢就使用一个句子来做一个测试, text1 "我喜欢的水果是橙子和苹果&…

HarmonyOS NEXT星河版——还是Android上套个壳吗?

这真的是我2024年听过最搞笑的话,就在前几天,居然还有人说鸿蒙OS就是安卓套个壳,简直无语! 你敢相信?就在前几天,我还听到有人说:鸿蒙os就是安卓上套一个壳。唉,我真是无语了。 哎&#xff0c…

上证指数000001行情数据API接口

# 测试:返回不超过10条数据(2年历史) https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker000001&order2Python示例 import requestsurl f"https://tsanghi.com/api/fin/index/CHN/daily?tokendemo&ticker000…

突破编程_前端_ACE编辑器(概述)

1 ACE 框架简介 ACE 框架是一个强大且灵活的前端文本编辑器框架,它提供了一套全面的 API 和丰富的功能,使得开发者能够轻松地在 Web 应用中集成功能强大的代码编辑器。ACE 编辑器不仅适用于在线代码编辑,还广泛应用于文档编辑、实时协作、富…

点餐平台网站|基于springboot框架+ Mysql+Java+Tomcat的点餐平台网站设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能实现 系统功能设计 数据库E-R图设计 lunwen参…

禁止ie自动跳转edge

因为微软对ie已经彻底停止维护了,对于没有升级系统的用户来说,会自动更新edge然后将ie给禁止使用。下面方法有效的解决windows10下,禁止ie自动跳转edge。 方法一:对于2023年10月份前的更新可用 打开控制面板,点击网络…

C#--进阶

CSharp进阶知识点学习 知识点汇总 简单数据结构类: Lesson1:ArrayList 练习: using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespac…

新手如何选择货币对进行交易。昂首资本给一个参考

通过上篇文章,各位投资者都知道货币对总共分为三组:主要货币对、交叉货币对和新兴市场货币对和异国货币对。但是哪种货币对对我们新手友好?这个很多投资者不清楚,今天昂首资本给各位投资者一个参考。 各位投资者应该知道每种货币…

SoloX - Android/iOS性能数据实时采集工具

文章目录 一、简介二、环境要求三、安装部署四、使用方法4.1 通过浏览器直接使用4.2 使用Python收集4.3 使用API收集 一、简介 SoloX是一个可以实时收集Android/iOS性能数据的web工具。 快速定位分析性能问题,提升应用的性能和品质。 无需ROOT/越狱,即插…

媒体播放器及媒体服务器软件Plex

什么是 Plex ? Plex 是一套媒体播放器及媒体服务器软件,让用户整理在设备上的有声书、音乐、播客、图片和视频文件,并通过流式传输至移动设备、智能电视和电子媒体播放器上。Plex 可用于 Windows、Android、Linux、OS X和 FreeBSD。 在接触 N…

目标检测——FPN与DSSD算法解读

由于FPN和DSSD网络结构比较相似,且发布时间非常相近,所以放一起解读 按时间来算FPN是先于DSSD在arxiv上发布的,FPN第一版是2016年12月9日,DSSD第一版是2017年1月23日,前后相差一个月。 YOLO系列其他文章: …

单片机设计-超声波视力保护仪的设计与实现

项目介绍 技术:C语言、单片机等 本设计利用超声波技术检测眼睛与书本的距离,调整看书位置,通过光敏检测判断环境光线强度是否适合阅读,并通过定时器设定阅读时长,以此解决人们由于看书姿势的错误,阅读环境…