seq2seq attention

1.seq2seq:分为encoder和decoder

  a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出(网上说实验结果比较好) 

  b.每一时刻都有一个输出,即:[batch_size,  decoder_output_size],经过一个MLP后,都跟词汇表中的每一个词都对应了一个概率,即: [batch_size, vocab_size]。

  c.将每一个时刻的输出拼接起来,那么就是[batch_size, decoder_timestep, vocab_size],然后用beam search去寻找最优的解。

2.seq2seq attention: 在decoder的时候加入了attention机制

  a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出c0(网上说实验结果比较好)

  b.attention:

    1).用c0去跟encoder的所有时间步骤中的输入,进行match,即:用c0去和所有的输入求一个相似度,那么这个就是一个权值(attention的权值),含义就是当前时刻的输入是有encoder中的哪几个时刻来决定的,就是神经网络翻译中的那张经典的图。

    2).decoder第一个时间步骤c1,会输出一个向量,那么再重复1)中的步骤用c1替换c0

  c.将每一个时刻的输出拼接起来,那么就是[batch_size, decoder_timestep, vocab_size],然后用beam search去寻找最优的解。

猜你喜欢

转载自www.cnblogs.com/callyblog/p/9827708.html