HRED+VHRED+AWI模型介绍

这次会介绍三篇文章,因为原理比较相似,都是采用分层架构来解决多轮对话问题,三篇论文如下所示:

  • Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models(HRED)
  • A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues(VHRED)
  • Attention with Intention for a Neural Network Conversation Model(AWI)

前面两篇出自Serban,文章思路和方法大体一致,后者在第一篇文章的基础上加入了变分编码机的思路,改善了模型的效果。而第三篇论文将Attention机制融合到分层seq2seq模型中,同样是引入了高层变量的方法。下面分别介绍三篇文章的具体细节:

HRED

模型的系统架构图如下所示:

简单来说就是使用分层的seq2seq模型构造多轮对话,Encoder RNN主要用于对输入句子进行编码,这里跟普通的seq2seq没有什么区别,并且把最后一个时刻的隐层向量认为是输入句子的编码向量,当做下一层RNN的输入向量。中间一层context RNN用来编码整个对话的状态、意图等对话层面的信息,而第一层RNN用来编码一句话的句子层面信息,中间层每个时刻输入的第一层输出的句子表示向量,这样context RNN的隐藏层向量就可以记住之前的对话信息,所以成为上下文向量。最后,将该编码了之前对话信息的向量作为decoder RNN的输入向量,使得在解码过程中除了使用回答句子本身信息还会结合对话上下文信息。这就是整体的架构,还有几个小的点需要注意一下:

  • Encoder和Decoder RNN每个句子是一个RNN,而Context RN只有一个RNN;
  • 在编码和解码阶段,处理每个句子的RNN结构完全相同而且共享参数(“The same encoder RNN and decoder RNN parameters are used for every utterance in a dialogue”),目的是为了生成一般化的语言模型;
  • 在解码阶段,每个时刻都会把Context RNN的输出与该时刻的输入并联一块作为输入,目的是是的每个解码时刻都可以引入上下文信息。

但是论文中也有提到这种方法效果并不是很好,反而会受预训练模型的影响比较严重,比如与训练的词向量和适用别的任务对参数预训练,这些预训练的参数对模型的准确度提升有着显著效果。

VHRED

前面说了HRED模型效果一般,所以作者后面提出在Context RNN环节引入一个高斯随机变量来改善模型产生回答的多样性。其模型架构图如下所示:

作者认为在传统的seq2seq模型中唯一变化的因素就是输出序列概率分布的不同导致输出发生变化,这在多轮对话中显然是无法满足对话响应的多样性需求。因为一旦输出的第一个词确定之后,后面的单词基本上都是根据语言模型确定,而且每个编码时刻的隐层向量hm更倾向于记住短期依赖而不是全局信息。因此为了引入更多的变化因素,作者引入变分编码的思想,在Context RNN环节加入一个高斯随机变量zn,以增加响应的多样性。

Zn的均值和方差都是根据Context RNN的隐藏层向量计算的,现将其传入一个两层神经网络增加一定的变化性,然后将该神经网络的输出与一个矩阵相乘得到均值,再将该输出与另一个矩阵相乘经过一个softplus函数得到方差。有了均值和方差之后便可以经过采样得到高斯变量Zn,将其与Context RNN拼接就相当于加入了噪声,可以一定程度上增加模型的变化性。

Attention with Intention

跟上面两个模型的思路很想,本文也是使用分层的seq2seq模型来解决多轮对话问题,但是跟上面不一样的是融入了Attention机制,以改善模型的效果。模型主要包括Encoder RNN、Intention RNN、Decoder RNN三个模块,架构图如下所示:

其实整体流程与HRED相似,这里就只介绍几个需要注意的细节就行了:

  • 每个句子的Encoder RNN的初始化状态都是前面一个Decoder RNN的最后一个隐层状态,这样做是为了在encoder阶段把前面时刻的对话状态引入进去;
  • Encoder是输出可以使用最后一个时刻的隐层状态,也可以使用Attention机制对每个时刻隐层状态进行加权求和,然后作为Intention RNN的输入;
  • Intention RNN在每个时刻除了会考虑Encoder的输出还会结合前一时刻Decoder的输出;
  • Decoder RNN的初始化状态是该时刻Intention RNN的输出

总结

其实三篇论文都是使用分层seq2seq模型实现多轮对话,这样做的好处是中间层可以实现对对话意图、目的等高层信息的学习和记忆,有点类似于对话状态跟踪模块之类的效果,但是整体上来讲这种结构还是没有办法很好的解决多轮对话答案空间的多样性问题。

你可能感兴趣的:(深度学习,RNN循环神经网络,QA,nlp,QA_对话机器人_机器阅读专题)