第9次课-seqseq2&attention

神经机器翻译(NMT)是一种新兴的机器翻译方法,它试图构建和训练一个大型的神经网络,该网络可以读取输入文本并输出翻译。NMT的先锋就是seq2seq,seq2seq于2014年在两篇开创性的论文中提出,在机器翻译、文本摘要和图像字幕等任务中取得了很大成功。谷歌翻译在2016年底开始使用这种模型。

seq2seq模型

1.什么是seq2seq:

Seq2Seq模型是RNN(包括LSTM和GRU)重要的一个变体. seq2seq又叫Encoder-Decoder模型。它可以实现从一个序列到任意一个序列的转换。

最基础的Seq2Seq模型包含了三个部分,即Encoder、Decoder以及连接两者的中间状态向量,Encoder通过学习输入,将其编码成一个固定大小的状态向量S,继而将S传给Decoder,Decoder再通过对状态向量S的学习来进行输出。

2.seq2seq+attention:

0)attention概念:

Attention是从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。

1) 为什么要加attention:

lstm模型虽然具有记忆性,但是当Encoder阶段输入序列过长时,解码阶段的lstm无法很好的针对最早输入的序列(可能会遗忘最早的序列信息)。

2) attention如何加入:

在Decoder阶段:将每一时刻解码的输入(上一时刻的输出)与Encoder阶段所有时刻隐藏层的输出信息进行加权求和(通俗点讲就是:在预测下一个词时都会把Encoder阶段的信息都看一遍,决定预测当前词和Encoder中的哪些词相关)。得到Decoder阶段当前时刻的Ci(每个时刻都会有一个新的Ci)。当前时刻隐藏层的新状态Si则是根据上一时刻的状态Si-1,Yi-1,Ci 三者的一个非线性函数得出。

引入attention的一个直观解释是,对于seq2seq,类似于翻译人员从头到尾阅读德语文本, 完成后,他开始逐字翻译成英语。 如果句子过长,则他可能会忘记文本前面部分所读的内容。而seq2seq +attention则类似于翻译人员从头到尾阅读德语文本,同时写下关键字,然后他开始翻译成英语。 在翻译每个德语单词时,他使用了自己写下的关键字。

3)对齐机制的attention:

在Decoder阶段每一时刻解码获得的Ci向量与普通attention一样,隐藏层状态Si的获得不同,Si是根据Si-1,Yi-1,Ci和Encoder阶段对应时刻的输出。

原文链接:https://blog.csdn.net/NeilGY/article/details/87929863

3.seq2seq应用场景:

seq2seq的用途很广,可以做机器翻译,也可以做问答系统:

由于这种Encoder-Decoder结构不限制输入和输出的序列长度,因此应用的范围非常广泛,比如:

机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的

文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。

阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。

语音识别。输入是语音信号序列,输出是文字序列

Self-attention

2.Self-attention具体的计算过程

self-attention模块接收n个输入,并返回n个输出。 这个模块会做什么? 简单来说,self-attention机制允许输入彼此交互(“自我”)并找出它们应该更多关注的对象(“关注”)。 输出是这些交互和注意力得分的加权和。

  1. 准备输入
  2. 初始化权重
  3. 生成key,query和value
  4. 计算输入1的attention score
  5. 计算softmax
  6. 将分数与值相乘
  7. 对加权值求和以获得输出1
  8. 对输入2和输入3重复步骤4–7

Self Attention可以捕获同一个句子中单词之间的一些句法特征(比有一定距离的短语结构)或者语义特征(its)