• 对Transformer中的MASK理解



    上一篇文章我们介绍了 对Transformer中FeedForward层的理解,今天我们来介绍一下对MASK的理解
    老规矩,还是先放一张Transformer的图片
    在这里插入图片描述
    Transformer结构主要分为两大部分,一是Encoder层结构,另一个则是Decoder层结构,而所谓的MASK在Encoder和Decoder两个结构中都有使用。

    Transformer中的MASK主要分为两部分:Padding Mask和Sequence Mask两部分

    Padding Masked

    对于Transformer而言,每次的输入为:[batch_size,seq_length,d_module]结构,由于句子一般是长短不一的,而输入的数据需要是固定的格式,所以要对句子进行处理。
    通常会把每个句子按照最大长度进行补齐,所以当句子不够长时,需要进行补0操作,以保证输入数据结构的完整性
    但是在计算注意力机制时的Softmax函数时,就会出现问题,Padding数值为0的话,仍然会影响到Softmax的计算结果,即无效数据参加了运算。
    为了不让Padding数据产生影响,通常会将Padding数据变为负无穷,这样的话就不会影响Softmax函数了

    Self-Attention Masked

    Self-Attention Masked只发生在Decoder操作中,在Decoder中,我们的预测是一个一个进行的,即输入一个token,输出下一个token,在网上看到一个很好的解释如下:
    假设我们当前在进行机器翻译
    输入:我很好
    输出:I am fine
    接下来是Decoder执行步骤
    第一步:
    ·初始输入: 起始符 + Positional Encoding(位置编码)
    ·中间输入:(我很好)Encoder Embedding
    ·最终输出:产生预测“I”
    第二步:
    ·初始输入:起始符 + “I”+ Positonal Encoding
    ·中间输入:(我很好)Encoder Embedding
    ·最终输出:产生预测“am”
    第三步:
    ·初始输入:起始符 + “I”+ “am”+ Positonal Encoding
    ·中间输入:(我很好)Encoder Embedding
    ·最终输出:产生预测“fine”
    上面就是Decoder的执行过程,在预测出“I”之前,我们是不可能知道‘am’的,所以要将数进行Mask,防止看到当前值后面的值,如下图所示:当我们仅知道start的时候,后面的关系是不知道的,所以start和“I”以及其它单词的Score都为负无穷,当预测出“I”之后,再去预测“am”,最终得到下面第三个得分矩阵。

    最后经过Softmax处理之后,得到最终的得分矩阵

    最后不要忘了Decoder中依然采用的是Masked Multi-Head Attention,即多次进行Mask机制

  • 相关阅读:
    统计页面刷新次数
    String 地址引用问题
    48页智慧城市规划蓝图 解决方案
    前端启动项目将http协议改为https协议
    PC商城开发
    使用html+css实现一个静态页面(含源码)
    【LeetCode】No.79. Word Search -- Java Version
    RHCSA常用命令总结
    【Git】Sourcetree使用personal Access Token推送到Github
    【算法刷题】—7.26几何算法的解题,折线图线段数
  • 原文地址:https://blog.csdn.net/weixin_51756104/article/details/127812557