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好几次每次输出一个文字,最终的句子就是结果。

Transformer decoder是Transformer模型的一个重要部分,用于生成输出序列。在Transformer模型,编码器(encoder)负责处理输入序列,编码输入信息;而解码器(decoder)则根据编码器的输出和先前的生成序列来生成目标序列。 Decoder由多个相同结构的层组成,每个层包含自注意力机制(self-attention)和前馈神经网络(feed-forward neural network)两个子层。在每个子层,都会对输入进行加权求和(通过注意力机制)和非线性变换(通过前馈神经网络)。 自注意力机制是解码器的核心机制之一。它根据输入序列的各个位置之间的关系,计算出每个位置对其他位置的注意力权重,从而实现对输入序列的加权求和。这使得解码器可以更好地理解和利用输入序列的上下文信息。 在生成输出序列时,解码器采用自回归的方式逐个位置地生成目标序列的每个元素。在生成每个位置上的元素时,解码器会利用自注意力机制来关注已经生成的部分序列,从而辅助生成下一个元素。这种逐步生成的方式使得解码器能够更好地捕捉到序列的依赖关系。 总而言之,Transformer解码器是一个由多个层组成的结构,利用自注意力机制和前馈神经网络来生成输出序列。它在机器翻译、文本生成等任务取得了很好的效果,并成为了自然语言处理领域的重要模型之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值