前面的博客,博主主要集中在讲解文本分类方面,后续会多写一点序列生成以及智能问答方面的博客,供大家交流。今天博主主要来介绍Seq2Seq模型中的比较著名的两大attention机制:Bahdanau 和 Luong。
Seq2seq
在介绍Attention机制之前,首先简单地介绍下Seq2Seq的模型框架。Seq2Seq可以解决文本序列生成的任务:机器翻译和自动摘要生成等。Seq2Seq由Encoder和Decoder两部分构成,如下图所示:
-
Encoder部分:由双向LSTM或GRU结构组成,输入是做完词向量嵌入的文本信息,输入张量的shape为[batch_size,time_steps,word_embs],取双向LSTM或GRU最后一个time_step的隐层向量作为语义向量C。
-
Decoder部分:其输入为Encoder的输出,在解码的过程中对于中间语义向量C的使用有两种形式:(1)中间语义向量C参与解码的每个时刻(2)中间语义向量只参与解码的第一时刻。对于第一种中间语义向量C的使用方式来说,解码过程中每一时刻的输出与上一时刻的输出,当前时刻的隐层向量和C有关。
Seq2Seq without Attention
Attention模型最早应用在CV领域,如果没有Attention机制,就会产生失焦现象。比如人眼看一张带有宝宝的图像,