NLP入门(三):seq2seq之GRU对齐文本和机器翻译

首先来回顾之前用到的两种seq2seq模型(sequence to sequence)

(1)和(2)编码器结构完全相同,只不过(1)使用的是单向LSTM,(2)使用的是单向的GRU,二者的重要区别在于decoder部分。看RNN的输入,要看它左边的箭头(time step时间节点)和下面的箭头(与RNN的层数相关)。

注意:编码器中时间节点t的hidden state用h(t)表示,解码器中时间节点t的hidden state用s(t)表示

(1)的解码器,当前RNN的输入包括上一时刻时间节点预测的输出单词y(t-1)和上一时间节点hidden state s(t-1),而prediction layer/线性预测层的输入为解码器当前时间节点的hidden state s(t)有关。

(2)的解码器,当前RNN的输入包括:编码器输出的context vector z,上一时刻时间节点的预测单词(或者是上一时刻时间节点的ground truth单词,由teaching force rate决定)和解码器上一层hidden state s(t-1)有关。prediction layer/线性预测层的输入为:当前时间节点的hidden state s(t),编码器的输出context vector,和上一时刻时间节点的预测单词。

但是(1)和(2)都是基于编码器输入的所有单词(input sentence sequence)中的信息都融合到了一个context vector的情况下,也就是说,这样的sequence to sequence model需要编码器输出的context vector z包含输入sentence中的所有信息。但是在解码器的具体某个时刻进行解码时,可能只需要编码器某个时间节点处的输入信息,但是它只能得到关于输入一句话的全局信息,为了使解码器在具体的某个时刻能够得到与当前时刻最为相关的信息(也就是说,要找出,编码器输入的sentence中哪个时间节点处的信息对解码出当前时间节点的单词信息量最大/最有帮助),这就需要将编码器所有时间节点处的hidden state输出(对于GRU,只有hidden state,并没有专门的cell state),然后进行加权求和,权值是与解码器当前时间节点相关联的一套数值(这个的意思是,对于解码器的每个时间节点,对于编码器所有时间节点的hidden state的加权系数是不一样的),权值即为attention vector,记作a,a的维度为编码器序列的时序长度,attention vector中每个分量的数值介于0-1之间,对于解码器的每个时间节点,a不同,但是所有时间点的权值(即向量a的所有维度)之和为1。attention vector的含义也就是:对于解码器的当前时间节点,更为关注哪个编码器时间节点的信息。用hi表示编码器第i个时间节点处的hidden state,ai表示权值系数。再次强调,在解码器的每个time step处的attention vector都是不相同的(必须是不相同的,因为解码器每个时间节点解码出来的单词需要关注编码器的信息权重是不一样的)

对于解码器的每个时间节点,将编码器每个时间节点输出的hidden state和attention vector加权求和之后,得到的w(t),t表示解码器时间节点t,将w(t)代替(2)中的context vector输入到RNN和线性预测层。(要注意的是:在解码器的第1个时间节点,输入RNN层的hidden state并不是w而是h,即编码器最后一个时间节点输出的hidden state)。

 

本节(NLP系列的第三小节)是基于attention的sequence to sequence model,其中,编码器使用的是双向的GRU,解码器每个时间节点的输入情况:解码器RNN输入:上一时刻解码器线性预测层的预测单词,上一时刻解码器RNN层的hidden state,经过attention vector加权求和后的w(对于当前时刻解码最为有用和corresponding的information)。解码器线性预测层的输入:w,解码器RNN当前时间节点输出的hidden state,上一时刻解码器线性预测层的预测单词。第三个小节中所描述的sequence to sequence模型实际上包含了attention机制的原始版本,即将s(t-1)作为query vector,编码器在每个时间节点输出的hidden state h(0),h(1),……h(T)作为key,然后h(0),h(1),……h(T)作为value,query vector与key之间计算的softmax概率相似度矩阵a,使用a将value进行加权求和,得到当前的w(w可以看作是编码器所有hidden state的加权求和)。这样的attention机制,编码器中的h充当了value和key的作用,并且编码器的每个h加权求和之后的w中包含h,w作为解码器每个时间节点的输入,则h的数值将会影响很多变量,这将导致h所要承载的信息太多,故而后序的key-value attention则通过对于h分别进行矩阵K和矩阵V的线性变换,得到K(H)和V(H),作为attention机制的key和value。

NLP前3个模型对比
  output of encoder RNN input of decoder RNN input of linear prediction layer
原始的seq2seq(1) 最后一个时间节点的hidden state z作为context vector 由两部分构成:上一时刻时间节点预测的输出单词y(t-1)和上一时间节点hidden state s(t-1) 解码器当前时间节点的hidden state s(t)
(2) 最后一个时间节点的hidden state z作为context vector 编码器输出的context vector z,上一时刻时间节点的预测单词y(t-1)和解码器上一层hidden state s(t-1) 当前时间节点的hidden state s(t),编码器的输出context vector,和上一时刻时间节点的预测单词y(t-1)
基于attention的(2) 编码器每个时间节点的hidden state,最后一个时间节点的hidden state z(仅仅作为解码器第1个时间节点的hidden state输入)

cont

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值