雷锋网 AI 科技评论按:近日,阿里 AI 开源了新一代人机对话模型 Enhanced Sequential Inference Model(ESIM)。ESIM 是一种专为自然语言推断而生的加强版 LSTM,据阿里介绍,该算法模型自 2017 年被提出之后,已被谷歌、facebook 在内的国际学术界在论文中引用 200 多次,更曾在国际顶级对话系统评测大赛(DSTC7)上获得双料冠军,并将人机对话准确率的世界纪录提升至 94.1%。
ESIM 模型在智能客服、导航软件、智能音箱等场景均具有广泛的应用前景。阿里 AI 发布了相关论文介绍了该模型,雷锋网 AI 科技评论将其编译如下。
极具潜力和商业价值的人机对话系统正在受到越来越多的关注。随着近来深度学习模型的引入,我们在构建端到端的对话系统过程中有了更高的成功几率。然而这一对话系统的构建仍然充满了挑战,它要求系统记忆并理解多轮对话文本,而不是像单轮对话系统那样仅仅考虑当前的话语内容。
多轮对话系统建模可分为基于生成文本的方法和基于检索的方法。基于检索的方法将从多轮对话的候选池中选择最佳回复,该方法可视为对多轮回复文本选择任务的执行。选择回复文本的典型方法主要包括基于序列的方法和基于层级信息的方法。基于序列的方法通常将对话连接成一个长序列,而基于层级信息的方法通常会分别对每个对话文本进行建模,然后再对话语之间的交互进行建模。
最近,有研究工作称基于层级信息的方法与复杂神经网络结合可以实现比基于序列方法更显着的增益效果。但在本文中,我们依然选择研究基于序列的方法即增强序列推理模型(ESIM)的有效性,该模型最初是为了自然语言推理(NLI)任务而开发。
在 DSTC7 对话回复选择挑战赛中,我们的模型在两个数据集(即 Advising 和 Ubuntu 数据集)中都排名第一。除此之外,我们的模型在两个大型公共基准数据集(Lowe's Ubuntu)上都比以前所有模型的效果更好,其中也包括上面所提到的最先进的基于层级信息的模型。我们的开源代码可在 https://github.com/alibaba/ESIM 上获得。
基于层级信息的方法通常会使用额外的神经网络来对多轮对话之间的关系进行模拟,该方法需要将多轮对话中的文本进行分段截取,使其具有相同的长度并且短于最大长度。然而,每轮对话的长度通常在实际任务中会有很大的变化,当使用较大的最大长度值时,我们则需要在基于层级信息的方法中添加大量的 0 进行填充,这将极大地增加计算复杂性和内存成本;而当使用较小的最大长度时,我们则可能在多轮对话环境中丢失一些重要信息。
我们建议在多轮对话回复选择任务中使用基于序列的 ESIM 模型来有效地解决基于层级信息方法所遇到的上述问题。该方法将多轮对话内容连接成一个长序列,并将多轮对话回复选择任务转换为一个句子对的二进制分类(即下一个句子是否是当前对话的回复)任务。
与基于层级信息的方法相比,ESIM 有两个主要优点。首先,由于 ESIM 不需要使每个话语具有相同的长度,因此它具有较少的零填充,可以比基于层级信息的方法更具计算效率。其次,ESIM 以一种有效的方式隐式地模拟对话中话语之间的交互,而并没有使用额外复杂的网络结构,详情如下文中「模型说明」部分所述。
对话系统技术挑战赛(DSTC7)划分了三个不同的赛道,而我们提出的方法则是针对「端到端的回复选择」主题的赛道。该赛道侧重于面向目标的多轮对话,着重于从一组对话候选文本中选择正确的回复。参与该赛道的比赛系统不能使用基于人工数据或基于规则的数据,而需要使用比赛方提供的 Ubuntu 和 Advising 这两个数据集,这些在「实验部分」我们会做详细的介绍。
「端到端的回复选择」赛道提供了一系列具有相似结构的子任务,但在输出部分和可用于对话部分的任务各不相同。在图 1 中,「√」表示在标记的数据集上评估任务,「×」表示未在该数据集上进行任务评估。
图 1 任务描述
多轮回复选择任务是在给定多轮对话的情况下,从候选池中选择下一对话内容。我们将问题转换为二进制分类任务,即对于给定多轮对话和候选回复,我们的模型只需要确定候选回复是否正确。在本节中,我们将介绍这个起初专为自然语言推理开发的模型——增强顺序推理模型(ESIM)。该模型由三个主要组成部分组成,即输入编码(Input Encoding)、局部匹配(Local Matching)和匹配合成(Matching Composition),如图 2 所示。
图 2 基于注意力机制力的句子对分类方法
输入编码
输入编码部分则执行对对话信息进行编码,以及在对话含义中的做标记的任务。ESIM 和基于层级信息的方法不同,后者通过复杂的层级信息来编码对话信息,而 ESIM 则是像这样简单地编码对话信息——首先,将多轮对话内容连接为长序列,其被标记为 c =(c1 ;:::;cm);候选回复被标记为 r =(r1 ;:::; rn);然后使用预训练的字嵌入 E ∈ R de×|V|(其中 |V| 是词汇量大小,de 是词语嵌入的维度)将 c 和 r 转换为两个矢量序列 [E(c1);:::;E(cm)] 和 [E(r1);:::; E(rn)]。其中有许多类型的预训练词嵌入,在这里我们提出了一种利用多个嵌入的方法——给定 k 个预训字嵌入 E1 ;:::; Ek,我们连接单词 i 的所有嵌入,如:E(ci)= [E1(ci);:::; EK(CI)];然后再使用具有 ReLU 的前馈层将词语嵌入的维度从(de1 + + dek)减小到 dh。
为了在其对话含义中表示标记,我们将对话和回复输入 BiLSTM 编码器来获得依赖于对话隐藏状态的 cs 和 rs:
其中 i 和 j 分别表示对话中的第 i 个标记和回复中的第 j 个标记。
局部匹配
对话和回复之间的局部语义关系建模是确定回复是否正确的关键组件。因为正确的回复通常与文本中的一些关键字有关,它可以通过对局部语义关系建模来获得。我们并不是直接将对话和回复编码为两个密集向量,而是使用交叉注意力机制将标记与对话对齐并重新回复,然后计算标记层级的语义关系。注意力机制的权重计算如下:
软对齐用于获得对话与回复之间的局部相关性,其由上述等式中的注意力机制力矩阵 e ∈ R m×n 计算而得。然后,对于对话中第 i 个标记的隐藏状态,即 cis(已编码标记本身及其对话含义),候选回复中的相关语义被识别为向量 cid,在此称为双向量,它是所有回复状态的加权组合,公式如下所示:
其中α ∈ R m×n 和 β ∈ R m×n 是相对于轴 2 和轴 1 的归一化注意力机制权重矩阵。我们对回复中每个标记的隐藏状态 rjs,执行类似的计算,公式如下:
通过比较矢量对<>,我们可以模拟对齐标记对之间的标记层级语义关系。类似的计算也适用于矢量对<>。我们收集如下的局部匹配信息:
在这里,我们使用了一种启发式的差分匹配方法和基于元素的产物来分别获得对话和回复的局部匹配向量 和 。其中 F 是一个单层前馈神经网络,可以使用 RELU 减少维数。
匹配合成
匹配合成的实现如下:为了确定回复是否是当前对话的下一个话语,我们探索了一个集成层来集成所得的局部匹配向量(cl 和 rl):
我们再次使用 BiLSTM 作为集成图层的构建块,但 BiLSTMs 的作用与输入编码图层的作用完全不同。这里的 BiLSTM 读取局部匹配向量(cl 和 rl)并学习对关键局部匹配向量进行区分从而获得总体对话的层级关系。
BiLSTM2 的输出隐藏向量通过集成的操作转换为固定长度向量,并馈送到最终的分类器以确定整体关系;其中最大值和平均值将被使用并连接在一起,来获得一个固定长度的向量;最后一个矢量被送入有一个隐藏层、TANH 激活层和 SOFTMAX 输出层的多层感知器(MLP)分类器中;整个过程通过端到端的方式来最小化交叉熵损失,从而训练整个 ESIM 模型。
基于句子编码的方法
对于 Ubuntu 数据集中的子任务 2,我们需要从 120000 个句子的候选池中选择下一个回复话语;如果我们直接使用基于交叉注意力机制的 ESIM 模型,则计算成本是让人难以接受的。相反,我们先使用基于句子编码的方法从 120000 个句子中选择前 100 个候选话语,然后使用 ESIM 重新排列它们,这样的方式也是行之有效的。
基于句子编码的方法使用了图 3 所示的 Siamese 架构,它应用参数绑定神经网络来编码对话和回复;然后再使用神经网络分类器来确定两个句子之间的关系。在这里,我们使用具有多头自注意力机制池中的 BiLSTM 来对句子进行编码,以及用 MLP 进行分类。
图 3 基于句子编码的句子对分类方法
我们使用与 ESIM 相同的输入编码过程。为了将可变长度句子变换为固定长度矢量表示,我们使用所有 BiLSTM 隐藏向量(H)的加权求和:
是权重矩阵; 是偏差; da 是关注网络的维度,dh 是 BiLSTM 的维度。 是 BiLSTM 的隐藏向量,其中 T 表示序列的长度。 是多头注意力机制权重矩阵,其中 dm 是需要使用保持集调整的头数的超参数。我们不是使用最大池或平均池,而是根据权重矩阵 A 对 BiLSTM 隐藏状态 H 求和,以得到输入句子的向量表示:
其中矩阵 可以转换为矢量表示 。为了增强句子对之间的关系,与 ESIM 类似,我们将两个句子的嵌入及其绝对差异和元素乘积连接为 MLP 分类器的输入:
MLP 有 ReLU 激活层、快捷连接层和 softmax 输出层,并能够通过最小化交叉熵损失对整个模型进行端到端的训练。
数据集
我们在 DSTC7「端到端的回复选择」赛道的两个数据集上测试了我们的模型,即 Ubuntu 和 Advising 数据集。此外,为了与以前的方法进行比较,我们还在两个大规模的公共回复选择基准数据集上测试了我们的模型,即 Lowe 的 Ubuntu 数据集和电子商务数据集。
Ubuntu 数据集。Ubuntu 数据集包括了来自 Ubuntu Internet Relay Chat(IRC)的双人对话数据。在这个挑战下,每个对话框包含了超过 3 个回合的对话,系统被要求从给定的候选句子集中选择下一个回复话语,其中 Linux 手册页会作为外部知识提供给参赛者。我们使用了与 Lowe 提出的类似数据增强策略,即我们将每个话语(从第二个开始)视为潜在回复,而先前的话语作为其对话;因此,长度为 10 的对话将产生 9 个训练样例。为了训练二进制分类器,我们需要从候选池中抽取负面(错误)的回复。最初,我们使用正负回复比率为 1:1 来平衡样本;后来我们发现使用更多的负面回复将能够有效改善结果,如 1:4 或 1:9。考虑到效率因素,我们在所有子任务的最终配置中除了子任务 2 采用了 1:1 的正负回复比率,其余均选择了 1:4 的正负回复比率。
Advising 数据集。Advising 数据集包括了模拟学生和学术顾问之间讨论的双人对话数据;结构化信息则作为数据库提供,包括了课程信息和角色;其中数据还包括了句子的释义和目标回复。我们使用类似的数据增强策略,基于原始对话及其释义的 Ubuntu 数据集,正面回复之间的比率是 1:4.33。
Lowe 的 Ubuntu 数据集。此数据集类似于 DSTC7 Ubuntu 数据,训练集包含了一百万个对话-回复对,正负回复之间的比率为 1:1。在开发和测试集上,每个对话关联了一个肯定回复和 9 个否定回复。
电子商务数据集。电子商务数据集是从中国最大的电子商务平台淘宝网的客户与客户服务人员之间的真实对话中收集的。训练和开发集中的正负回复之间的比率为 1:1,测试集中的比率为 1:9。
数据训练
我们使用 spaCy3 来标记两个 DSTC7 数据集的文本,并使用原始标记化文本,这过程中无需对两个公共数据集进行任何进一步的预处理;然后再对多轮对话内容进行连接并插入两个特殊标记 eou 和 eot,其中 eou 表示话语结束,eot 表示结束。
超参数基于开发集进行调整。我们使用 GloVe 和 fastText 作为预训练的单词嵌入。对于 Ubuntu 数据集的子任务 5,我们用 word2vec 从所提供的 Linux 手册页中训练了单词嵌入。详细信息如图 4 所示。
图 4 预训练的单词嵌入统计。其中,1-3 行来自 Glove;4-5 行来自 FastText;6 行来自 Word2Vec。
请注意,对于 Advising 数据集的子任务 5,我们尝试使用建议的课程信息作为外部知识,但并没有观察到任何有效提升;因此,我们在不使用任何外部知识的情况下提交了 Advising 数据集的结果。对于 Lowe 的 Ubuntu 和电子商务数据集,我们使用 word2vec 对训练数据进行预训练的单词嵌入。在两个 DSTC7 数据集的训练过程中,预先训练的嵌入是固定的,但是我们针对 Lowe 的 Ubuntu 和电子商务数据集进行了微调。
Adam 算法则被用于训练过程中的优化。已知 Lowe 的 Ubuntu 数据集的初始学习率为 0.0002,其余为 0.0004 的情况下;对于 DSTC7 数据集,小批量数据的大小设置为 128,对于 Lowe 的 Ubuntu 数据集,小批量数据的大小设置为 16,对于电子商务数据集,小批量数据的大小为 32。BALTMS 和 MLP 的隐藏大小设置为 300。
为了使序列小于最大长度,我们切断了回复的最后一个标记,但同时对上下文进行了反向切断;这是因为我们假设上下文中的最后几句话比前几句话更重要。对于 Lowe 的 Ubuntu 数据集,上下文序列和回复序列的最大值分别为 400 和 150;对于电子商务数据集,对应最大值为 300 和 50;其余数据集分别为 300 和 30。
更详细的方法细节为:对于 DSTC7 Ubuntu 的子任务 2,我们使用 BILSTM 的隐藏序列长度为 400,并用 4 个头来进行句子编码方法。对于子任务 4,候选池可能不包含正确的下一个话语,因此我们需要选择一个阈值;当正面标记的概率低于阈值时,我们预测候选池不包含正确的下一个话语。阈值则基于开发集从 [0:50; 0:51; ::; 0:99] 中进行选择。
结果
图 5 总结了所有 DSTC7 回复选择子任务的结果。挑战排名考虑了 recall@10 效果和平均倒数排名(Mean Reciprocal Rank,简称 MRR,是一种用于衡量搜索之类的指标)的平均值,在 advising 数据集上,因为测试用例 1(advising1)对训练数据集有一定的依赖性,因此则根据测试用例 2(advising2)结果进行排名。我们的结果在 7 个子任务中排名第一,在 Ubuntu 的子任务 2 中排名第二,在 DSTC7 回复选择挑战赛的两个数据集中总体排名第一。子任务 3 可能包含多个正确的回复,因此平均精度(MAP)被视为附加的衡量标准。
图 5 针对 DSTC7 回复选择挑战的隐藏测试集的提交结果。其中 NA 表示不适用。总共有 8 个测试条件。
消融分析
对于 Ubuntu 和 Advising 数据集,分别在图 6 和图 7 中显示了消融分析。对于 Ubuntu 子任务 1,ESIM 达到 0.854 的 R @ 10 和 0.6401 的 MRR。如果我们移除局部匹配和匹配组合以加速训练过程(「-CtxDec」),则 R @ 10 和 MRR 分别下降到 0.845 和 0.6210;再进一步舍弃最后一个单词而不是对话的前几个词(「-CtxDec&-Rev」),R10 和 MRR 将降低到 0.840 和 0.6174。
通过对不同参数初始化和不同结构训练的模型的输出进行平均来对上述三种模型进行集成(「Ensemble」),得到 0.887 的 R @ 10 和 0.6790 的 MRR。而对于 Ubuntu 子任务 2,使用基于句子编码的方法(「Sent-based」)可达到 0.082 的 R @ 10 和 0.0416 的 MRR。在使用不同的参数初始化集成几个模型后(「Ensemble1」),R @ 10 和 MRR 将会增加到 0.091 和 0.0475。使用 ESIM 重新排列「Ensemble1」预测的前 100 名候选人,将获得 0.125 的 R @ 10 和 0.0713 的 MRR。移除对话的局部匹配和匹配组合(「-CtxDec」)会将 R @ 10 和 MRR 降低为 0.117 和 0.0620。对上述两种 ESIM 方法进行集成(「Ensemble2」),将得到 0.134 R @ 10 和 0.0770 MRR。
对于 Ubuntu 子任务 4,我们观察到与子任务 1 相似的趋势。ESIM 达到 0.887 R @ 10 和 0.6434 MRR;而使用「-CtxDec」,则性能降低到 0.877 R @ 10 和 0.6277 MRR;如果使用「-CtxDec&-Rev」,则性能进一步降低至 0.875 R @ 10 和 0.6212 MRR。上述三个模型「Ensemble」的集成将达到 0.909 R @ 10 和 0.6771 MRR。
对于 Ubuntu 子任务 5,除了使用 Linux 手册页的外部知识外,数据集与子任务 1 相同。从 Linux 手册页(「+ W2V」)中添加预训练的字嵌入将得到 0.858 的 R @ 10 和 0.6394 的 MRR,在没有外部知识的情况下与 ESIM 相比,对子任务 1(0.887 R @ 10 和 0.6790 MRR)的集成模型与「+ W2V」模型进行集成,将带来了进一步的增益,使其效果分别达到 0.890 R @ 10 和 0.6817 MRR。
图 6 DSTC7 中 Ubuntu 数据集的开发集消融分析
图 7 显示了 DSTC7 中 Advising 数据集的开发集消融分析。我们使用了移除局部匹配和匹配组合的 ESIM 来提高计算效率,并观察到该数据集与 Ubuntu 数据集有类似的趋势。「-CtxDec&-Rev」的 R@10 和 MRR 效果降低值会比「-CtxDec」更多,但总体来看,两个模型的整体会比单个模型产生更显着增益。
图 7 DSTC7 中 Advising 数据集的开发集消融分析
与以前的工作比较
图 8 总结了两个公共回复选择基准数据集的结果。第一组模型包括基于句子编码的方法,他们使用了人工特征或神经网络特征数据来对回复和对话进行编码,然后应用余弦分类器或 MLP 分类器来确定两个序列之间的关系。之前的工作则使用了 TF-IDF,RNN 和 CNN,LSTM,BiLSTM 来编码对话和回复。
图 8 两个大型公共基准数据集上不同模型的比较。除了我们做的研究结果之外,其他所有结果都来自以前的工作
第二组模型由基于序列的匹配模型组成,通常使用注意力机制,包括 MV-LSTM,Matching-LSTM,Attentive-LSTM 和多渠道。这些模型比较了对话与回复之间的标记层级关系,而不是像在基于句子编码的方法中那样直接比较两个密集向量。这些模型比第一组模型具有更好的性能。
第三组模型包括更复杂的基于层级信息的模型,它们通常明确地模拟标记层级和话语层级信息。Multi-View 模型利用了话语关系——来自单词序列视图和话语序列视图。DL2R 模型采用了神经网络,并在对话中用其他话语重新表达最后一个话语。SMN 模型则使用了 CNN 和注意力机制来匹配对话中每个话语的回复。DUA 和 DAM 模型则采用了与 SMN 类似的框架,其中一个改进了封闭式自注意力机制,另一个改进了 Transformer 结构。
虽然之前基于层级信息的工作声称他们通过使用多轮对话内容的层级信息,能够实现最先进的性能,但我们的 ESIM 序列匹配模型效果优于所有先前的模型,包括基于层级的模型。在 Lowe 的 Ubuntu 数据集中,ESIM 模型在性能方面比 DAM 模型先前的最佳结果有更显著的提高,效果高达 79.6%(从 76.7%)R @ 1,89.4%(从 87.4%)R @ 2 和 R@5 为 97.5%(从 96.9%)。对于电子商务数据集,ESIM 模型也通过 DUA 模型完成了对先前技术水平的实质性改进,高达 57.0%(从 50.1%)R @ 1,76.7%(从 70.0%)R @ 2 和 R@5 为 94.8%(从 92.1%)。这些结果均证明了 ESIM 模型(一种顺序匹配方法)对多轮回复选择的有效性。
先前最先进的多轮回复选择模型使用基于层级的(话语级和标记级)神经网络来准确地模拟不同回合对话之间的相互作用,从而实现对对话进行建模。但在本文中,我们证明了仅基于序列的顺序匹配模型也可以表现得比所有先前的模型更好,其中包括最先进的基于层级的方法。这表明这种采用顺序匹配的方法在过去尚未得到充分的利用;而且值得注意的是,该模型在 DSTC7 的端到端回复选择挑战赛中,在两个数据集测试上都取得了第一名的结果,并在两个大规模的公共回复选择基准数据集上都产生了最优的性能。我们在未来的多轮回复选择研究中,也将考虑探索外部知识的有效性,如:知识图谱和用户概况。
论文链接:
https://arxiv.org/abs/1901.02609
开源地址:
雷锋网 AI 科技评论