Encoder-Decoder两大Attention机制解释

前面的博客,博主主要集中在讲解文本分类方面,后续会多写一点序列生成以及智能问答方面的博客,供大家交流。今天博主主要来介绍Seq2Seq模型中的比较著名的两大attention机制:Bahdanau 和 Luong。

Seq2seq

在介绍Attention机制之前,首先简单地介绍下Seq2Seq的模型框架。Seq2Seq可以解决文本序列生成的任务:机器翻译和自动摘要生成等。Seq2Seq由Encoder和Decoder两部分构成,如下图所示:
Encoder-Decoder两大Attention机制解释_第1张图片

  1. Encoder部分:由双向LSTM或GRU结构组成,输入是做完词向量嵌入的文本信息,输入张量的shape为[batch_size,time_steps,word_embs],取双向LSTM或GRU最后一个time_step的隐层向量作为语义向量C。

  2. Decoder部分:其输入为Encoder的输出,在解码的过程中对于中间语义向量C的使用有两种形式:(1)中间语义向量C参与解码的每个时刻(2)中间语义向量只参与解码的第一时刻。对于第一种中间语义向量C的使用方式来说,解码过程中每一时刻的输出与上一时刻的输出,当前时刻的隐层向量和C有关。

Seq2Seq without Attention

Attention模型最早应用在CV领域,如果没有Attention机制,就会产生失焦现象。比如人眼看一张带有宝宝的图像,人们一眼能看到宝宝,是因为人们的注意力聚集在宝宝的图像,如果注意力均匀分布,那么呈现在人眼前的就很可能不再是宝宝的图像。因此在Seq2Seq中不加Attention机制,参与每个时刻的解码时用到的中间语义向量C是一样的,就会产生同样的失焦现象,从而影响最终的序列生成结果。

Seq2Seq with Attention

在这里我们以解码过程中每次使用中间语义向量C为例,加上attention机制的Seq2Seq各个时刻的解码过程中的中间语义向量C都是不一样的,因为每一时刻聚焦的encoder部分的单词不同,会比不带attention机制的Seq2Seq效果要好。

Bahdanau Attention
Encoder-Decoder两大Attention机制解释_第2张图片
Luong Attention
Encoder-Decoder两大Attention机制解释_第3张图片
差异
Encoder-Decoder两大Attention机制解释_第4张图片
链接
https://blog.csdn.net/xy_free/article/details/80397426#commentsedit

你可能感兴趣的:(自然语言处理)