5分钟理解transformer中的decoder

在这里插入图片描述
transformer中decoder和encoder是非常像的。
先假设decoder是一个独立的块,研究它的输入和输出。

一、Autoregressive(自回归)

在这里插入图片描述

如果把decoder当成一个黑匣子,这个黑匣子先接受一个特殊符号begin,说明预测开始,第一个输出的字符为“机”,那么A再输入进decoder在输出"器",以此类推。在最后的时候用另一个特殊符号end结尾。这样把输出当成输入的学习称为AT(自回归)。

二、ATvsNAT

在这里插入图片描述
非自回归,顾名思义,输入不再是上一时刻的输出。那么这时候就会引出一些思考。
1.如何确定非自回归的长度?
可以用一个预测网络预测输出的长度,再进行句子的输出。也可以一直进行输出,然后通过end来把句子截断。
2.非自回归有什么优势?
平行化的,也就是计算是可以并行的。如图所示,输入都是begin,完全可以一起输入,然后一起进行输出。它的输出长度也是可以控制的,输入几个begin就输出几个begin,如果我想让声音的输出变慢,我就可以多一倍的begin。
3.NAT效果往往没有AT好。这一点我认为非常直观,缺少了时间的信息,效果当然会差一些。

实际上decoder并不是一个独立的块,它是与encoder连起来的,下面研究它是怎么连接起来的。

三、与encoder的连接

在这里插入图片描述
可以看到,有两个箭头是来自于encoder,有一个箭头是来自于decoder自己的输入。具体细节如下。
在这里插入图片描述
所谓的两个箭头+一个箭头,实际上就是六个encoder输出之后的向量 k e y , v a l u e key,value key,value与带掩膜的self-attention的 q i q_{i} qi进行相似度计算(dot-product)得到 v i v_{i} vi。简单说一句带掩膜的self-attention就是每一次输入只看前面的信息不看后面的信息。当然事实上不一定要六个encoder再进入decoder,这个地方是flexible的,只不过这篇论文是这样做的
得到很多 v v v之后再通过全连接网络变成向量输入到下一个self-attention。

总结来讲,以语音转文字为例。transformer输入一段语音信号,然后转化为向量表示,通过encoder对这些向量进行编码(特征提取),然后输入进decoder好几次每次输出一个文字,最终的句子就是结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值