当前位置:首页 > 游戏资讯 > 正文

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩

1、 导语

语言是人类传递信息最重要的媒介,也是人类与其他动物有所区别最重要的属性。让机器理解语言并进行交互是人工智能的重要挑战,与之对应的自然语言处理(NLP)技术在各个领域都发挥着重要的作用。为推动语言与智能领域的技术发展和应用,中国中文信息学会、中国计算机学会和百度公司每年会联合举办“语言与智能技术竞赛”,是中文自然语言处理领域最顶级的赛事之一。今年共吸引了来自腾讯、阿里巴巴、网易、小米、OPPO、清华大学、中国科学技术大学、哈尔滨工业大学(深圳)、北京交通大学等知名企业和高校的3000余位选手报名(比赛官网:http://lic2022.cipsc.org.cn)。

今年的语言与智能技术竞赛(LIC2022)设置的赛题之一是知识对话赛题。知识对话是指对话系统利用外部知识信息,生成更加丰富准确的聊天内容。该任务要求对话系统从外部知识库中寻找到和当前对话内容相关的知识,并依据知识生成回复。基于知识的对话系统能够提供更博学、丰富的信息,显著提升用户体验,近年来受到了学术界和工业界的广泛关注。今年的赛题要求选手搭建的系统在对话过程中动态地与搜索引擎交互,生成查询词调用搜索引擎API,并根据搜索引擎返回的结果生成对话回复。该赛题在普通的知识对话任务基础上,要求选手模型能够根据对话内容生成搜索引擎查询,并能有效理解搜索引擎返回的各种复杂形式的文本,对算法设计提出了更大的挑战。

腾讯游戏知几算法团队作为IEG深耕对话领域多年的团队,凭借积累的对话技术与创新能力,在知识对话赛道脱颖而出,取得了第一名的佳绩。在比赛中,游戏知几团队提出了多编码器结构的MEBART模型,有效提升模型对输入的理解和编码能力。系统还采用了基于MEBART和Transformer-XL的多路生成策略,显著提升对话整体的连贯性和吸引力。此外,团队还针对赛题设计了一个查询缓存策略,兼顾搜索API的效率和搜索知识的丰富度。从比赛公布的成绩和实验结果来看,这些创新明显提升了对话系统的整体效果。

2、 相关工作

现有的知识对话方法主要关注存储在数据库中的限定领域知识,将整个对话任务分成知识选择和知识建模生成两个步骤。对于知识选择,常见方法是将知识和对话历史分别编码成向量,通过计算向量相似度的方式提取相关知识。也有部分工作直接计算对话和知识之间的注意力分数,但这种方法计算开销较大,难以扩展到海量的知识库。知识建模生成方面,现有工作普遍将知识文本与对话历史直接拼接起来,作为预训练语言模型的输入。部分工作通过设计特殊的注意力机制来实现对知识和对话相关关系的建模,或是特殊的解码策略让模型在生成时判断是否使用检索知识。

但数据库中存储的静态知识存在时效性,实时更新难度大,且范围也无法真正覆盖开放对话中的所有领域。另一方面,互联网上存在海量全领域且实时更新的知识,通过搜索引擎我们可以便捷地获取。因此有一些最近的工作将搜索引擎的能力集成到了对话系统中。通过实时调用搜索引擎API,对话系统可以获取来自互联网的最新知识,实现更强大的知识对话能力。Meta公司研发的Blenderbot 2首次采用了生成查询词调用搜索引擎的新范式,利用一个编码器-解码器结构的模型基于对话历史生成查询词,搜索引擎API据此得到搜索结果,再利用另一个FiD(Fusion-in-Decoder)模型生成对话回复。该模型在开放域对话上取得了当时最佳的效果,但仍然存在一些缺陷,例如两个任务从模型层面相对割裂、模型对搜索结果的理解能力也较差。后续工作提出了SeeKeR模型,将查询词生成、知识整理和后续的对话生成用同一个模型来完成,达到了更好的效果。类似地,百度公司提出的PLATO-SINC模型在中文上尝试了这个任务,并且也选择将查询词生成和对话生成的任务用同一个模型完成。但以上这些工作都存在难以兼顾知识准确与对话连贯的问题。

基于上述的问题,我们设计了多种改进方法,并集成到了一个完整系统中,下面将详细介绍我们的实现方案。

3、 详细方案介绍

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第1张

上图展示了本文方法的整体架构,按照赛题设置,我们将整个方案分为两大模块,分别是知识搜索模块和对话生成模块。知识搜索模块用于判断是否需要搜索知识,若需要的话则生成相应的搜索问题,并调用搜索引擎接口。我们在这一部分设计了一个知识缓存策略,用于给后续生成提供备用的搜索结果。对话生成模块用于依据历史对话信息、知识信息生成合理的回复。我们采用了多路生成策略,利用多个模型生成多条候选回复,再基于策略与模型结合的方法进行筛选和排序,给出一个最佳回复。

下面首先介绍我们在两个模块都用到的基础模型MEBART,再分别介绍两个模块我们具体的实现方式。

3.1 基于多编码器的BART模型

BART(Bidirectional and Auto-Regressive Transformers)是一种常用的编码器-解码器结构的语言模型,在对话任务中经常使用。它利用一个双向注意力编码器对输入信息进行编码,再输入单向的解码器生成输出文本。但单个编码器的最大输入长度只有512个字元(token),然而检索知识往往超过512个字。基于此,本文借鉴Fusion-In-Decoder(FiD)模型,采用了多个编码器配合单个解码器的结构。如下图所示,多个编码器分别对输入文本进行编码,编码器最后一层的隐状态拼接在一起作为编码器输出。假设每个编码器的最大输入长度都为 L,则k个编码序列拼接后的序列长度为 kL。多个编码器间不共享参数,编码器的输出通过注意力机制输入解码器,解码器与普通的BART模型完全相同。我们将其称为多编码器BART模型(Multi-Encoder BART, MEBART)。

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第2张

各个编码器的输入采用基于提示(prompt)的方式,将对话信息及相关的元信息组合后输入编码器。近年的多个工作指出了基于提示的输入方式可以让模型更好地利用预训练阶段学到的信息,有效提升下游任务上的效果。此外,我们让多个编码器不共享参数,这样可以对对话信息和知识信息进行更差异化的建模,提取更加丰富的信息提供给解码器。

3.2 知识搜索模块

知识搜索模块首先需要判断是否需要调用API进行搜索。我们采用了一个BERT模型进行微调,输入历史对话上下文,对是否需要搜索进行二分类。如果预测需要搜索大于给定的阈值则调用查询词生成的模块。

查询词生成模型采用前面介绍的MEBART模型。我们发现用户当前输入和之前使用的查询历史会对当前查询词的生成有较大的影响,因此我们设计了如下的输入格式:

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第3张

由于使用了历史查询词作为特征,该模型有时会在连续的多轮对话中持续生成相同的查询,如果该查询返回的知识不合理或不充分,则难以保证生成好的回复。考虑到搜索的效率偏低,我们设计了一个查询缓存机制,在保证每一轮至多只执行一次搜索的前提下使用更多知识。我们以用户地理位置+查询词作为缓存键,当第一个查询词命中缓存时,则使用备份查询词去调用搜索API,并将得到的知识和缓存中保存的知识分别调用对话生成模块的MEBART模型(见上面的流程图)。备份查询词采用另一个MEBART模型生成,其输入有些许差别:

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第4张

从另一个角度来看,这种使用备份查询的方式相当于提供了额外的搜索知识进行生成,并依赖后续的过滤排序算法选择更优的知识,类似人类在解决任务时会执行多次搜索,选择一个最满意的结果用于回复。

3.3 对话生成模块

在对话生成部分,我们采用了双路生成的策略。前期实验中我们发现MEBART模型可以更好地理解和建模搜索引擎返回的复杂知识,生成富知识的回复内容;另一种单解码器的模型Transformer-XL可以生成更加流畅、连贯、有吸引力的回复,但对于搜索知识的理解能力较差,引用的知识存在更多错误。因此我们基于两种模型的特性,利用MEBART做知识相关的生成,利用Transformer-XL生成偏闲聊风格的回复,再使用一个知识过滤模型去掉Transformer-XL中错误的知识。最后,我们设计了一个排序模块对不同模型的生成回复进行打分排序,输出排名第一的回复。

首先对于所有搜索知识,我们使用了MEBART模型生成对话回复。这里我们使用的MEBART模型输入是:

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第5张

其中图片分别表示搜索知识的第1段和第2段。由于搜索知识可能超过单个编码器能处理的最大长度,我们将其按长度切分,分别放进两个编码器中。更长的文本就直接截断丢弃。

Transformer-XL模型则只使用对话历史和主题作为输入。但大规模预训练模型在生成对话时容易出现知识混淆编造的现象,之前的文献中将其称为幻视(Hallucination)。模型会在生成的对话回复中涉及一些知识,这些知识是在预训练过程中内化到模型参数中的,但这种知识可能不准确。判断生成知识内容的准确性比较难以实现,于是我们设计了一个过滤模型,将所有带有知识的生成回复过滤掉,让Transformer-XL只负责常识相关的闲聊。为了保证生成回复的多样性,我们采用top-k采样的方式让Transformer-XL生成多个结果,再使用一个微调的BERT模型去掉其中带领域知识的回复。我们标注了约2000条生成文本,其中含有领域知识(无论对错)则作为负例,无领域知识则作为正例,训练了一个二分类模型。

最后,我们基于在豆瓣对话数据训练的开源BERT-FP模型进行微调,得到了一个排序模型,对前述所有模型的生成候选回复进行排序。排序模型的分数与一些人工设计的启发式规则结合,给出最合适的回复。

4、 实验结果

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第6张

我们取得了LIC2022知识对话赛题第一名的成绩,从人工评测的结果来看,我们提出的方法的连贯性和吸引性均较高,但知识性和事实准确性还有提升空间。我们分析认为这主要是因为Transformer-XL牺牲了部分知识性,提升了回复的自然度和吸引性。通过分析人工评测的日志,我们发现模型总体对话效果较好,可以自然地衔接话题并发展对话,偶尔会出现“好啊”、“嗯嗯”等通用无意义回复导致知识性较低,极少数情况下会出现Transformer-XL生成的带知识文本被选中作为回复,导致事实准确性降低。考虑到我们训练知识过滤和打分模型的数据量较少,使用的模型也比较简单,后续可以继续提升数据量并探索其他模型结构以继续提升效果。

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第7张

上面两个表格展示了我们提出的MEBART模型与其他基线模型在查询词生成和对话生成两个子任务上的效果对比。从表格中可以看出MEBART相比FiD和BART模型都有比较明显的提升。

下图展示了人工评测中一个效果较好的完整对话样例。这个样例中展示了MEBART和Transformer-XL互相配合生成对话的效果,MEBART可以结合搜索结果给出准确丰富的知识,而Transformer-XL展示了更好的衔接和部分话题引导能力。

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第8张

5、 在游戏领域的落地场景

作为腾讯IEG的团队,腾讯游戏知几持续探索着生成式对话在游戏领域的落地场景。我们认为伴随新世代的游戏不断向精品化迈进,游戏玩家对于游戏内容的丰富度有着越来越高的要求,尤其是开放世界游戏需要大量的内容来填充整个游戏世界。另一方面,玩家也渴望在游戏中与NPC有更加自由开放且个性化的互动体验。在这样的背景下,包括文本在内,各种内容都需要更高效的生产管线,例如使用AI来辅助甚至自动生产。

目前我们着重发力的两个场景包括文本对白的辅助创作和端到端的智能NPC,下面简要介绍一下这两个场景的应用示例和技术方案。

5.1 文本对白辅助创作

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第9张

这个场景主要面向游戏制作人员(如文案策划),我们在给定的游戏世界观下离线生成关于游戏内事件的对话内容。例如游戏中大批量的随机闲聊,体现其中NPC的生活状态、丰富世界内容;或者新发生的事件或新闻对世界的居民产生影响,NPC或路人角色谈论相关的话题。这个场景的核心能力是我们自研的可控对话生成系统,我们会根据对话内容检索相关的世界观背景设定文本,再生成多条合理的回复。我们让两个系统之间互相进行对话,从而实现随机生成大量的对白内容。

5.2 端到端的智能NPC

中文自然语言处理顶赛第一!腾讯游戏知几算法团队探索生成式对话落地应用 ——九四玩  第10张

这个场景下我们提供直接面向用户的开放交互能力。对话系统会基于游戏的世界观和给定的人设,通过一定量的数据训练,可以针对用户任意的输入(文本/语音形式)甚至行为做出合理的回复。我们可以提供游戏内嵌的智能交互NPC,为玩家提供与NPC更加自由的互动方式。进一步地,智能NPC可以为玩家提供陪伴、引导等,让玩家获取更好的游戏体验。我们期待未来语言智能技术能在更多的场景落地,为游戏创作者提供更强大的工具。希望AI技术的蓬勃发展能够为游戏交互带来更多的可能性。


来源:腾讯游戏学堂
原文:https://mp.weixin.qq.com/s/x8Rsw9kQS0q2MJOXCLznwA


有话要说...

  • 210人参与,3条评论
  • 福安福安  2022-09-02 12:35:01  回复
  • 对话历史直接拼接起来,作为预训练语言模型的输入。部分工作通过设计特殊的注意力机制来实现对知识和对话相关关系的建模,或是特殊的解码策略让模型在生成时判断是否使用检索知识。 但数据库中存储的静态知识存在时效性,实时更新难度大,且范围也无法真正覆盖开放对话中的所有领域。另一方面,互联网上存在海量
  • 喜士多喜士多  2022-09-02 10:00:17  回复
  • 的信息提供给解码器。 3.2 知识搜索模块 知识搜索模块首先需要判断是否需要调用API进行搜索。我们采用了一个BERT模型进行微调,输入历史对话上下文,对是否需要搜索进行二分类。如果预测需要搜索大于给定的阈值则调用查询词生成的模块。 查询词生成模型采用前面介

随机文章

取消
扫码支持 支付码