学习人工智能:Attention Is All You Need-1-介绍;Transformer模型架构

news2024/9/20 4:46:47

Transformer模型是目前最成功的chatGPT,Sora,文心一言,LLama,Grok的基础模型。

《Attention Is All You Need》是一篇由Google DeepMind团队在2017年发表的论文,该论文提出了一种新的神经网络模型,即Transformer模型,该模型主要用于自然语言处理任务。

Transformer模型的创新点在于其使用了自注意力机制(self-attention mechanism)来取代传统的循环神经网络(RNN)和卷积神经网络(CNN)等结构。这使得模型在处理序列数据时具有更好的并行性和可扩展性,同时能够捕捉序列中各个位置之间的相对关系,进而更好地对序列进行建模。具体来说,自注意力机制允许模型同时计算输入序列中所有位置之间的关系权重,进而加权得到每个位置的特征表示。在Transformer模型中,自注意力机制被运用在了Encoder和Decoder两个部分中,分别用于编码输入序列和生成输出序列。

Transformer架构包含多层堆叠的编码器和解码器,其中编码/解码器内部包含了多头注意力机制(multi-head attention)、层级归一(layer norm)和残差结构(residual)。这种设计使得Transformer模型能够高效地处理序列数据,并且在机器翻译等序列转换任务中取得了优异的性能。此外,Transformer模型还具有广泛的应用前景,例如语音识别、图像处理和自然语言生成等任务。

Attention is all you needicon-default.png?t=N7T8https://arxiv.org/abs/1706.03762

论文摘要Abstract

目前主流的序列转换模型主要基于复杂的循环或卷积神经网络,其中包括编码器和解码器。表现最佳的模型还通过注意力机制连接编码器和解码器。我们提出了一种全新的简单网络架构——Transformer,该架构完全基于注意力机制,完全摒弃了循环和卷积。在两个机器翻译任务上的实验表明,这些模型不仅质量上乘,而且更易于并行化,所需的训练时间也大大减少。在WMT 2014英语至德语翻译任务中,我们的模型取得了28.4的BLEU评分,超过了现有最佳结果(包括模型集成)超过2个BLEU评分。在WMT 2014英语至法语翻译任务中,我们的模型在八个GPU上训练3.5天后建立了新的单一模型最高BLEU评分41.0,这仅仅是文献中最佳模型训练成本的一小部分。

1,介绍Introduction

循环神经网络,特别是长短时记忆网络(LSTM)和门控循环单元(GRU),已牢固确立为序列建模和转导问题(如语言建模和机器翻译)中的最先进方法。从那时起,人们付出了大量努力来不断推动循环语言模型和编码器-解码器架构的边界。

同等贡献。名单顺序是随机的。雅各布(Jakob)提出了用自注意力机制替换循环神经网络(RNNs)的想法,并开始着手评估这一想法。阿什什(Ashish)与伊利亚(Illia)一起设计和实现了第一个Transformer模型,并在这项工作的各个方面都发挥了至关重要的作用。诺姆(Noam)提出了缩放点积注意力、多头注意力和无参数位置表示,并成为了几乎参与每一项细节的另一个人。尼基(Niki)在我们的原始代码库和tensor2tensor中设计、实现、调优和评估了无数模型变体。利昂(Llion)也尝试了新颖的模型变体,负责我们最初的代码库,以及高效的推理和可视化。卢卡斯(Lukasz)和艾丹(Aidan)花费了无数漫长的时间设计和实现tensor2tensor的各部分,替换了我们早期的代码库,大大提高了结果,并极大地加速了我们的研究。

循环模型通常将计算分解为输入和输出序列中符号位置的因素。通过将位置与计算时间步骤对齐,它们会生成一个隐藏状态序列ht,这是前一个隐藏状态ht-1和位置t的输入的函数。这种固有的序列性质排除了训练示例内的并行化,这在序列长度较长时变得至关重要,因为内存限制会限制跨示例的批处理。最近的工作通过分解技巧[18]和条件计算[26]显著提高了计算效率,同时也在后者的情况下提高了模型性能。然而,顺序计算的基本约束仍然存在。
在各种任务中,注意力机制已成为引人注目的序列建模和转导模型不可或缺的一部分,它允许建模依赖关系,而不考虑输入或输出序列中的距离[2,16]。然而,除了少数情况[22]外,这种注意力机制都是与循环网络结合使用的。
在这项工作中,我们提出了Transformer,这是一种模型架构,它摒弃了循环,而是完全依赖注意力机制来绘制输入和输出之间的全局依赖关系。Transformer允许进行更多的并行化,并在八个P100 GPU上仅训练十二个小时后就能达到翻译质量的新水平。

2,背景Background

减少顺序计算的目标也构成了扩展神经GPU(Extended Neural GPU)[20]、ByteNet[15]和ConvS2S[8]的基础,它们都使用卷积神经网络作为基本构建块,为所有输入和输出位置并行计算隐藏表示。在这些模型中,将两个任意输入或输出位置的信号关联起来所需的操作数量随着位置之间的距离而增长,对于ConvS2S是线性增长,对于ByteNet是对数增长。这使得学习远距离位置之间的依赖关系变得更加困难。在Transformer中,这被减少到固定数量的操作,尽管由于平均了注意力加权的位置而降低了有效分辨率,但我们通过第3.2节描述的多头注意力来抵消这一影响。


自注意力,有时称为内部注意力,是一种注意力机制,用于关联单个序列中不同位置,以计算序列的表示。自注意力已成功用于各种任务,包括阅读理解、抽象摘要、文本蕴含和学习任务无关的句子表示。


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


然而,据我们所知,Transformer是第一个完全依赖自注意力来计算其输入和输出的表示,而不使用序列对齐的RNN或卷积的转导模型。在以下部分中,我们将描述Transformer,解释自注意力的动机,并讨论其相对于其他模型的优势。

3,模型架构Model Architecture

大多数具有竞争力的神经序列转导模型都具有编码器-解码器结构[5,2,29]。在这里,编码器将符号表示(x1,...,xn)的输入序列映射为连续表示(z1,...,zn)的序列。给定z,解码器则逐个元素地生成符号的输出序列(y1,...,ym)。在每个步骤中,模型都是自回归的[9],在生成下一个符号时,将先前生成的符号作为额外输入。

Transformer遵循这种总体架构,对编码器和解码器都使用了堆叠的自注意力和逐点全连接层,分别如图1的左半部分和右半部分所示。

3.1 编码器和解码器堆叠

编码器:编码器由N=6个相同的层堆叠而成。每个层都有两个子层。第一个是多头自注意力机制,第二个是简单的、位置敏感的全连接前馈网络。我们在每个子层周围都使用了残差连接[10],然后是层归一化[1]。也就是说,每个子层的输出是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是子层本身实现的函数。为了便于这些残差连接,模型中的所有子层以及嵌入层都产生维度为dmodel=512的输出。

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

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

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

相关文章

十七 超级数据查看器 讲解稿 条目内容

十七 超级数据查看器 讲解稿 条目内容 ​​点击此处 以新页面 打开B站 播放当前教学视频 点击访问app下载页面 百度手机助手 下载地址 大家好,今天我们讲解超级数据查看器条目内容设置 条目内容设置能够 设置条目的顺序 显示隐藏 标题 需要下载本系统的…

OpenLayers基础教程——使用WebGL加载海量数据(1)

1、前言 最近遇到一个问题:如何在OpenLayers中高效加载海量的场强点?由于项目中的一些要求,不能使用聚合的方法加载。一番搜索之后发现:OpenLayers中有一个WebGLPoints类,使用该类可以轻松应对几十万的数据量&#xf…

SAP Business Application Studio(BAS)中开发Fiori App的基础知识

1. SAP Fiori Tools SAP Fiori Tools是一套用于支持SAP Fiori应用开发的工具,包括应用模板、可视化编辑器、代码生成、应用预览和集成测试工具等。这些工具可以帮助开发者更快速、更简单地创建和维护SAP Fiori应用。SAP Fiori Tools 可与SAP的开发环境(…

Qt 不同数据类型转换

一.不同类型数据转换示例&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QJsonDocument> #include <QJsonObject> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication::setAttribute…

用OceanBase binlog service 轻松进行数据回滚

背景 在日常的数据库运维过程中&#xff0c;难免会遭遇数据误操作的情形&#xff0c;比如因疏忽而执行了非预期的delete或update操作&#xff0c;这时就需要进行数据回滚。如果在OceanBase中启用了回收站功能&#xff0c;并设置了合适的undo_retention&#xff0c;那么我们可以…

【Frida】10_用鼠标自动标记棋盘上的雷区(一键过关)

&#x1f6eb; 系列文章导航 【Frida】 00_简单介绍和使用 https://blog.csdn.net/kinghzking/article/details/123225580【Frida】 01_食用指南 https://blog.csdn.net/kinghzking/article/details/126849567【Frida】02_常见API示例及功能函数封装&#xff08;snippets&#…

【爬虫】web自动化和接口自动化

专栏文章索引&#xff1a;爬虫 目录 一、介绍 二、推荐 1.接口自动化 2.Web自动化 一、介绍 爬虫技术一般可以分为两种类型&#xff1a;接口自动化和web自动化。下面是它们的简要介绍&#xff1a; 1.接口自动化 接口自动化技术的主要目的是通过模拟HTTP请求来实现自动化…

如何在Linux系统部署Dupal CMS结合内网穿透实现无公网IP访问web界面

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&a…

十九、软考-系统架构设计师笔记-真题解析-2021年真题

软考-系统架构设计师-2021年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.前趋图(Precedence Graph)是一个有向无环图&#xff0c;记为&#xff1a;→(Pi,Pj)Pi must Complete Before Pj may strat), 假设系统中进程P{P1, P2,P3,P4, P5, P6, P7, P8}&#xff0c; 且进程的…

软考高级:UML定时图概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

电子证书查询系统如何制作证书?

1、制作空白证书&#xff1a;网上找一张证书背景图&#xff0c;用PPT工具或photoshop等图片处理工具&#xff0c;将证书上固定的文字打上&#xff0c;有公章的话贴上电子公章&#xff0c;不固定的内容留空白。 2、制作电子证书&#xff1a;上传前一步制作好的空白证书&#xf…

浅谈如何自我实现一个消息队列服务器(2)——实现 broker server 服务器

文章目录 一、实现 broker server 服务器1.1 创建一个SpringBoot项目1.2 创建Java类 二、硬盘持久化存储 broker server 里的数据2.1 数据库存储2.1.1 浅谈SQLiteMyBatis 2.1.2 如何使用SQLite 2.2 使用DataBaseManager类封装数据库操作2.3 文件存储消息2.3.1 存储消息时&#…

【leetcode热题】轮转数组

给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…

react-jsx

react04 jsx语法 - 01 基础知识&#xff1a; jsx javascript xml(html) 把js和heml标签混合到一起 react视图编写及构建的简要流程 &#xff1a; 如何在react中使vs code支持格式化和快捷键提示&#xff1a;1, 2,修改文件后缀为jsx&#xff0c;因为webpack的打包规则中可以…

智能农业:农业技术与效益

文章目录 什么是智慧农业&#xff1f;智能农业的好处智能农业技术物联网智能农业解决方案智能农业软件和移动应用程序智能农业的挑战作物监测卫星智能农业解决方案使用卫星数据数据测量历史数据和预测在便携式设备上使用应用程序 智能农业的未来参考 现代技术的发展影响着人类活…

小车侧方位停车过程的动态模拟matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 小车侧方位停车过程的动态模拟matlab仿真。仿真得到小车的停车动画&#xff0c;小车移动的xy轴坐标以及角度变换。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLA…

构建空间场景轻应用,Mapmost Alpha来啦【文末赠书(10本)--第二期】

文章目录&#xff1a; 一、Mapmost Alpha 介绍二、Mapmost Alpha应对数字孪生业务痛点解决之道2.1 Mapmost Alpha 提供海量城市底板2.2 Mapmost Alpha 提供便捷的配置管理工具2.3 Mapmost Alpha 提供一键式部署发布和分享 三、沉浸式体验Mapmost Alpha3.1 创建应用3.2 新手指导…

【C语言基础】:字符串函数(二)

文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 上节回顾&#xff1a;【C语言基础】&#xff1a;字符函数和字符串函数 …

【蓝桥杯】RMQ(Range Minimum/Maximum Query)

一.概述 RMQ问题&#xff0c;是求区间最大值或最小值&#xff0c;即范围最值问题。 暴力解法是对每个询问区间循环求解&#xff0c;设区间长度n&#xff0c;询问次数m&#xff0c;则复杂度是O ( nm )。 一般还可以使用线段树求解&#xff0c;复杂度是O(mlogn)。 但还有一种…

uni-app纵向步骤条

分享一下项目中自封装的步骤条&#xff0c;存个档~ 1. 话不多说&#xff0c;先看效果 2. 话还不多说&#xff0c;上代码 <template><!-- 获取一个数组&#xff0c;结构为[{nodeName:"流程发起"isAudit:falsetime:"2024-02-04 14:27:35"otherDat…