transformer 解码_transformer在解码的时候,用的k和v的向量来自于编码器的输出还是来自于之前解码输出的值呢?...

尝试回答一下。

下图截取自Transformer原论文对Attention应用的说明:

decoder层有2个应用了attention的地方。

一个是self-attention层,其中的q,k,v都来自decoder内部的计算;

另一个是encoder-decoder attention层,该层的k和v,来自encoder的输出。

注意红线部分,这里作者用的是come from,也就是说encoder的输出并不直接是k和v,而是通过某种转换得到了一组k和v,而这种转换应该和encoder以及decoder中的self-attention层中的k和v的计算方式是一样的,只不过计算时使用的embedding用的是最后一层encoder的输出。

下面来说mask attention,其实就是上图中的第三个attention的应用。mask attention是decoder的self-attention层使用的,也是decoder和encoder的self-attention层唯一不同的地方。作者说:”我们为了保护decoder的auto-regressive 属性,需要通过mask的方式来阻止decoder中左向的信息流“。我们知道auto-regressive的基本思想是下一个观测值约等于前n个观测值的某种线性加权和。所以后n个值(这里对应上面提到的左向信息流)是没有意义的,所以作者通过mask的方式,将后n个值,也就是decoder中self-attention层的scaled dot-product 阶段的当前处理词的后面位置的词的scaled dot-product结果都设置成负无穷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值