论文模型:Transformer

目录

Transformer之前的经典算法模型

1.循环神经网络

2.带有注意力机制的循环神经网络

3.注意力权重函数

4.卷积神经网络

自注意力机制

自注意力函数

编码自注意力

解码自注意力

自注意力机制与注意力机制的区别

并行的注意力头

多头注意力

Transformer模型框架

模型框架

编码器

解码器

编码器与解码器的区别——Mask

Residuals

结论


  • Transformer之前的经典算法模型

1.循环神经网络

  • 原始序列预测

  • Encoder-Decoder

2.带有注意力机制的循环神经网络

  • 使用“query”向量(解码器状态)和“key”向量(所有编码器状态)
  • 对每个query-key对,计算权重
  • 使用softmax归一化

  • 通过加权和将value向量(通常是编码器状态,和key向量一样)组合在一起
  • 在模型的任何一个部分中使用

3.注意力权重函数

q代表query,k代表key

(1)Multi-layer Perceptron(Bahdanau et al. 2015)

灵活,在大量数据上表现良好

(2)Bilinear(Luong et al. 2015)

(3)Dot Product(Luong et al. 2015)

没有参数,但需要相同的大小

(4)Scaled Dot Product(Vaswani et al. 2017)

问题:dot product的数量级会随着维度的增加而变大

改进方法:除以向量的大小

4.卷积神经网络

Neural machine translation in linear time. Kalchbrenner et al.

  • 自注意力机制

自注意力函数

函数映射一个query和一组key-value对以输出每个权重。

注意力权重函数使用放缩后的点乘注意力:

编码自注意力

Attention注意力机制在序列对序列的学习中有着举足轻重的地位,在2014年的时候就被应用于机器翻译领域并卓有成效。在本篇论文中,为了克服循环神经网络和卷积神经网络的问题,研究者们第一次提出了完全不依赖于循环和卷积结构,单纯依靠注意力机制进行序列建模的方法,将其命名为Self-Attetion。Selt-Attention基于传统的注意力机制,将Attention看作是给定Query,Key和Value的一次查询,比如在图中,我们想要计算时刻的输出,以第二时刻的输入作为Query,以其他时刻的输入()作为Key,将Key和Query向量分别作线性变换后计算内积,这个内积衡量了第二时刻的信息与其他时刻信息的相关程度,我们把所有时刻的内积值作一次softmax,就得到了每个时刻的权重,这里我们取每个时刻的输入作为Value,对每个时刻的Value以刚刚计算的权重进行加权平均,输入一个前馈神经网络之后就得到了。注意到这里的内积结束以后还除掉了,是因为随着维度的增加,内积会增加,这样softmax梯度会变得很小,从而降低训练速度。

解码自注意力

自注意力机制与注意力机制的区别

注意力机制:

自注意力机制:

Attention的query来自外部序列,Self-attention的query来自原本的序列。

并行的注意力头

多头注意力

我们发现将query、key和value分别用不同的、学到的线性映射h倍到dkdkdv维效果更好,而不是用d model维的query、key和value执行单个attention函数。 基于每个映射版本的query、key和value,我们并行执行attention函数,产生dv 维输出值。 将它们连接并再次映射,产生最终值,如下图所示。

Multi-head attention允许模型的不同表示子空间联合关注不同位置的信息。 如果只有一个attention head,它的平均值会削弱这个信息。

其中映射为参数矩阵

采用h=8个并行attention层或头,对每个头,使用,由于每个头的大小减小,总的计算成本与具有全部维度的单个头attention相似。

  • Transformer模型框架

模型框架

Multi-head Attention是Transformer结构的核心部件。Transformer模型依然遵从了经典的Encoder-Decoder架构,左侧是编码器,右侧是解码器。

编码器

Encoder接收序列输入,在进行词嵌入的同时注入一些与序列位置有关的信息,这一步被称为Positional Encoding,这样我们就得到了输入序列的向量化表示。Encoder由若干(N=6)相同的层堆叠而成,每层内部有两个子层,首先是Multi-head Attention层,然后是一个简单的前馈神经网络层,在每个子层中,作者还使用了残差网络的shortconnection技术和Layer Normalization技术来增强深度神经网络的稳定性和运行表现。为了方便这些残差连接,模型中的所有子层以及嵌入层产生的输出维度都为

解码器

Decoder同样由若干(N=6)相同的层堆叠而成,这里与Encoder有两处不同,首先是Decoder在中间插入了一个针对Encoder输出信息进行Attention的Multi-head Attention层,这让Decoder可以全面利用Encoder抽取的特征,其次是在低端的Self-Attention层,由于Decoder生成序列只能基于已有的序列,所以Self-Attention不能观察在该时刻之后的信息,我们用一个mask做到这一点。最后Decoder将输出做一次线性变换后用softmax转换为概率分布,作为对下一时刻输出的概率预测。

编码器与解码器的区别——Mask

编码器对整个序列进行编码

解码器是挨个字符进行解码

Residuals

残差网络技术最早被应用于图像识别领域,因为计算机视觉通常都会使用相当深层的卷积神经网络作为解决方案,而深层的卷积神经网络训练十分困难,于是研究人员提出了残差网络的思想。简单来说,考虑神经网络的一个子部分,图中即两个layer,让这个子层的输出直接加上x,之后再经过非线性激活函数,这样,如果原本这个子层需要学习的函数是F(x),那么现在它要学习的函数就是F(x)+x。这么做能够大大减轻深度神经网络的学习压力。

在Transformer模型中,研究者们研究了残差技术的影响,实践表明,在有残差的情况下,Attention学到了很明显的对角线分布,但在没有残差的情况下Attention几乎没有起到什么作用。

结论

Transformer模型的成功主要体现在两个方面。

首先,Transformer模型相当有效,在机器翻译的两个数据集上,Transformer模型在BLEU指标下取得了当时最好的成绩。

其次,Transformer模型没有使用任何循环或卷积结构,它的理论复杂度和实际训练代价都远小于其他模型,理论上Self-Attention层的时间复杂度与序列长度n的平方成正比,而循环和卷积操作都与维数d的平方成正比,对于机器翻译这样的任务来说,序列长度往往远小于维数,Transformer模型的训练代价自然要小很多。

论文笔记《Attention Is All You Need》相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. php.ini 文件织梦在哪,dedecms模板文件在哪
  2. C++ open 打开文件(含打开模式一览表)
  3. 64位百度云 catia v6_逃狱兄弟百度云资源已更新,1080P高清资源分享64
  4. 家电换新就现在 国美发放“年中惠民消费大补贴”
  5. 降序排序_排序简单,应用不易,使用Excel排序的几点建议
  6. 敏捷开发框架_RingCentral Tech丨LeSS- 大规模敏捷开发框架实践心路
  7. 层次凝聚聚类算法(HAC)
  8. 《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理
  9. 微信小程序自定义字体及自定义图标问题说明
  10. 计算机网络属于什么结构,计算机网络体系结构是一种什么结构
  11. FSViewer 一款功能强大的看图软件
  12. html怎么设置章节,奇数页眉设置成章节名 假设此处需要显示的是章对应内容
  13. Oracle | Oracle初级全程学习笔记
  14. 思维导图怎么画简单好看的直观技巧
  15. 精选(26)面试官:讲讲你对ThreadLocal的理解
  16. 导出 excel 表格(纯前端)和下载excel 文件
  17. 解决bug 起止时间相同 搜索不到相关数据
  18. redis.set方法详解
  19. win7用软激活后今天失效,解决办法
  20. 为什么宝宝本来发高烧却手脚冰凉呢?

热门文章

  1. mariadb配置允许远程访问方式
  2. MVC5+EF6--1 创建Entity Framework数据模型
  3. union all关联两个不相关的表,按时间排序
  4. 用WPF开发仿QQ概念版之--------Loading预加载界面(闪屏窗体)
  5. 主板故障的分析和诊断
  6. 【LeetCode】【字符串】题号:*344. 反转字符串
  7. JS学习总结(3)——运算符/字符串
  8. HTML无语义元素span和div
  9. Arcpy实现dem数据主河网自动提取
  10. 4.在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** *********