【自然语言处理】Seq2Seq网络和attention机制

【seq2seq】
seq2seq网络由两个独立的循环神经网络组成,被称为编码器和解码器,通常使用LSTM或GRU实现。编码器处理输入数据,其目标是理解输入信息并表示在编码器的最终状态中。解码器从编码器的最终状态开始,逐词生成目标输出的序列,解码器在每个时刻的输入为上一时刻的输出。
seq2seq最常用的场景就是机器翻译,把输入串分词并表示成词向量,每个时刻一个词语输入到编码网络中,并利用EOS作为句子末尾的标记。句子输入完成后,得到一个编码器,这时可以用编码器的隐藏层状态来初始化解码器,输入到解码器的第一个词是SOS,作为目标语言的起始标识,得到的输出是目标语言的第一个词,随后将该时刻的输出作为解码器下一个时刻的输入。重复这个过程直到解码器的输出产生一个EOS,目标语言结束的标识,这时就完成了从源语言到目标语言的翻译。

【attention机制】
为了在seq2seq模型中添加注意力机制,在解码器在产生t时刻的输出时让解码器访问所有从编码器的输出,这样解码器可以观察源语言的句子,这个过程是之前没有的。我们需要让解码器工作的时候可以动态地注意编码器输出的特定部分。有研究者提出的解决方案是把输入变成串联操作,在编码器的输出上使用一个带权重,也就是解码器在t-1时刻的状态,而不是直接使用其输出。具体做法是:首先为编码器的每个输出关联一个分数,这个分数由解码器t-1时刻的网络状态和每个编码器输出的点乘积得到,然后用softmax层对这些关联分数进行归一化。最后,在加入到串联操作之前,利用归一化后的分数分别度量编码器的输出。这个策略的关键点是,编码器的每个输出计算得到的关联分数,表示了每个编码器输出对解码器t时刻决策的重要程度。

参考资料:PyTorch机器学习从入门到实战

你可能感兴趣的:(自然语言处理,seq2seq,attention机制,机器翻译,神经网络,人工智能)