zoukankan      html  css  js  c++  java
  • Transformer架构记录(四)

    Transformer架构记录(一、二、三)针对Transformer的Encoder-block部分做了简要介绍,本文作为该系列的最终章,将以Decoder-block介绍结束本系列。

    一个完整的Decoder-block的结构如下所示:

    Decoder-block与Encoder-block的差别在以下几处:

    1. 第一个 Multi-Head Attention 层采用了 Masked 操作;
    2. 第二个 Multi-Head Attention 层的 K, V 矩阵使用 Encoder 的输出,进行计算,而 Q 使用上一个 Decoder block 的输出计算。

    Masked Multi-Head Attention

    1. 在计算得到 Q、K、V 之后,计算 Q 和 K 转置的乘积 QK^T;

    2. 在对QK^T 进行 Softmax 之前需要使用 Mask 矩阵遮挡住每一个单词之后的信息,遮挡操作如下图所示:

    1. 在得到的 Mask QK^T 上进行 Softmax,使得每一行的和都为 1.

    2. 将经过 Softmax 操作的 Mask QK^T 与矩阵 V 相乘得到输出 Z;和 Encoder 类似,通过 Multi-Head Attention 拼接多个输出 Z_i 然后计算得到第一个 Multi-Head Attention 的输出 Z,Z 与输入的 X 维度一样

    第二个 Multi-Head Attention

    Decoder block 第二个 Multi-Head Attention 与 Encoder block 的 Multi-Head Attention 主要区别在于,其中 Self-Attention 的 K, V 矩阵不是使用 上一个 Decoder block 的输出计算的,而是使用 Encoder 的输出矩阵 C 计算的。

    即,对于 Self-Attention 设置的(WQ、WK、WV),
    Q = ZWQ (如果是第一个 Decoder block 则使用输入矩阵 X 替代 Z 进行计算,其余Decoder block则使用前一个Decoder block 的输出 Z 进行计算)
    K = C
    WK
    V = C*WV

    通过堆叠多个 Decoder block ,得到解码器 Decoder.

    预测输出

    在 Decoder 的最后输出 Z 中,其包含的信息分布如下图所示:

    Softmax 作用于 Z 每一行,用于预测下一个单词,如下图所示:

    参考资源
    链接:https://www.jianshu.com/p/9b87b945151e
    《Attention is all you need》

    作者: python之家

    出处: http://www.cnblogs.com/pythonfl/

    本文版权归作者和博客园共有,转载时请标明本文出处;如对本文有疑问,欢迎邮件15256636585@qq.com联系;如发现文中内容侵犯到您的权利,请联系作者予以处理。

  • 相关阅读:
    Lucas 定理
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    First project
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/pythonfl/p/15364626.html
Copyright © 2011-2022 走看看