浙江大学学报(工学版), 2022, 56(3): 520-530 doi: 10.3785/j.issn.1008-973X.2022.03.011

计算机与控制工程

基于知识迁移和双向异步序列的对话生成模型

王勇超,, 曹钰, 杨玉辉, 许端清,

1. 浙江大学 信息技术中心,浙江 杭州 310027

2. 浙江大学 计算机科学与技术学院,浙江 杭州 310027

Dialogue generation model based on knowledge transfer and two-direction asynchronous sequence

WANG Yong-chao,, CAO Yu, YANG Yu-hui, XU Duan-qing,

1. Information Technology Center, Zhejiang University, Hangzhou 310027, China

2. College of Computer Science and Technology, Zhejiang University, Hangzhou 310027, China

通讯作者: 许端清, 男, 教授. orcid.org/0000-0001-5801-5166. E-mail: xdq@cs.zju.edu.cn

收稿日期: 2021-07-11  

基金资助: 国家重点研发计划资助项目(2020YFC1523101, 2019YFC1521304);浙江省重点研发计划资助项目(2021C03140);宁波市2021科技创新重大专项(20211ZDYF020028)

Received: 2021-07-11  

Fund supported: 国家重点研发计划资助项目(2020YFC1523101,2019YFC1521304);浙江省重点研发计划资助项目(2021C03140);宁波市2021科技创新重大专项(20211ZDYF020028)

作者简介 About authors

王勇超(1975—),男,高级工程师,从事计算机视觉与自然语言处理研究.orcid.org/0000-0001-6394-4701.E-mail:ychwang@zju.edu.cn , E-mail:ychwang@zju.edu.cn

摘要

针对端到端的对话生成模型普遍存在无意义安全回复和大量重复词汇的问题,和将外部知识引入对话系统的挑战,提出基于知识迁移和双向异步序列的对话生成模型.将知识库中的外部知识融合到对话生成模型并显式地生成在回复语句中;使用预训练的知识库问答模型获取输入语句的知识表达、候选知识表达以及关键字;搭建2个编码器−解码器结构,通过双向异步解码将关键字显式地生成在对话回复中;编、解码阶段均引入预训练模型的知识理解和知识表达能力,提升对话生成对知识信息的捕捉能力.提出重复检测惩罚机制,通过赋予惩罚权重的方式减少对话生成中的重复词汇.实验结果表明,所提模型在自动评估和人工评价指标上均优于已有的对话生成方法.

关键词: 对话生成 ; 知识实体 ; 知识库问答 ; 双向异步生成 ; 序列到序列模型

Abstract

A dialogue generation model based on knowledge transfer and two-direction asynchronous sequence generation was proposed, aiming to the generally meaningless safe replies and the problem of a large number of repetitive words in view of the end-to-end dialogue generation models, and the challenge of introducing external knowledge into the dialogue system. The external knowledge in the knowledge base was fused into the dialogue generation model and explicitly generated in the reply sentences. A pre-trained model based on the question and answering of the knowledge base was used to obtain the knowledge expressions of the input sentences, the knowledge expressions of the candidate answers, and keywords. The keywords were then used in the reply. Two encoder-decoder structure models were proposed, and the keywords were generated explicitly in the dialogue reply by two-direction asynchronous generation. The knowledge expressions and understanding capabilities of the pre-trained model were introduced to capture knowledge information to dialog generation at the encoding and decoding stages. A repetitive detection-penalty mechanism was proposed to reduce the repeated words problem by giving weight to punish the repetitive words. Experimental results show that the model outperforms better than existing methods in both automatic evaluation and manual evaluation indicators.

Keywords: dialogue generation ; knowledge entity ; knowledge base question and answer ; two-direction asynchronous generation ; sequence-to-sequence model

PDF (1025KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

王勇超, 曹钰, 杨玉辉, 许端清. 基于知识迁移和双向异步序列的对话生成模型. 浙江大学学报(工学版)[J], 2022, 56(3): 520-530 doi:10.3785/j.issn.1008-973X.2022.03.011

WANG Yong-chao, CAO Yu, YANG Yu-hui, XU Duan-qing. Dialogue generation model based on knowledge transfer and two-direction asynchronous sequence. Journal of Zhejiang University(Engineering Science)[J], 2022, 56(3): 520-530 doi:10.3785/j.issn.1008-973X.2022.03.011

人机对话一直是自然语言处理的热门研究领域.基于规则或模板匹配的对话系统已被成熟地应用到垂直行业,如运输行业[1]、教育行业[2].但这些系统一直存在回复生硬、对话内容受限问题.

多样性和不确定性是使人机对话更“真实”的关键因素,因此数据驱动的检索式对话方法开始发挥优势,Wang等[3]使用信息检索从数据库中搜索答复,Ritter等[4]将对话转化为统计翻译. 但对话系统依然存在不够灵活的问题.得益于神经网络的发展,生成式对话模型在灵活性和交互自由度方面显示出巨大潜力. Vinyals等[5-8]将输入语句编码为词向量,再依序将词向量解码为回复. 完全由数据驱动的神经对话模型的性能存在主要包括以下3个方面的问题. 1)普遍问题. 模型倾向于生成毫无意义的安全普适的句子,例如“某物”[7]和“我不知道”[8]. 这些回复是合适的,但几乎不包含有价值的知识信息. 其产生的原因是解码器借助波束搜索倾向于选择生成具有最大估计概率的安全回复. 2)编码器不能捕捉足够的知识信息提供给解码器进行解码. 3)由于人类多种语言的复杂性,概率式生成的质量通常难以达到语言语义学的要求,面临严峻的语法挑战.为了弥合人机间的知识鸿沟,Zhou等[9]的研究表明,将常识知识引入对话系统可以提高用户满意度并改善以上问题.一些研究将非结构化的文本视为外部知识,应用卷积神经网络[10]或存储网络[11]进行知识提取. Zhu等[12]通过使用复制网络引入知识. Liu等[13]提出神经知识扩散模型,通过实体匹配和扩散进一步将知识库与对话集成.但实体匹配方法仍存在实体歧义、匹配难度大精度低等缺陷.随着知识图谱的发展,图结构的上下文推理能力得到广泛关注. Lian等[14]使用后验知识分布指导知识选择. Wu等[15]提出恰当事实机制,帮助对话模型关注知识图谱中上下文高度相关的知识事实. Zhou等[16]提出采用两跳静态图注意力机制增强上下文的语义表示. Xu等[17]将动态知识图转为对抗攻击问题,结合快速自适应动态知识感知实现对话生成. 与此同时,知识库问答(knowledge base question and answer, KBQA)[18]飞速发展,Bosselut等[19]通过在模型中引入额外常识知识使问答准确率达到与真实回答趋近的水平. 这引起对话研究者的关注. Wang等[20]把KBQA任务引入对话生成,转移问题表示和知识匹配能力促进话语理解和知识选择. Chaudhuri等[21]将最相关子图在训练和推理过程中合并到模型中.

这些方法依然难以彻底解决知识不足或引入不恰当知识的问题,其生成结果在语言语义学上并没有提供相关解决方案. 为了应对这些挑战,结合在KBQA领域的研究[22],提出基于知识迁移和双向异步序列的对话生成模型,将知识库中的知识融合到对话模型并显式地生成在回复语句中.

1. 基于知识迁移和双向异步序列的对话生成模型

1.1. 模型概述

本研究模型包含2个部分:1)预训练的知识库问答模型,2)双向异步序列的对话生成模型. KBQA模型得出的关键字传入对话生成模型,将显式地生成在对话回复中,KBQA任务学习到的知识特征表达在编码和解码阶段都将引入到对话生成模型,以进一步指导对话生成. 模型的整体流程主要有以下步骤. 1)预训练KBQA模型,得到输入语句的知识特征编码、相关候选知识三元组的特征编码以及回复对话生成中所需的关键字. 2)得到关键字后,以关键字及输入语句为条件生成回复. 采用前后向序列(sequence to backward and forward sequences, Seq2BF)模型[23],基于关键字反向倒序生成回复序列关键字的前半部分,再正序生成后半部分. 因为Seq2BF模型2个部分存在明显差异,所以反向、正向模型的编码器和解码器不共享参数.

整个模型的架构如图1所示. 图中,左侧为KBQA模块,右侧为对话生成模块, $[\boldsymbol{q}_{1}, \boldsymbol{q}_{2},\cdots,\boldsymbol{q}_{n}]$为输入序列, $[\boldsymbol{a}_{1}, \boldsymbol{a}_{2},\cdots,\boldsymbol{a}_{m}]$为候选答案序列, ${\boldsymbol{r}}_{k}$为KBQA输出的答案即关键字, $[\boldsymbol{r}_{1},\boldsymbol{r}_{2},\cdots,\boldsymbol{r}_{l}]$为输出序列即生成结果, ${n},{m},{l}$分别为各序列长度.

图 1

图 1   基于知识迁移和双向异步序列的对话生成模型总体架构图

Fig.1   Overall architecture diagram of dialogue generation model based on knowledge transfer and two-direction asynchronous squence generation


1.2. 知识库问答模型

KBQA的任务定义:给定输入问题 $\boldsymbol{Q}= [\boldsymbol{q}_{1}, \boldsymbol{q}_{2},\cdots, $ $ \boldsymbol{q}_{n}]$,从候选答案 $\boldsymbol{A}=[\boldsymbol{a}_{1}, \boldsymbol{a}_{2},\cdots,\boldsymbol{a}_{m}]$中选择1个适当的答案. $n, m$分别为给定输入问题和候选答案集的长度. 将问题和知识库中的知识实体及关系分别编码为分布式表示,在问题和候选答案集的表示间计算相似度以进行语义匹配,选取匹配度最高的知识三元组以获得最终答案.

1.2.1. 问题编码模块

表1所示,输入的问题文本可以同时映射到多个不同的知识三元组. 知识三元组以词向量的形式进行编码表示,因此把输入问题也表示为向量,这些向量可以整合不同长度的短语信息,以映射不同粒度的关系三元组表示.

表 1   文本匹配不同粒度的三元组示例

Tab.1  Examples of text matching triples with different granularities

问题
关系级 词汇级
written_by Harry Potter JK
1:Is JK the author of the Harry
Potter?
the author of the Harry
Potter
author
2:What book is written by JK? is written by book written

新窗口打开| 下载CSV


对文本使用双层的分层残差双向长短期记忆网络(hierarchical residual bi-directional long short-term memory, HR-BiLSTM)[24]学习问题 $\boldsymbol{Q}$的表示. 第1层处理问题词 $\boldsymbol{Q}=[\boldsymbol{q}_{1}, \boldsymbol{q}_{2},\cdots, $ $ \boldsymbol{q}_{n}]$的词向量,并获得问题文本的隐藏表示 ${{\boldsymbol{\varGamma}}}_{1:n}^{(1)}=[{\boldsymbol{\gamma}}_{1}^{(1)},\cdots, {\boldsymbol{\gamma}}_{n}^{(1)}]$. 第2层在 ${{ {\boldsymbol{\varGamma}} }}_{{1:}{n}}^{{(1)}}$上处理以获取该层隐藏表示形式 ${{ {\boldsymbol{\varGamma}} }}_{{1:}{n}}^{{(2)}}$. 第2层BiLSTM从第1层BiLSTM的隐藏编码表示开始计算,因此与第1层相比可以学习并捕捉更多信息.

在时间步长 $t$处的隐藏状态 ${\gamma}_{t}$更新为

$ {{{\boldsymbol{o}}}}_{t}={\sigma}({{\boldsymbol{W}}}_{o}\left[{{\boldsymbol{\gamma}}}_{t-1}, {\boldsymbol{q}}_{t}\right]+{{\boldsymbol{b}}}_{o}),$

$ {{\boldsymbol{\gamma}} }_{t}={{\boldsymbol{o}}}_{t}\text{tanh}\left({{\boldsymbol{C}}}_{t}\right). $

式中: ${{\boldsymbol{\gamma}} }_{t-1}$为前一时刻的隐藏状态, ${{\boldsymbol{q}}}_{t}$为当前时刻的输入词, ${{\boldsymbol{C}}}_{t}$为当前时刻的神经元状态, ${{\boldsymbol{W}}}_{o}$为权重矩阵, ${{\boldsymbol{b}}}_{o}$为偏置项, ${{\boldsymbol{o}}}_{t}$为当前时刻的输出门值.

链接每个 ${{\boldsymbol{\gamma}} }_{i}^{\left(\text{1}\right)}$${{\boldsymbol{\gamma}}}_{i}^{\left(\text{2}\right)}$,得到

$ {{\boldsymbol{\gamma}} }_{i}{'}={{\boldsymbol{\gamma}} }_{i}^{\left({1}\right)}+{{\boldsymbol{\gamma}} }_{i}^{\left({2}\right)}. $

${{ {\boldsymbol{\varGamma}} }}_{1:n}^{(1)}$${ {\boldsymbol{\varGamma}} }_{1:n}^{(2)}$经过最大池化层处理得到 ${\boldsymbol{h}}_{\text{max}}^{\left({1}\right)}$${\boldsymbol{h}}_{\text{max}}^{\left({2}\right)}$,得到最终的输入问题文本词汇编码:

$ {\boldsymbol{h}}_{q}={\boldsymbol{h}}_{\text{max}}^{\left({1}\right)}+{\boldsymbol{h}}_{\text{max}}^{\left({2}\right)} . $

最终的输入问题文本编码表示为

$ \boldsymbol{h}=\left[{\boldsymbol{h}}_{1},{\boldsymbol{h}}_{2},\cdots,\boldsymbol{h}_{n}\right]. $

1.2.2. 候选答案编码及关系检测模块

候选答案序列化表示为 $\boldsymbol{A}=[\boldsymbol{a}_{1}, \boldsymbol{a}_{2},\cdots,\boldsymbol{a}_{m}]$,其中每个答案 ${\boldsymbol{a}}_{i}$是来自特定知识库的三元组,其模式为“实体,关系,实体”,如{“Harry Potter”, “written by”, “JK.Rowing”}. 在词汇级、关系级同时对知识三元组进行编码. 使用Word2vec模型预处理候选答案序列,得到隐层中的权重向量矩阵 ${\boldsymbol{E}}^{{ \omega }}$,使用 ${\boldsymbol{E}}^{{ \omega }}$将单词序列转换为词向量 $[{\boldsymbol{a}}_{1}^{{ \omega }},{\boldsymbol{a}}_{2}^{ \omega },\cdots,{\boldsymbol{a}}_{m}^{{ \omega }}]$,其中 ${m}$是候选答案的长度, ${\omega}$是维度. 对候选答案词向量序列进行形式上的统一化处理以便后续模型训练,计算平均嵌入作为候选答案的词汇级表示:

$ {\boldsymbol{a}}^{{ \omega }}=\frac{1}{m}{\sum }_{i=1}^{m}\;{\boldsymbol{a}}_{i}^{{ \omega }}. $

根据先前的候选答案关系检测工作[22],使用知识图谱嵌入模型对知识库全体关系进行预训练获取到关系向量 ${\boldsymbol{e}}_{i}$,其目标函数为

$ L=\text{min}\sum _{\left({{{\boldsymbol{h}},{\boldsymbol{v}},{\boldsymbol{t}}}}\right)\in {\boldsymbol{S}}}\sum _{({\boldsymbol{h}}^{'},{\boldsymbol{v}},{\boldsymbol{t}}^{'})\in {\boldsymbol{S}}^{'}}\;{\left[{{{\lambda}} }+f_{{\boldsymbol{v}} }\left(\boldsymbol{h},\boldsymbol{t}\right)-{{f}}_{{\boldsymbol{v}}^{'}}\left(\boldsymbol{h}^{'},\boldsymbol{t}^{'}\right)\right]}_+, $

$ {{f}}_{{{\boldsymbol{v}}}}\left(\boldsymbol{h},\boldsymbol{t}\right)={\left\| {{\boldsymbol{h}}}-{{{\boldsymbol{w}}}}_{{{\boldsymbol{v}}}}^{{{\rm{T}}}}{{\boldsymbol{h}}}{{{\boldsymbol{w}}}}_{{{\boldsymbol{v}}}}+{{{\boldsymbol{d}}}}_{{{\boldsymbol{v}}}}-\left({{\boldsymbol{t}}}-{{{\boldsymbol{w}}}}_{{{\boldsymbol{v}}}}^{{{\rm{T}}}}{{\boldsymbol{t}}}{{{\boldsymbol{w}}}}_{{{\boldsymbol{v}}}}\right)\right\| }_{{2}}^{{2}}. $

式中: $\boldsymbol{v}$为关系向量, $\boldsymbol{h}、\boldsymbol{t}$分别为其关联的头实体和尾实体, ${\boldsymbol{w}}_{{\boldsymbol{v}}}、{\boldsymbol{d}}_{{\boldsymbol{v}}}$为训练得到的超平面参数, ${{\lambda}}$为正负样本之间的间距常数.

将关系向量 ${\boldsymbol{e}}_{i}$输入对抗学习的关系适配器 $ \text{Adapter} $,得到中间向量,然后经过双向编码表征模型(bidirectional encoder representation from transformers, BERT)层进行特征提取,再经过池化层输出指定维度 $ p $的关系级向量编码 ${\boldsymbol{r}}^{p}$.

$ {\boldsymbol{r}}^p=\text{MaxPooling}\left(\text{BERT}\left(\text{Adapter}\left({\boldsymbol{e}}_i\right)\right),p\right). $

每个候选答案的最终表示编码为

$ \boldsymbol{a}={\boldsymbol{a}}^{{ \omega }}+{\boldsymbol{r}}^p. $

1.2.3. 语义相似性计算

利用多层感知器[25](multilayer perceptron, MLP)计算输入问题文本编码 ${\boldsymbol{h}}_i$和候选答案编码 ${\boldsymbol{a}}_j$间的语义相似性:

$ R\left({\boldsymbol{h}}_i,{\boldsymbol{a}}_{{j}}\right)=\text{MLP}\left(\left[{\boldsymbol{h}}_{{i}},{\boldsymbol{a}}_{{j}}\right]\right). $

使用铰链损失函数进行训练,将关系正样本和负样本进行区分,目标函数如下:

$ {{L}}_{{{\boldsymbol{h}}},{{\boldsymbol{a}}}}=\sum \mathrm{m}\mathrm{a}\mathrm{x}\left({0},{\eta }-\text{cos}\left(\boldsymbol{h},{\boldsymbol{a}}^{+}\right)+\text{cos}\left(\boldsymbol{h}{,}{\boldsymbol{a}}^{-}\right)\right). $

式中: $\eta$为边际超参数, $\boldsymbol{h}$为问题的表示向量, ${\boldsymbol{a}}^+$为正样本, ${\boldsymbol{a}}^-$为负样本.

选取得分最高的关系所对应的知识库三元组中的实体,作为下一步对话生成中的关键字,显式地生成在对话回复语句中.

1.3. 对话生成模型

现有的Seq2Seq方法通常将给定输入语句向量 $\boldsymbol{Q}$的输出语句向量r的概率表示为

$ \begin{split} {} &{{{P}}}\left({\boldsymbol{r}}_{{1}}{,}{\boldsymbol{r}}_{{2}}{,\cdots,}{\boldsymbol{r}}_{{m}}|\boldsymbol{q}\right)={{{P}}}\left({\boldsymbol{r}}_{{1}}|\boldsymbol{q}\right){P}\left({\boldsymbol{r}}_{{2}}|{\boldsymbol{r}}_{{1}}{,}\boldsymbol{q}\right){\cdots}\\ &\;\;\;\;\;\;\;\;{{{P}}}\left({\boldsymbol{r}}_{{m}}|{\boldsymbol{r}}_{{1}}{\boldsymbol{r}}_{{2}}\cdots{\boldsymbol{r}}_{{m}{-1}}{,}\boldsymbol{q}\right)=\prod _{{i}{=1}}^{{m}}{{{P}}}\left({\boldsymbol{r}}_{{i}}|{\boldsymbol{r}}_{{1}}{\boldsymbol{r}}_{{2}}{\cdots}{\boldsymbol{r}}_{{i}{-1}}{,}\boldsymbol{q}\right). \end{split} $

式中: $ {m} $为输出语句的长度. 其使用波束搜索从 ${\boldsymbol{r}}_{{1}}$${\boldsymbol{r}}_{{m}}$依次预测输出语句. 在真实对话场景中,表述语句往往是从一句话开头开始的,因此这种依序解码生成的方式是合理的. 但本研究模型须将KBQA模型得到的关键字显式地插入对话序列中,关键字可能出现在回复的开头 $\left[{\boldsymbol{r}}_{{1}}\right]$、中间 $\left[{\boldsymbol{r}}_{{2}}{\cdots} $ $ {\boldsymbol{r}}_{{m}{-1}}\right]$或结尾 $\left[{\boldsymbol{r}}_{{m}}\right]$任一不确定的位置. 因此,解码应该从给定的关键词开始. 传统的Seq2Seq对话生成模型无法指定关键字的显式出现并确定其在句子中的合理位置,显然无法满足需求. 因此,基于Seq2BF模型进行对话生成,通过双向异步方式分别生成关键字的前后向单词序列,确保关键字的显式生成,并预测其合理位置. 在Seq2BF模型的基础上进行改进,在编码和解码阶段引入KBQA模型得到的知识特征,以引入更多的知识信息并使得关键字前后的语义逻辑更加合理和流畅.

关键字 ${\boldsymbol{r}}_{{k}}$将回复语句分为2个子序列: 1)反向序列 $\left[{\boldsymbol{r}}_{{k}{-1}}{,}{\boldsymbol{r}}_{{k}{-2}}{,\cdots,}{\boldsymbol{r}}_{{1}}\right]$,2)正向序列 $\left[{\boldsymbol{r}}_{{k}{+1}}{,}{\boldsymbol{r}}_{{k}{+2}}{,\cdots,}{\boldsymbol{r}}_{{m}}\right]$. 在给定已知部分序列的前提下,剩余单词的联合概率可以表达

$\begin{split} {{{P}}}\left(\frac{{\boldsymbol{r}}_{{ k}{-1}}{,}{\boldsymbol{r}}_{{ k}{-2}}{,\cdots,}{\boldsymbol{r}}_{{1}}}{{\boldsymbol{r}}_{{ k}{+1}}{,}{\boldsymbol{r}}_{{ k}{+2}}{,\cdots,}{\boldsymbol{r}}_{{m}}}\Big| {{{\boldsymbol{r}}_{k}}} \right)= &\prod _{{i}{=1}}^{{ k}{-1}}{{{{P}}}}^{\left({{\rm{b}}w}\right)}{(}{\boldsymbol{r}}_{{ k-i}}{|}{\boldsymbol{r}}_{{ k}}{,}{q}{,·)\times}\\ &\prod _{{i}{=1}}^{{m- k}}{{{{P}}}}^{\left({{\rm{f}}w}\right)}{(}{\boldsymbol{r}}_{{ k+i}}{|}{\boldsymbol{r}}_{{ k}}{,}{q}{,·)}{.} \end{split} $

式中: ${{{{P}}}}^{\left({{\rm{b}}w}\right)}{(}{\boldsymbol{r}}_{{{{k}}-i}}{|}{\boldsymbol{r}}_{{{{k}}}}{,}\boldsymbol{q}{,·)}$为给定关键字 ${\boldsymbol{r}}_{{{{k}}}}$和输入文本编码 ${\boldsymbol{q}}$的反向子序列的概率, ${{{{P}}}}^{\left({{\rm{f}}w}\right)}{(}{\boldsymbol{r}}_{{{{k}}+i}}{|}{\boldsymbol{r}}_{{{{k}}}}{,}\boldsymbol{q}{,·)}$ 为给定关键字 ${\boldsymbol{r}}_{{{{k}}}}$和输入文本编码 ${\boldsymbol{q}} $的正向子序列的概率.

1.3.1. 对话生成模型概述

对话生成模型的编码器对输入文本进行编码,反向解码器在KBQA模型给出的关键字的基础上进行倒序解码,并生成关键字之前部分的回复 $\left[{\boldsymbol{r}}_{{{{k}}}{-1}}{,}{\boldsymbol{r}}_{{{{k}}}{-2}}{,\cdots,}{\boldsymbol{r}}_{{1}}\right]$,对其进行序列反转为 $\left[{\boldsymbol{r}}_{{1}}{,}{\boldsymbol{r}}_{{2}}{,\cdots,}{\boldsymbol{r}}_{{{{k}}}{-1}}\right]$,将其提供给正向解码器. 另一个编码器再次对输入文本编码,正向解码器在已经生成的部分回复序列 $\left[{\boldsymbol{r}}_{{1}}{,}{\boldsymbol{r}}_{{2}}{,\cdots,}{\boldsymbol{r}}_{{{{k}}}{-1}}\right]$的基础上,依序流畅地生成剩余部分 $\left[{\boldsymbol{r}}_{{{{k}}}{+1}}{,}{\boldsymbol{r}}_{{{{k}}}{+2}}{,\cdots,}{\boldsymbol{r}}_{{m}}\right]$. 其中双向的对话生成模型编码器和解码器都引入KBQA任务中迁移的知识特征编码,提升模型在语义解析和对话生成中的知识信息理解能力.

在反向和正向的Seq2Seq模型中,均使用带有双向长短期记忆的循环神经网络进行信息处理,1)便于迁移KBQA的知识编码特征作为额外编码器,2)实验发现BiLSTM在语义理解和特征捕捉上比门控循环单元(gate recurrent unit, GRU)[26]能取得更好的效果,这是因为某一位置的单词预测和选择同时参考前面若干序列和后面若干序列会取得更准确的结果. 使用的BiLSTM的神经元结构和网络结构图分别如图23所示.

图 2

图 2   BiLSTM网络中单一神经元结构图

Fig.2   Single neuron structure diagram in BiLSTM network


图 3

图 3   BiLSTM网络结构图

Fig.3   BiLSTM network structure diagram


神经元结构中,时间步长 $ {t} $处的隐藏状态更新步骤如下.

1)使用Sigmoid函数决定在输入的单元状态中丢弃哪些数据:

$ {{{\boldsymbol{f}}}}_{{t}}={\sigma}\left({{{\boldsymbol{W}}}}_{{{\rm{f}}}}\left[{\boldsymbol{h}}_{{t}{-1}}{,}{\boldsymbol{q}}_{{t}}\right]+{\boldsymbol{b}}_{{{\rm{f}}}}\right), $

$ {{{\boldsymbol{i}}}}_{{t}}={\sigma}\left({{{\boldsymbol{W}}}}_{{\rm{i}}}\left[{\boldsymbol{h}}_{{t}{-1}}{,}{\boldsymbol{q}}_{{t}}\right]+{\boldsymbol{b}}_{{\rm{i}}}\right). $

式中: ${\boldsymbol{f}}_{{t}}$为遗忘门值, ${\boldsymbol{i}}_{{t}}$为记忆门值, ${{{\boldsymbol{b}}}}_{{{\rm{f}}}}$${\boldsymbol{b}}_{{\rm{i}}}$为偏置项, $ {{{\boldsymbol{h}}}}_{{t}{-1}} $为前一时刻的隐藏状态, $ {{{\boldsymbol{q}}}}_{{t}} $为输入词, ${{{\boldsymbol{W}}}}_{{{\rm{f}}}}$${{{\boldsymbol{W}}}}_{{\rm{i}}}$为权重参数.

2)确定需要更新的信息. 使用Sigmoid函数决定要更新的值,使用tanh函数创建新输入的候选向量 ${{\boldsymbol{C}}}{{'}}_{t}$,结合得到新的单元状态 $ {{\boldsymbol{C}}}_{t} $.

$ {{{\boldsymbol{C}}}}_{{t}}^{{'}}=\text{tanh}\left({{{\boldsymbol{W}}}}_{{{\rm{C}}}}\left[{{{\boldsymbol{h}}}}_{{t}{-1}}{,}{{{\boldsymbol{q}}}}_{{t}}\right]+{\boldsymbol{b}}_{{\rm{C}}}\right), $

$ {{{\boldsymbol{C}}}}_{{t}}={{{\boldsymbol{f}}}}_{{t}}{{{\boldsymbol{C}}}}_{{t}{-1}}+{{{\boldsymbol{i}}}}_{{t}}{{{\boldsymbol{C}}}}_{{t}}^{{'}}. $

式中: $ {{{\boldsymbol{C}}}}_{{t}}^{{'}} $为临时状态, $ {{{\boldsymbol{C}}}}_{{t}} $为当前时刻神经元状态, ${\boldsymbol{b}}_{{\rm{C}}}$为偏置项, ${{{\boldsymbol{W}}}}_{{\rm{C}}}$为权重参数.

3)在网络结构中,前向LSTM从时刻1−t正向计算,后向LSTM从时刻t−1反向计算,分别得到并保存每个时刻的隐藏输出. 在每个时刻结合双向输出得到最终输出,更新步骤如下:

$ {{{\boldsymbol{h}}}}_{{t}}={f}\left({{{\boldsymbol{w}}}}_{{1}}{{{\boldsymbol{q}}}}_{{t}}+{{{\boldsymbol{w}}}}_{{2}}{{{\boldsymbol{h}}}}_{{t}{-1}}\right), $

$ {{{\boldsymbol{h}}}}_{{t}}^{{'}}={f}\left({{{\boldsymbol{w}}}}_{{3}}{{{\boldsymbol{q}}}}_{{t}}+{{{\boldsymbol{w}}}}_{{5}}{{{\boldsymbol{h}}}}_{{t}{+1}}\right), $

$ {{{\boldsymbol{o}}}}_{{t}}={g}\left({{{\boldsymbol{w}}}}_{{4}}{{{\boldsymbol{q}}}}_{{t}}+{{{\boldsymbol{w}}}}_{{6}}{{{\boldsymbol{h}}}}_{{t}}^{{'}}\right). $

式中: $ {{{\boldsymbol{h}}}}_{{t}} $为前向层当前时刻隐藏状态, $ {{{\boldsymbol{h}}}}_{{t}}^{{'}} $为反向层当前时刻隐藏状态, $ {{{\boldsymbol{o}}}}_{{t}} $为输出门值.基于关键字的双向异步对话生成算法如下.

  算法 基于关键字的双向异步对话生成

步骤1)

输入:反向倒序解码 $ {\theta }_{1} $, 关键字 ${r}_{{{k}}}$, 反向训练集 $ \mathcal{D} $, 反向验证集 $ {\mathcal{D}}^{v} $和知识库问答模块的隐藏编码h1、h2

1. 初始化 $ {\theta }_{1} $的参数

2. 循环操作:

3. 在 $ \mathcal{D} $上优化 $ {\theta }_{1} $, 用 $ {h}_{1} $$ {h}_{2} $分别扩展编、解码器

4. 如果3个连续生成编码相等:

5. 调用重复检测惩罚机制

6. 直到:模型收敛

输出:学习到的反向对话生成模型 $ {\theta }_{1}^{*} $

步骤2)

输入:正向编解码器 $ {\theta }_{2} $, 正向训练集 ${\mathcal{D}}^{'}$, 正向验证集 ${\mathcal{D}}^{v{'}}$和知识库问答模块迁移的隐藏编码 $ {h}_{1} $$ {h}_{2} $

1. 初始化 $ {\theta }_{2} $的参数

2. 循环操作:

3. 在 ${\mathcal{D}}^{'}$上优化 $ {\theta }_{2} $, 用 $ {h}_{1} $$ {h}_{2} $分别扩展编、解码器

4. 如果3个连续生成编码相等:

5. 调用重复检测惩罚机制

6. 直到:模型收敛

输出:学习到的正向对话生成模型 $ {\theta }_{2}^{*} $

1.3.2. 对话生成编码模块

编码器依序读取给定输入文本的单词,并通过BiLSTM生成每个单词的隐藏编码.将给定输入处理为词向量矩阵 $ {{{\boldsymbol{e}}}}_{{i}}^{{w}} $,通过以下方式更新隐藏状态 $ {{{\boldsymbol{h}}}}_{{i}}^{{w}} $

$ {{{\boldsymbol{h}}}}_{{i}}^{{w}}=\text{BiLSTM}\left({{{\boldsymbol{e}}}}_{{i}}^{{w}}{,}{{{\boldsymbol{h}}}}_{{i}{-1}}^{{w}}\right). $

为了帮助编码器提升对输入文本的理解,从预训练的KBQA模型中转移问题的编码表示能力,获得更多层次的语义信息.使用由KBQA模型学习到的 ${\text{BiLSTM}}^{{{\rm{hq}}}}$作为附加编码器:

$ {{{\boldsymbol{h}}}}_{{i}}^{{w'}}={\text{BiLSTM}}^{{{w}}^{{'}}}\left({{{\boldsymbol{e}}}}_{{i}}^{{{w}}^{{'}}}{,}{{{\boldsymbol{h}}}}_{{i-1}}^{{{w}}^{{'}}}\right){,} $

$ { {{\boldsymbol{h}}}}_{ {i}}^{ {{\rm{hq}}}}={\text {BiLSTM}}^{ {{\rm{hq}}}}\left({ {{\boldsymbol{e}}}}_{ {i}}^{{{\rm{hq}}}} {,}{ {{\boldsymbol{h}}}}_{ {i-1}}^{ {{\rm{hq}}}}\right). $

$ {{{\boldsymbol{h}}}}_{{i}}^{{w'}} $${ {{\boldsymbol{h}}}}_{ {i}}^{ {{\rm{hq}}}}$链接起来,得到最终的输入文本的表示形式:

$ { {{\boldsymbol{h}}}}_{ {i}}^{ {'}}={ {{\boldsymbol{h}}}}_{ {i}}^{ {w'}}+{ {{\boldsymbol{h}}}}_{ {i}}^{ {{\rm{hq}}}}. $

1.3.3. 解码生成模块

解码器在KBQA模型给出的关键字的基础上,通过结合与输入文本相关的外部候选知识来生成回复. 通过这种方式,解码器能够更好地理解输入文本和回复之间的知识层面的联系,生成逻辑上更连贯且包含更多信息的回复.

1)反向倒序解码生成模块. 反向解码器在KBQA给出的关键字 ${{{\boldsymbol{r}}}}_{{k}}$的基础上,倒序生成关键字 ${\boldsymbol{r}}_{{{k}}}$前的回复文本序列部分 $\left[{ \boldsymbol{r}}_{ {{{k}}} {-1}} {,}{\boldsymbol {r}}_{ {{{k}}} {-2}} {,\cdots,}{ \boldsymbol{r}}_{ {1}}\right]$. 在解码过程中引入MLP计算出的输入文本和前若干个候选知识的相关性向量作为附加解码器,以增强解码器在解码生成过程中对知识信息的捕捉和使用. 在反向解码器 ${ {D}}_{ {{\rm{bw}}}}$中,解码器BiLSTM在时间步 ${t}$的隐藏状态 ${ \boldsymbol{s}}_{ {t}}^{ {{\rm{bw}}}}$更新为

$ { \boldsymbol{s}}_{ {t}}^{ {{\rm{bw}}}}= \text{BiLSTM}\left({\boldsymbol {s}}_{ {t} {-1}}^{ {{\rm{bw}}}} {,}\left[{ {{\boldsymbol{C}}}}_{ {t} {-1}} {;}{ \boldsymbol{c}}^{ {{\rm{ad}}}} {;}{ \boldsymbol{e}}^{ {{\rm{bw}}}}\right]\right). $

式中: ${ \boldsymbol{e}}^{ {{\rm{bw}}}}$为已经生成的词语的编码表达, ${ {{\boldsymbol{C}}}}_{ {t} {-1}}$为前个时间步的上下文向量, ${\boldsymbol {c}}^{ {{\rm{ad}}}}$为通过KBQA模型引入的知识相关性向量. 从KBQA任务中的语义相似性计算中,迁移与输入文本相关性最大的前若干个候选知识的隐藏层向量编码,作为对话生成解码器的附加解码器 ${ \boldsymbol{c}}^{ {{\rm{ad}}}}$,计算如下:

$ { \boldsymbol{c}}^{ {{\rm{ad}}}}=\frac{{\displaystyle\sum }_{ {j} {=1}}^{ {K}} \;\text{MLP}\left(\left[{ \boldsymbol{h}}_{ {i}}^{ {'}} {,}{ \boldsymbol{a}}_{ {j}}\right]\right) {\odot}{ {{\boldsymbol{a}}}}_{ {j}}}{{\displaystyle\sum }_{ {j} {=1}}^{ {K}} \;\text{MLP}\left(\left[{ \boldsymbol{h}}_{ {i}}^{ {'}} {,}{ \boldsymbol{a}}_{ {j}}\right]\right)}. $

式中, ${\boldsymbol {a}}_{ {j}}$为第 $ \text{j} $个相关候选知识的编码, ${ \boldsymbol{h}}_{ {i}}^{ {'}}$为输入文本的编码隐藏表示. 生成序列的概率表示为

$ \prod _{ {i} {=1}}^{ {k} {-1}}{ {{{P}}}}^{\left( {{\rm{bw}}}\right)} \left({ \boldsymbol{r}}_{ {k-i}} |{ \boldsymbol{r}}_{ {k}} {,} \boldsymbol{q} ,·\right) {\propto} \text{softmax}\left(\left[{ \boldsymbol{s}}_{ {t}}^{ {{\rm{bw}}}} {;}{ \boldsymbol{c}}^{ {{\rm{ad}}}}\right]\right) {.} $

2)正向解码生成模块. 正向解码器与传统的Seq2Seq的解码器类似,不同的是实际生成阶段是在反向解码器给出的生成序列的基础上,生成序列的其余部分. 在正向解码器 ${ {D}}_{ {fw}}$中,解码器在时间步 $ \text{t} $的隐藏状态 ${ \boldsymbol{s}}_{ {t}}^{ {{\rm{fw}}}}$更新为

$ {\boldsymbol {s}}_{ {t}}^{ {{\rm{fw}}}}= \text{BiLSTM}\left({ \boldsymbol{s}}_{ {t} {-1}}^{ {{\rm{fw}}}} {,}\left[{\boldsymbol {e}}^{ {{\rm{bw}}}} {;}{ {{\boldsymbol{C}}}}_{ {t} {-1}} {;}{ \boldsymbol{c}}^{ {{\rm{ad}}}} {;}{\boldsymbol{e}}^{ {{\rm{fw}}}}\right]\right). $

式中: ${ \boldsymbol{e}}^{ {{\rm{fw}}}}$为已经生成的词语的编码表达, ${ {{\boldsymbol{C}}}}_{ {t} {-1}}$为前个时间步的上下文向量, ${ \boldsymbol{c}}^{ {{\rm{ad}}}}$为通过KBQA模型引入的知识相关性向量. 同样引入附加解码器 ${ \boldsymbol{c}}^{ {{\rm{ad}}}}$,剩余部分生成序列的概率表示为

$ \prod _{ {i} {=1}}^{ {k} {-1}}{ {{{P}}}}^{\left( {{{{\rm{fw}}}}}\right)} \left({ \boldsymbol{r}}_{ {k+i}} {|}{ \boldsymbol{r}}_{ {k}} {,} \boldsymbol{q} ,·\right){\propto} \text{softmax}\left(\left[{ \boldsymbol{s}}_{ {t}}^{ {{\rm{fw}}}} {;}{\boldsymbol {c}}^{ {{\rm{ad}}}}\right]\right) . $

1.3.4. 重复检测惩罚机制

在进行相关工作总结和实验中发现,在已有的引入知识的生成性对话模型的生成结果中较为严重的问题是存在大量的重复词或短语(如“it’s not a good book book book shelf”)或同一短句重复3遍以上.造成这种现象的原因可能是部分单词或短语从语法上看不仅有一种词性,模型未能防止重复词的产生,导致词汇重叠、语义逻辑不连贯. 为了改善这种情况,在模型中加入重复检测惩罚机制,在生成过程中如果检测到单词或短语的词向量表达与它之前的3个以内的已生成部分有大于2次的重复现象[27],则对其赋予惩罚权重,降低其生成的可能性.惩罚权重的计算如下:

$ { {{\boldsymbol{w}}}}_{ {p}}= -{\sum }_{ {i} {=1}}^{ {N}}\;\frac{ {1}}{ {N}} \text{ln} {P}\left({ \boldsymbol{s}}_{ {t}}|{\boldsymbol {x}}_{ {i}}\right). $

式中: ${N}$为检测到的重复区间的长度, ${\boldsymbol{s}}_{t}$为时刻 $ {t} $对应的生成的回复, ${\boldsymbol{x}}_{i}$为已生成的前置编码.

对最终生成结果进行1次额外的检测,并对依然存在3 次以上的重复现象进行输出裁剪处理,最大程度保证输出结果的质量.

1.3.5. 模型训练

对于编码器−解码器结构的自然语言生成模型,训练并进行参数学习是最重要的.训练数据的预处理对于模型能否真正学习到有价值的信息至关重要. 本研究模型所需的训练数据与传统Seq2Seq模型同样无须附加标签.不同的是,本研究模型须将关键字显式地生成在句子中且使其置于合理的位置,因此不能用完整的语句训练后向序列生成模型. 从回复的语句中随机抽取1个实体单词(即非连词、和“你”、“我”、“他”等具有不明指代意义的代词)作为回复语句的关键字,从关键字开始截取其前一半语句,并对其语句顺序进行反转,得到的语料作为后向序列生成模型的训练数据. 前向序列生成模型的训练数据与传统Seq2Seq一样,是完整的对话语料库. 但在测试和结果评估阶段,以后向序列生成模型得到的半个句子作为前提条件,让前向序列生成模型在此基础上生成其余的半个句子中所需的单词. 反向解码的训练是为了最小化以下损失函数:

$ { {L}}_{ {{\rm{bw}}}}=-\sum _{ {X,Y} {\in} {S}}\sum _{ {t} {=1}} \;\text{log}P \left({ {y}}_{ {t}}| {Y < t} {,} {X} {;}{ {E}}_{ {{\rm{bw}}}} {,}{ {D}}_{ {{\rm{bw}}}} {,}{\boldsymbol {w}}_{ {p}}\right) {.} $

正向解码的训练是为了最小化损失函数:

$ { {L}}_{ {{\rm{fw}}}}=-\sum _{ {X,Y} {\in} {S}}\sum _{ {t} {=1}} \;\text{log}P \left({ {y}}_{ {t}}| {Y < t} {,} {X} {;}{ {E}}_{ {{\rm{fw}}}} {,}{ {D}}_{ {{\rm{fw}}}} {,}{ \boldsymbol{w}}_{ {p}}\right) {.} $

式中: ${S}$为训练数据集, ${E}_{{\rm{bw}}}$${D}_{{\rm{bw}}}$${E}_{{\rm{fw}}}$${D}_{{\rm{fw}}}$分别为反向编码器、反向解码器、前向编码器、前向解码器的参数.

2. 实验设置

2.1. 数据集

KBQA模型的实验数据来自simple questions[28],这是针对简单问题构建的数据集,采用人工标注的方法根据知识库中的事实生成对应的问句,并且以Freebase作为答案来源. 该数据集共包含108442条数据(包含关系标注),其中训练集为75 910条(70%),验证集为10 845条(10%),测试集为21687条(20%). 该数据集每行1条数据,分别是头实体ID、关系、尾实体ID、问句内容.

对于对话生成,使用2个数据集. Reddit单轮对话数据集[9],其中包含3 384 185个训练对、8 000个验证对和16000个测试对. 该数据集是根据社交媒体Reddit上的帖子和评论整理而得. Daily Dialog[29]是广泛用于开放域对话生成的真实世界对话集合,筛选出对话轮次为1的数据对,并将其余对话每个轮视为1个训练对,删除重叠对[30],共得到41982个训练对、4000个验证对和8000个测试对. 为了保持KBQA得出的关键字和知识特征编码可以更好地引入对话生成模型中,使用KBQA预训练模型所使用的FB2M(Freebase-FB2M)作为常识知识库,从数据上保持一致性.

在进行相关工作的研究和基准实验时,发现相关研究的对话生成结果倾向于出现大量重复的词汇和语句,生成语句中的词汇重叠导致生成语句过长以及逻辑不明的问题. 这一问题产生的原因之一,可能是训练语料数据集中存在部分过长和重叠的语料文本. 为了减少这种情况的发生,在预处理阶段,通过去掉多余的标点停顿和含义不明或重复的文本进行原始数据集的清理,并对每个输入文本和回复的长度进行限制,限制为至多20个单词[31],以获得更好的训练数据. 经过处理,保留大约80%的原始训练数据. 最终所使用的数据集的统计数据如表2所示.

表 2   本研究所用数据集详情

Tab.2  Details of datasets used in research

模型 问答对/对话回复数据集 知识库数据集
名称 数量 名称 数量
知识库问答 训练集 75 910 实体 2×106
验证集 10 845 关系 31 940
测试集 21 687 三元组 1×107
对话生成 Reddit 训练集 3 384 185 实体 2×106
Reddit 验证集 8 000 关系 31 940
Reddit 测试集 16 000 三元组 1×107
Daily Dialog 训练集 41 982 实体 2×106
Daily Dialog 验证集 4 000 关系 31 940
Daily Dialog 测试集 8 000 三元组 1×107

新窗口打开| 下载CSV


2.2. 参数设置

对于KBQA模型,使用Glove[32]模型初始化词向量. 词向量的大小设置为100. BiLSTM设置为具有256个隐藏单元的双层BiLSTM. MLP是双层全连接网络,具有512个隐藏单元. 批处理大小设置为128,随机初始化模型的所有参数,并使用Adam[33]优化器进行优化,初始学习率为0.002.

对于对话生成模型,词向量的大小设置为100,同样使用Adam优化器来优化所有参数,初始学习率为0.002. 由于对话中词向量较为稀疏,通过随机梯度下降异步优化向量,批处理大小设置为64.

2.3. 基线模型

与以下4个基线模型进行比较.

Seq2Seq[34]:标准的序列到序列模型,广泛用作对话生成的基准对比模型.

CopyNet[12]:引入复制机制的基于序列到序列的模型,通过从相关知识库复制实体词来获取知识.

CCM[9]:引入静态和动态图注意力机制的知识感知对话生成模型.

TransDG[20]:引入KBQA的知识感知生成模型,从KBQA任务中转移问题表示和知识匹配能力到Seq2Seq模型.

2.4. 评估指标

对话回复的流畅性和合理性具有主观性,对话生成任务评估还应该考虑具体对话语境,但是尚无统一的评价标准. 本研究采用2种评价方式:自动评价和人工评价相结合的方式来验证模型生成回复的效果.

2.4.1. 自动评估指标

本研究的模型旨在减少通用回复问题、无意义的回复问题和提升对话回复中事实知识的引入率和准确性. 对于自动评估,采用双语互译质量辅助工具(bilingual evaluation understudy, BLEU) [35]、困惑度(perplexity, PPL)和实体得分(entity score, ES)[9]作为评估指标. BLEU是基于词重叠的度量,计算生成的回复和真实回复间的词重叠度. PPL被广泛用于量化语言模型,PPL越小,句子的概率越大,模型表现越好. ES用于衡量每个回复生成中引入相关实体的能力. 较高的实体分数通常表明生成的回复引入了更多的实体知识.

BLEU的计算公式为

$ \text{BLEU}= \text{min}\left(1,\frac{{ {L}}_{ {{\rm{ge}}}}}{{ {L}}_{ {{\rm{goal}}}}} \right){ \left(\prod _{ {i} {=1}}^{ {n}}{ {p}}_{ {i}} \right)}^{\frac{ {1}}{ {n}}}. $

式中: ${n}$为n元语法的最大长度,设n=4; ${L}_{{\rm{ge}}}$为生成句子的长度; ${L}_{{\rm{goal}}}$为原始句子的长度; ${p}_{i}$为第 ${i}$个单词在 ${i}$元语法上的精度.

困惑度的计算公式为

$ \text{PPL}= \text{exp}\left( -\frac{ {1}}{ {N_1}}{\sum }_{ {i} {-1}}^{ {N_1}} \;\text{ln}\left( {P}\left({ {y}}_{ {i}}\right)\right)\right). $

式中: ${P}\left({y}_{i}\right)$为当前生成的回复文本的联合概率, ${N_1}$为句子长度.

2.4.2. 人工评价指标

在人工评测中,评测者根据评分规则对生成回复语句进行评分. 本研究制定的具体评价标准如表3所示.

表 3   评价对话生成模型的人工评价标准

Tab.3  Artificial evaluation criteria for evaluating dialogue generative model

评估层面 分值 标准
语言 0 生成回复语句不通顺且语法不正确
1 生成回复语句不通顺但语法正确
2 生成回复语句通顺但语法存在歧义
3 生成回复语句通顺且语法完全正确
知识 0 生成回复语句中完全没有引入事实知识
1 生成回复语句中引入部分事实知识
2 生成回复语句中引入事实知识全面但不准确
3 生成回复语句中引入事实知识全面且准确

新窗口打开| 下载CSV


人工评估从2个层面评估对话生成模型:语言层面和知识层面. 每个层面从语言流畅性、语法正确性、知识引入率、知识准确性等4个角度进行归纳整理,分值为0~3,得分越高代表性能越好. 从2个测试集中分别随机选择200个对话数据,保留原始数据的回复,使用本研究模型和4个基线模型分别生成200个回复,累计产生2400个评价样本,其中每条输入文本对应6条回复文本. 邀请5位评价者对这2400个样本同时打分. 计算由模型生成回复的得分与原始数据得分的差值的平均值,作为最终的评价结果.

人工评价 ${R}_{{\rm{h}}}$的计算公式为

$ { {R}}_{ {{\rm{l}}}}=\frac{ {1}}{ {N_2}}{\sum }_{ {i} {=1}}^{ {N_2}}\;{ {S}}_{ {{\rm{ml}}}} -{ {S}}_{ {{\rm{ol}}}} , $

$ { {R}}_{ {{\rm{k}}}}=\frac{ {1}}{ {N_2}}{\sum }_{ {i} {=1}}^{ {N_2}}\;{ {S}}_{ {{\rm{mk}}}} -{ {S}}_{ {{\rm{ok}}}} , $

$ { {R}}_{ {{\rm{h}}}}=0.5\left({ {R}}_{ {{\rm{l}}}}+{ {R}}_{ {{\rm{k}}}}\right). $

式中: $ {{S}}_{{{\rm{ml}}}} $为模型生成回复在语言层面的得分, $ {{S}}_{{{\rm{ol}}}} $为原始数据在语言层面的得分, $ {{S}}_{{{\rm{mk}}}} $为模型生成回复在知识层面的得分, $ {{S}}_{{{\rm{ok}}}} $为原始数据在知识层面的得分, $ {{R}}_{{{\rm{l}}}} $为人工评价在语言层面总体得分, $ {{R}}_{{{\rm{k}}}} $为人工评价在知识层面总体得分, $ {N_2} $为参与评价的样本总数.

3. 实验结果

3.1. 自动评估结果

自动评估的结果如表4所示.从词重叠指标BLEU的结果上看,本研究模型的结果最接近真实回复. 从PPL上看,本研究模型在所有模型中困惑度最低,这表明本研究模型生成的回复更流畅且在语法上更具有逻辑性. Seq2Seq模型的困惑度非常高,因为该模型本质上是完全不可操控的概率模型,通用的回复往往拥有更高的概率值,所以更倾向于生成概率更高的“安全回复”. 从ES上看,引入知识的CopyNet、CCM、TransDG在生成具有实际意义的知识信息的回复方面比传统的Seq2Seq有更好的表现,这也证明在对话生成中引入知识的必要性. TransDG和本研究模型在实体的得分上都明显优于基线模型. 这验证了从KBQA模型迁移知识表达和知识相似性计算编码以提升对话生成中知识引入的合理性. 本研究模型更倾向于将关键词显示地生成在回复中,因此在实体得分上优于基准模型.

表 4   不同模型的自动评估结果统计

Tab.4  Statistics of automatic evaluation results with different models

模型 BLEU PPL ES
Reddit Daily Dialog Reddit Daily Dialog Reddit Daily Dialog
Seq2Seq 0.21 0.23 54.94 67.23 0.564 0.443
CopyNet 0.27 0.22 47.54 54.78 0.932 0.769
CCM 0.24 0.25 43.78 57.45 1.034 0.947
TransDG 0.34 0.33 40.19 48.19 1.148 1.026
本研究 0.39 0.37 38.77 44.83 1.482 1.279

新窗口打开| 下载CSV


本研究模型增加重复词组的惩罚机制,因此生成句子的流畅性优于TransDG,这证明本研究在TransDG无法解决的问题上—产生不相关的和不合语法的重复性词汇,有了明显的改善. 同时,本研究模型在实体得分中相比TransDG有明显的提升,这也证明了在语句生成中以异步双向生成的方式显式地引入实体知识对增强语句中事实信息的有效性.

3.2. 人工评价结果

本研究使用的是英文数据集,因此期望以英文为母语的真人对生成结果进行真实评价. 由于人工测评时间和人力成本比较高,在亚马逊众包任务平台Mechanical Turk上以众包的方式匿名邀请5位母语为英文的社交达人,他们被要求按照评测标准测评语句的生成回复. 人工评价结果如表5所示. 可以看出,本研究模型倾向于产生信息量更大且更准确的回复. 具体来说,本研究模型生成的回复比其他模型在语言层面具有更高的流畅性且更符合语义逻辑,同时也表明本研究模型有效且准确地引入了知识信息.

表 5   不同模型的人工评价结果统计

Tab.5  Statistics of manual evaluation results with different models

模型 ${{R} }_{\text{l} }$ ${{R} }_{\text{k} }$ ${{R} }_{\text{h} }$
Seq2Seq 0.49 0.80 0.65
CopyNet 1.08 1.47 1.28
CCM 0.96 1.87 1.42
TransDG 2.13 1.79 1.96
原始数据 2.84 2.56 2.70
本研究 2.32 1.95 2.14

新窗口打开| 下载CSV


3.3. 实例分析

表6所示为本研究模型和基线生成的一些典型回复. 可以看出,Seq2Seq模型由于没有结合外部知识,无法理解给出的语句,同时它所回复的内容与输入文本也存在较大的逻辑上的偏差. 这进一步验证外部知识对于对话生成质量提升的有效性. CopyNet可以生成流畅的回复,但是在对话上下文场景中缺乏适当的逻辑. CCM能够生成一些信息性单词,但同样缺乏逻辑上的合理性. TransDG可以使用较为适当的实体词(例如“fan”和“watch”)生成响应,但整个回复缺乏语义上的连续性. 从整体情况看,本研究模型比TransDG引入了更多更合理的知识实体.

表 6   不同模型生成回复的实例对比

Tab.6  Example comparisons of generating responses with different models

模型 文本类型 文本内容
原始数据 输入 Interstellar is a pretty good movie. we will tell you it is a documentary.
原始数据 回复 I gonna watch that one next week! I like documentary. But I heard the ending to interstellar is just awful.
Seq2Seq 生成回复 It’s a movie, but it’s not.
CopyNet 生成回复 I 'm really very sorry but movies can be documentary.
CCM 生成回复 I’m not a movie, but I’m not a movie.
TransDG 生成回复 I’m a fan of movie, but I have not watched it yet.
本研究 生成回复 Documentary is a genre of movies, but I'll have to take your word for watching it.

新窗口打开| 下载CSV


3.4. 误差分析

对模型的测试结果所产生的误差进行分析,以进一步理解本研究模型的局限性,并指导后续的研究工作. 选择人工评价分数中最低的100个测试样本,分析并总结可能导致其分数较低的原因.

生成样本中出现最多的误差是由于存在语义上的逻辑误差导致的. 比如“I am the fan of the game, but I don’t like the game, so I like the game.” 这样的表述缺乏语义上的合理性,但编码器、解码器结构的生成式模型普遍存在这个问题. 本研究认为这个问题的改善应该结合语言学、逻辑学方面的知识,以减少此类误差的产生.

第2个最常见的误差是由多义词引起的信息量不足或不合理的回答.这个问题在英语环境下尤其明显. 例如,给定输入文本“The new chair of the committee has a lot of great ideas.”,产生的反应是“I don’t like the chair to sit”. 利用知识推理借助知识图谱进行语义理解消歧,也是当今知识图谱的热门研究方向,在后续的研究中可以考虑将知识推理运用到对话生成中以改善生成对话的质量.

最后一个出现的误差是生成式模型普遍存在的词汇重复的问题. 本研究模型虽然加入惩罚检测机制,在这个方面取得比基线模型更好的结果,但仍不能完全避免此类问题的出现.后续将进一步考虑惩罚机制权重赋予的方式,同时探索其他可能有效的解决方案.

4. 结 语

如何减少无意义的通用回复的产生是人机对话领域中十分重要的问题,在对话生成模型中引入外部知识是合理也行之有效的解决方案. 本研究提出基于知识迁移和双向异步序列的对话生成模型. 通过将知识库中的外部知识融合到序列到序列模型并显式地生成在回复语句中,改善对话生成模型倾向于生成无意义回复的问题. 本研究提出针对生成式对话模型的检测惩罚机制,在对话生成中出现重复词汇的问题上展现出较好的效果. 虽然大量实验证明模型在自动评估和人工评价指标上均优于基线方法,但误差分析表明本研究模型仍有提升的空间. 接下来,将继续在提升对话生成质量并减少不合理的误差上进行研究.

参考文献

FERGUSON G, ALLEN J, MILLER B. TRAINS-95: towards a mixed-initiative planning assistant [C]// Proceedings of the Third Conferece on Artificial Intelligence Planning Systems. Edinburgh: [s.n.], 1996: 70-77.

[本文引用: 1]

GRAESSER A C, CHIPMAN P, HAYNES B C, et al

AutoTutor: an intelligent tutoring system with mixed-initiative dialogue

[J]. IEEE Transactions on Education, 2005, 48 (4): 612- 618

DOI:10.1109/TE.2005.856149      [本文引用: 1]

WANG H, LU Z, LI H, et al. A dataset for research on short-text conversations [C]// Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing. Seattle: ACL, 2013: 935-945.

[本文引用: 1]

RITTER A, CHERRY C, DOLAN W B. Data-driven response generation in social media [C]// Proceedings of the 2011 Conference on Empirical Methods in Natural Language Processing. Edinburgh: ACL, 2011: 583-593.

[本文引用: 1]

VINYALS O, LE Q V. A neural conversational model [EB/OL]. [2021-06-22]. https://arxiv.org/pdf/1506.05869v1.pdf.

[本文引用: 1]

SHANG L, LU Z, LI H. Neural responding machine for short-text conversation [C]// Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing. Beijing: ACL, 2015: 1577-1586.

SERBAN I, SORDONI A, BENGIO Y, et al. Building end-to-end dialogue systems using generative hierarchical neural network models [C]// Proceedings of the AAAI Conference on Artificial Intelligence. Phoenix: AAAI, 2016: 3776-3783.

[本文引用: 1]

LI J, GALLEY M, BROCKETT C, et al. A diversity-promoting objective function for neural conversation models [C]// The 2016 Conference of the North American Chapter of the Association for Computational Linguistics. San Diego: [s.n.]. 2016: 110-119.

[本文引用: 2]

ZHOU H, YOUNG T, HUANG M, et al. Commonsense knowledge aware conversation generation with graph attention [C]// Proceedings of the 27th International Joint Conference on Artificial Intelligence. Stockholm: [s.n.]. 2018: 4623-4629.

[本文引用: 4]

LONG Y, WANG J, XU Z, et al. A knowledge enhanced generative conversational service agent [C]// Proceedings of the 6th Dialog System Technology Challenges (DSTC6) Workshop. Long Beach: [s.n.], 2017.

[本文引用: 1]

GHAZVININEJAD M, BROCKETT C, CHANG M W, et al. A knowledge-grounded neural conversation model [EB/OL]. [2021-06-22]. https://arxiv.org/pdf/1702.01932.pdf.

[本文引用: 1]

ZHU W, MO K, ZHANG Y, et al. Flexible end-to-end dialogue system for knowledge grounded conversation [EB/OL]. [2021-06-23]. https://arxiv.org/pdf/1709.04264v1.pdf.

[本文引用: 2]

LIU S, CHEN H, REN Z, et al. Knowledge diffusion for neural dialogue generation [C]// Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics. Melbourne: [s.n.], 2018: 1489-1498.

[本文引用: 1]

LIAN R, XIE M, WANG F, et al. Learning to select knowledge for response generation in dialog systems [C]// Proceedings of the 28th International Joint Conference on Artificial Intelligence. Macao: [s.n.], 2019: 5081.

[本文引用: 1]

WU S, LI Y, ZHANG D, et al. Diverse and informative dialogue generation with context-specific commonsense knowledge awareness [C]// Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. Online: [s.n.], 2020: 5811-5820.

[本文引用: 1]

ZHOU S, RONG W, ZHANG J, et al. Topic-aware dialogue generation with two-hop based graph attention [C]// ICASSP 2021-2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). Toronto: IEEE, 2021: 7428-7432.

[本文引用: 1]

XU H, BAO J, ZHANG G. Dynamic knowledge graph-based dialogue generation with improved adversarial meta-learning [EB/OL]. [2021-06-17]. https://arxiv.org/ftp/arxiv/papers/2004/2004.08833.pdf.

[本文引用: 1]

AUER S, BIZER C, KOBILAROV G, et al. DBpedia: a nucleus for a web of open data [M]// ABERER K, CHOI K-S, NOY N, et al. The semantic web. Heidelberg: Springer, 2007: 722-735.

[本文引用: 1]

BOSSELUT A, LE BRAS R, CHOI Y. Dynamic neuro-symbolic knowledge graph construction for zero-shot commonsense question answering [C]// Proceedings of the 35th AAAI Conference on Artificial Intelligence. Vancouver: AAAI, 2021: 4923-4931.

[本文引用: 1]

WANG J, LIU J, BI W, et al. Improving knowledge-aware dialogue generation via knowledge base question answering [EB/OL]. [2021-06-22]. https://arxiv.org/pdf/1912.07491v1.pdf.

[本文引用: 2]

CHAUDHURI D, RONY M R A H, LEHMANN J. Grounding dialogue systems via knowledge graph aware decoding with pre-trained transformers [C]// The Semantic Web 18th International Conference. Auckland: Springer, 2021: 323-339.

[本文引用: 1]

王勇超, 杨英宝, 曹钰, 邢卫

基于对抗学习和全局知识信息的关系检测技术研究

[J]. 计算机应用研究, 2021, 38 (5): 1327- 1330

[本文引用: 2]

WANG Yong-chao, YANG Ying-bao, CAO Yu

Research on relationship detection technology based on adversarial learning and global knowledge information

[J]. Computer Application Research, 2021, 38 (5): 1327- 1330

[本文引用: 2]

MOU L, SONG Y, YAN R, et al. Sequence to backward and forward sequences: a content-introducing approach to generative short-text conversation [C]// Proceedings of COLING 2016, the 26th International Conference on Computational Linguistics: Technical Papers. Osaka: ACL, 2016: 3349-3358.

[本文引用: 1]

YU M, YIN W, HASAN K S, et al. Improved neural relation detection for knowledge base question answering [C]// Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics. Vancouver: [s.n.], 2017: 571-581.

[本文引用: 1]

GARDNER M W, DORLING S R

Artificial neural networks (the multilayer perceptron): a review of applications in the atmospheric sciences

[J]. Atmospheric Environment, 1998, 32 (14/15): 2627- 2636

[本文引用: 1]

CHO K, MERRIENBOER B, GULCEHRE C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation [C]// Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha: ACL, 2014: 1724-1734.

[本文引用: 1]

张全聪

略谈英语词的重复形式

[J]. 英语知识, 1991, (1): 30

[本文引用: 1]

ZHANG Quan-cong

On the repetitive forms of English words

[J]. English knowledge, 1991, (1): 30

[本文引用: 1]

BORDES A, USUNIER N, CHOPRA S, et al. Large-scale simple question answering with memory networks [EB/OL]. [2021-06-17]. https://arxiv.org/pdf/1506.02075.pdf.

[本文引用: 1]

LI Y, SU H, SHEN X, et al. DailyDialog: a manually labelled multi-turn dialogue dataset [C]// Proceedings of the Eighth International Joint Conference on Natural Language Processing. Taipei: AFNLP, 2017: 986-995.

[本文引用: 1]

CAI H, CHEN H, SONG Y, et al. Data manipulation: towards effective instance learning for neural dialogue generation via learning to augment and reweight [C]// Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. Online: [s.n.], 2020: 6334-6343.

[本文引用: 1]

KIM S E, LIM Y S, PARK S B

Strong influence of responses in training dialogue response generator

[J]. Applied Sciences, 2021, 11 (16): 7415

DOI:10.3390/app11167415      [本文引用: 1]

PENNINGTON J, SOCHER R, MANNING C D. Glove: global vectors for word representation [C]// Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha: ACL, 2014: 1532-1543.

[本文引用: 1]

KINGMA D P, BA J. Adam: a method for stochastic optimization [C]// Proceedings of the 3rd International Conference on Learning Representations. San Diego: [s.n.], 2015.

[本文引用: 1]

SUTSKEVER I, VINYALS O, LE Q V. Sequence to sequence learning with neural networks [EB/OL]. [2021-06-17]. https://arxiv.org/pdf/1409.3215.pdf.

[本文引用: 1]

CHEN B, CHERRY C. A systematic comparison of smoothing techniques for sentence-level BLEU [C]// Proceedings of the Ninth Workshop on Statistical Machine Translation. Baltimore: ACL, 2014: 362-367.

[本文引用: 1]

/