Keras(三十三)Transformer模型总体架构和理论

本文将介绍:

  • Transformer论文地址及论文翻译地址
  • Seq2seq+attention优缺点
  • Transformer模型结构图例
  • Encoder-Decoder架构
  • 缩放点积注意力
  • 多头注意力
  • 位置编码
  • Add&Normalize
  • Decoding过程

Transformer 是 Google 的团队在 2017 年提出的一种 NLP 经典模型,现在比较火热的 Bert 也是基于
Transformer。Transformer 模型使用了 Self-Attention 机制,不采用 RNN
的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。

一,Transformer论文地址及论文翻译地址

Transformer论文地址: Attention Is All You Need
Transformer论文翻译地址:Attention Is All You Need
Transformer详解:Transformer 模型详解

二,Seq2seq+attention优缺点

  • 优点:
    • 去除定长编码瓶颈,信息无损从Encoder传到Decoder
  • 对比transformer不足:
    • 采用GRU,计算依然有瓶颈,并行度不高
    • 只有Encoder和Decoder之间有attention

注: Transformer相比Seq2Seq优点,train时候可以并行化,体现在对于输入的处理上。对于seq2seq模型,encoder和decoder都是lstm,lstm在处理序列的时候需要一个一个的处理。而在训练的时候,Transformer在处理encoder和decoder的输入上都可以并行。

三,Transformer模型结构图例

Transformer依然是一个encoder-decoder的架构
Transformer是一个多层的encoder-decoder的架构

1,Transformer模型整体图例

Keras(三十三)Transformer模型总体架构和理论_第1张图片

2,Transformer多层结构图例

Transformer依然是一个encoder-decoder的架构,且Encoder和Decoder都可以为多层。
Keras(三十三)Transformer模型总体架构和理论_第2张图片

四,Encoder-Decoder架构

1,Encoder-Decoder的整体架构
  • encoder 和 decoder分别是多层的
  • encoder 的输出要传给decoder的每一个块
    Keras(三十三)Transformer模型总体架构和理论_第3张图片
2,Encoder-Decoder的组成结构
  • 对于encoder来说,有两个部分;
  • 对于decoder来说,有三个部分;
    Keras(三十三)Transformer模型总体架构和理论_第4张图片
3,细化Encoder

Keras(三十三)Transformer模型总体架构和理论_第5张图片
Encoder再细化下,如下图所示,对于encoder来说,x1,x2进入Self-Attention层,得到z1,z2 ,z1包含了x1,x2的信息,z2同理,z1和z2分别经过FeedForward全连接层得到r1,r2.FeedForward就是简单的全链接。那么什么是self-attention呢?
Keras(三十三)Transformer模型总体架构和理论_第6张图片

五,缩放点积注意力

  • 缩放点积attention是self-attention和mutl-head attention的基础.
1,缩放点积注意力图例和计算公式

如下图所示,QKV对应到单词上来说,每一个单词应该有3个enbeding。Q代表query;K代表Key;V代表value。每一个Query需要和Key去计算权重,计算后和V去做加权平均。 transformer中的enbeding分开来了,用来计算相似度的enbeding和最后用来做加权平均的enbeding是分离的,可以用来存储更多的信息。
QKV都是矩阵。矩阵的每一行都是样本,Q和K做矩阵的乘法,其结果进入Scale进行缩放,进入Mask(用来防止前段词看到后段词的机制)。进入softmax后,产生了权重。最后和V进行加权平均求和。
Keras(三十三)Transformer模型总体架构和理论_第7张图片
权重代表的是:Q中的每一个样本,在K中的所有样本上的权重的分布。

2,缩放点积注意力的计算方式

如下图所示,x1和Wq WK Wv做矩阵(这三个矩阵维度相同)乘法得到了q1,k1,v1;x2同理。这样词语有一个enbeding生成了三个enbeding.
Keras(三十三)Transformer模型总体架构和理论_第8张图片
举例实现计算过程:
Keras(三十三)Transformer模型总体架构和理论_第9张图片
注意:q1 * k1的转置
Keras(三十三)Transformer模型总体架构和理论_第10张图片

3,缩放点积为什么要除以根号dk?

防止内积总和过大。

  • softmax时,数值为e指数倍,数字虽然相差不多,但指数会增大数据差距,使其得到概率值无限接近于一。
  • 初始化参数的时候会假定参数的分布是符合正太分布的。 q和k每一个数都是符合正太分布的。而长度为dk的这两个向量去做点积的话,他们中的每一个值都是符合0-1正太分布的,那么点积的和就是符合0-根号下dk的正太分布,那么除以根号下dk就是符合0-1的正太分布

六,多头注意力

1,多头注意力理论图示

如果已经理解缩放点积注意力,多头注意力如图所示。如果有N头注意力,则分别定义W0Q - WNQ,W0K-WNK,W0V-WNV矩阵,并分别X代码分别计算出Q0 K0 V0 ~ QN KN VN,将Qi,Ki,Vi分别计算缩放点积得到Z0-ZN,后将Z0-ZN做concat拼接后经过全链接,得到Z。
Keras(三十三)Transformer模型总体架构和理论_第11张图片

2,多头注意力计算公式及整体图示

多头注意力可以理解为缩放点积注意力的封装,下图左为缩放点积注意力,右为多头注意力。
Keras(三十三)Transformer模型总体架构和理论_第12张图片
计算公式如下:
Keras(三十三)Transformer模型总体架构和理论_第13张图片
缩放点积注意力和多头注意力图示:
Keras(三十三)Transformer模型总体架构和理论_第14张图片

七,位置编码

1,位置编码

Transformer 中除了单词的 Embedding,还需要使用位置 Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。 所以 Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。

2,计算公式

位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下:
Keras(三十三)Transformer模型总体架构和理论_第15张图片
其中,pos 表示单词在句子中的位置,d 表示 PE的维度 (与词 Embedding 一样),2i 表示偶数的维度,2i+1 表示奇数维度 (即 2i≤d, 2i+1≤d)。使用这种公式计算 PE 有以下的好处:

  • 使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。
  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。

将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 x,x 就是 Transformer 的输入。

3,示范实例

Pos = 1;d = 128
在这里插入图片描述
Keras(三十三)Transformer模型总体架构和理论_第16张图片
Keras(三十三)Transformer模型总体架构和理论_第17张图片

4,抓取到词语出现的频率

Keras(三十三)Transformer模型总体架构和理论_第18张图片

八,Add&Normalize

1,计算过程

如下图所示,x经过self-attention后,生成z,x+z 再进行LayerNorm,类似于归一化,x + z 这种方式叫做残差连接
Keras(三十三)Transformer模型总体架构和理论_第19张图片

2,意义

x + z 的意义在于:

  • 为了确保x的信息存在z里面。z的信息应该比x的信息更多,而不是更少。这样做后,网络不需保存x的信息,只需保存新的信息;
  • 假如说网络学习不到什么东西,只要给出z是0,就可以保证我们的网络结果比没有加这一层是一样的。
  • 当在计算梯度时候,梯度可以很方便的传到底层去,因为底层直接连到了高层。

九,Decoding过程

1,Decoder结构
  • Train的时候并行化
  • Inference的时候仍然要序列式完成
  • Self Attention时前词不能见后词
    • Mask来实现
2,预测过程如下:

Keras(三十三)Transformer模型总体架构和理论_第20张图片

3,输出
  • 全链接层到词表大小
  • softmax

十,总结Transformer的三种Attention

Keras(三十三)Transformer模型总体架构和理论_第21张图片

  • encoder的输入的要翻译的句子上的自己对自己的注意里,用来提取源语句信息。
  • decoder的输入的句子自己对自己的注意力,用来提取目标语句的信息。
  • encoder和decoder之间的注意力,用来寻找源语句和目标语句之间的对应关系。

你可能感兴趣的:(tensorflow,nlp,keras,深度学习,keras,tensorflow,nlp,自然语言处理)