对Transformer中编解码器结构的深入理解

一、Transformer结构

       我们都知道,Transformer由编码器和解码器组成,用于序列到序列生成(seq2seq)的机器翻译问题,想必下面这张论文中的原图大家都看过。

      但是出于版面的简洁考虑,这幅图只展示了一个encoder块和一个decoder块,那么当有多个encoder块和decoder块的时候,Transformer模型应该如何表述。训练阶段的Transformer和测试阶段的Transformer又有什么区别呢?

标题

二、训练阶段的Transformer结构

        训练阶段的Transformer是比较简单的,需要注意的是编解码器连接的地方,这里用红线表示,编码器的状态会被依次传递给每一个解码器块的第二个注意力机制。作为注意力机制中的键值对

三、测试阶段的Transformer结构

       测试阶段的Transformer是较为繁琐的。编码器和训练阶段是一样的,即一次把所有的源语言序列全部输入,然后将输出传递给解码器。

       解码器是典型的序列到序列生成模型,即每次生成一个词元。

       首先看step1,输入为“BOS”(Begin of Sentence),张量的形状为(batch_size, 1, embedding_size),然后在纵向的方向上进行传递即可。

       再来看第二步,step1的输出形状为(batch_size,1),然后传递到step2的底部,其被embedding层重新编码后,传入到第一个decoder块中。被编码后的向量作为注意力机制中的查询(query)。然后,该向量与多头注意力机制上一步(step1)中的向量在时间维度上做拼接,拼接后的向量作为注意力机制中的键值对(key-value pair),其形状为(batch_size, 2, embedding_size)。查询,键值对一起被输入到第一个解码器块第一个注意力机制模块中,输出的形状是(batch_size, 1, num_hiddens),因为输出的形状是和query的形状相同的。最后在step2的纵向方向上进行传播,得到step2的输出,依次类推,得到整个预测阶段每一个时间步上的词元,将各时间步上的词元进行拼接,便得到了预测出的序列。

       有关transformer结构,还可以看这个博主写的文章,写的很好

「QBlog 08」解剖Transformer系列 - 知乎 (zhihu.com)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值