《Attention Is All You Need》论文精读,并解析Transformer模型结构

2023-11-18

建议:结合《Attention Is All You Need》论文观看此文章。

目录

一、引言

二、结论

三、模型结构解析

(1)多头注意力模型结构

(2)Msked Multi-Head Attention

(3)相对位置编码

(4)为什么对点积注意力进行缩放

四、调整模型的结构超参数

五、注意力可视化


一、引言

主导的序列转导模型是基于复杂的递归或卷积神经网络,其中包括一个编码器和一个解码器。性能最好的模型也通过注意机制连接编码器和解码器。我们提出了一个新的简单的网络体系结构,Transformer,完全基于注意机制,不需要重复和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上要优越的同时,可并行化程度更高,训练所需时间也不大。我们的模型在WMT 2014英德翻译任务上实现了28.4 BLEU,比现有的包括汇编在内的最佳结果提高了2 BLEU以上。在WMT2014英译法任务上,我们的模型在8台GPU(官网复现的代码支持TPU)上训练3.5天后,建立了一个新的单模型最先进的BLEU评分为41.8,仅占文献中最好模型的训练成本的一小部分。我们表明,Transformer通过成功地将其应用到英语选区句法分析中,无论是在训练数据较大的情况下,还是在训练数据有限的情况下,都很好地概括了其他任务。

二、结论

在本工作中,我们提出了第一个完全基于注意的序列转导模型Transformer,用多头自注意替换了编码器-解码器结构中最常用的递归层。

对于翻译任务,Transformer可以比基于递归或卷积层的架构训练得更快。在WMT 2014英译德和WMT 2014英译法的翻译任务上,我们实现了一种新的艺术状态。在前一个任务中,我们最好的模型甚至比之前报道的所有集合都要好。

我们对基于注意力的模型的未来感到兴奋,并计划将其应用于其他任务。我们计划将Transformer扩展到文本以外的输入和输出模式问题,研究局部的、受限的注意机制,以有效处理图像、音频和视频等大的输入和输出。使生成少序列化是我们的另一个研究目标。

三、模型结构解析

Transformer的模型结构如下图所示,通过把“My money don't jiggle jiggle”翻译成“我的钱不摇晃摇晃”来分析Transformer的工作过程。

训练过程中,每一次解码器的输出与数据集中的翻译值通过交叉熵计算错误率(一次送入batch_size大小个token,计算错误率),从而对权重进行更新。

预测过程,同训练过程相似,即输入英文句子,一个词一个词的翻译成汉语句子。

:解码器的输出与数据集中的翻译值作比较,即经过Softmax函数后,输出最大概率的一个预测词,预测词与真实值作比较。

编码器的输入和输出(一次输出一个翻译词汇):

自回归:在生成下一个符号时,将前面生成的符号作为附加输入。
第一次输入<bos>,                                      输出<bos> 我 的
第二次输入<bos> 我 的,                             输出<bos> 我 的 钱
第三次输入<bos> 我 的 钱,                        输出<bos> 我 的 钱 不 
第四次输入<bos> 我 的 钱 不 摇 晃,          输出<bos> 我 的 钱 不 摇 晃
第五次输入<bos> 我 的 钱 不 摇 晃 摇 晃, 输出<bos> 我 的 钱 不 摇 晃 摇 晃

(1)多头注意力模型结构

假设数据集中语句的最长序列是10,输入“My money don't jiggle jiggle”,经过独热码后的矩阵大小为 [batch_size, 5, 512],再经过Padding后的矩阵大小为 [batch_size, 10, 512],参数矩阵大概可以描述为以下形式:

 缩放点击注意力汇聚和多头注意力机制结构,如下图所示:

  首先分析一个注意力头的工作过程:

然后分析多个注意力头的工作过程:(此处是 8 heads)

原文:我们没有用512维的键、值和查询执行单一的注意函数(即没有选用单一的注意力头),而是发现将查询、键和值经h次不同的、学到的线性投影分别线性投影到dk、dk和dv维是有利的。在这些查询、键和值的每个线性投影后,我们并行执行注意函数,产生dv维输出值,Concat后,再次进行投影,得到最终的值。

注:

  • 缩放点积注意力要求Q、K、V的长度要求一致
  • 输入的Q、K、V参数矩阵相同,可能这就是称为自注意的原因(应该是这样理解)

(2)Msked Multi-Head Attention

为了方便一次性输入batch_size个词汇或句子,把 Output(Shifted right) 中的目标词汇后方的需要预测的词汇mask掉,即把下方的两个矩阵相乘,便可实现并行化处理多个句子:

(3)相对位置编码

相对位置信息如下:

Pos是位置,i是维度,d_{}_{model}定义为512。

下面证明选用正余弦函数进行相对位置的编码后,词汇的相对位置是线性关系。

(4)为什么对点积注意力进行缩放

问题:样本维度d_{k}越大,点积增长的幅度越大,会将Softmax函数推入梯度极小的区域,从而使训练难度增大。(具体参考softmax函数的梯度函数,即导数)

解决:构建缩放点积注意力,对QK^{T}的点积乘以\frac{1}{\sqrt{d_{k}}},进行点积的缩放。

四、调整模型的结构超参数

下面的表格中,从左往右的超参数分别表示:

  1. 编码器块和解码器块的个数
  2. 输入输出的维度(宽度)
  3. 前馈网路的隐藏层维度
    原文:The mensionality of input and output is dmodel= 512, and the inner-layer has dimensionality dff= 2048.
  4. 注意力头的个数
  5. 一个注意力头的k的维度
  6. 一个注意力头的v的维度
  7. 舍弃比率
  8. 学习率
  9. 训练步数
  10. 评价指标

五、注意力可视化

不同颜色,代表不同的注意力头。

线条的暗淡程度,代表给Value分配权重的大小。

(1)许多注意头注意到动词 ‘使’ 的一个遥远依赖性,完成了短语 ‘使…更困难’ 。

(2)上面是一个注意力头的所有注意力可视化图;下面的图把 “its” 单独拿出来进行观察,其注意力权重很突出。

 (3)两个不同注意力头学到的不同注意力及其权重。

 >>>如有疑问,欢迎评论区一起探讨。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Attention Is All You Need》论文精读,并解析Transformer模型结构 的相关文章

随机推荐

  • 消息的顺序消费

    首先 需要保证顺序的消息要发送到同一个messagequeue中 其次 一个messagequeue只能被一个消费者消费 这点是由消息队列的分配机制来保证的 最后 一个消费者内部对一个mq的消费要保证是有序的 我们要做到生产者 messag
  • 强化学习笔记(5)-回合策略梯度算法

    以下为阅读 强化学习 原理与python实现 这本书第七章的学习笔记 在之前学习到的强度学习方法中 都是通过学习最优价值函数来获得最优策略 现在换一个角度来思考 我们可以通过用含参函数来近似最优策略 并在迭代中更新参数值 这就是策略梯度算法
  • C#、C++、Java、Python选择哪个好?

    一个好的程序员不能把自己绑定在一种语言上 不能把自己就定义为JAVA程序员 C 程序员 等等 语言没有高下之分 只有适用的场景 好的程序员 应该有很快学会一种新的语言 并解决实际问题的能力 在我二十年的程序生涯中 有过不止一次 因为项目 一
  • Oracle服务器性能全面调整攻略

    Oracle服务器性能全面调整攻略 Oracle服务器是高度可调的数据库系统 它提供了许多特性 正确地设置和调整可以有效提高系统性能 因此 对系统进行调整是数据库管理员的主要责任 由于应用设计人员很少或根本不会给数据库管理人员提供必要的信息
  • flink学习42:tableAPI的join、union、排序、插入操作

    连接 内连接 外连接 集合操作 union 获取交集 获取差集 in 操作 排序操作 插入操作
  • 交友盲盒完整版——详细源码分享

    现在目前比较火热的一款app交友盲盒是通过uniapp springboot技术来制作的 原理其实很简单 大家一看便知 大家自行下载到手机里面去使用即可 不支持ios手机 演示地址 https share weiyun com l3ovzt
  • 基于python+flask实现视频数据可视化

    项目概要 对视频的标题 播放量 弹幕量以及收藏量 视频分类等数据进行分析 通过flask项目中的python代码进行数据库连接进行前后端交互功能的实现 通过layui框架进行系统前端页面的功能实现 通过knn分类算法以及k均值聚类算法对爬取
  • lterator 迭代器 静态属性Symbol.iterator Symbol(Symbol.iterator)

    lterator迭代器 迭代模式 提供一种方法是可以顺序获得聚合对象中的各个元素 是一种最简单也最常见的设计模式 他可以让用户透过特定的接口巡防集合中的每一个元素而不用了解底层的实现 迭代器简介 依照迭代模式的思想而实现 分为内部迭代器和外
  • java I/O流的一些常用操作

    java i o 的一些操作 文件流 FileInputStream FileOutputStream FileReader FileWriter 这四个类是专门操作文件流的 用法高度相似 区别在于前面两个是操作字节流 后面两个是操作字符流
  • 立创EDA专业版(网页,全在线模式)开源导入立创EDA专业版(PC端,半离线模式)

    我个人从一开始就使用立创EDA专业版的半离线模式 是因为既可以离线画板 又可以在在线的时候使用系统库 但难免完美 就不如将立创EDA专业版 网页 全在线模式 导入立创EDA专业版 PC端 半离线模式 时就很麻烦 下面来说下怎么操作 在立创E
  • Ecshop如何解决Deprecated: preg_replace()报错 (第一章)

    今天安装Ecshop后 运行出现各种问题 其中 Deprecated preg replace 之类的报错最多 下面贴出解决方案 错误原因 preg replace 函数中用到的修饰符 e 在 PHP5 5 x 中已经被弃用了 如果你的PH
  • js正则表达式

    w3school 正则表达式 一 正则表达式的使用 首先 我们一般使用正则表达式用来进行验证邮箱手机号等 进行匹配 1 编写一个正则表达式 var rule 我是一个正则表达式 2 使用正则表达式来进行验证 var isrule rule
  • 解决使用echarts时警告There is a chart instance already initialize on the dom.的两种方法

    第一种 使用dispose 方法清除实例 封装的方法 在每次使用init 方法创建echarts实例前调用即可 判断dom是否存在 这里传入的name是实例 const domIsExistence name gt if name null
  • CSS 中的响应单元

    响应式设计不仅仅是一个流行词 它是网络开发的一个重要方面 确保您的网页在各种设备上无缝地显示和运行至关重要 这种实践的基石之一是在 CSS 中使用响应式单元 在本文中 我们将深入研究响应式单元的有趣世界 并探讨它们如何使 Web 开发人员能
  • jspdf

    使用html2canval将html转为canvas 再使用jspdf实现导出pdf 需设置要导出的每一页为1400 900 要导出pdf的父元素容器不能有隐藏和滚动条 隐藏部分html2canval无法截屏转为canvas functio
  • Java PECS(Producer Extends Consumer Super)原则

    在看 Alibaba 开发手册时遇到 PECS 原则 刚开始阅读时感觉比较绕 也搜索了一些博文参考 个人觉得 Stackoverflow 的这篇文章比较实用 What is PECS Producer Extends Consumer Su
  • 「快学Docker」探索Docker的优势和多样化用途

    快学Docker 探索Docker的优势和多样化用途 Docker的优势 Docker的多样化用途 总结 Docker的优势 环境一致性 传统软件开发和部署中 环境配置常常是一个棘手的问题 不同环境之间可能存在差异 导致问题难以定位和解决
  • spring3.0.3+hibernate3.5.4+JOTM2.2.1实现JTA事务管理

    本文参考资料 http java e800 com cn articles 2007 417 1176746498587392322 1 html 实验方法 本文设置两个entity Topic对应test1数据库 Post对应test2数
  • Flutter 使用JSONToDart 生成bean文件

    1 首先安装插件 进入flile setting plugins 2 然后搜索安装jsontodart 之后重启ide使其生效 3 在你需要使用的地方直接鼠标右键 或者使用快捷键Alt Shift D 4 然后会出现这样一个弹窗 输入你要用
  • 《Attention Is All You Need》论文精读,并解析Transformer模型结构

    建议 结合 Attention Is All You Need 论文观看此文章 目录 一 引言 二 结论 三 模型结构解析 1 多头注意力模型结构 2 Msked Multi Head Attention 3 相对位置编码 4 为什么对点积