Attention机制与NLP技术图解剖析

Attention机制与NLP技术图解剖析

背景

本文是基于《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》在2014年发表文章的理解与应用说明。
该文章提出了在自然语言的一大重要领域,机器翻译中所应用的一些基本的核心技术。不像传统的统计方法进行机器翻译,这里提出了利用神经网络的方法进行处理。主要是基于 encoder–decoder 框架进行机器翻译,再此基础上引入了Attention机制进行工作。翻译任务一定程度上就是SeqToSeq问题。

SeqToSeq

seq2seq 是一个Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
Attention机制与NLP技术图解剖析!
上图展示了Seq2Seq的大框架。
输入:
Attention机制与NLP技术图解剖析
输出:
Attention机制与NLP技术图解剖析
(1) Encoder方面接受的是每一个单词word embedding,和上一个时间点的hidden state。输出的是这个时间点的hidden state。
Attention机制与NLP技术图解剖析Attention机制与NLP技术图解剖析
*从左边Encoder开始,输入转换为word embedding, 进入LSTM。LSTM会在每一个时间点上输出hidden states。如图中的h1,h2,…,h8。

(2) Decoder方面接受的是目标句子里单词的word embedding,和上一个时间点的hidden state。
Attention机制与NLP技术图解剖析
Attention机制与NLP技术图解剖析
*接下来进入右侧Decoder,输入为(1) 句首 <sos>符号,原始context vector(为0),以及从encoder最后一个hidden state: h8。LSTM的是输出是一个hidden state。(当然还有cell state,这里没用到,不提。)

(3) context vector是一个对于encoder输出的hidden states的一个加权平均。
Attention机制与NLP技术图解剖析
(4) 每一个encoder的hidden states对应的权重。
Attention机制与NLP技术图解剖析
(5) 通过decoder的hidden states加上encoder的hidden states来计算一个分数,用于计算权重(4)
Attention机制与NLP技术图解剖析
Attention机制与NLP技术图解剖析
*Decoder的hidden state与Encoder所有的hidden states作为输入,放入Attention模块开始计算一个context vector。之后会介绍attention的计算方法。

下一个时间点
Attention机制与NLP技术图解剖析
*来到时间点2,之前的context vector可以作为输入和目标的单词串起来作为lstm的输入。之后又回到一个hiddn state。以此循环。
(6) 将context vector 和 decoder的hidden states 串起来。
Attention机制与NLP技术图解剖析
(7) 计算最后的输出概率。
Attention机制与NLP技术图解剖析Attention机制与NLP技术图解剖析
*另一方面,context vector和decoder的hidden state合起来通过一系列非线性转换以及softmax最后计算出概率。
整体的流程图为:
Attention机制与NLP技术图解剖析

ck-reference
[1]: https://zhuanlan.zhihu.com/p/40920384