标签:dual file att 论文 normal 组成 权重 编码器 layer
谷歌在2017年发表了一篇论文名字教Attention Is All You Need,提出了一个只基于attention的结构来处理序列模型相关的问题,比如机器翻译。传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Attention的Transformer模型摒弃了固有的定式,并没有用任何CNN或者RNN的结构。该模型可以高度并行地工作,所以在提升翻译性能的同时训练速度也特别快。
Transformer的主体结构图:
模型分为编码器和解码器两个部分。
编码器和解码器的输入就是利用学习好的embeddings将tokens(一般应该是词或者字符)转化为d维向量。对解码器来说,利用线性变换以及softmax函数将解码的输出转化为一个预测下一个token的概率。
由于模型没有任何循环或者卷积,为了使用序列的顺序信息,需要将tokens的相对以及绝对位置信息注入到模型中去。论文在输入embeddings的基础上加了一个“位置编码”。位置编码和embeddings由同样的维度都是\(d_{model}\)所以两者可以直接相加。有很多位置编码的选择,既有学习到的也有固定不变的。
论文中用的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 \]
本文结构中的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) \]
Transformer以三种不同的方式使用了多头attention。
之前说模型由堆叠在一起的六个层组成,每层由两个支层,attention层就是其中一个,而attention之后的另一个支层就是一个前馈的网络。公式描述如下。
每层由两个支层,attention层就是其中一个,而attention之后的另一个支层就是一个前馈的网络。公式描述如下。
\[
FFN(x) = max(0,xW_1 + b_1)W_2 + b_2
\]
模型的整体框架基本介绍完了,其最重要的创新应该就是Self-Attention和Multi-Head Attention的架构。在摒弃传统CNN和RNN的情况下,还能提高表现,降低训练时间。Transformer用于机器翻译任务,表现极好,可并行化,并且大大减少训练时间。并且也给我们开拓了一个思路,在处理问题时可以增加一种结构的选择。
(欢迎转载,转载请注明出处。欢迎沟通交流: 339408769@qq.com)
Attention Is All You Need(Transformer)原理小结
标签:dual file att 论文 normal 组成 权重 编码器 layer
原文地址:https://www.cnblogs.com/huangyc/p/9813907.html