【计算机学报2019】《基于深度学习的开放领域对话系统研究综述》
本文的研究对象是开放领域的对话系统,
其形式化描述为,在历史对话信息背景下,人将无领域限制的话语作为查询(也可称为消息或问题等)输入计算机,计算机返回对应的回复语句(也可称为响应或回答)。
以场景设置为标准,对话系统可以分为单轮对话系统和多轮对话系统。单轮对话系统将对话问题简化,只考虑找到给定查询的回复。多轮对话系统需要综合考虑对话上下文(包括历史对话信息和查询),建立对话的长期依赖关系,给出更加符合对话逻辑的回复。
Luong 等人将对话数据分成人机对话和人人对话。
本文主要针对开放领域对话,所以接下来主要梳理人人对话数据资源。
人人对话数据可以进一步分为口语对话和书面对话:
- 口语对话:口语对话具有通俗、口语化特点,说话者通常用对方的思路和方式讲话,倾向于使用较短的单词和短语。其中比较有代表性的
数据集包括 Switchboard 电话对话数据集 、DSTC4-5 的 skype 通信数据集、康奈尔电影对话语料库[18]、OpenSubtitles 网站1上的OpenSubtitles 数据集[19]。 - 书面对话:书面对话在书面交流中产生,它的特点是用户可以在发送消息前反思他们正在写的东西。书面对话语料可以进一步从来源进行区分。例如、从 Twitter2网站上搜集数据构造对话语料。Shang 等人[12]从新浪微博3网站上搜集对话语料进行实验。文献[23, 24]从聊天软件中收集关于 ubuntu 使用中遇到的问题和相关回答。Song 等人[25]从豆瓣论坛4中收集发帖和回复。
语言模型
语言模型(Language Model,LM)把语料库当作一个随机变量,对给定前面的词语预测下一个词语的任务建模来计算句子概率。、神经网络语言模型(Neural Network Language Model,NNLM)最早由 Bengio 等人提出,其核心思路是用一个 K 维的向量来表示词语,被称为词向量( Word Embedding),使得语义相似的词在向量空间中处于相近的位置,并基于神经网络模型将输入的上下文词向量序列转换成成固定长度的上下文隐藏向量,使得语言模型不必存储所有不同词语的排列组合信息,从而改进传统语言模型受词典规模限制的不足。如图 1 所示
自编码器AE
自编码器(Autoencoder, AE)是一种无监督的学习模型,由 Rumelhart 等人最早提出。自编码器由编码器和解码器两部分组成,先用编码器对输入数据进行压缩,将高维数据映射到低维空间,再用解码器解压缩,对输入数据进行还原,从而来实现输入到输出的复现。如图 2 所示,自编码器的训练目标是,使得输出 X 尽可能地还原输入 X。其中,编码器和解码器基于神经网络构建。
为了改进基本模型中容易陷入局部最优的情况,深度自编码器模型被提出。其中,变分自编码器和条件变分自编码器被用到开放领域的对话系统中,对回复生成的多样性进行控制,示意图如图3。
- 变分自编码器 (VAE)是一种生成模型,它引入统计思想在基础的自编码器模型基础_上加入正则约束项,使得隐层z满足某个分布,并从z中自动生成数据。
- 条件变分自编码器 (CVAE)是在变分自编码器之上再加一些额外信息为条件的一类模型。其模型训练和测试时候均以该额外信息c为条件。
卷积神经网络
卷积神经网络(CNN)是人工神经网络的一种。其核心思想是设计
局部特征抽取器运用到全局,利用空间相对关系共享参数,来提高训练性能。
卷积层和池化层是卷积神经网络的重要组成部分。
- 卷积层的作用是从固定大小的窗口中读取输入层数据,经过卷积计算,实现特征提取。卷积神经网络在同一层共享卷积计算模型来控制参数规模,降低模型复杂度。
- 池化层的作用是对特征信号进行抽象,用于缩减输入数据的规模,按一定方法将特征压缩。池化的方法包括加和池化、最大池化、均值池化、最小值池化和随机池化。最后一个池化层通常连接到全连接层,来计算最终的输出。
卷积神经网络在能从文本中提取隐藏特征,形成低维向量表示。如图 4 所示,模型利用局部特征抽取器通过滑动窗口获取变长序列的隐藏特征,并经过池化得到定长输出。
循环神经网络
循环神经网络(RNN)是专门设计用于处理序列数据的神经网络架构,它利用时间相对关系减少参数数目以提高训练性能。
循环神经网络具有自环的网络结构。一个简单的循环神经网络如图 5 所示,左边为压缩表示,右边是按时间展开的表示。其中,自环的网络对前面的信息进行记忆并应用于当前输出的计算中,即当前时刻隐藏层的输入包括输入层变量和上一时刻的隐藏层变量。由于可以无限循环,所以理论上循环神经网络能够对任何长度的序列数据进行处理。循环神经网络在实际应用时有梯度消失等问题。后续研究针对该问题提出带存储单元的循环神经网络长短时记忆网络(LSTM)和门控循环单元(GRU)。
循环神经网络在开放领域对话系统中可用于文本表示,即将词向量按词语在文本中的顺序逐个输入到网络中,末节点的隐藏向量可以作为该话语的语义向量表示。其扩展模型双向循环神经网络(Bi-LSTM)、密集循环神经网络(DenseRNN)等。
序列到序列模型
序列到序列(Seq2Seq)模型被 Cho 和 Sutskever 先后提出,前者将该模型命名为编码器 - 解码器模型,后者将其命名为序列到序列模型。具体来说,序列到序列模型就是输入一个序列,输出另一个序列,它是一个通用的框架,适用于各种序列的生成任务。其基本模型利用两个循环神经网络:一个循环神经网络作为编码器,将输入序列转换成定长的向量,将向量视为输入序列的语义表示;另一个循环神经网络作为解码器,根据输入序列的语义表示生成输出序列,如图 6 所示。
层次序列到序列模型在序列到序列模型基础上定义了多层结构的编码器。首先,每个句子将其包含的词序列向量表示输经入循环神网络得到该句子的向量表示;然后,每个段落将其包含的句子序列向量表示输入另一个循环神经网络得到该段落向量表示。
注意力机制
通用的序列到序列模型,只使用到编码器的最终状态来初始化解码器的初始状态,导致编码器无法学习到句子内的长期依赖关系,同时解码器隐藏变量会随着不断预测出的新词,稀释源输入句子的
影响。
为了解决这个问题,Bahdanau 等人提出了注意力机制(Attention Mechanism)。注意力机制可以理解为回溯策略。它在当前解码时刻,将解码器 RNN 前一个时刻的隐藏向量与输入序列关联起来,计算输入的每一步对当前解码的影响程度作为权重,如图 7 所示。其中,前一时刻隐藏向量和输入序列的关联方式有点乘、向量级联方法等。最后,通过 softmax 函数归一化,得到概率分布权重对输入序列做加权,重点考虑输入数据中对当前解码影响最大的输入词。
随着研究的深入,Vaswani 等人将注意力机制定义为一个查询到一组键值对的映射过程,并提出了自注意力机制(Self-Attention),即其中的查询、键、值是同一个句子,减少对外部信息的依赖,捕捉数据内部的相关性。如图 8 所示,V、K、Q 分别代表值、键、查询,若模型为自注意力则 V=K=Q。Vaswani 等人还提出了多头注意力机制,即分多次计算注意力,在不同的表示子空间学习信息。多头注意力机制先对输入做划分,依次经过线性变换和点积后再拼接作为输出。
记忆网络
记忆网络(Memory Network)是指通过在外部存储器模块中存储重要信息来增强神经网络的一类模型。外部存储器模块具有内容可读写,信息可检索和重用的特点。Sukhbaatar 等人提出了一
个用于问答键值存储的端到端记忆网络架构(End-to-End Memory Networks,MemN2N)。其中外部存储器以键-值对结构存储问答知识,可以检索与输入相关的信息,得到相关度权值,然后获取将对应的值加权求和作为输出。如图 9 所示
相对于其他的神经网络模型,记忆网络的外部存储器可以构建具有长期记忆的模块(如知识库、历史对话信息等)来增强神经模型
生成对抗网络
生成对抗网络 ( Generative Adversarial Networks,GAN,)是 Goodfellow Ian 于 2014 年提出的一种深度学习模型。它包含两个模块:生成模型和判别模型。
- 生成模型的训练目标是生成与训练集中真实数据相似的数据。
- 判别模型是一个二分类器,用来判断这个样本是真实训练样本,还是生成模型生成的样本,其训练目标是尽可能地区分真实数据和生成数据。如图 10 所示,G 代表生成模型,D 代表判别模型
在开放领域对话系统中使用生成对抗网络的目标是生成与人类回复无差别的回复。
强化学习
机器学习按学习范式可以分为有监督学习、无
监督学习和强化学习。强化学习(Reinforcement
Learning)[44]是指智能体通过和环境交互,序列化地
做出决策和采取动作,并获得奖赏指导行为的学习
机制。
....后续看pdf吧 太长了