Attention is all you need

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).

transformer的模型结构

transformer模型和大多数sequence to sequence模型一样,由encoder和decoder组成。结构示意图如下:



1. encoder

transformer 的encoder由N=6个相同的layer构成,每个layer都有两个sub-layers,分别是multi-head self-attention mechanism和fully connected feed-forward network。其中每个sub-layer都加了residual connection和normalisation,因此可以将sub-layer的输出表示为:LayerNorm(x + Sublayer(x));

2. decoder

decoder和encoder的结构差不多,但是在每个layer下多了一个attention的sub-layer

3. Attention模型

采用传统编码器-解码器结构的LSTM/RNN模型存在一个问题:不论输入长短都将其编码成一个固定长度的向量表示,这使模型对于长输入序列的学习效果很差(解码效果很差)。而attention机制则克服了上述问题,原理是在模型输出时会选择性地专注考虑输入中的对应相关的信息。使用attention机制的方法被广泛应用在各种序列预测任务上,包括文本翻译、语音识别等。transformer只使用了Attention。

3.1 Scaled Dot-Product Attention

Scaled Dot-Product Attention的输入由query、key、value组成,将query和所有key进行点积运算,再除以\sqrt{d_{k} } (起调节作用,使得内积不至于太大,太大的话 softmax 后就非 0 即 1 了,不够“soft”了),再利用softmax 函数得到value的权重,计算得到的输出矩阵如下:

以下是Scaled Dot-Product Attention模型图:

 3.2 Multi-head attention

Multi-head attention结构如下图,Query,Key,Value首先经过一个线性变换,然后输入到Scaled Dot-Product attention(注意这里要做h次,其实也就是所谓的Multi-head,每一次算一个head)。而且每次Q,K,V进行线性变换的参数W是不一样的。然后将h次的Scaled Dot-Product attention结果进行拼接,再进行一次线性变换得到的值作为Multi-head attention的结果。

attention函数输入为由原来的Q,K,V变成了QW(上标为Q,下标为i),KW(上标为K,下标为i),VW(上标为V,下标为i);即3个W都不相同;将Q,K,V由原来的512维度变成了64维度(因为采取了8个多头);然后再拼接在一起变成512维,通过W(上标为O)进行线性转换;得到最终的多头注意力值;

3.3 Self Attention

所谓 Self Attention,其实query=key=value。也就是说,在序列内部做 Attention,寻找序列内部的联系。 

4. Position-wise Feed-Forward Networks

除了attention sub-layers ,transformer的encoder和decoder都包含一个完全连接的前馈网络。这个网络包括两个线性转换,中间有一个ReLu activation。

                                                 FFN(x) = max(0, xW1+ b1)W2+ b2

虽然不同位置的线性变换是相同的,但它们从一层到另一层使用不同的参数。

5. Embeddings and Softmax

与其他序列转换模型类似,他们使用embeddings将输入标记和输出标记转换为维度d_{model} 的向量。他们也使用通常学习的线性变换和softmax函数将解码器的输出转换为预测的 next-token probabilities。在他们的模型中,他们在两个embedding层和pre-softmax线性变换之间共享相同的权值矩阵,在嵌入层中,用这些权重乘以√dmodel。

6. Positional Encoding

如果将 K,V 按行打乱顺序(相当于句子中的词序打乱),Attention 的结果还是一样的。这就表明了,到目前为止,Attention 模型顶多是一个非常精妙的“词袋模型”而已。为了让模型利用序列的顺序,必须注入一些关于序列中记号的相对或绝对位置的信息。因此,他们在input embeddings中加入了positional encoding,将每个位置编号,然后每个编号对应一个向量,通过结合位置向量和词向量,就给每个词都引入了一定的位置信息,这样 Attention 就可以分辨出不同位置的词了。

7. 为什么使用self-attention

从三个方面去对比self-attention和递归结构、卷积结构的优劣性,首先是每一层的计算复杂度,其次是能够被并行的计算量,最后是网络中长期依赖的路径长度。对比显示,self-attention表现最好。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341