赞
踩
本文以机器翻译为例子介绍了传统的机器翻译与含有attention技术的机器翻译的不同,介绍注意力机制;最后举例说明注意力机制的具体过程。
注意力机制(Attention Mechanism)的本质是:对于给定目标,通过生成一个权重系数对输入进行加权求和,来识别输入中哪些特征对于目标是重要的,哪些特征是不重要的。
传统的机器翻译是由encoder和decoder两个板块组成。其中Encoder和Decoder都是一个RNN,也可以是LSTM。encoder的工作原理和RNN类似,将词向量输入到Encoder中之后,我们将最后一个hidden state的输出结果作为encoder的输出,称之为context。Context可以理解成是encoder对当前输入句子的理解。之后将context输入进decoder中,然后每一个decoder中的hidden state的输出就是decoder 所预测的当前位子的单词。从encoder到decoder的过程中,encoder中的第一个hidden state 是随机初始化的且在encoder中我们只在乎它的最后一个hidden state的输出,但是在decoder中,它的初始hidden state 是encoder的输出,且我们关心每一个decoder中的hidden state 的输出。
Attention需要encoder中所有的hidden states的信息都传入decoder中,若encoder中有N个hidden states,则需要将这N个hidden states 的信息全部给decoder。将所有信息传入decoder之前,我们需要为N个hidden states 分别设置一个权重,之后将每一个hidden state 根据设置权重加权求和,再将所有加权求和之后的 hidden states 输入到decoder中。
在没有注意力机制前,机器翻译的模型如下图,编码器最后一个时间点输出的hidden state作为解码器的初始hidden state,解码器中上一个时间节点的输出会当作下一个时间的输入,循环下去,直到eos结束 。
当句子较长的时候,就要在sequence to sequence 的模型上加attention机制。attention的输入是编码器的三个hidden state和解码器的当前hidden state,输出是context vector,context vector告诉解码器对齐的词是什么。
attention的解刨图:
attention的输入有两部分,编码器的所有hidden state和 解码器的当前hidden state,把h0’复制三份和编码器的所有hidden state连起来和要更新的weight矩阵相乘,得到1x3的矩阵energy,放进softmax得到attention,attention乘以编码器的hidden state得到context vector。context vector和本身解码器的输入连起来作为新的输入,输入LSTM 。
举例:
中文词汇量只有五个字,需要翻译的英语的词汇量也只有五个,三个数字代表一个词向量,比如0.3923、-0.2236、-0.3195代表我字。
编码器:
初始的hidden state和cell state都是随机生成的,x1代表“我”的词向量,x2为“很”,x3为“好”,第一个时间点LSTM的输入为x1,h0,c0,生成h1,c1,h1,c1又作为下一个节点的输入,与x2生成h2,c2,h2,c2作为输入生成h3,c3;h3作为解码器的输入h0’ ,h0’,h1,h2,h3作为attention输入。
把h0’,h1,h2,h3四个数如下图所示连起来,然后和alignment weight矩阵相乘得到energy,energy进入softmax得到attention,attention用来衡量哪个编码器的hidden state最重要,例子中最重要的是第三个字,attention和encoder state相乘得到context vector。
把context vector和 BOS放进LSTM得到hidden state h0’, h0’放进linear layer成为一个七类分类任务,找到数字最大的词“very”。再用very和h1,h2,h3,h1’放进LSTM中进行计算,计算过程与计算第一个词类似,以此类推。
本次学习通过手推注意力机制,对注意力机制有了进一步的了解。注意力机制就是在某时刻将注意力放在某些事物上,而忽略另外的一些事物。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。