读Transformer

    transformer 是在文章 attention is all you need 中提出的,在机器翻译中,transformer的输入是一种语言,输出是另外一种语言。

  transformer包含两部分:encoders 和 decoders , 这种结构就是常见的seq2seq模式,不同在于encoder 和 decoder 的结果。

其中encoders 和 decoders 各自采用了6个encoder单元和6个decoder单元

  • encoders 部分
    • 6个encoder单元是独立的,即他们之间的权重不是共享的
    • 每个encoder包含self-attention 和 feedforward neural network 两部分
    • self-attention模块,输入是长度为n的序列,embedding维度为E,输出是长度为n的序列,
      • 作者在读attention is all you need 的文章才了解到self-attention的概念
      • 举了一个例子 ”The animal didn't cross the street because it was too tired” 语句中的it单词指的是谁?或者说跟谁更相关,经过layer=5的self-attention之后,可以从下图中发现,it 单词 和 the animal 最相关,颜色最深
      • 计算的细节,重点 !!!,见下面
      • 第一步构造三个矩阵,对于某一个词来说,通过输入矩阵这三个矩阵相乘,那么就得到了对应的三个vector,叫做 query vector,key vector,value vector,这三个vector的维度(64)通常小于embedding(512)的维度,这三个矩阵是训练出来的。
      • 第二步,计算一个得分,针对输入的每个单词的得分,这个得分决定了我们有聚焦输入序列中其他部分的程度。比如针对输入序列中的第一个单词thinking 来说,拿thinking得到的q1 与 输入序列中的单词得到的k求点积,那么就得到 q1*k1,q1*k2,q1*k3,q1*k4,....
      • 第三步,在第二步基础上,除以k的平方根
      • 第四步,  在第三部基础上,对分数做softmax,分数的大小表明重要程度,通常,当前词的softmax是最高的,如上图显示 q1 * k1 = 0.88 , q1 * k2=0.12 ,除了这个词之外,可以关注其他词对当前词的相关程度
      • 第五步,在第四步的基础上 乘以 value vector 
      • 第六步,在第五步的基础上,加上权重向量,得到的维度与第五步是一样的。
      • 什么是multi-head attention 呢 ?说白了,有多个Q,K,V矩阵,transformer用了8个attention heads,所以对于一个单词来说,会得到8个z向量,我们把8个z给拼接起来,得到一个单独的矩阵,乘以W0,就可以得到最终的z了
      • 得到
      • 注意一点,实际上在transformer中,输入不是embedding后的序列,还需要加上一个叫做位置编码序列,这个也是学出来的,直觉上这个向量是衡量embedding内部的距离。
    • Add * Normalize 解释
      • Add 体现在 self-attention得到z之后,与输入矩阵进行相加
      • normalize 表示 layernorm

 

  • decoders部分
    • 每个decoder包含 self-attention, encoder-decoder attention,feedforward nueral network 
    • 相比encoder部分多了encoder-decoder,可以帮助decoder去关注输入序列中相关的部分,跟seq2seq模型比较类似。
    • decoder部分的self-attention 跟 encoder部分中的self-attention 有点略微不同,因为encoder部分的输入是固定的,而输出部分的序列是逐个逐个预测出来的,所以有mask这个概念
    • encoder-decoder attention部分,跟mutliheaded self-attention比较类似,但没有Query矩阵,只有Key 和 Value矩阵,关于encoder的输出,就在这部分进行使用。

  • 最后Linear 和 Softmax 部分,下面的图很形象了

 

refer:http://jalammar.github.io/illustrated-transformer/ 

https://arxiv.org/abs/1706.03762  Attention is All You Need.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章