美文网首页深度学习
2020机器学习 Transform 模型(3)

2020机器学习 Transform 模型(3)

作者: zidea | 来源:发表于2020-03-04 20:07 被阅读0次
    image

    编码器(encoder)

    • 输入为 ( batch_size,sequence_length ),batch_size 表示句子数量而sequence_length 则表示每句长度。

    • 首先输入矩阵经过 Input Embedding 变为一个维度为(batch_size,sequence_length,embedding_dim) 的矩阵,这里我们通过 embedding 矩阵将表示每一个词 id 转换为一个向量(word2vec)

    • 接下来通过 Posional Encoding 添加位置信息
      位置嵌入是(sequence_length,embedding_dim) 的矩阵,可以和词嵌入相加得到(batch_size,sequence_length,embedding_dim)的矩阵,我们用表示来表示一下这个步骤

      image
    • 然后就进入可以多次重复块(block)

      image
      然后我们对 和 三个矩阵按 header 数量进行切分出多头注意力机制。按 h 数量将矩阵进行切分为维度 (batch_size,sequence_length,h,(embedding_dim/h)) 这里 h 为多头注意力机制数量超参数 h。为了方便计算我们会把 image

      维度 sequence_length 和 h 进行转置,得到 (batch_size,h,sequence_length,(embedding_dim/h))

      这里 和 相乘会得到输入序列长度方阵,类似协方差矩阵。作为sofatmax 表示某一个时刻输入与各个输入间关系一行的概率分布,和为 1。


      image

      经过一系列运算维度还是保持(batch_size,h,sequence_length,(embedding_dim/h))

    image
    • Batch Norm 我们是对同一个 batch 不同数据同一个维度进行归一化(标准化),也就是希望一个 batch 同一个维度(特征)均值为 0 方差为 1

    • Layer Norm 是无需考虑 batch 给一个数据,我们希望其在各个不同维度上均值为 0 方差为 1

    • Add & Norm 层,这里做的事情是,字面上意思是做加法,在从图中箭头走向,我们发现就是 多头注意力层(Multi-Head Attention) 的输入 a 和其输出 b 相加得到 然后就是单词 Norm ,这里 Norm 就是 layer Norm 值得注意的是这里是 Layer 而不是我们之前熟悉的 Batch。

    • image
    • Feed Forward 这里没有什么好将的,就是将输入序列处理后向前传递到下一个 Add & Norm

    • Multi-head Attention 就是我们介绍过多头注意力层(Multi-Head Attention),也就是输入一个序列后通过此层会得到另外一个序列。也就是经过词嵌入和位置嵌入后得到 (sequence_length,embedding_dim) 经过

      image 和 变换后得到三个矩阵 image
    • image

    解码器(decoder)

    • 输入是前一个时刻所产出的输出

    • 同样经过 nput Embedding 变为一个向量

    • 添加位置信息 Pisitonal Encoding

    • 然后就进入可以多次重复块(block)

    • Masked Multi-head Attention 这里和之前 Multi-head Attention 多了个 Masked。Masked 表示只会关注到已生成出来的序列。
      在上面 self attention 的计算过程中, 通常会使用 mini_batch 来进行计算, 也就是一次计算多句话, 也就是 X 的维度是(batch_size, sequence_length],sequence_length) 是句长, 而一个 mini_batch 是由多个不等长的句子组成的, 我们就需要按照这个 (mini_batch) 中最大的句长对剩余的句子进行补齐长度, 我们一般用 0 来进行填充, 这个过程叫做 padding。
      但这时在进行 softmax 的时候就会产生问题, 回顾 softmax 函数

    image 函数 image , 是1, 是有值的, 这样的话 image 中被 image 的部分就参与了运算, 就等于是让无效的部分参与了运算, 会产生很大隐患, 这时就需要做一个 image 让这些无效区域不参与运算, 我们一般给无效区域加一个很大的负数的偏置, 也就是: image image image 经过上式的 image 我们使无效区域经过 image 计算之后还几乎为, 这样就避免了无效区域参与计算.
    • Add & Norm
    • Multi-head Attention 这一个层会接收从解码器过来的(隐藏层)输入(解码器的输出)
    • Add & Norm
    • Feed Forward
    • Add & Norm
    • Linear

    • Softmax
      这里过于基础或者已经介绍过我们就不做过多解释了。

    相关文章

      网友评论

        本文标题:2020机器学习 Transform 模型(3)

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