Loading

Seq2Seq模型的注意力机制

概述

Seq2Seq模型,顾名思义就是把一种对象序列转换为另一种对象序列的模型,模型的工作流程如下所示:
seq2seq_1.gif
当我们把一个抽象的Seq2Seq模型转化为一个具体的任务,以NMT任务为例,输入的是一系列单词,输出的同样是一系列单词
seq2seq_2.gif

深入

Looking under the hood,我们可以发现Seq2Seq模型由一个Encoder和一个Decoder组成
Encoder可以处理输入序列,捕捉输入序列的上下文信息
Decoder可以处理Encoder输出的上下文信息,进行生成任务
seq2seq_3.gif
seq2seq_4.gifRNN_1.gif
在NMT任务中,Encoder和Decoder都是RNN,上下文信息是向量,向量的大小就是RNN隐藏单元的数量
从下图我们可以看出,Encoder最后一个隐藏状态就是Decoder所需要的上下文信息
seq2seq_5.gifseq2seq_6.gif

注意力机制

上下文向量作为Seq2Seq任务的瓶颈,使得模型处理长序列具有颇具挑战性
为解决该问题,注意力机制的提出极大地提高了NMT的质量,使模型能够把注意力集中到输入序列的部分内容
在注意力模型中,Encoder负责把所有的隐藏状态全部传递给Decoder,Decoder负责把注意力集中于部分内容

  1. 查看输入的隐藏状态集合,其中每个隐藏状态都与输入序列中的某个单词最相关
  2. 对每个隐藏状态打分
  3. 每个隐藏状态与softmax后的分数相乘

seq2seq_7.gif
attention_process.gifattention_tensor_dance.gif

Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)

posted @ 2020-11-19 20:37  金砖丶  阅读(601)  评论(0)    收藏  举报