Seq2Seq Attention输入输出维度分析-最详细

1. Attention

注意力机制就是为了解决当解码的序列太长时,越到后面效果就越差。因为在未引入注意力机制之前,解码时仅仅只依靠上一时刻的输出而忽略的编码阶段每个时刻的输出(“称之为记忆”)。注意力机制的思想在于,希望在解码的时刻能够参考编码阶段的记忆,对上一时刻输出的信息做一定的处理(也就是只注意其中某一部分),然后再喂给下一时刻做解码处理。这样就达到了解码当前时刻时,仅仅只接受与当前时刻有关的输入,类似与先对信息做了一个筛选(注意力选择)。Encoder 把所有的输入序列编码成了一个c向量,然后使用c向量来进行解码,因此, 向量中必须包含了原始序列中的所有信息,所以它的压力其实是很大的,而且由于 RNN 容易把前面的信息“忘记”掉,所以基本的 Seq2Seq 模型,对于较短的输入来说,效果还是可以接受的,但是在输入序列比较长的时候, 向量存不下那么多信息,就会导致生成效果大大折扣。

解码的时候参考编码阶段的记忆,对于encoder输出的信息做一定的筛选,保留重要的一部分,前筛。既然一个上下文c向量保存的信息有限,那么就引入多个c向量,称之为c_1, c_2,...。在解码的时候,这里的c_i对应着Decoder的解码位次,每次解码就利用对应的c_i向量来解码.这里的每个c_i向量其实包含了当前将要输出与输入序列各个部分重要性的相关信息。
下图是一个seq-seq模型中的参数维度。

图1 Seq2Seq模型中参数维度

上图右边的输入部分的实线表示是训练时的输入,虚线表示预测时的输入。注意向量(attention vector)是由解码部分每个时刻的计算产生的,此处以计算第一个时刻为例。

2. encoder-decoder中的变量和其维度

英文句子“I am a student”被输入到一个两层的LSTM编码网络(蓝色部分),经过编码(encoder)后输入到另外一个两层的LSTM解码网络(棕色部分)。当网络在按时刻进行翻译decoder

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值