Attention Is All You Need(Transformer)原理小结

1. 前言

谷歌在2017年发表了一篇论文名字教Attention Is All You Need,提出了一个只基于attention的结构来处理序列模型相关的问题,比如机器翻译。传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。

2. Transformer模型结构

Transformer的主体结构图:

2.1 编码器解码器

模型分为编码器解码器两个部分。

  • 编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是\(d_{model}\)。
  • 解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,如图中所示同样也用了residual以及layer normalization。具体的细节后面再讲。

2.2 输入层

编码器和解码器的输入就是利用学习好的embeddings将tokens(一般应该是词或者字符)转化为d维向量。对解码器来说,利用线性变换以及softmax函数将解码的输出转化为一个预测下一个token的概率。

2.3 位置向量

由于模型没有任何循环或者卷积,为了使用序列的顺序信息,需要将tokens的相对以及绝对位置信息注入到模型中去。论文在输入embeddings的基础上加了一个“位置编码”。位置编码和embeddings由同样的维度都是\(d_{model}\)所以两者可以直接相加。有很多位置编码的选择,既有学习到的也有固定不变的。

2.4 注意力模型

2.4.1 Scaled attention

论文中用的attention是基本的点乘的方式,就是多了一个所谓的scale。输入包括维度为\(dk\)的queries以及keys,还有维度为\(d_v\)的values。计算query和所有keys的点乘,然后每个都除以\(\sqrt{d_k}\)(这个操作就是所谓的Scaled)。之后利用一个softmax函数来获取values的权重。
实际操作中,attention函数是在一些列queries上同时进行的,将这些queries并在一起形成一个矩阵\(Q\)同时keys以及values也并在一起形成了矩阵\(K\)以及\(V\)。则attention的输出矩阵可以按照下述公式计算:

\[
Attention(Q,K,V) = softmax({QK^T\over {\sqrt {d_k}}})V
\]

2.4.2 Multi-Head Attention

本文结构中的Attention并不是简简单单将一个点乘的attention应用进去。作者发现先对queries,keys以及values进行\(h\)次不同的线性映射效果特别好。学习到的线性映射分别映射到\(d_k\),\(d_k\)以及\(d_v\)维。分别对每一个映射之后的得到的queries,keys以及values进行attention函数的并行操作,生成\(dv\)维的output值。具体结构和公式如下。

\[
MultiHead(Q,K,V) = Concat(head_1,...,head_h)
\]

\[
where: head_i = Attention(Q{W_i}^Q,K{W_i}^K,V{W_i}^V)
\]

2.4.3 模型中的attention

Transformer以三种不同的方式使用了多头attention。

  1. 在encoder-decoder的attention层,queries来自于之前的decoder层,而keys和values都来自于encoder的输出。这个类似于很多已经提出的seq2seq模型所使用的attention机制。
  2. 在encoder含有self-attention层。在一个self-attention层中,所有的keys,values以及queries都来自于同一个地方,本例中即encoder之前一层的的输出。
  3. 类似的,decoder中的self-attention层也是一样。不同的是在scaled点乘attention操作中加了一个mask的操作,这个操作是保证softmax操作之后不会将非法的values连到attention中。

之前说模型由堆叠在一起的六个层组成,每层由两个支层,attention层就是其中一个,而attention之后的另一个支层就是一个前馈的网络。公式描述如下。

2.4.4 Feed Foreword

每层由两个支层,attention层就是其中一个,而attention之后的另一个支层就是一个前馈的网络。公式描述如下。
\[
FFN(x) = max(0,xW_1 + b_1)W_2 + b_2
\]

3. 总结

模型的整体框架基本介绍完了,其最重要的创新应该就是Self-Attention和Multi-Head Attention的架构。在摒弃传统CNN和RNN的情况下,还能提高表现,降低训练时间。Transformer用于机器翻译任务,表现极好,可并行化,并且大大减少训练时间。并且也给我们开拓了一个思路,在处理问题时可以增加一种结构的选择。

(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected])

原文地址:https://www.cnblogs.com/huangyc/p/9813907.html

时间: 2024-10-15 07:40:33

Attention Is All You Need(Transformer)原理小结的相关文章

Bagging与随机森林算法原理小结

在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging与随机森林算法做一个总结. 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力. 1.  bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图. 从上图可以看出,

集成学习之Adaboost算法原理小结

在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系.前者的代表算法就是是boosting系列算法.在boosting系列算法中, Adaboost是最著名的算法之一.Adaboost既可以用作分类,也可以用作回归.本文就对Adaboost算法做一个总结. 1. 回顾boosting算法的基本原理 在集成学习原理小结中,我们已经讲到了boosting算法系列的基本思想,如下图: 从图中

梯度提升树(GBDT)原理小结

在集成学习之Adaboost算法原理小结中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结.GBDT有很多简称,有GBT(Gradient Boosting Tree),?GTB(Gradient Tree Boosting?),?GBRT(Gradient Boosting Regression Tree), MART(Multipl

逻辑回归原理小结

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类.虽然它名字里面有"回归"两个字,却不是一个回归算法.那为什么有"回归"这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原理里面却残留着回归模型的影子,本文对逻辑回归原理做一个总结. 1. 从线性回归到逻辑回归 我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数\(\theta\),满足\(\mathbf{Y = X\theta}\).此时我们的Y是连续的,所以是回归模型.

线性回归原理小结

线性回归可以说是机器学习中最基本的问题类型了,这里就对线性回归的原理和算法做一个小结. 1. 线性回归的模型函数和损失函数 线性回归遇到的问题一般是这样的.我们有m个样本,每个样本对应于n维特征和一个结果输出,如下: (x(0)1,x(0)2,...x(0)n,y0),(x(1)1,x(1)2,...x(1)n,y1),...(x(m)1,x(m)2,...x(m)n,yn)(x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m)

最大熵模型原理小结

最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型.在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术.而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法.理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解.本文就对最大熵模型的原理做一个小结. 1. 熵和条件熵的回顾 在决策树算法原理(上)一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾. 熵度量了事物

K近邻法(KNN)原理小结

K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了.这里就运用了KNN的思想.KNN方法既可以做分类,也可以做回归,这点和决策树算法相同. KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同.KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别.而KNN做回归时,一般是选择平均

感知机原理小结

感知机可以说是最古老的分类方法之一了,在1957年就已经提出.今天看来它的分类模型在大多数时候泛化能力不强,但是它的原理却值得好好研究.因为研究透了感知机模型,学习支持向量机的话会降低不少难度.同时如果研究透了感知机模型,再学习神经网络,深度学习,也是一个很好的起点.这里对感知机的原理做一个小结. 1. 感知机模型 感知机的思想很简单,比如我们在一个平台上有很多的男孩女孩,感知机的模型就是尝试找到一条直线,能够把所有的男孩和女孩隔离开.放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超

Ajax技术原理小结

ajax:Asynchronous Javascript and XML   异步Javascript 和XML. 是一种创建交互式网页应用的网页开发技术. 1.0 优势: 1.1 通过异步模式,提升了用户体验. 1.2 优化了浏览器与服务器之间的传输,减少了不必要的数据往返,减少了带宽占用. 1.3 Ajax引擎在客户端运行,承担了一部分本来由服务器承担的共组,从而减少了大用户量下的服务器负载. 2.0 工作原理 Ajax核心是Javascript对象XmlHttpRequest.该对象在 I