Seq2seq 和注意力机制
Seq2seq
Seq2seq 是一种框架结构,它接受一个序列(单词、字母、图像特征等)并输出另一个序列,由编码和解码两部分构成。如在机器翻译任务中,一个序列指的是一系列的词,一个接一个地被处理编码,同样,输出的也是一系列单词,一个接一个地进行解码。
具体地,编码器处理输入序列中的每一项,将捕获的信息编译成一个向量(对输入序列的编码)。在处理完整个输入序列后,编码器将编码后的信息发送给解码器,解码器开始基于此信息逐项生成输出序列。
如下图所示,< s > i am fat < e > 为源语句(< s > 、 < e > 分别为首尾符),输入以循环神经网络为基本结构的编码器中,最后一步的 hidden state 可当作整个文本的表征,因为基于循环神经网络的记忆性质,它“见过了”整个文本。而此 hidden state 则作为解码器(也是循环神经网络结构)的 init hidden state,与初始标志符 < s > 一同作为第一步的输出,预测第一步的单词,再将第一步预测的单词作为第二步的输入,依次类推,直至解码至结束符 < e > 或者达到最长长度。
image.png
对比之前藏头诗的实验,其实机器翻译模型与写诗的语言模型比较类似,例如 Decoder 部分与语言模型基本相同。对于机器翻译的 Decoder,init hidden state 是源语句进行编码之后的表征,而对于写诗系统而言,我们可以选择一句带强烈文本的诗进行循环网络计算,最后的输出作为 Decoder 的 init hidden state,两者均为有条件的语言模型,即基于特定 init hidden state 生成之后的文本。
当然,