目录

一 Seq2Seq结构解析

1 Seq2Seq是一种Encoder-Decoder结构

2 Encoder(编码阶段:将输入序列压缩成固定长度的语义向量)

方式一:将最后一个隐状态输出进行变换(不变换),作为语义向量(不推荐使用)

方式二:将所有的隐状态输出进行变换,作为语义向量(推荐使用)

3 Decoder(解码阶段:将语义向量生成指定序列)

方式一:将语义向量输入到Decoder中,作为初始隐状态的输入(不推荐使用)

方式二:将语义向量输入到Decoder中,参与Decoder各个解码过程(推荐使用)

二 Seq2Seq原理解析(以Encoder-Decoder with peek为例)

1 Encoder阶段

2 Decoder阶段

3 损失函数(极大似然估计)

三 Seq2Seq常见架构

1 Basic Encoder-Decoder(不推荐使用)

2 Encoder-Decoder with feedback(不推荐使用)

3 Encoder-Decoder with peek(不推荐使用)

4 Encoder-Decoder with attention(推荐使用)

四 Attention机制

1 核心思想

2 算法原理


一 Seq2Seq结构解析

1 Seq2Seq是一种Encoder-Decoder结构

基本思想就是使用两个RNN,一个RNN作为Encoder,另一个RNN作为Decoder

2 Encoder(编码阶段:将输入序列压缩成固定长度的语义向量)

方式一:将最后一个隐状态输出进行变换(不变换),作为语义向量深度学习--RNN架构(N:M)--Seq2Seq+Attention机制(不推荐使用)

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

方式二:将所有的隐状态输出进行变换,作为语义向量深度学习--RNN架构(N:M)--Seq2Seq+Attention机制(推荐使用)

 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

3 Decoder(解码阶段:将语义向量生成指定序列)

方式一:将语义向量输入到Decoder中,作为初始隐状态的输入(不推荐使用)

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

方式二:将语义向量输入到Decoder中,参与Decoder各个解码过程(推荐使用)

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

二 Seq2Seq原理解析(以Encoder-Decoder with peek为例)

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

1 Encoder阶段

  • Encode依次读入整个序列深度学习--RNN架构(N:M)--Seq2Seq+Attention机制,依次得到深度学习--RNN架构(N:M)--Seq2Seq+Attention机制个隐状态深度学习--RNN架构(N:M)--Seq2Seq+Attention机制
  • 语义向量:深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

2 Decoder阶段

  • 初始隐状态:深度学习--RNN架构(N:M)--Seq2Seq+Attention机制
  • 隐状态:深度学习--RNN架构(N:M)--Seq2Seq+Attention机制
  • 输出(softmax):深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

3 损失函数(极大似然估计)

第一步:单个样本目标函数

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制 

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

第二步:所有样本的目标函数

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

三 Seq2Seq常见架构

注意:四种架构对比图(迭代次数与准确率)

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

1 Basic Encoder-Decoder(不推荐使用)

  • 将编码器的编码向量作为解码器的输入

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

2 Encoder-Decoder with feedback(不推荐使用)

  • 将编码器的编码向量作为解码器的初始隐状态输入
  • 将解码器上一轮输出作为下一轮隐状态的输入

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

3 Encoder-Decoder with peek(不推荐使用)

  • 将编码器的编码向量作为解码器的输入
  • 将上一轮解码器的输出作为下一轮解码器隐状态的输入

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

4 Encoder-Decoder with attention(推荐使用)

  • 将编码器的所有隐状态输出使用attention机制,得到编码向量组深度学习--RNN架构(N:M)--Seq2Seq+Attention机制
  • 将编码器的编码向量作为解码器的输入
  • 将上一轮解码器的输出作为下一轮解码器隐状态的输入

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

四 Attention机制

注意:以双向RNN为例

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

1 核心思想

  • 在Decoder每一步都有一个输入语义向量深度学习--RNN架构(N:M)--Seq2Seq+Attention机制,即解码器每一步的语义向量都会重新计算
  • 在Decoder第深度学习--RNN架构(N:M)--Seq2Seq+Attention机制步的输入,对Encoder的输入序列的所有隐状态深度学习--RNN架构(N:M)--Seq2Seq+Attention机制进行加权求和,得到一个语义向量深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

2 算法原理

第一步:计算能量函数深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

注意:

  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:表示解码器Decoder第深度学习--RNN架构(N:M)--Seq2Seq+Attention机制个位置的隐状态输出
  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:表示编码器Encoder第深度学习--RNN架构(N:M)--Seq2Seq+Attention机制个位置的隐状态输出
  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:表示权重矩阵
  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:表示权重向量

第二步:计算权值深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

注意:

  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:代表解码器Decoder的特征向量输入位置(深度学习--RNN架构(N:M)--Seq2Seq+Attention机制
  • 深度学习--RNN架构(N:M)--Seq2Seq+Attention机制:代表编码器Encoder的隐状态向量输出位置(深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

第三步:计算语义向量深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

深度学习--RNN架构(N:M)--Seq2Seq+Attention机制

相关文章: