seq2seq简单总结

1.什么是seq2seq:

最基础的Seq2Seq模型包含了三个部分,即EncoderDecoder以及连接两者的中间状态向量,Encoder通过学习输入,将其编码成一个固定大小的状态向量c,继而将c传给DecoderDecoder再通过对状态向量c的学习来进行输出。EOS表示encoder阶段的结束,Decoder阶段解码的开始。

seq2seq简单总结_第1张图片

2.seq2seq+attention:

1) 为什么要加attention:

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

2) attention如何加入:

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

3)对齐机制的attention:

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

Ci向量获得的模型图

ai,j表示Encoder中每个时刻的权重参数,Si-1表示Decoder中上一个时刻输出的状态信息,hk表示Encoder阶段中每个时刻隐藏层的输出。

seq2seq简单总结_第2张图片

对齐attention机制模型图: decoder中若是没有h1的输入则表示是非对齐的attention

seq2seq简单总结_第3张图片

3.seq2seq应用场景:

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

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

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

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

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

你可能感兴趣的:(自然语言处理)