本文对百度入选ACL 2020的论文《Towards Conversational Recommendation over Multi-Type Dialogs》进行解读,该论文提出了一个新对话任务:融合多个对话类型的对话式推荐。
本论文地址:
https://arxiv.org/pdf/2005.03...
建议大家点击阅读以下文章,以更加了解人机对话技术:
《一文看懂人机对话》
动机
人机对话是人工智能的一项基本挑战,涉及语言理解、对话控制和语言生成等关键技术,受到了学术界和工业界的广泛关注。
随着智能音箱的普及,对话式推荐变得越来越重要。对话式推荐指通过基于对话的人机交互形式实现高质量的自动推荐。前人工作大致可以分为两大类:
- 基于任务类对话的建模方式;
- 基于更自由的开放域对话的建模方式。
前人工作通常集中于单一对话类型,没有考虑如何同时处理多个对话类型(闲聊/问答/任务/推荐)。但是在实际应用中,人机对话通常包含多个对话类型。
基于以上考虑,研究人员提出一个新对话任务:融合多个对话类型的对话式推荐。研究人员期望系统主动且自然地从任意类型对话(闲聊/问答等)引导到推荐目标上。如图1所示,给定一个起始对话(例如问答),系统可为推荐规划一个对话目标序列,然后基于该目标序列驱动自然的对话,最后完成目标实体的推荐。本论文中的任务设定与前人工作的区别在于:
- 论文中的对话包含多个对话类型;
- 论文强调系统的主动对话能力,例如系统可主动规划一个对话目标序列,而该序列通常对用户是不可见的。
为辅助该任务的研究,研究人员构建了一个支持多对话类型的人-人对话推荐数据集(DuRecDial)。该数据集的特点包括:
- 每个对话session包含多个对话类型;
- 包括丰富的交互逻辑;
- 对话领域的多样性;
- 为每个用户建立个性化的profile,支持个性化的推荐。
在这个任务和数据集,研究人员尝试解决目前人机对话存在的一些问题:
- 自然的融合多种类型对话;
- 机器根据用户长期偏好规划对话目标序列,并主动引领对话;
- 包含丰富的对话逻辑,如用户转移话题,也可产生合理回复;
- 充分利用之前对话,对话结束会根据用户反馈,实时更新用户Profile,更新的Profile会影响后续对话。
任务设置
研究人员要求两人进行对话,其中一人扮演recommendation seeker(用户),另一个人扮演recommender(bot),要求recommender主动引导对话,然后基于用户profile推荐,而不是用户引导对话或寻求推荐。例如在用户关于『生死劫』的问答后,机器根据其长期偏好和知识图谱信息,规划对话目标序列(关于『周迅』的闲聊>>推荐电影『风声』),并自然地引导对话,当用户转移话题(更喜欢『刘若英』的电影),机器根据其profile,精准推荐『南京1937』,最终完成所有对话目标。对话结束后,用户profile会根据其反馈而更新,以便于提高后续对话的用户体验。
用户profile如图1左上部分所示,给机器提供的知识图谱信息是目标序列相关的子图信息。图1右侧为多类型对话中的对话式推荐示例,用户问答后,机器主动引导对话,自然流畅地实现对话目标的转移。
这个任务跟之前任务的不同主要包括:
对话包含多个goal(目标),每个goal都包含goal type和goal topic;type决定对话类型,topic对type进一步细化,决定对话的具体内容。
机器通过规划对话目标序列来主动引导对话,而用户不知道对话目标。
数据集建设
现存对话数据集不适用于论文中的任务,因此研究人员通过人工标注的方式在明星、电影、音乐、新闻、美食、天气、POI等领域构建一个新的对话数据集(DuRecDial),用于融合多类型对话的对话式推荐的研究。数据集构建包括:构建领域级对话目标序列、构建用户Profile、知识挖掘、构建知识图谱、构建任务模板和语料众包标注。主要流程如下图所示:
1、构建领域级对话目标序列
首先根据百度知识图谱,选取20个对聊天有价值的领域,然后分别组合成对话目标序列,再经过多人多次校验,过滤不容易组成目标序、加入目标序列会导致目标转移不自然、跟其他领域关联性较小的领域,剩下7个领域。然后枚举7个领域的目标序列,再经过多次人工校验和试标注,最终产生领域级对话目标序列候选集。
2、构建用户Profile
每个用户均有独一无二的profile,否则推荐就乱了。用户Profile包括两部分:姓名、性别、年龄、居住地、职业等基本信息;领域级偏好、实体级偏好等偏好信息。
基本信息的构建相对简单,但也比较细致。随机从『男、女』指定性别,从5个年龄段随机选择年龄,从55个热门城市随机分配一个居住地(居住地会影响接下来的天气、美食、POI数据的构建),然后根据性别随机生成姓名(姓名为2或3个字,不同性别候选字不同),根据年龄为用户分配职业状态,再根据职业状态分配几种聊天话题,聊天话题会影响对话的标注。
偏好包括:领域偏好(比如喜欢音乐,不喜欢新闻等)、实体偏好(比如喜欢歌曲A,而不喜欢歌曲B)。领域偏好根据目标序列包含的领域随机生成,再人工校验,并根据试标注不断完善;只有领域偏好,无法标注对话,因此需加入实体偏好,实体偏好根据知识图谱和领域偏好确定,然后人工校验。偏好的设定很关键,也是论文中任务和数据集主打的一个点。
需要强调的是,为更符合真实应用,用户知道自己的profile,机器只能通过和用户聊天获取profile。
3、知识挖掘
研究人员首先根据用户居住的55个热门城市,从『2345天气』抓取2017年7月到2019年8月的历史天气。再根据天气和美食的关系,从『美团网』和『美食天下』抓取美食相关知识。再根据美食和居住城市,从『美团网』抓取POI(餐厅)相关知识。
然后,从『时光网』挖掘电影和电影明细相关的结构化和非结构化知识信息,如电影票房、导演、评论等。根据挖掘的这些静态知识进一步计算出动态知识以丰富知识内容,比如根据票房信息计算出电影之间的票房排行,根据评分信息离散化得到电影或人物的口碑信息等。
接着,从『网易云音乐』抓取2000个热门歌手及其热门歌曲。把歌手和电影明星取交集,再根据电影、音乐数量人工过滤(因为任务中,每个用户都跟机器有多个对话,需要推荐很多实体),最终确定明星候选集。然后多个新闻来源抓取明星新闻,再根据新闻数过滤,产生最终对话使用的明星集合。需要说明的是,研究人员使用电影和音乐评论当推荐理由,而网易云音乐评论质量较差,故从『百度百科』抓取音乐鉴赏补充评论。
最终所有数据都会清洗和过滤,经抽样评估,研究人员挖掘的知识准确率在98%以上。
4、构建知识图谱
类似传统图谱构建,研究人员以挖据的三元组知识中的实体和值为节点,属性为边建立一阶图谱关系,除此之外,研究人员对有相同属性和值的两个实体建立二阶关系,如“红海行动”和“湄公河行动”的导演都是林超贤,这两个实体存在二阶关联关系。
5、构建任务模板
任务模板用来明确双方聊什么、怎么聊,它包括:实体级的goal序列,以及每个goal的描述(实现该目标的一些具体要求)。首先,用户领域偏好和领域级目标序列取交集,产生特定用户的领域目标序列,再根据用户实体偏好,产生实体级goal序列。然后基于多种规则和人工标注,产生每个goal的描述。任务模板如下图所示:
至此,标注前的数据准备就结束了,研究人员的经验是这些准备很关键,甚至能决定数据集能不能标注。随标注的进行,这些数据准备还会不断完善。
6、语料众包标注
不同于self-play一人扮演对话双方的标注方式,研究人员在众包平台(http://test.baidu.com)随机挑选两个标注人员模拟真实对话的双方标注每组对话数据。为保证至少有两个标注人员同时进入标注任务,研究人员安排多个外包团队进入标注平台。标注时,每组对话随机挑选两个标注人员标注,其中之一扮演机器角色主动引领对话进程完成设定的对话目标,另一标注人员扮演真实用户角色响应机器角色的对话。
需要说明的是,对任何数据集来说,质量都是很重要的,因此论文中有严格的数据质量控制流程。具体如下图:
标注结束后,通过采样评估DuRecDial质量,完全符合要求的达90%左右,且不存在有严重问题的数据。DuRecDial跟现存数据集的对比,以及数据集统计,如下图所示:
基线模型建设
目前人机对话任务有检索和!两种主流技术方向,研究人员在这两个方向都建立基线模型,包括两部分:
对话目标规划模块(a):首先预测当前goal是否完成;其次预测下一个对话类型以及目标实体;
回复模块:论文中实现了检索模型(b)和生成模型(c)。
模型图如下所示:
1、对话目标规划
正如前面所述,对话目标对任务很关键,所以在检索或生成回复前,需知道当前对话目标。基于此,研究人员对目标规划单独建模,包括两个模块:Goal completion estimation(GCE)、Current goal prediction(CGP)。具体模型图如下所示:
GCE通过计算目标完成的概率,评估其是否完成(概率大于0.5完成),采用CNN做二分类,计算方式如下:
如果目标完成,CGP需要预测新的目标。目标包含Goal type和Goal topic,故CGP包含Goal type prediction和Goal topic prediction(均为多分类),CGP是个multi-task分类问题。我们采用基于CNN的multi-task分类来预测,具体计算方式如下:
预测出的goal会分别输入检索模型和生成模型,以便于检索或生成跟对话目标和用户profile更一致的回复。
2、检索模型
检索模型借鉴信息检索的方法从对话语料库中检索候选回复,然后使用排序模型对候选回复进行排序,再选取高相关性的回复进行输出,如图9左侧所示。
论文中的候选回复是从训练集中相同对话目标类型、相同轮次的机器回复中随机选取的。
排序阶段,使用分类方法判断每个候选回复Y属于正确回复的概率,如图9右侧所示,首先使用BERT将候选回复Y和对话历史X(包括当前用户输入)表示为向量xy,再使用双向GRU分别对每条知识、对话目标gc进行编码,使用attention方式将所有相关知识融合为一个知识向量kc,通过softmax层进行分类判断。判断方法如下:
3、生成模型
生成模型借鉴Seq2Seq模型,如图10所示,研究人员在Seq2Seq基础上,分别使用双向GRU对对话历史X、相关知识、对话目标gc进行编码,通过attention选择回复需要使用的知识信息,并引入decoder中。研究人员发现:通过输出回复的loss信息再经decoder长距离梯度回传很难有效指导模型进行知识选择。
因此研究人员通过最大化逼近后验概率方式训练基于attention的知识选择模块,使得没有正确回复信息时也可较好地进行知识选取,具体如下:
在训练阶段使用标准回复Y中的后验知识信息指导模型进行先验知识选择,即让先验知识分布p(ki|x,gc)拟合后验知识分布p(ki|x,y,gc),训练时将这两个分布向量的KL散度作为Loss的一部分。KL散度计算方法如下:
此外,为避免在计算后验知识分布时存在严重信息损失,借鉴自编码思想,训练阶段让标准回复计算的后验知识分布能解码出标准回复本身,即用后验分布预测标准回复的每个词,预测结果的BOW Loss也作为整体Loss的一部分,BOW Loss计算如下:
在生成回复时,使用标准negative loglikelihood(NLL) loss做Loss。模型最终的loss为:
其中α为一个可训练的参数。
实验及结果
研究人员按65%、10%和25%随机划分DuRecDial产生训练集、验证集和测试集。
基线模型采用开放域对话广泛采用的Seq2Seq模型【论文录用后,研究人员尝试HRED(Li et al.,2018)和KBRD(Chen et al.,2019),发现效果还不如Seq2Seq】,语料中的对话历史、知识信息和对话目标等拼接成一个字符串作为模型的输入。
我方模型:
MGCG_R:基于自动goal规划及检索排序回复模型的系统;
MGCG_G:基于自动goal规划以及生成回复模型的系统。
由于对话的开放性,对话的自动评估存在很多不足,因此在自动评估基础上进一步使用人工评估的来评估对话效果。实验设计如下所示:
1、自动评估
由于无法自动生成用户回复,自动评估只能进行单轮评估,即给定对话历史(包括当前用户输入),评估系统输出的回复。评估指标既有检索相关的指标Hits@k又有生成相关的PPL、F1、BLEU和DISTINCT指标,同时使用准确召回指标(P、R、F1)评估回复中知识使用情况。评估估结果如下:
结论:
1) 从表中还可以看到检索模型和生成模型要优于Seq2Seq模型,验证了论文中模型的有效性。
2) 为了观察对话目标的作用,每个模型都做了引入目标和不引入目标的对比,从实验结果中可以看出引入对话目标能有效提升系统的效果,尤其是生成模型。
3) 为了观察知识的作用,每个模型都做了引入知识和不引入知识的对比,从实验结果中可以看出引入知识能有效提升系统的效果,尤其是生成模型。
4) 通过自动评估指标很难判断检索模型和生成模型的优劣,检索模型在检索指标优于生成模型,而生成模型在生成指标优于检索模型,推测这和两种模型各自的优化指标有关。
5) 知识使用上,生成模型优于检索模型,说明后验信息能有效指导模型进行知识选择。
2、人工评估
研究人员进一步对自动评估中效果最好的三个+gl.+kg.模型进行单轮和多轮人工评估。多轮评估时使用类似于数据标注的方法先生成多轮评估数据,不同的是将数据标注时扮演机器角色的标注专员替换成候选模型。每个模型生成100组评估数据,然后3个评估专员共同评估。单轮评估包括:流畅性、合理度、信息多样性、主动性等4个指标。多轮评估指标有Goal完成度和多轮一致性coherence等2个指标。评估结果如下所示:
结论:
1) 检索模型和生成模型,都比Seq2seq模型效果好,流畅性、合理性、信息多样性、goal完成率、一致性都好很多。主要原因是Seq2seq生成很多没价值的安全回复。
2) 生成模型整体上要优于检索模型,结合图14的case可以发现,这主要是由于检索模型的回复一般上下文相关性、一致性较差。
3) 检索模型的流畅性要好过生成模型,这是因为检索模型的回复都是从人工标注的数据集中选出的。
4) 因为任务的复杂性,数据集包含对话类型、领域、对话逻辑的多样性,从合理性、Goal完成度和coherence的效果可以看出,所有模型都还有很大的提升空间。
此外,上面实验表面,使用KG和goal可以提升生成回复的质量,因此研究人员进一步分析知识使用和goal完成的关系,抽样评估各类型对话:goal完成、goal没完成、以及使用知识的数量。具体如下所示:
由此,可以得出的结论是:多使用知识,一定程度上可提高goal完成度;闲聊因为所需知识相对较少,所以goal比较容易完成;推荐和问答因为需要使用的知识较多,所以目标不太容易完成;任务型对话,因为轮数相对较多,目标也不容易完成。
开源
研究建设的数据集DuRecDial以及相应的基线系统会在PaddleNLP开源:
https://github.com/PaddlePadd...
PaddleNLP是基于飞桨PaddlePaddle深度学习框架打造的领先、全面、易用的NLP开源工具集与预训练模型集。PaddleNLP开源内容覆盖了工业应用和学术研究;为开发者提供了多种业内效果领先的NLP应⽤任务模型和前沿的论文、代码、数据,让开发者能以超低门槛获取多种顶尖NLP能力;为研究者提供百度NLP前沿研究成果的代码与数据等,让研究者们可以快速复现实验,并据此开展新的研究。
PaddleNLP-研究版:开源了NLP领域最新研究成果的代码及数据,包括领域权威会议ACL、NAACL、IJCAI等,权威竞赛MRQA、SemEval等,可以帮助研究者快速了解百度NLP的前瞻研究成果,并在此基础上开展研究。
竞赛
中国计算机学会、中国中文信息学会和百度公司联合举办的“2020语言与智能技术竞赛”已于5月底确定竞赛结果,竞赛任务之一“面向推荐的对话”任务便是基于论文中建设的数据集DuRecDial设立。本次竞赛共收到了1065支队伍报名,其中有113支队伍提交了结果。竞赛分为三阶段:
第一阶段,自动评估,在测试集1自由打榜,并优化模型,历时约一个半月;
第二阶段,自动评估,在最终测试集评估效果,并筛选Top10队伍,历时一周;
第三阶段,人工评估,对自动评估Top10队伍的模型进行单轮、多轮人工评估,并确定获奖名单,历时10天。
最终获奖团队如图所示。详细信息参见比赛官网: