基于生成模型的闲聊机器人自动评价方法综述
2021-04-29李卓桓殷绪成晋赞霞
张 璐,李卓桓,殷绪成,晋赞霞
(1.北京科技大学 计算机与通信工程学院,北京 100083;2.北京邮电大学 计算机学院,北京 100876)
0 引言
近年来,由于深度学习的快速发展以及数据的积累,聊天机器人技术得到了迅速提升,展现出了巨大的潜力和商业价值,受到了越来越多的关注。根据应用目的进行分类[1-3],可将聊天机器人分为目标驱动的聊天机器人和无目标驱动的聊天机器人。如表1所示,目标驱动的聊天机器人一般针对特定领域设计,目标是完成用户要求的任务,比如订餐、订机票、帮助学习特定技能等,代表系统有阿里的小蜜[4]。目标驱动的聊天机器人的对话效果好坏可根据任务完成测试或根据用户满意分数进行评价[5]。无目标驱动的聊天机器人也被称为闲聊机器人,没有具体的目标,只是与用户闲聊,起到情感陪伴的作用,代表系统为微软的小冰[6]。因为闲聊机器人的目标不明确,所以闲聊机器人对话效果好坏的定义也不明确。目前,对闲聊机器人的评价没有统一的定义和标准。这也是闲聊机器人的一大挑战,制约了闲聊机器人的进一步快速发展。
表1 聊天机器人的分类
闲聊机器人的构建方式有三种[1-3],分别是基于模板的闲聊机器人[7]、基于检索模型的闲聊机器人[8-9]和基于生成模型的闲聊机器人[10-14]。如图1所示,基于模板的闲聊机器人,通过人工制定模板,采用关键词匹配等方法构建,人工构建的模板十分准确,因此回复的准确性很高,但模板构建受到人力和物力的限制,导致模板数量比较少,因此灵活性比较差,会有很多不能回复的问题。基于检索模型的闲聊机器人,其检索库为人类产生的对话数据,如百度贴吧的帖子,因此准确率较高,而且由于互联网的发展,论坛、社交软件中人类对话的数据量很大,因此灵活性也较高。基于生成模型的闲聊机器人,采用数据驱动的端到端的方法构建,可以对任意问题进行回复,因此灵活性最高,但生成模型生成的回复往往存在语义不准确、上下文不一致等问题,因此准确率最低。基于检索模型的闲聊机器人可以使用准确率、召回率、F值和MAP@K进行评价[8-9],而基于生成模型的闲聊机器人的评价更加复杂,具有挑战性,本文关注基于生成模型的闲聊机器人的评价方法。
图1 构建闲聊机器人的三种方法的比较
当前,研究者们大多将闲聊机器人的评价细分为对生成合理的回复、生成多样的回复、对话具有特定的个性、对话具有情感、对话主题具有深度和广度等能力的评价[15-18]。此外,虽然闲聊机器人有了很大的发展[1],但还是面临很多挑战,如回复单一无趣、不能保持一致的个性、主题不一致等问题,研究者们大多只对其中的一个问题进行研究以改善闲聊机器人的对话效果,因此,当前闲聊机器人大多只具备一种能力,如能够保持一致个性的机器人不一定能够理解用户的情感,能够讨论不同话题的机器人不一定具有一致个性等。因此,根据闲聊机器人的发展现状,同时也为了评价目标更加明确,本文只针对闲聊机器人具备的能力进行评价。
对于闲聊机器人具备的能力的评价,现在大多采用自动评价和人工评价相结合的方法[19-23]。人工评价方法虽然评价结果比较可靠,但是有很多缺点:人力物力消耗大,花费时间长,不能方便快速地对闲聊机器人进行评价从而促进机器人的快速迭代,此外评价者的个人喜好对评价结果也有一定的影响。因此,为了克服人工评价方法的缺点,急需可靠的自动评价方法。
大多数自动评价方法是对闲聊机器人是否能够生成合理的回复进行评价,因为回复的合理性是对话进行的基本保证,生成合理的回复是闲聊机器人最基本的能力。就像最初闲聊机器人的生成模型借鉴机器翻译任务中的方法一样[10],闲聊机器人的自动评价方法最初也是从机器翻译等生成任务中借鉴而来的,比如机器翻译任务的BLEU[24]、METEOR[25],自动文本摘要生成的ROUGE[26]。机器翻译任务的特点是一个源语言对应一个目标语言,是“一对一”的问题,而在闲聊任务中,给定一个问题,会有很多个合理的回复,是“一对多”的问题,如表2所示,针对一个上下文,合理的回复有3个,包括参考回复和闲聊机器人可能生成的回复,所以借鉴的自动评价方法与闲聊任务并不适配。
表2 对话与闲聊机器人生成回复示例
BLEU等基于词重叠的评价方法通过计算生成回复与参考回复相同的n-gram数量进行评价,简单来说,在平均加权的情况下,相同的n-gram数越多,生成回复与参考回复越相似,生成回复越合理。但在闲聊中,存在闲聊机器人生成的回复是合理的,但是与参考回复几乎没有相同的n-gram的情况,导致BLEU分数很低,如表2中闲聊机器人可能生成的回复1。基于词重叠的评价方法没有考虑生成回复与参考回复的语义信息,所以,研究者们提出应用基于词向量的评价方法,常用的有三种方法:向量均值法[27]、向量极值法[28]和贪婪匹配法[29],通过计算生成回复与参考回复的语义相似性度来判断生成回复的合理性,语义相似度越高,生成的回复越合理,但在闲聊中也存在闲聊机器人生成的回复是合理的,与参考回复不仅没有相同的n-gram,还与其语义不相同的情况,如表2中闲聊机器人可能生成的回复2。但基于词向量的评价方法没有考虑对话历史,如果考虑到对话历史信息,可以判断出回复2也是合理的。此外,有研究表明,基于词重叠的评价方法和基于词向量的评价方法对闲聊机器人的评价结果与人工评价结果具有很低的相关性[15],说明这两种自动评价方法的评价结果并不可信。
为了更好地评价闲聊机器人,构建与人工评价更具相关性的自动评价方法,有很多研究者采用机器学习的方法来构建评价模型。主要有三个思路:使用具有人工评分的标注数据训练模型,使得打分模型能够学习人类,从而对闲聊机器人进行评价打分[30-32];借鉴生成对抗网络,训练对抗模型,使得对抗模型能够区分闲聊机器人生成的回复和人类产生的回复[33-34];结合生成回复与参考回复的相似性和生成回复与问题的相关性这两个评价维度设计打分模型[35-36],其中,评价生成回复与问题的相关性的模型采用负采样技术进行训练。
以上提到的都是评价闲聊机器人的基本能力—生成合理的回复的自动评价方法。除此之外,评价闲聊机器人扩展能力的自动评价方法也有一定的发展,能够对闲聊机器人可能具有的其他能力进行评价,如生成多样的回复、对话具有情感、对话具有特定个性和对话主题具有广度和深度等。此外,为了发展具有多种能力的闲聊机器人的自动评价方法,需要学习并发展当前对闲聊机器人进行综合能力评价的方法,即学习综合评分策略,将人工评价方法自动化,并借鉴一些自动评价方法来评价某种特定能力。
文献[19]是一篇针对基于生成模型的闲聊机器人的自动评价方法的英文综述,发表于2016年;文献[20]是一篇针对对话系统评价方法的中文综述,发表于2017年。本文与这两篇综述的区别在于,这两篇综述仅涉及到闲聊机器人的基本能力的评价,即评价回复的合理性的自动评价方法,而本文将闲聊机器人的评价划分为基本能力评价、扩展能力评价和综合能力的评价,并对评价每一种能力的自动评价方法进行了梳理和总结。此外,对于评价回复的合理性的自动评价方法的总结,尤其是基于模型的评价方法这一分支,内容更加全面、分析更加深入、分类更加系统。
本文组织结构如图2所示,第1节主要介绍对闲聊机器人的基本能力—生成合理的回复进行评价的自动评价方法;第2节分类讨论对闲聊机器人的扩展能力进行评价的自动评价方法;第3节介绍评价闲聊机器人综合能力的方法,并探讨如何发展综合自动评价方法;第4节介绍评价自动评价方法的方法;第5节分析讨论发展自动评价方法的困难与挑战;最后对全文进行总结。
图2 文章架构
1 基本能力评价—评价回复的合理性
只有闲聊机器人生成的回复是合理的,对话才有可能进行下去,因此,生成合理的回复是闲聊机器人最基本的能力,当前很多研究致力于提升闲聊机器人生成回复的合理性。那么怎样判断生成回复的合理性?
(1)生成回复与参考回复的相似性越高,生成回复越合理。
判断生成回复与参考回复相似性的代表方法为粗粒度的基于词重叠的评价方法和较细粒度的基于词向量的评价方法。
(2)生成回复越适合回答提出的问题,生成回复越合理。
判断生成回复是否适合回答提出的问题有三种方法:可以构建模型模仿人类打分,从而判断生成回复是否能够合理地回答问题;可以根据问题判断生成回复是不是很像人类产生的回复,一般人类产生的回复都比较合理;还可以既对生成回复与参考回复的相似度进行计算,又对生成回复与问题的相关性进行判断,然后结合起来判断生成回复是否能够合理地回答问题。
(3)从其他领域借鉴的一些方法,如困惑度。
表3对评价回复的合理性的自动评价方法进行了总结。
表3 评价回复的合理性的自动评价方法概况
1.1 基于词重叠的评价方法
从其他生成任务中借鉴的评价方法主要有机器翻译任务中的BLEU[24]、METEOR[25]和自动文本摘要任务中的ROUGE[26]。这些评价方法被称为词重叠评价方法,基于词重叠的评价方法假设生成回复与参考回复之间存在大量的词重叠,计算生成回复与参考回复之间相同的n-gram,在平均加权的情况下,相同的n-gram越多,生成回复与参考回复越相似,生成回复越合理。
基于词重叠的评价方法都是在精确匹配的准确率和召回率的基础上改进得到的。
(3)
(4)
METEOR(metric for evaluation of translation with explicit ordering)对BLEU进行了改进,匹配时不仅考虑单词精确匹配,还考虑词干、同义词和释义的匹配;不仅计算准确率P1,考察生成回复相对于参考回复的准确性,还计算召回率R1,考虑生成回复相对于参考回复的完整性。计算如式(5)、式(6)所示,其中,Pm和Rm是根据匹配对齐规则对P1和R1进行调整后得到的,惩罚项Penalty是根据匹配情况计算得到的,α是超参数。
(7)
(8)
(9)
(10)
(11)
上述三个评价指标中,评价闲聊机器人最常用的是BLEU。此外还有一些迁移到闲聊机器人评价领域的自动评价方法,如图像标题生成任务的CIDEr[37]、BLEU的改进deltaBLEU[38]、以及AM-FM方法[39]。基于词重叠的评价方法假设生成回复与参考回复之间存在大量的词重叠,这个假设在机器翻译中比较有效,因为一个源语言的目标翻译只有“一个”,若生成翻译很合理,其必定与参考翻译有很多相同的n-gram。因此,这些评价方法在它们原本的任务中表现很好,与人工评价具有很高的相关性。但由于闲聊任务与其他生成任务不同,即在闲聊中合理的回复有很多,存在生成回复是合理的但是与参考回复没有相同的n-gram的情况,使得基于词重叠的评价方法迁移到闲聊领域表现会很差。文献[15]也指出在闲聊中,基于词重叠的评价方法的评价结果与人工评价结果的相关性很差。因此,不建议继续使用基于词重叠的评价方法对闲聊机器人的生成回复进行评价。
1.2 基于词向量的评价方法
基于词向量的评价方法利用余弦函数计算生成回复与参考回复之间的语义相似性,从而评价生成回复的合理性,相似性越高,生成回复越合理。
(12)
当前主要有三种基于词向量的评价方法。
① 向量均值法(embedding average)[27]是计算句子向量最直接、简单的方法,通过计算所有单词的词向量在每一维的平均值获得句子向量表示。计算如式(13)所示,其中|r|代表参考回复包含的单词数。
(13)
② 向量极值法(vector extrema)[28]考虑到词向量中极值可能包含更多的信息,因此,通过选取所有单词的词向量在每个维度的极值—最大值或最小值获得句子的向量表示。一个维度的计算如式(14)所示,其中,ewd代表单词w在维度d上的向量值,erd代表参考回复r在维度d上的向量值。
(14)
③ 贪婪匹配法(greedy matching)[29]认为两个句子之间的相似度可以通过累加两个句子之间单词对的相似度获得,因此,将参考回复中的每个单词转换为词向量后,利用余弦函数匹配生成回复中的每个单词的词向量,最终的相似度分数是最大匹配值的平均值,因为公式是不对称的,要考虑两个方向的贪婪匹配,如式(15)、式(16)所示。该方法支持生成回复中的关键词与参考回复中的关键词相似的生成回复。
文献[15]指出虽然基于词向量的评价方法的评价结果与人工评价结果的相关性很低,但是其能够区分出合理性不同的生成回复。因此,在还没有更好的自动评价方法的情况下,可以继续使用简单、快速、有效的基于词向量的评价方法。以上三种最常用的基于词向量的评价方法还可以进一步改进,如获得更好的句子向量表示,采用更好的相似性计算方法。近些年,词向量有很大的发展,词向量不再是静态词向量,而是上下文相关的动态词向量,如Elmo[42]、GPT[43-44]和BERT[45]等词向量;此外,已有更多表现更好的句子向量表示方法被提出,如SkipThought[46]、QuickThought[47]、Infersent[48]和Weighted Meta-Embedding[49],或者使用神经网络模型LSTM[50]、Transformer[51-52]对句子进行编码获得句子向量表示。除余弦相似度之外,还可以尝试使用单词移动距离方法(word mover’s distance)[53]和句子移动相似性方法(sentencce mover’s similarity)[54]以及两者的结合进行相似度计算。
1.3 基于模型的评价方法
1.3.1 模仿打分模型
模仿打分模型通过收集人类评分构造数据集对模型进行训练,从而获得模仿人类打分的模型,对闲聊机器人进行评价。模仿打分模型的构建与评价可分为三步:
(1)构建数据集,训练模仿打分模型的数据集的形式为{问题—回复—人类评分},因此首先要收集人类评分;
(2)方法设计与训练,模仿打分模型一般是分类器或神经网络模型;
(3)评价。分类问题的评价指标为准确率和F1值,回归问题的评价指标为皮尔逊相关系数,该系数度量两个变量之间的线性相关程度,其值介于-1到+1之间;或者斯皮尔曼相关系数,该系数度量两个变量之间的单调关系,当两个变量完全单调相关时,其值为+1或-1[15]。
文献[30]将打分问题看作一个回归问题,训练模型学习人类评价打分。首先需要构建具有人工评分的评价数据集,先收集不同闲聊模型在数据集上的回复,使得回复能够具有不同的合理性,然后在亚马逊众包平台雇佣评价者,对回复的合理性进行打分,打分区间为[1,5],分数越高代表回复越合理。
图3 ADEM模型[31]
(17)
其中,M、N∈Rn是学习参数矩阵,可以看作线性映射,将生成回复映射到上下文和参考回复的向量空间中。当映射后的生成回复和上下文以及参考回复具有相似的向量表示时,模型会给高分。α,β是常量,将模型的打分限制在[1,5]。
文献[30]的实验结果显示,ADEM模型的评价结果与人工评价结果的相关性较高,超过了BLEU等词重叠评价方法。但ADEM模型的缺点是评分太保守,原因在于训练ADEM模型的目标函数是均方误差,模型为了避免预测极值受到较大的惩罚,学会预测接近人类平均打分的分数。文献[31]对ADEM模型的评价效果进行了深入评估,发现ADEM模型对所有生成回复评分的平均值为2.75,标准差为0.34,表明ADEM模型对不同的生成回复评分相近,无法明确区分合理性不同的生成回复。而且ADEM模型很容易受到攻击从而表现不佳,比如将回复中的单词顺序调换之后,ADEM模型仍会给出较高的分数。
文献[32]认为一个问题的合理回复有很多,文献[30]使用参考回复并对生成回复和参考回复进行语义相似度比较是不合理的,因此文献[32]将打分问题看作分类问题,只使用问题和生成回复,对生成回复的合理性进行分类。文献[32]直接使用了一个聊天机器人研讨会中具有人工评价标注的数据,人工评价结果为合理的、可接受的和不合理的三类。
文献[32]的分类模型使用了简单有效的支持向量机和随机森林模型,也使用了神经网络模型,如图4所示的基于CNN的分类模型。该模型共四层:查找表层、应用Word2Vec或者GloVe预训练词向量,将单词表示为词向量;卷积层,提取局部特征,或者循环层,获得句子的向量表示,分别得到问题和回复的向量表示之后拼接在一起;池化层,使用随时间推移的平均值(窗口大小为M,平均池化的一种特殊情况)或者注意力机制(加权平均值);具有sigmoid激活函数的线性层将池化表示映射为(0,1)之间的标量值。
图4 基于CNN的分类模型[30]
模仿打分模型通过使用回复具有人工评分的标注数据,进行监督训练,学习人类的评分标准,对回复进行评价打分。这类方法的评价结果与人工评价结果具有较高的相关性,文献[32]只利用了{问题—生成回复—人类评分}数据进行模型训练,文献[30]利用了{问题—参考回复—生成回复—人类评分}数据对模型进行训练。而总有一些数据中的问题是没有参考回复的,文献[30]中的方法更具局限性,但评价效果也更好。模仿打分模型的主要缺点是需要大量标注数据,而标注数据的获取是很耗费物力财力的,限制了此类方法的进一步发展。而且,人类标注数据存在偏差,如人类倾向于给较短的回复打高分,模型通过训练,也会学习到给较短回复打高分这个错误行为,需要针对这一情况对模型做出改进。此外,模仿打分模型受限于训练数据,当测试集为另一个数据集时,模型可能就需要重新训练才能获得较好的评价效果,需要增强该类方法的通用性。
1.3.2 对抗模型
由于生成对抗网络(generative adversarial network,GAN)在图像生成任务中的成功应用[55],生成对抗网络也被尝试用于闲聊机器人的评价,该类方法假设一个回复的合理性跟该回复与人类产生回复的区分性有关,区分性越小,该回复越合理。通过对抗模型分析生成回复与人类回复的区分性,判断生成回复的合理性。对抗模型在闲聊机器人评价领域的应用分为以下三个部分:
① 模型设计。评价闲聊机器人的对抗模型主要是判别器,对机器人生成的回复和语料中的参考回复进行判别。
② 实验设计。测试对抗模型的判别效果一般通过以下两个实验。
实验一:将数据集中一半对话对保留原始回复,一半对话对中的回复替换为随机回复。给定上下文,判断给出的回复是原本的回复还是随机的回复。
实验二:首先训练一个闲聊机器人,闲聊机器人根据数据集中的问题生成回复,然后判断回复是闲聊机器人生成的回复还是语料中的参考回复。
③ 对抗模型的评价。评价指标为准确率、召回率和F1值。
文献[33]是第一个尝试使用对抗模型评价闲聊机器人的工作,其模型包含一个生成器和一个判别器,生成器和判别器分开训练。生成器是一个Seq2Seq模型。判别器由RNN和二分类器组成,给定问题—回复—分数三元组(o,r,y),y=1代表回复来自训练数据集,y=0代表回复是生成器模型生成的,模型的目标函数如式(18)所示。
J=∑(o,r,y)logP(y|o,r)
(18)
文献[33]只进行了实验二,实验结果表明,判别器区分生成器模型和人类回复的准确率仅为62.5%。此外,判别器会给长句子打高分,甚至在长句子不连贯的情况下,也会给包含不常见单词、词汇的句子打高分,会给生成器生成的通用回复如‘我不知道’等打低分,可以说判别器检测出了生成器的缺点。
文献[34]在文献[33]的基础上进一步探索对抗模型在闲聊机器人评价领域的潜能和局限性。文献[34]测试了两个实验,并且设计了更加复杂的对抗模型,其对抗模型只包含一个判别器,是一个基于注意力机制的双向LSTM的二分类器,给定一个问题—回复对,判断它是“真”的(语料中的对话对),还是“假”的(回复被随机替换或机器人生成的回复)。
文献[34]中,人类和对抗模型同时进行了两个实验。实验对人类来说很有挑战性,实验一的结果显示,3名评价者之间的一致性仅为0.3,实验二的结果显示,人类表现是随机选择水平。而对抗模型的评价结果优于人工评价,说明对抗模型能够学习到人类“看”不到的一些模式。进一步分析对抗模型利用了什么信息进行预测,发现当上下文和回复的余弦相似度很高时更容易被对抗模型预测为连贯的对话,并且连续对话的上下文和回复的余弦相似度很高。
目前,对抗模型在闲聊评价领域处于尝试测试阶段,只能够在一定程度上对闲聊机器人的生成回复和语料参考回复进行区分,并不能像模仿打分模型那样评价生成回复,给出确切的分数。而且,对抗模型在闲聊评价领域应用的前提是,假设闲聊机器人生成的回复的合理性可以用该回复与参考回复的区分性来衡量,区分性越小,生成回复越合理。需要进一步的实验去验证假设,因为可能闲聊机器人的生成回复与参考回复区分性较大,但仍然是合理的回复。还要进一步探索对抗模型的评价效果。比如可使用多个对话效果不同的闲聊机器人在测试集上生成回复,首先评价者根据回复的合理性进行评价,产生闲聊机器人的参考排序,然后对抗模型和评价者分别对生成回复和参考回复进行区分性判断后对闲聊机器人进行排序,随后查看评价者的排序结果是否与参考排序一致,如果不一致,就要重新考虑这个假设的成立性,如果一致代表假设成立,然后查看对抗模型的排序结果是否与参考排序一致,如果不一致,说明对抗模型的评价效果并不是很好,需要进一步发展。此外,还需要考虑区分性大小是否可以作为评价分数,比如可将区分性进行一定处理后与人类评分结果进行相关性判断,若相关性较高,那么区分性大小可以作为评价分数。
1.3.3 直观打分模型
下一话语分类任务(next utterance classification, NUC)[56]专为检索式闲聊模型的训练和测试而设计。在NUC中,闲聊模型需要从回复列表中选出最合理的回复,该列表中包含参考回复和随机从语料库中采样的其他回复。使用Recall@k(模型在排名最高的前k个回复中找到参考回复的概率)对闲聊模型进行评价。
文献[56]使用ANN模型执行NUC任务,ANN模型是一个双编码器模型(dual encoder model, DE model),分别对上下文和回复进行编码,得到它们的向量表示,然后利用式(19)判断回复是不是上下文的下一句。
P(ris correct response)=σ(cTMr)
(19)
其中,M是学习参数矩阵,σ是sigmoid激活函数,c是上下文向量表示,r是回复的向量表示。
模型的训练采用了负采样技术,即随机从语料库中选取回复作为负样本,训练的目标是最小化上下文—回复对的交叉熵损失。
NUC任务给了直观打分模型灵感,相比于模仿打分模型训练使用人工标注数据费时费力,直观打分模型训练采用负采样技术得到正负样本而不需要人工标注。此外,直观打分模型还来源于对问题“在开放领域对话系统中,怎么样算一个合理的回复?”的思考,直观打分模型不仅计算生成回复与参考回复之间的语义相似性,还考虑生成回复与问题之间的相关性。
直观打分模型中的代表模型为RUBER模型(a referenced metric and unreferenced metric blended evaluation routine)[35]和BERT-RUBER模型[36],BERT-RUBER模型基于RUBER模型进行了改进。
如图5所示,该类模型由三部分组成,分别是参考指标、非参考指标和结合方法。
图5 RUBER模型[35]
(1)参考指标(referenced metric)。与参考回复相像意味着生成回复是一个合理的回复。直观打分模型采用了基于词向量的相似度测量方法。
RUBER模型中的参考指标使用了向量池化方法: 考虑符号的特征,选取句子中所有单词的词向量在每个维度的最大值和最小值,然后拼接起来作为句子的向量表示。得到生成回复和参考回复的句子向量表示后,使用余弦函数计算语义相似度。
BERT-RUBER模型对RUBER模型中的参考指标进行了改进,如图6所示,将Word2Vec词向量换为BERT词向量。
图6 改进的参考指标[36]
(2)非参考指标(unreferenced metric)。在闲聊中,一个问题会有很多个合理回复,而且参考回复可能很通用,如“我不知道”。因此,只考虑参考回复不足以评价生成回复的合理性。此外,问题也包含很多信息,可以用来评价生成回复的合理性,生成回复与问题的相关性越高代表生成回复越合理。
RUBER模型中的非参考指标,使用神经网络模型捕获生成回复与问题之间的语义相关性。如图7所示。
图7 非参考指标[35]
首先问题和回复中的每个单词被映射为词向量后,通过双向GRU得到问题和回复的语义表示,然后计算二次特征(quadratic feature)qTMr(M是参数矩阵),再将问题、二次特征和回复的向量表示拼接起来,拼接向量首先通过非线性激活函数tanh,然后通过非线性激活函数sigmoid,将非参考分数限制在(0,1)之间。
采用负采样技术训练模型,给定问题—回复对,从训练集中随机选取一个回复作为负样本r-。目标函数为如式(20)所示。
J=max(0,Δ-SU(q,r)+SU(q,r-))
(20)
其中,SU(q,r)表示参考回复的非参考分数,SU(q,r-)表示随机回复的非参考分数,Δ为一个常量。
BERT-RUBER模型改进了RUBER模型中的非参考指标,如图8所示,修改的地方共三处。
图8 改进的非参考指标[36]
① 词向量
将静态的Word2Vec词向量换为动态的BERT词向量,动态的BERT词向量能够根据上下文产生词向量,即在不同的上下文中,同一个单词会有不同的词向量。
② 句子向量
将双向RNN换为简单的池化,原因是BERT词向量是使用双向Transformer训练得到的,已经包含了丰富的上下文信息,如果再加一层双向RNN只是增加参数,对效果提升没有帮助。
③ 多层感知器网络
将目标函数排序损失替换为交叉熵损失,BERT-RUBER模型将非参考分数预测看作是一个简单的二分类问题,把问题—参考回复对标记为1,问题—随机采样回复对标记为0,MLP分类器最后一层的softmax函数输出每对问题和回复的相关性得分。
(3)结合方法
采用启发式策略:首先将参考分数和非参考分数归一化,然后可采用最小、最大、几何平均或算术平均的方式进行结合。
无论是检索式闲聊机器人还是生成式闲聊机器人的评价,RUBER模型的评价结果与人工评价结果的相关性都要高于BLEU等基于词重叠的评价方法。此外,RUBER模型使用豆瓣语料进行训练,但也能够在没有重新训练的情况下有效迁移到百度贴吧语料,虽然性能有轻微下降,但也优于其他方法。BERT-RUBER模型的表现优于RUBER模型,其非参考指标的评价结果与人工评价结果的相关性最高,其参考指标与非参考指标结合后仍然取得了较好的表现,但是相比于非参考指标的结果,相关性有所下降,表明参考指标的应用对相关性的提高并没有帮助,与RUBER模型的结果相矛盾。
相比于模仿打分模型,直观打分模型无需人工标注数据就可以取得很好的评价效果,相比于对抗模型,直观打分模型能够对回复进行打分。因此,可以说目前最有发展前景的是直观打分模型,但两篇文献都未开放源代码,阻碍了该类评价方法在闲聊机器人评价中的标准化和进一步发展。直观打分模型中BERT-RUBER模型将参考指标和非参考指标结合后,表现差于非参考指标,与RUBER模型的结果相矛盾,因此,需要进一步探索参考指标的有效性,提升参考指标的评价效果,以及尝试设计更好的结合方式。直观打分模型是针对单轮对话的评价方法,通过修改非参考指标中的神经网络结构,将对话上下文信息考虑进去,可以扩展到多轮对话评价。直观打分模型的非参考指标模型可简化为一个分类器,未来可尝试效果更好的分类模型,提升非参考指标的评价效果。
1.3.4 其他
对于概率语言模型,困惑度(perplexity, PPL)是表现很好的评价指标,也可应用于闲聊机器人的评价[14,57-58],困惑度定义如式(21)所示。
(21)
分类错误(word classification error),也被称为单词错误率(word error-rate)[14],常用于语音识别,将生成回复变为参考回复,需要替换(substitution)、删除(delete)或者插入(insertion)某些词,其计算如式(22)所示。
(22)
其中,S、D、I分别代表生成回复变为参考回复需要替换、删除和插入的单词个数,N为参考回复包含的单词的个数。
2 扩展能力评价
当闲聊机器人具备基本能力之后,有些研究致力于在此基础之上增强闲聊机器人的扩展能力,如使回复具有多样性[59],在对话中能够保持一致的个性[60-61],对话具有情感[62-63],以及能够在对话中保持主题一致[64]。与此同时,评价这些扩展能力的自动评价方法也有一定的发展。
2.1 回复的多样性
Seq2Seq模型生成的回复,存在平淡无趣的缺点[1,14],研究者们将提高回复的多样性作为目标,探索新的模型,如改变目标函数[59]、使用对抗学习[65]、使用强化学习[66]、使用层次化结构[67]等。但如何评价回复的多样性没有明确的标准,除了人工评价,也有一些自动评价方法。
最简单的方法是通过计算生成回复的平均长度来判断回复的多样性,直观上,句子越长,句子包含的信息越多,回复越多样。
文献[59]提出distinct-1、distinct-2指标评价回复的多样性,首先计算生成回复中的unigram, bigram数量,然后根据句子长度进行缩放,以避免评价指标偏爱长句子。
文献[67]使用熵衡量回复的多样性,一般人类产生的话语包含很多的信息,而且相应话语的熵很大。因此,可以认为熵越大代表回复越多样,如式(23)所示。
(23)
这些度量标准独立于问题和参考回复,只能针对多样性这个维度进行评价。
2.2 闲聊机器人的个性特质
闲聊机器人具有明确的个性对产生自然而有趣的回复、避免无趣回复是至关重要的,因此有很多闲聊机器人可以生成具有特定个性的回复。评价闲聊机器人是否能够生成反映不同个性的回复,一般需要两步:
(1)构建回复具有个性标注的数据集。该评价数据集的形式为{问题—回复—回复体现的个性},因此,首先需要使用个性识别器识别数据集中回复体现的个性,然后做相应的标注。
(2)评价闲聊机器人的个性特质。闲聊机器人在测试集上根据问题生成回复后,首先使用个性识别器对生成回复体现的个性进行识别,然后再与之前对参考回复识别出的个性进行比较。
个性识别器OCEAN能够识别五种个性:开放性(openness)、尽责性(conscientiousness)、性格外向(extraversion)、令人愉快(agreeableness)和神经质(neuroticism),其识别结果OCEAN分数是一个五维向量,每一维代表一种个性。文献[60]首先使用个性识别器OCEAN识别电视剧数据集中主要角色的个性,然后对问题—回复对中的回复标记OCEAN分数,从而得到具有个性标注的数据集。
文献[60]测试的两个闲聊模型分别是基于对话者的模型[61]和基于个性的模型。在基于对话者的模型中,回复生成基于不同的对话者;在基于个性的模型中,回复生成基于不同的个性。两个模型在测试集上根据问题生成回复后,为两个模型的每个生成回复计算OCEAN分数,最后使用支持向量机分类器来测试生成回复的OCEAN分数是否可以分到正确的个性类别。实验结果表明,基于对话者的模型优于基于个性的模型。
基于个性的自动评价方法能够衡量闲聊机器人是否能够针对不同的角色或不同的性格生成具有可区分个性的回复,评价闲聊机器人个性特质的自动评价方法可以成为人工评价的有用补充。该自动评价方法还可以进一步提高,如个性识别器OCEAN的识别效果可能不是最好的,因为其最初是在对话摘要等任务中训练的,可以使用其他能够产生个性分数的个性识别器。
2.3 闲聊机器人的情感表达
情感的感知与表达是闲聊机器人取得好的对话效果的关键因素,对闲聊机器人的情感表达能力进行评价的自动评价方法与评价闲聊机器人的个性特质的自动评价方法类似[66-67],也需要两步:
(1)构建回复具有情感标注的数据集。该评价数据集的形式为{问题—回复—回复体现的情感},因此,首先需要使用情感分类器识别数据集中回复体现的情感,然后做相应的标注。
(2)评价闲聊机器人的情感表达能力。在测试集上,使用情感分类器对闲聊机器人生成的回复的情感类别进行预测,然后计算参考回复的情感类别与生成回复的情感类别之间的一致性,得到情感准确性,情感准确性越高,代表该闲聊机器人的情感表达能力越好。
文献[62-63]首先训练了情感分类效果较好的Bi-LSTM分类器,Bi-LSTM分类器能够分类六类情感:生气、厌恶、开心、喜欢、伤心和其他。然后使用Bi-LSTM分类器去标注测试闲聊机器人的数据集,获得具有情感标签的数据。
文献[62]中测试的闲聊模型为ECM(emotional chatting machine),ECM能够产生内容上合理并且情感准确的回复,实验结果显示ECM的情感准确率为77.3%,在情感表达上取得了较好的表现。
基于情感的自动评价方法可以评价闲聊机器人的情感感知和表达能力,通过训练效果更好的情感分类器可提升自动评价方法的评价效果。
2.4 闲聊机器人的对话主题深度和广度
对话可以看作是在一系列主题上信息和观点的交换,因此,可以使用基于主题的评价指标来评价闲聊机器人的对话效果。基于主题的评价指标评价一个闲聊机器人是否能够在一个主题上保持连贯而有趣的对话,以及是否可以讨论多样的主题。
文献[68]提出了两个基于主题的评价指标:主题广度和主题深度。主题广度评价指标衡量闲聊机器人在不重复表达的情况下就各种粗粒度和细粒度主题进行交谈的能力。主题深度评价指标衡量闲聊机器人在给定主题上保持长时间连贯对话的能力。评价过程如下:
(1)首先使用主题分类模型识别每句话语的主题,使用主题关键字检测器识别每句话语的主题关键字。
文献[68]训练了一个监督型主题分类模型,该模型为深度平均网络(deep average networks, DAN),如图9所示。
图9 DAN模型[64]
DAN模型将话语中每个单词的词向量的平均值作为话语表示,话语表示输入全连接层后进入softmax层进行主题分类。在此基础上添加一个注意力词表,该表可学习词汇表中各个主题词的权重,从而可以检测出每一句话语中特定主题的关键词,该模型为基于注意力的深度平均网络(ADAN),如图10所示。
图10 ADAN模型[64]
DAN模型和ADAN模型在测试集上可以达到较好的准确性,不仅可以识别如“政治”之类的粗粒度主题,而且还可以突出显示如“特朗普”之类的细粒度主题词。
(2)获得用户话语和闲聊机器人回复的主题和主题关键字之后,根据表4定义的概念,进一步定义如表5所示的评价指标。
表4 概念定义
表5 评价指标
(3)评价基于主题的自动评价方法,计算自动评价方法的评价结果与人工评价结果的相关性。
文献[68]在评价时,使用的数据集为亚马逊Alexa Prize中用户和闲聊机器人之间的对话数据,每个对话都有实时用户评分。实验结果表明,主题深度评价指标与人工评价的相关性很高,说明对话针对特定主题进行的时间越长,对该主题的讨论就越深入,用户就越满意。此外,粗粒度的主题广度与人工评价的相关性也较高,代表用户会给能够讨论多样主题的闲聊机器人打高分。
基于主题的评价指标,能够评价机器人在主题深度和主题广度方面的表现。用户满意度与长时间且连贯的主题对话相关程度高,而主题广度指标会为用户评分提供补充信息,因为由于实时用户数据评分的局限性,很难在用户评分中捕获到主题的重复性。在未来工作中,可以结合已提出的指标综合评价闲聊机器人,还可以研究无监督的主题分类方法,从大量未标注的对话中学习主题。
3 综合能力评价
对闲聊机器人综合能力的评价,可以看作综合评价闲聊机器人具备的多种能力,多种能力包括基本能力以及部分扩展能力。但当前具备多种能力的闲聊机器人很少,因此评价闲聊机器人综合能力的自动评价方法几乎没有。为了自动评价方法的进一步发展,需要关注评价闲聊机器人的多种能力的场景,包括强化学习中的奖励函数和闲聊机器人竞赛中的评价,需要借鉴这两个场景中对闲聊机器人综合评价的方法。
3.1 强化学习中的奖励函数
强化学习中的奖励函数也是一种评价方法。通常,奖励函数是几个评价指标的结合,对闲聊机器人的多种能力进行了评价。其中,有两个级别的奖励函数。
话语级别
文献[66]提出使用强化学习训练闲聊机器人,强化学习中的奖励函数包含三个评价指标。
① 容易回答。闲聊机器人生成的话语应该易于回复,避免使对话者回答通用回复。通过使用生成无趣回复的负对数似然函数来衡量生成话语是否容易回答,计算如式(24)所示。
(24)
其中,NS表示无趣回复列表中无趣回复的个数,Ns代表一个无趣回复所含的单词数,pSeq2Seq(s|a)代表给定生成回复a,Seq2Seq模型生成无趣回复s的概率。
② 信息流。闲聊机器人应该能够在每次回复中包含新的信息,避免重复内容以推动对话发展。因而提出对闲聊机器人连续生成话语的余弦相似度进行惩罚的方法,如式(25)所示。
r2=-logcos(hpi,hpi+1)
(25)
其中,hpi、hpi+1分别代表闲聊机器人连续生成的两个回复pi、pi+1的编码。
③ 语义连贯性。使用生成回复与上下文的互信息来确保生成回复是连贯且合理的,如式(26)所示。
(26)
最终的奖赏函数为三个评价指标的加权和,如式(27)所示。
r(a,[pi,qi])=λ1r1+λ2r2+λ3r3
(27)
其中,λ1+λ2+λ3=1。
系统级别
文献[69]提出三个评价指标,分别评价了闲聊机器人不同方面的能力,并且可以结合起来成为奖赏函数用于强化学习。
① 合理性。将回复的合理性检测看作是分类问题,评价者将回复的合理性标记为三类:合理的、一般的和不合理的。使用具有人工评价的标注数据训练支持向量机分类器。
② 对话主题深度。讨论同一主题的连续话语数量反映了对话主题深度。同样将对话主题深度检测看作分类问题,对话主题深度可分为“浅”(少于6句话)、“中级”(7~10句话)和“深”(多于10句话)三个等级,根据设定的标准,对对话数据进行主题深度标注,然后使用标注数据对支持向量机分类器进行训练。
③ 信息增益。闲聊机器人引入对话的唯一单词的数量越多,对话中包含的信息越多,对话效果就越好。对回复进行分词后,统计不同的单词数量来计算此指标。
文献[66]的实验结果表明,基于强化学习的闲聊机器人在对话长度、回复的多样性和多轮对话的整体表现方面都优于其他闲聊机器人,说明在没有参考回复的情况下,奖励函数可以成功地捕获问题和生成回复之间的部分关系。因此,可以尝试直接将文献[66]的奖励函数作为综合自动评价方法,用于评价闲聊机器人的综合能力,还可以增添不同的自动评价指标,评价闲聊机器人不同的能力,从而开发出可评价闲聊机器人多种不同能力的综合自动评价方法;此外,设计的奖励函数中,如文献[69]的对话主题深度评价指标,可以用于其他场合,即只对闲聊机器人的扩展能力—对话主题具有的深度进行评价。
3.2 闲聊机器人竞赛中的评价方法
在一些闲聊机器人比赛中,会针对闲聊机器人的多种能力进行评价,如Alexa Prize,ConvAI2[70]。Alexa Prize设定的任务是构建能够在政治、体育和娱乐等领域就热门话题和新闻事件进行社交对话的机器人。在该比赛中,提出了一种综合评价方法,该评价方法包括六类十个评价方法[71],其中很大一部分为人工评价指标,如连贯性和对话用户体验指标等,它们都有人工标注数据,利用收集到的数据,可以尝试训练自动评价模型。
对闲聊机器人在多个维度上进行评价(机器人可能在某个方面表现较好,而在另一方面表现较差),需要发展综合评分策略对闲聊机器人进行综合评价。因此,文献[71]中的三种综合评分策略值得关注,Alexa Prize比赛使用这三种策略组合十个评价方法对机器人进行了评价。
① 堆栈排名(stack ranking)。根据单个指标对机器人进行排名,并使用各个指标排名的总和生成分数。如果所有指标并非同等重要,可以采用加权堆栈排名方法。
② 赢家圈(winners circle)。将人类评分最高的两个机器人作为基准,其他机器人在每个指标上都与基准机器人进行比较,若二者之差在误差允许范围内,那么得分为1,否则为0。将每项指标的得分加起来得到总分然后排名。
③ 置信带(confidence bands)。针对每一个指标,将得分最高的两个机器人作为基准,其他机器人与基准机器人进行比较,若二者之差在误差允许范围内,那么得分为1,否则为0。
文献[71]的实验结果表明,统一指标的评价结果与用户评分具有较强的相关性,代表可以使用统一指标作为用户评分的代理。可将该统一指标中的人工评价部分自动化,发展为全自动综合评价方法。还可以发展不同的自动评价方法,使用不同的综合评分策略,设计出与人工评价结果相关较高的综合自动评价方法。
4 自动评价方法的评价
自动评价方法的发展同样也需要相应的评价。在闲聊中,一般通过判断自动评价方法的评价结果与人工评价结果的相关性确定自动评价方法的好坏,相关性越高,说明自动评价方法就越好。相关性判断一般使用皮尔逊相关系数(Pearson correlation coefficient)和斯皮尔曼相关系数(Spearman correlation coefficient)[31,35-36]。
皮尔逊相关系数度量两个变量之间的线性相关程度,完全线性正相关时相关系数为+1,完全线性负相关时相关系数为-1,相关系数的绝对值越大,代表两个变量之间的线性关系越强[72-73],计算如式(28)所示。
(28)
其中,Cov(X,Y)是变量X、Y的协方差,σ(X)、σ(Y)分别是变量X、Y的标准差。
样本皮尔逊相关系数通过估计样本均值和标准差计算得到,如式(29)所示。
-1≤r≤1
(29)
斯皮尔曼相关系数度量两个变量之间的单调关系,当两个变量完全单调相关时,相关系数为+1或-1。该系数根据变量的排序位置求解,两个变量的对应值的排序位置相同或类似时,就具有较强的相关性[72-73]。计算如式(30)所示。
(30)
其中,n为数据总数,di为两个变量对应值的排序位置的差值。
计算出相关系数之后,还需要对两个变量之间的相关关系的显著性水平进行判断。一般使用t检验[72-73],检验过程如下。
① 建立假设。原假设H0:r=0,两变量之间不存在相关关系;备择假设H1:r≠0,两变量之间存在相关关系。设置检验水准α。
② 根据相关系数r计算t值。计算如式(31)所示。
(31)
其中,n为数据总量。
③ 查找t分布概率表,找到对应的p值,若p<α,那么可以拒绝原假设,选择备择假设,即两变量之间存在显著的相关关系。
5 问题与展望
综上所述,闲聊机器人的自动评价方法有了很大发展,但是仍然存在很多问题。
(1)构建标准闲聊评价数据集
评价回复合理性的自动评价方法的发展趋势为发展基于模型的评价方法,该类方法在不同的数据集上评价了不同的闲聊机器人,因此,评价效果无法直接进行比较,需要复现所有评价方法,然后再进行比较,无法快速推进基于模型的自动评价方法的发展[30,35]。
需要构建一个标准闲聊评价数据集,此标准闲聊评价数据集由(问题—参考回复—生成回复—人工评分)组成,首先不同的闲聊机器人在该数据集上进行测试,得到生成回复,然后人工评价不同闲聊机器人的生成回复,给出评分。得到人工评分数据后,就可以测试基于模型的自动评价方法的评价效果。首先自动评价方法利用(问题—参考回复—生成回复)数据,对生成回复进行打分,然后将自动评价方法的评分与人工评分进行相关性分析,相关性越大,说明该自动评价方法越好。
(2)提高人工评价的可信度
人工评价结果被看作是正确的评价结果,自动评价方法的评价结果与人工评价结果相关性越高,那么该自动评价方法越好。但是人工评价结果存在评价者之间一致性较低的问题[58,60]。原因在于评分的标准很模糊,如回复的合理性等定义不明确,以及评价者的个人喜好存在差异,例如一个评价者认为机器人生成的回复很幽默、合理,而另一个评价者认为该回复很无趣。
为了设计出更好的自动评价方法,需要提高人工评价的可信度。可以通过实验设置提高评价者之间的一致性,如设计合适的问题[74];采用结合连续量表和相对评估方法的基于等级的幅度估计方法RankME[75];使用多轮成对比较方法ACUTE-EVAL[76],后者结合了单轮成对比较和多轮打分排名方法的优点。
(3)研究多轮交互式评价方法
大多数评价都是单轮静态评价,闲聊机器人使用的数据集被分为训练集、验证集和测试集,测试集中的问题作为闲聊机器人的输入,得到生成回复,然后由人工或自动评价方法评价生成回复。即使是评价多轮对话闲聊模型[58],也只是对根据具有多轮话语的上下文生成的一个回复进行评价。即使是为了保持一致个性而提出的模型也没有在交互式环境下评价[66]。然而,单轮静态评价不能捕获到闲聊机器人的一些常见缺陷,如无法保持一致的个性、回复缺乏多样性、回复存在重复等[77]。
对话是一个过程,闲聊机器人的一个生成回复很合理,不代表它能够在整个对话中表现很好。所以多轮交互式评价很重要,它能够更加可靠地评价不同闲聊机器人的对话效果,人与闲聊机器人进行多轮对话,然后由人或自动评价方法对闲聊机器人的多个回复进行评价。可能由于收集人—机器对话数据的难度较大,所以该方法未得到广泛应用,只应用于一些大型比赛,如Alexa Prize,ConvAI2。文献[77]提出一种替代方法self-play,闲聊机器人与自己进行对话,即闲聊机器人生成的回复作为下一轮的输入。这样就可以得到多轮交互的机器—机器对话数据,可以进一步在这些数据上开发评价闲聊机器人的自动评价方法。
(4)开发并应用闲聊机器人公共评价平台
由于不同的闲聊机器人使用的数据集不同,自动评价方法也不同,而且人工评价的标准也不一致,所以无法直接比较不同的闲聊机器人[10-14]。
为了能够在无需复现其他闲聊机器人的情况下,可以直接比较新设计的闲聊机器人和其他闲聊机器人,一个解决方案是在文献[78]开发的公共评价平台ChatEval上对闲聊机器人进行评价,研究者提交闲聊机器人的信息和闲聊机器人对标准评估集中问题的回复。平台对闲聊机器人进行自动评价和人工评价,然后将结果公开发布在ChatEval网站上。
(5)了解闲聊机器人的“绝对表现”
当前,无论是闲聊机器人的自动评价结果还是人工评价结果,都只能表明该闲聊机器人的表现是否优于其他闲聊机器人,无法得知该闲聊机器人自身的表现有多好,即距离人类表现还有多遥远[58-60]。
通过对测试集中的参考回复进行自动评价或人工评价,获得人类表现得分,并将其作为闲聊机器人生成回复的表现上限。这样在评价中,既可以获得闲聊机器人的“相对表现”,也可以了解闲聊机器人的“绝对表现”。
6 总结
自动评价方法的研究对于闲聊机器人的快速发展具有极大的意义,近年来引起了广大研究者的关注。本文总结了目前基于生成模型的闲聊机器人的自动评价方法,针对闲聊机器人具有的不同能力,展示了不同的自动评价方法。本文首先介绍了评价闲聊机器人基本能力—生成合理的回复的自动评价方法,包括基于词重叠的评价方法、基于词向量的评价方法和基于模型的评价方法,并总结了每类方法的优缺点及未来的发展方向。根据分析,研究者们应不再使用基于词重叠的评价方法;可继续发展基于词向量的评价方法;由于基于模型的评价方法比较复杂,泛化能力还有待提高,需要进一步发展,其中,具有较好发展前景的是直观打分模型,因为该模型无需标注数据,就可以对生成回复的合理性进行评价并给出分数,而且与人工评价具有较高的相关性。然后分别针对回复的多样性、闲聊机器人的个性特质、闲聊机器人的情感表达,以及闲聊机器人对话主题的深度和广度,介绍了评价闲聊机器人扩展能力的自动评价方法。随后展示了对具有多种能力的闲聊机器人进行评价的场景,并讨论了如何借鉴场景中的综合评价方法发展综合自动评价方法。还介绍了如何评价自动评价方法。最后,提出一些有待深入研究的问题,并给出相应的解决思路。总之,无论是基本能力评价、扩展能力评价还是综合能力评价,都需要进一步发展简单、便捷、通用并且与人工评价相关性高的自动评价方法。