文章目录
论文标题:神经生成式问答
论文链接:https://arxiv.org/abs/1512.01337
arXiv:1512.01337v4 [cs.CL] 22 Apr 2016
摘要
本文介绍了一种名为神经生成问答(GENQA)的端到端神经网络模型,该模型可以根据知识库中的事实生成对简单事实性问题的答案。更具体地说,该模型基于序列到序列学习的编码器-解码器框架构建,并具有查询知识库的能力,并在包含问题-答案对及其相关三元组的知识库语料上进行训练。实证研究表明,所提出的模型能够有效地处理问题和答案的变化,并通过参考知识库中的事实生成正确且自然的答案。在问答实验中,所提出的模型表现出优于基于嵌入的问答模型以及在相同数据上训练的神经对话模型的能力。
1 简介
问题回答(QA)可以看作是单轮对话的特例:QA旨在使用自然语言提供正确的问题答案,而对话则强调生成与消息相关的、流畅的自然语言响应[13, 17]。最近深度学习的进步使得实现基于生成的QA成为可能,并且以完全中性的方式进行。也就是说,答案是由神经网络(例如循环神经网络RNN)根据问题生成的,该网络能够处理语言的灵活性和多样性。更重要的是,模型是通过端到端的方式训练的,因此无需使用语言学知识来构建系统,例如创建语义解析器。
然而,这种基于生成的方法在问答系统中有一个严重的限制。实际上,要在神经网络中存储所有知识以实现在现实世界中的期望精度和覆盖范围是不可能的。这是一个根本性的困难,其根源在于知识获取、表示和存储的方式。神经网络,以及更普遍的完全分布式表示方式,擅长表示平滑和共享的模式,即模拟语言的灵活性和多样性,但不适合表示离散和孤立的概念,即描绘语言的词汇表。
另一方面,最近基于记忆的神经网络模型的成功极大地扩展了存储和访问文本信息的方式,包括短期记忆(例如[1])和长期记忆(例如[20])。因此,将用于问答的神经模型与基于外部记忆的知识库的神经模型连接起来是一种自然的选择,这也与传统的基于知识库模板的问答方法有关。
在这篇论文中,我们报告了我们的探索方向,提出了一种名为神经生成式问答(GENQA)的模型。该模型可以通过访问知识库来生成对简单事实性问题的答案。更具体地说,该模型是基于编码器-解码器框架的序列到序列学习构建的,并具备查询知识库的能力。该模型的解码器经过特殊设计,由另一个神经网络控制,可以在生成常用词(例如“是”)和从知识库中检索术语(例如“约翰·马尔科维奇”)之间切换,具有一定的概率。模型在由真实世界问题-答案对组成的训练集上进行训练,这些问题-答案对与知识库中的三元组相关联,在这个过程中,模型的所有组件都会得到联合调整。实证研究表明,所提出的模型能够有效地捕捉语言的变化,并通过参考知识库中的事实生成正确且自然的问题答案。在问答实验中,该模型的表现优于基于嵌入的问答模型和在相同数据上训练的神经对话模型。
2 任务描述
2.1 学习任务
我们将生成式问答任务形式化为一个监督学习任务,更具体地说,是一个序列到序列的学习任务。一个生成式问答系统将一个词序列作为输入问题,生成另一个词序列作为输出答案。为了提供正确的答案,系统与知识库(KB)相连,其中包含事实。在回答过程中,系统查询知识库,检索一组候选事实,并使用正确的事实生成问题的答案。生成的答案可能包含两种类型的“词”:一种是用于构成答案的普通词汇(称为常用词),另一种是知识库中的专业词汇,表示答案(称为知识库词)。
为了学习任务的模型,我们假设每个训练实例都由一个问题-答案对组成,其中答案中指定了KB(知识库)中的单词。在本文中,我们只考虑简单事实性问题的情况,这意味着每个问题-答案对都与KB中的一个事实(即一个三元组)相关联。在不损失一般性的情况下,我们关注的是向前关系问答,其中问题涉及三元组的主题和谓词,答案来自对象。表1显示了一些训练实例的例子。
表1:生成式问答的训练实例示例。训练实例中的KB词在示例中已加下划线。
2 数据
为了促进生成式问答任务的研究,我们通过从网络上收集数据创建了一个新的数据集。首先,我们通过挖掘三个中文百科网站[1]的数据来构建知识库。具体来说,我们从网页的结构化部分(例如HTML表格)中提取实体和关联的三元组(主体、谓词、对象)。然后,对提取的数据进行归一化和汇总,形成一个知识库。在这篇论文中,我们有时把三元组中的一个元素称为知识库的构成部分。其次,我们通过从两个中文社区问答网站提取信息来收集问题答案对。表2显示了知识库和问答对的统计数据。
表2:问答数据和知识库的统计数据。
我们自动且启发式地通过将问答对与知识库中的三元组“接地”来构建生成式问答的训练和测试数据。具体来说,对于每个问答对,我们使用Aho-Corasick字符串搜索算法检索出现于问题中主题字段的候选三元组列表。然后,根据一系列规则判断候选列表中的三元组是否与问答对相关。相关性的基本要求是答案中包含三元组的对象,该对象指定了答案中的知识库词汇。此外,我们还使用额外的评分和过滤规则,试图找出与问答对真正匹配的三元组,如果有的话。处理结果是获得了72万个实例(问题、答案、三元组的元组),估计准确率为80%,即80%的实例具有真正的正确基础。数据在线上公开可用。
通过使用三元组作为分区键,将数据进一步随机划分为训练数据集和测试数据集。这样,测试数据中的所有问题都与训练数据中未出现的事实(三元组)相关。表3显示了数据集的一些统计信息。通过比较表2和表3中的三元组数量,我们可以看到知识库中很大一部分事实没有出现在训练和测试数据中,这证明了系统需要对未见过的事实进行泛化。
表3:GENQA训练和测试数据集的统计信息
2.3 挑战
学习生成式问答的关键挑战在于找到一种方法来联合训练神经网络模型,以便在一个统一的框架中进行问题理解、答案生成和知识库中相关事实的检索。更难的是,训练数据是嘈杂且非正式的,包含拼写错误、非常规表达和广泛的语言变化,这些都可能阻碍系统获取正确的问答模式。
3 GENQA模型
让Q =(x1,…,
x
T
Q
x_{T_Q}
xTQ)和Y =(y1,…,
y
T
Y
y_{T_Y}
yTY )分别表示自然语言问题和答案。知识库以一组三元组(主题,谓词,对象)的形式组织,每个三元组表示为τ =(τs,τp,τo)。受神经机器翻译的编码器-解码器框架[9, 16, 1]和神经自然语言对话[13, 17, 12]以及基于知识库嵌入的问题回答[7, 6, 4]工作的启发,我们提出了一种用于生成式问答的端到端神经网络模型,名为GENQA,如图1所示。
图1:GENQA系统示意图。
GENQA模型包括解释器、询问者、应答者和一个外部知识库。应答者进一步由注意力模型和生成器组成。基本上,解释器将自然语言问题Q转换为HQ表示,并将其保存在短期记忆中。询问者以HQ为输入与长期记忆中的知识库进行交互,从知识库中检索相关事实(三元组),并将结果总结在一个向量rQ中。回答者通过注意力模型(Attention Model)获取问题的表示HQ,以及向量rQ,并通过生成器(Generator)产生答案。以下我们将详细介绍每个组件。
3.1 解释器
给定以词序列形式表示的问题Q =(x1,…, x T Q x_{T_Q} xTQ),解释器将其编码为向量表示的数组。在我们的实现中,我们采用了双向循环神经网络(RNN)[1],它通过两个独立的RNN(在这里我们使用门控循环单元(GRU)[10])来处理正向和反向的序列。通过连接隐藏状态(表示为(h1,· · · , h T Q h_{T_Q} hTQ)),词的嵌入(表示为(x1,· · · , x T Q x_{T_Q} xTQ))和单词的一热表示,我们获得了向量数组HQ =( h ~ \widetilde{h} h 1,· · · , h ~ T Q \widetilde{h}_{T_Q} h TQ),其中 h ~ t \widetilde{h}_{t} h t = [ht; xt; xt]。这个向量数组保存在短期记忆中,以便Enquirer和Answerer进行进一步处理。
3.2 询问者
Enquirer 从知识库中“获取”相关事实(如图2所示)。Enquirer 首先进行术语级别的匹配(类似于第2节描述的问题-答案对与三元组的关联方法),以检索一系列相关的候选三元组,表示为
T
Q
=
{
τ
k
}
t
=
1
K
Q
T_Q = {\{τ_k\}}^{K_Q}_{t=1}
TQ={τk}t=1KQ ,其中 KQ 是候选三元组的数量,在我们的数据中最多只有几百个。在获得TQ之后,询问者会在嵌入空间中评估每个候选三元组与问题的相关性[7, 6]。
图2:GENQA的询问者。
更具体地说,询问者会计算问题Q和KQ三元组之间的相关(匹配)分数。对于问题Q,这些分数表示为一个KQ维向量rQ,其中rQ的第kth个元素定义为概率。
其中S(Q, τk)表示问题Q和三元组τk之间的匹配分数。 在rQ中的概率将进一步被引入到Answerer的概率模型中以生成答案。由于rQ的规模适中,参与匹配分数计算的三元组数量有限,因此该过程的效率得到了显著提高。这段话特别适用于学习阶段,通过监督信号进行参数优化,从而实现高效的学习。
在这个工作中,我们为Enquirer提供了两种计算问题与三元组匹配分数的实现方法。
线性模型 第一个实现方法是简单地取问题HQ中词嵌入向量的平均值作为问题的表示(用¯xQ表示)。对于知识库中的每个三元组τ,它取其主题和谓词的嵌入向量的平均值作为三元组的表示(用uτ表示)。然后我们定义匹配分数为
其中M是一个矩阵参数化问题与三元组之间的匹配。
基于卷积神经网络的匹配模型 第二种实现方法是使用卷积神经网络(CNN)来建模问题和三元组之间的匹配分数,类似于[11]和[14]中的方法。具体来说,问题首先被输入到一个卷积层,然后经过最大池化层,最后被总结为一个固定长度的向量,表示为
h
^
\hat{h}
h^Q。然后,
h
^
\hat{h}
h^Q和uτ(同样作为相应主题和谓词嵌入的平均值)被连接在一起,作为多层感知器(MLP)的输入,以产生它们的匹配分数
对于这个模型,参数包括CNN和MLP中的那些。
3.3 回答者
回答者使用RNN根据问题的信息在短期记忆(表示为HQ)中生成答案,并从长期记忆中检索相关事实(由rQ索引),如图3所示。
图3:GENQA的回答者。
生成答案Y = (y1, y2, …,
y
T
Y
y_{T_Y}
yTY )的概率定义为
在这段文字中,θ代表GENQA模型中的参数。在RNN模型中(含有隐藏状态s1, · · · ,
s
T
Y
s_{T_Y}
sTY ),条件概率由以下方式确定
在生成答案中的第t个词yt时,概率由以下混合模型给出
在这段话中,“语言”部分和“知识”部分的贡献被相加,系数p(zt|st;θ)通过以st为输入的逻辑回归模型实现。这里的隐含变量zt表示第tth个词是否由公共词汇(当zt=0时)或知识库词汇(当zt=1时)生成。在这项工作中,知识库词汇包含了所有与特定问题相关的候选三元组的对象。对于任何只在KB词汇表中出现的词y(例如,“2.29米”),我们有p(yt|yt−1, st, HQ, zt = 0; θ) = 0;而对于那些不在KB中出现的词(例如,“和”),我们有p(yt|rQ, zt = 1; θ) = 0。有些词(如“上海”)同时出现在普通词汇和KB词汇中,它们的概率会受到来自两部分的非平凡贡献。
在生成常用词汇时,Answerer 的工作方式与 [1] 中的 RNN 解码器相同,通过注意力模型选择来自 HQ 的信息。具体来说,t 步的隐藏状态计算为 st = fs(yt−1, st−1, ct),并且 p(yt|yt−1, st, HQ, zt = 0; θ) = fy(yt−1, st, ct)。其中,ct 是作为短时记忆 HQ 中隐藏状态加权和的上下文向量。
在通过p(yt|rQ, zt = 1; θ)生成KB-words时,Answerer只需使用模型p(yt=k|rQ, zt = 1; θ) = r Q k r_{Q_k} rQk。一个三元组与问题的匹配程度越高,其对象被选择的可能性就越大。
3.4 训练
要学习的参数包括解释器和回答者中的权重,以及询问者中的参数(矩阵M或卷积层和MLP的权重),还有共享于解释器RNN和知识库的词嵌入。尽管GENQA本质上包含了一个检索操作,但它可以通过最大化观测数据的概率来以端到端的方式进行训练。因为Answerer中的概率混合形式提供了一种从公共词汇表和知识库词汇表生成单词的统一方式。具体来说,给定训练数据D={(Q(i),Y(i),
T
(
Q
)
(
i
)
T^{(i)}_{(Q)}
T(Q)(i))},最优参数是通过最小化负对数似然函数并针对所有参数进行正则化得到的
在实际操作中,该模型是在带有GPU的机器上通过使用小批量随机梯度下降进行训练的。
4 实验
4.1 实现细节
数据中的中文文本通过使用Jieba中文分词器转换成单词序列。由于问题和答案中的单词分布不同,我们为它们使用不同的词汇表。特别是对于问题,我们使用了问题中最常见的30,000个单词和三元组谓词中的所有单词,覆盖了问题中98.4%的单词用法。对于答案,我们使用了最常见的30,000个单词,覆盖率达到了97.3%。所有不在词汇表中的单词都用特殊标记“未知”替换。编码器和解码器的隐藏状态维度均设置为500,而单词嵌入的维度设置为300。我们的模型是在NVIDIA Tesla K40 GPU上使用Theano进行训练的,批量大小为80。每个模型的训练大约需要两到三天的时间。
4.2 对比模型
据我们所知,目前还没有关于生成式问答的先验工作,所以我们选择了三个基线方法:一个神经对话模型、一个基于检索的问答模型和一个基于嵌入的问答模型,分别对应于GENQA的生成方面和知识库检索方面。
神经响应机(NRM):NRM[13]是一种基于神经网络的生成模型,特别设计用于短文本对话。我们使用与GENQA相同的词汇表对NRM模型进行训练。由于NRM在训练和测试过程中不访问知识库,实际上它会记住所有来自问答对的知识。
检索式问答:知识库通过信息检索系统(我们使用Apache Solr)进行索引,其中每个三元组被视为一个文档。在测试阶段,将问题作为查询,返回顶部检索到的三元组作为答案。请注意,这种方法不能生成自然语言答案。
嵌入式问答模型:如[6, 7]所提出的,该模型从训练数据中的问题三元组对中学习。模型学习将问题和知识库成分映射到同一个嵌入空间,其中问题与三元组之间的相似性计算为两个嵌入向量的点积。与GENQA中使用的交叉熵损失不同,该模型使用如下排名损失函数:
在这段文字中,τ 和 τ’ 分别表示与问题相对应的正向和负向三元组。与基于检索的问答系统类似,该模型也无法生成自然语言答案。
由于我们有两个GENQA模型的实现版本,我们将使用双线性模型的那个称为GENQA,而将使用卷积神经网络(CNN)和多层感知器(MLP)的那个称为GENQACNN。
4.3 结果
我们根据以下两个方面评估模型的性能:1)准确度,即正确回答问题的比例;2)答案的流畅性。为了确保准确的评估,我们从测试集中随机选择300个问题,并手动删除几乎重复的案例以及过滤掉错误的案例(例如,非事实类问题)。
准确度 表4显示了模型在测试集上的准确度。NRM的准确度最低,表明其缺乏准确记住答案和泛化到训练数据中未见过的问题的能力。例如,对于问题“Xavi作为中场球员为哪个国家效力?”(从中文翻译),NRM给出了错误的答案“他为法国效力”(从中文翻译),因为该运动员实际上为西班牙效力。基于检索的方法实现了中等的准确度,但与大多数字符串匹配方法一样,它在问题和知识库中的三元组之间存在单词不匹配的问题。基于嵌入的问答模型在测试集上获得了更高的准确度,这归功于其从分布式表示中获得的泛化能力。GENQA和GENQACNN都比竞争对手更好,表明GENQA可以从序列到序列学习的端到端训练中进一步受益。我们猜想,生成合适答案的任务可能有助于问题词嵌入的学习。在这两个GENQA变体中,GENQACNN实现了最好的准确度,正确回答了一半以上的问题。对此的解释是,卷积层有助于捕捉匹配中的显著特征。实验结果证明了GENQA模型从知识库中找到正确答案的能力,即使涉及到新的事实。例如,对于上述示例问题,GENQA给出了正确的答案“他为西班牙效力”。
表4:测试准确率
流畅性 我们进行了一些实证比较,发现NRM和GENQA在答案的流畅性方面没有显著差异。总的来说,所有三个基于生成的模型(其中两个是我们的)在大多数情况下都能产生正确的句子。
4.4 案例研究
图4给出了一些由我们的GENQA模型生成的测试集问题答案的例子,其中下划线的词来自知识库(KB)。显然,它能够顺利地将KB词汇和常用词汇融合到句子中,这归功于统一的神经网络模型,该模型可以学习在合适的时间插入KB词汇或常用词汇。我们注意到,大多数生成的答案都是简短的句子,这可能有两个原因:1) 数据集中许多事实性问题的答案通常很短,2) 我们通过最大归一化的序列对每个问题的答案进行束搜索,这通常偏爱较短的答案。示例1至4展示了正确生成的答案,其中模型不仅匹配正确的三元组(因此生成正确的知识库词汇),而且还生成适合的常用词。 然而,在某些情况下,例如示例5和6,即使找到了正确的三元组,从知识库的角度来看,周围的常用词也不合适或不正确(例如,在示例6中,“乔纳森·斯威夫特”这个作者来自爱尔兰而不是法国)。通过研究测试数据中生成的正确答案,我们发现大约有8%的答案具有不合适的周围词汇。在某些其他情况下,该模型无法将正确的事物与问题匹配,从而产生完全错误的答案。例如,问题7是关于电影的上映日期,而该模型找到了它的发行商并生成了一个在事实和语言上都错误的答案。
图4:GENQA生成的答案示例。
5 相关工作
我们的工作受到了最近关于神经机器翻译和神经自然语言对话的研究的启发。大多数神经翻译模型都遵循编码器-解码器框架[9, 8, 16],其中编码器将输入序列总结为一系列向量表示,而解码器则根据这些向量表示生成输出序列。巴德纳等人[1]将注意力机制引入到框架中,他们的系统被称为RNNsearch算法,可以同时学习对齐和翻译,并显著提高翻译质量。这个框架也已被应用于自然语言对话[13, 17, 12, 19, 18],其中端到端神经对话模型在大量会话数据上进行训练。尽管有前途,但神经对话模型仍然存在问题和局限性,例如缺乏机制来整合知识。
我们的工作也受到了最近关于知识库嵌入和从知识库进行问答工作的启发。TransE[5]是一种通过将主题实体转换为对象实体来学习实体的嵌入向量和实体之间关系的方法。问题回答模型学习将问题和知识库中的成分嵌入到同一个低维空间中,在这个空间里计算问题与三元组/子图之间的相似度得分,并选择排名最高的三元组/子图作为答案[7, 6]。 杨等人[21]提出了一种方法,该方法通过联合关系嵌入将自然问题转换为相应的逻辑形式,并通过利用语义关联在潜在空间中进行问答,这些关联存在于词汇表示和知识库属性之间。
记忆网络[20, 15]是一种最近提出的一类模型,它结合了一个大型存储器和一个可以读写存储器的学习组件,以便进行问答的推理。Bordes等人[4]提出了一种基于嵌入式问题回答系统的记忆网络框架,展示了在问答中引入更多推理方法的前景。 最近,尹等人[22]提出了一种名为神经询问器(Neural Enquirer)的架构,用于在知识库表上执行自然语言查询以回答问题。这是一个完全神经和端到端的网络,它使用查询和表的分布表示,并通过一系列可微操作实现复合查询的执行。
6 结论
在本文中,我们提出了一种用于生成式问答的端到端神经网络模型。该模型基于序列到序列学习的编码器-解码器框架,同时具备查询知识库的能力。实证研究表明,提出的模型能够通过引用知识库中的事实,生成自然且正确的答案来回答问题。在未来,我们计划继续致力于问答和对话方面的工作,这包括:1)迭代式问答:一个能够在多轮对话中与用户互动以确认、澄清或回答问题的问答系统;2)从复杂知识库进行问答:一个具有查询复杂结构化知识库(如知识图谱)能力的问答系统。