“嗨,我叫汪仔,今年三岁了”- 论如何为聊天机器人定义一个固定的人格

论文作者 | 钱桥,黄民烈,朱小燕,许静芳,赵海舟

(清华大学 & 搜狗公司)

特约记者 | 曾爱玲(厦门大学)

近年来,人工智能之火大家已经有目共睹了:从《未来简史》、《必然》等国外著作到李开复的《人工智能》、李彦宏的《智能革命》等成为畅销书,大众对于 AI 的热捧程度达到了历史高点,人机对话是人工智能领域中最重要的问题之一,聊天机器人(chatbot)顺势成为了研究的热点。

聊天机器人这一热潮可从两个角度进行解释:从学术上,机器人的智能一方面体现他能否理解人类的语言并给出合理的回复,另一方面也体现在他是否足够的类人化,即可以被当作一个人类用来交流,这对应了人工智能的终极目标—图灵测试(一种用于判断计算机是否具有人类思维能力的测试方法);从工业界看,真正的人工智能必须有一致的人格,否则任何 App 的谈话界面都会很无聊很机器人化,你真的只会把它当做个“machine”。因此,微软、Facebook、苹果、谷歌、微信和 Slack 等公司均在聊天机器人方面押了重注,依托科技巨头的资源或创业公司的热情,聊天机器人们正在努力渗透到我们生活的方方面面。

在论文访谈的第三期《“小会话,大学问” - 如何让聊天机器人读懂对话历史?》一文 中提到了聊天机器人这一话题,并且引来热议。本期论文访谈间我们将以”为聊天机器人固定一个角色/身份,使得聊天对话更加连贯、自然”为例,来向大家介绍来自清华大学智能科学与系统重点实验室的钱桥同学、黄民烈老师、朱小燕老师以及来自搜狗的赵海舟、许静芳的相关工作。

聊天机器人按照应用场景主要分为两类,任务驱动(task-oriented)和闲聊(Chatting)。任务驱动往往限定在单个或几个领域,例如在线客服或个人助手就属于此类范畴,以解决问题为目的进行对话,因此它们只需要尽可能高效地完成它们特定的任务。相比而言,闲聊往往是漫无边际的,话题的无限数量和用于产生合理回复的一定量的知识使之成为了一个难题,并且很容易聊到与 Chatbot 自身相关的话题上,他们的论文“Assigning Personality/Identity to a Chatting Machine for Coherent Conversation Generation”则主要应用在这样的场景中,为闲聊机器人定义一个固定的角色/身份,从而提升聊天机器人的类人水平。

对于 chatbot 的发展,我们给出了两个长期的研究目标:

1. 我们希望它能从任务驱动型到闲聊都能够有较好的回复:随着大数据时代的不断发展,闲聊机器人系统可以用更丰富的对话数据进行训练;并且为避免繁杂的人工定义,在大数据上可以自动聚类或抽取对话行为等信息。 

2. 能够更加有一致的人格,并且能够有较高的“情商”,即聊天机器人的个性化情感抚慰、心理疏导和精神陪护等能力。拥有“一致人格”的聊天机器人技术还十分不成熟,而对话中如果没有一致人格会出现什么问题呢?会对使用者来说产生什么困扰呢?举个例子,当你问某个 chatbot “你多大了?”,她可能会回复你“我啊……反正是九零后”,然后你接着问“你是九零后吗?”,她可能会回复“八零后”,非常直观。同样的问题想得到一致的回答,也就是将固定的只是或者人格整合进模型在目前看来其实是十分困难的,使用传统的 seq2seq 模型学习如何生成语义合理的回复,但它们没被训练如何生成一致回复的语义,因此在反复相同的语义输入时会出现不同的回复。


▲ 图1:与 chatbot 的对话测试

我们一起来看看这篇文章:首先,此文为闲聊机器人设定了固定的属性,包括但不限于姓名、性别、爱好等。这些属性被整理为 <Key, Value> 的形式,当机器人被问及与自身属性相关的问题时,应生成与自身属性相一致的回复。如下图所示:此文为 chatbot 设定为一个名叫汪仔的三岁男孩,他热爱动漫,特长是弹钢琴。


▲ 图2:定义一个固定的机器人属性(agent profile)

那么,研究面临的挑战是什么呢?实际上是主要来源于数据属性的不一致性,一方面是训练数据相互之间不一致,另一方面是训练数据与机器人不一致。例如,考虑训练数据中针 对“爱好”的回答,有喜欢篮球的,有喜欢足球的,还有喜欢羽毛球的,这些回答本身就不具有一致性;然而我们机器人的爱好可能是游泳,这与训练数据也不一致。如何使用这些不一致的数据训练模型,成为了此研究最大的挑战。 

如何解决上述问题呢?本文提出了位置检测器(Position Detector),它着眼于在训练数据中定位属性值的位置。作者基于词向量的相似度实现 Position Detector 模块。例如,在“我 /喜欢”这句话中,由于“篮球”和“游泳”的词向量距离最近,所以断定“篮球”为属性值。此外,本文还将提出一种基于语言模型的方法定位属性值的位置,以追求更好的性能。 当 Position Detector 定位到 Reply 中的属性值后,可以通过替换的方法将消除训练数据的不一致性。 

方法思路介绍:如下图所示,本文模型包含三个重要的子模块。首先,为了判断给定的 Post 是否涉及机器人自身的属性,以及涉及了哪一条属性,属性检测器(Profile Detector)将对给定的 Post 进行分类。训练 Profile Detector 的过程中使用了带有噪音的监督数据。若分类结果不涉及机器人属性,则使用传统方法 seq2seq 解码。若分类结果涉及机器人属性,则使用双向解码器(Bidirectional Decoder)以属性值为中心进行双向解码。Bidirectional Decoder 是通过与属性相关的 <Post, Response> 数据训练的。


▲ 图3:整个过程的生成图解

训练的时候因为很多训练数据里的属性都不是机器人的真实属性,于是使用机器人属性去做生成的 response 与训练数据的 response 会有不一致,所以就想到了用 position detector 替换一下消除这种不一致。因此,需要使用位置检测器(Position Detector)对训练过程做特殊的预处理,Position Detector 可以在训练数据中定位属性值的位置,从而解决在训练与测试过程中的落差。需要注意的是,Position Detector 在测试的过程中不参与生成(generation)过程。具体情况如下图所示,给定一对 <x,y>,Position Detector 将会预测属性值钢琴(Piano)会被小提琴-4(violin)这一位置所替代,该位置将会被用于训练 Bidirectional Decoder。


▲ 图4:模型的训练过程

细节剖析:其中的编码器(Encoder)是将 post 编码成向量,以便后续深度生成模型利用。属性检测器(Profile Detector)在这里有两个目的:一是判断给定的 Post 是否涉及机器人自身的属性,二是判断涉及了哪一条属性,将检测到的属性 <key,value> 放入相应的解码器中。双向解码器(Bidirectional Decoder)的目的是生成一个涉及机器人属性的反应 (Response(y)),在测试阶段以机器人的属性值(Profile Value)为起点来生成整个序列。双向解码器这一点是受到了牟力立同学在 2016 年发表的一篇论文(Mou et al., 2016)[1] 启发,他们的工作是通过双向解码器生成包含限制条件的回复。与之不同的是,在训练过程中我们使用了 Position Detector 去预测关键词的位置,取代了(Mou et al., 2016)工作中随机替换关键词训练 Decoder 的方法。

在实验过程中,使用了多类数据集:微博数据集(Weibo Dataset)、双向属性数据集(Profile Binary Subset)、相关属性数据集(Profile Related Subset)以及手工数据集(Manual Dataset),所有数据集在特定需求下进行使用。实验结果显示,从这些社交媒体上得到的常用对话数据可以用于生成属性一致的回复。作者表示:“对于 Seq2Seq 这样的深度模型,训练数据越多闲聊方面的生成质量自然也会越好。在机器人属性的工作中,我们主要关注的是机器人属性 识别的准确性,我们为每种属性筛选了大约 10000 条训练数据,它们基本可以涵盖了所有关于这个属性的提问方式了。在筛选训练数据方面,如何筛选出高质量的负例是非常重要的,使模型可以判断出“你妹妹今年几岁”不是在询问机器人自身的属性。最终,实验通过人工评估以及自动评估两种评估方式均显示此模型能够在生成更加一致、自然以及多样的对话。


▲ 图5:传统 seq2seq 模型与本文模型的对话结果

我们来总结一下,本文的创新点主要有两点。第一,作者尝试为闲聊机器人定义一个固定的角色/身份。本文只是一个初步的探索,在未来的工作中会尝试定义机器人的属性、个性、语言风格等,甚至可以为机器人的实时想法进行建模,从而达到更好的前后文一致性。 第二,作者提出了一个新颖的生成模型用于识别并回答与机器人自身相关的问题,巧妙地运用不一致的训练数据,训练出具有一致性回复的聊天机器人。 

虽然本文只是让闲聊机器人拥有特定人格迈进了一小步,但这是让机器人通过图灵测试的关键一步。未来还有很多方向值得继续去研究,例如对话风格一致化和语义推理能力等的提升。当谈及未来工作的切入点时,作者主要从模型和数据两个角度回答了这个问题:模型方面,需要寻求更好的方式表示机器人的属性,同时也要有更好的方式从句子中挖掘机器人的属性。数据方面,现有的数据集往往都是 <Post, Response> 这样的二元组,缺乏 Reply 的用户信息。一方面可以挖掘带有用户信息的 Response,倘若这样的数据不好得到,也可以尝试对 Reply 做聚类或分类,这些带有用户信息的 Response 无论对训练语言风格还是机器人属性都是有巨大帮助的。” 

“聊天机器人通常能够吸引更年轻,更技术控的消费者,他们对于技术创新既挑剔又喜欢”。你想啊,以后你的 A chatbot 是一个跟你孩子一样大的“汪仔”,能告诉你他这个年龄在想什么,需要什么,教你如何更好地教育孩子;你的 B chatbot 是一个跟你差不多年龄层的 fashion girl,能够给你提供很多同龄阶段的实用时尚知识,你可以把她当做最亲密的知己;你的 C chatbot 是一个严肃的长者,告诉你宝贵的人生经验,在你低谷时能给予适当的指导。 机器人不再是一个冷冰冰的机器,他也有自己的属性和被定义的个性,这样会给机器人本身增添更丰富的“灵魂”。 

相信在未来,一个能够让人们与之无所不谈的有温度有个性的聊天机器人将走入我们的日常生活,成为我们的朋友、同事甚至是家人。

[1] Lili Mou, Yiping Song, Rui Yan, Ge Li, Lu Zhang,and Zhi Jin. 2016. Sequence to backward and forward sequences: A content-introducing approach to generative short-text conversation. In 26th International Conference on Computational Linguistics, Proceedings of the Conference. pages 3349–3358.


查看论文:


Assigning Personality/Identity to a Chatting Machine for Coherent Conversation Generation

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

理论聊天机器人论文理论NLP搜狗汪仔
暂无评论
暂无评论~