美文网首页
NLP - Transformer模型

NLP - Transformer模型

作者: nlpming | 来源:发表于2020-07-26 12:03 被阅读0次

    1. 简介

    Transformer模型由Google提出,发表在NIPS 2017会议上。是一种完全基于注意力机制的模型,摒弃了RNN和CNN结构。并且很容易并行,训练速度较快,在WMT14 英语- 德语、英语 - 法语翻译任务上获得了SOTA的效果。

    • RNN缺点: 很难并行化,每一个时刻的输出,需要依赖上一个时刻的结果;
    • CNN优缺点: 很容易实现并行化;想要获取更多的上下文信息,需要叠多层卷积网络;
    image.png

    2. 模型结构

    • Transformer模型由 Encoder 和 Decoder 组成,并且分别堆叠了N层;注意:输入经过N层 Encoder 之后输入到每一层 Decoder 计算Attention;
    • Encoder 包括两个子层:(1)Self-Attention子层;(2)FNN子层;
    • Decoder 包括三个子层:(1)Mask Self-Attention子层;(2)Self-Attention子层;(3)FNN子层;
    • 每个子层后面,都加上了 残差连接(residual connection)层正则化(layer normalization),则最终的输出为:LayerNorm(x + Sublayer(x))
    transformer模型结构.png

    2.1 Self Attention

    • Transformer在RNN模型的基础上进行改进,使得计算每一个输出,可以并行;


      使用Self-Attention优势.png

    2.1.1 Scaled dot-product attention

    • Attention机制的本质是:给定一个query,和一系列<key, value>对,需要计算得到一个输出得分;注意:query, key, value都是向量;query, key维数为d_kvalue的维数为d_v
    • Scaled dot-product attention计算公式如下:
      Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}}) V
      上式中Q, K, V是矩阵;

    注意:除以\sqrt{d_k},是为了防止d_k变化很大的时候,最终qk^T的计算结果变化较大;

    例子:计算x_1和其他词的Attention,得到输出b^1
    1. 每个输入,计算得到q, k, v
    image.png
    2. q, k做内积
    image.png
    3. 计算softmax值,得到注意力权重
    image.png
    4. 注意力权重和v,加权平均得到Attention输出
    image.png

    得到输出b^1, b^2, b^3, b^4,可并行计算:

    image.png

    2.1.2 Mask说明

    • Decoder第一个子层使用了Mask self-attention子层:主要是为了防止标签泄露,即在 t 时刻不能看到 t 时刻之后的信息;因为在infer阶段,只能看到已经生成的序列;
    • 一般使用一个上三角矩阵实现:即在计算softmax之前,将qk^T的计算结果赋值为-inf,这样经过softmax之后计算得到的注意力权重趋于0;
      image.png
      image.png

    2.2 Multi-Head Attention

    • 每一个头都是一个Scaled dot-product attention的计算;
    • 最终多个头的输出concat在一起,再经过一个linear层得到 Multi-Head Attention 输出;
    image.png

    2.3 Positional Encoding

    • transformer模型完全基于注意力机制,没有考虑序列顺序信息,因此引入的positional encoding;
    • 在得到每个词的Embedding之后,与位置编码向量相加;并且每个词的位置编码向量是固定的;
    • 位置编码向量,具体计算公式如下:
      PE(pos, 2i) = sin(pos/10000^{2i/d_{model}}) \\ PE(pos, 2i+1) = cos(pos/10000^{2i/d_{model}})
      上式中,d_{model}代表词向量维度;pos代表单词的位置,i代表第几维;
    image.png

    参考资料

    相关文章

      网友评论

          本文标题:NLP - Transformer模型

          本文链接:https://www.haomeiwen.com/subject/jsxwlktx.html