ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第1张图片

©作者 | 张轶博

学校 | 北京邮电大学AI院

研究方向 | 对话系统

大多数开放域对话模型在长期人机对话中往往表现不佳。可能的原因是这些模型缺乏理解和记忆长期对话历史信息的能力。为了解决这个问题,本文提出了一个新的长期记忆对话(LeMon)任务,然后构建了一个新的对话数据集 DuLeMon 和一个具有长期记忆(LTM)机制的对话生成框架 PLATO-LTM,这种 LTM 机制使本文的系统能够准确地提取和持续更新长期角色记忆。

据本文所知,这是首次对用户和机器人双方的角色信息进行实时动态管理。结果表明,就长期对话一致性而言,PLATO-LTM 可以显着优于基线,从而提高对话参与度。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第2张图片

论文标题:

Long Time No See! Open-Domain Conversation with Long-Term Persona Memory

论文链接:

https://arxiv.org/abs/2203.05797

代码&数据链接:

https://github.com/PaddlePaddle/Research/tree/master/NLP/ACL2022-DuLeMon

b1884e31b541f9f0651cbda62543109c.png

介绍

目前的开放域对话系统仍然无法与人类建立长期的联系。可能的原因是他们缺乏理解和记忆长期对话历史信息的能力,这里称之为长期角色信息能力。记住并积极利用用户的角色信息可以提高参与度,并有助于聊天机器人和用户之间的长期联系。如果没有这种能力,当前最先进的模型,例如 Meena 、Blender 和 PLATO,倾向于在长期对话中像陌生人一样与人交谈。

此外,现有的角色对话数据集只关注了聊天机器人(chatbot)角色信息的前后一致性,而忽略了用户(user)的角色信息和对它的运用。并且,这些数据集都设置了在聊天期间无法更新的固定角色信息。

为了解决现有模型的局限性和上述问题,本文定义了 LeMon(长期记忆对话)任务,并提出了一个名为 DuLeMon 的新数据集,该数据集不仅关注了 chatbot 自身角色的一致性,还利用了在长期对话交互中的 user 角色信息。图 1 中演示了 DuLeMon 中的一个示例对话,在 DuLeMon 中,假设两个说话者之前已经相互交互,用户和聊天机器人的基础角色信息都在每个话语中进行了注释。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第3张图片

基于收集到的数据集,本文在 PLATO 基础上添加了长记忆单元模块构建 PLATO-LTM 来解决长对话中的角色信息一致性的问题。它使模型能够在不依赖长期会话数据集的情况下研究长期的角色对话。PLATO-LTM 可以实时从对话中提取双方的角色信息,分别写入角色记忆,并从记忆中检索双方的角色信息以生成响应。

PLATO-LTM 框架由三个模块组成:(1)Persona Extractor(PE):通过过滤无关信息并通过分类器提取人物句子来更新记忆。(2)长时记忆机制(LTM):两个分开的长时记忆器,存储对话者的显式角色信息。(3)生成模块:使用大规模模型,将检索到的用户和聊天机器人的角色句子与对话上下文直接连接作为模型输入。

a70c7ef62887f237d2e34c18f8c65f4b.png

数据收集

任务定义。给定对话上下文 ,其中 u 和 s 分别代表用户和聊天机器人说的话。每个说话者都有对应的角色信息。将用户角色信息定义为 ,将聊天机器人角色信息定义为 。给定对话上下文 c、用户角色信息 ρu 和聊天机器人角色信息 ρs,从而根据对应的角色信息预测聊天机器人响应 st。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第4张图片

在 DuLeMon 中,聊天机器人会主动记住并合理使用用户自己所提及的关于自己的角色信息,从而使对话进行得更深入。简而言之,DuLeMon 数据集有两个基本特征:在对话过程中,聊天机器人可以看到对话双方的角色信息,与 PersonaChat 数据集不同;另一个是在该数据集中角色信息都被明确注释。DuLeMon 中的设置是一个说话者扮演聊天机器人的角色,另一个扮演用户的角色。下面详细说明该数据集的构建过程。

1. 用户画像收集:主要来自 PersonaChat 数据集对角色信息的翻译和重写。聊天机器人(chatbot)的角色信息只对自己可见,聊天机器人(chatbot)可以使用其角色信息与用户聊天,如图 2 所示。用户的角色信息包含两部分:聊天机器人已经知道的角色信息和聊天机器人不知道的角色信息。聊天机器人需要使用这些信息来指导聊天过程中的对话。需要注意的是,为了模拟聊天开始时的情况,这部分可能是空的。

2. 对话收集:对于每个对话,两个对话参与者(一个扮演聊天机器人,另一个扮演用户)随机配对并赋予随机角色。他们需要根据给定的角色信息组织对话。聊天机器人应该更多地考虑聊天以使其继续进行,它应该利用已知用户的角色信息进行深度聊天,用户将作为普通用户来配合对话。可以从给定的角色信息中选择聊天的内容。它不能与给定的信息无关,也不能与给定的角色信息相冲突。

3. 角色信息的 ground truth label:这部分注释当前响应是否使用给定的角色信息以及当前句子是否是角色信息句子。对于每个话语,首先让注释者标记它是否使用角色信息。此外,注释者应标记响应中使用的角色信息是来自聊天机器人或是用户。

78fce25772ee7d51a4cb1bebe7d1e146.png

模型架构

在这项工作中,本文提出了一种基于显式内存读写机制的长期记忆对话系统。它包括三个部分:角色信息提取器 PE、长期角色信息存储 LTM生成模块。通过长期存储模块的读写操作,可以存储、更新和读取用户和聊天机器人的角色信息。总体框架如图 3 所示。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第5张图片


3.1 角色提取器

给定一个话语或文本跨度作为输入,角色提取器可以为每个输入分配一个标签,以指示它是否包含角色信息。在这里,本文在一个带注释的角色信息-话语数据集上以监督的方式训练一个 ERNIE-CNN 网络架构,作为角色提取器。具体来说,ERNIE-CNN 网络使用预训练的 ERNIE 网络进行句子表征,并使用另一个 CNN 模型进行分类。

训练:首先,本文收集第一个版本的训练数据集,其中有 6k 个句子(来自 DuLeMon 语料库和中文社交论坛语料库)被人工注释,带有正面或负面的类别标签,表示是否为角色信息。然后,使用上述数据集,训练了五个基于 ERNIE-CNN 网络(具有不同的预训练参数版本)的模型(称为 pc-stage1)。又使用这五个模型对 140 万条话语进行自动注释,这些话语是从 DuLeMon 和在线中文社交论坛收集的。

通过以下步骤将此增强数据集细化为最终版本数据集:(a)给定一个话语,如果上述五个模型中至少有两个将其识别为正样本,则将其附加一个正标签 ,(b)否则附加负标签。最后,在这个最终版本的数据集上训练五个模型,并选择性能最佳的一个作为角色提取器(命名为 pc-stage2)。

推理:首先,给定一个话语,使用标点符号将其分割成子句。其次,使用上面提到的角色提取器对每个带有标签的子句进行分类,然后将带有正标签的子句标记为角色句子。

3.2 长期角色信息存储

长期记忆(LTM)模块维护记忆,分别存储来自用户和聊天机器人的历史角色信息。最关键的操作是基于上下文角色匹配模型(CPM)的读取和写入。本文使用上下文编码器 Ec(·) 对当前上下文 c 进行编码,并使用角色编码器 Eρ(·) 对角色 进行编码。E(·) 是编码器在 [CLS] 隐藏层的输出,对应于输入的池化表示。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第6张图片

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第7张图片

编码器 Ec 和 Eρ 使用 ERNIE 模型进行初始化,然后在 DuLeMon 语料库上进行训练。对于每个训练样本,将正面角色信息定义为当前用户话语和机器人响应中使用的角色信息(包括机器人自身角色和机器人看到的用户角色),将负面角色信息定义为当前会话的剩余角色信息。给定上下文 c、正角色 ρ+ 和负角色 ρ−,这里使用三元组损失 loss 来调整网络:

dee5129be6aa49589e165f4e9c7afd33.png

写入:使用 PE 模块提取对话历史中的角色信息(提取出来的是文本句子 )。这里,如果新来了一个角色信息 ,与之前出现的一个角色信息非常相似。则通过计算这些角色信息的余弦相似度来得到最近似的人物角色表征 。当 和 的相似度超过给定的重复阈值 时,将内存中老的的 替换为 (更新);否则,直接将 写入内存。写入内存时,保存为 以便后续的读取。用余弦相似度测量距离为:

12aaf664a2fdb630fa9e6be19993958e.png

读取:读取过程可以看作是从记忆中检索的过程。选择与上下文 context 语义表征余弦相似度高的 persona。

cb9f5462b4bdbb8ee7cdf95707b237ed.png

ueser memory 中的前 k 个 和 chatbot memory 的前 k 个 来用于生成响应。为了建模对话中的角色稀疏性,过滤掉相似度分数低于相似度阈值 sc 的角色。

3.3 生成模块

本文在 PLATO2 架构的基础上进行训练。给定对话上下文

402 Payment Required

和对应的用户角色信息 ρu 和聊天机器人角色信息 ρs ,响应 , 的条件概率可以写成一系列条件概率的乘积:

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第8张图片

损失即为:

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第9张图片

还添加了两种策略来区分对话中的不同角色并防止角色信息的混淆使用。

  • Role embedding:不同的角色嵌入用于区分不同聊天方的角色,缩写为role_embed。

  • Role Token:在聊天机器人角色之前拼接“system persona”,在用户角色之前拼接“user persona”,缩写为 role_token。

24df906a55d58b4fab8935812ad3ab3f.png

实验

角色提取器的结果

本文衡量了角色提取器 Persona Extractor 的性能。这里手动标注了测试集(测试集数量为 200),结果如表 3 所示,pc-stage2 模型优于 pc-stage1 模型。模型的 F1 超过 0.9,说明模型能够有效地从对话历史中识别人物角色信息,并确保人物角色信息能够正确存储在长时记忆中。因此,系统采用 pc-stage2 模型来识别对话历史中的角色。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第10张图片

生成模块的选择

生成模型利用上下文和检索到的角色信息来生成响应。首先评估了上下文角色匹配模型 CPM 对检索角色信息的影响。自动测试集上的 AUC 为 0.76,recall@5 为 0.83,这表明模型可以有效地从长期记忆中检索相关角色。

生成模型的效果反映了模型利用长时记忆的内容来生成响应的能力。

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第11张图片

结果如表 5 所示,从中可以得到以下关键结果:

1. 长期记忆机制 LTM 可以显着提高对话一致性 consistency。在对话一致性方面,PLATO-LTM 和 PLATO-FT 分别可以达到 0.87 和 0.40 的分数(118% 的提升),明显优于基线模型 PLATO-2。此外,PLATO-LTM w/o PE 的模型可以达到 0.49 的分数,仍然优于 PLATO-FT 模型。这表明没有角色提取器 PE 的长期记忆在提高角色一致性方面仍然有效。

2. 借助长时记忆机制,角色提取器 PE 可以显着提高角色一致性 consistency 和对话参与度 engagingness。如表 5 所示,在对话一致性方面,PLATO-LTM(使用 PE)和 PLATO-LTM w/o PE 两个模型分别可以达到 0.87 和 0.49 的分数,对话参与度为 1.54 和 1.43 分。 

3. 在小规模数据集进行微调会略微损害预训练对话模型在对话连贯性 coherence方面的性能。在对话连贯性方面,PLATO-FT 模型(在 DuLeMon 上进行了微调)的得分为 1.59,低于基线模型 PLATO(未在 DuLeMon 上微调)的得分 1.70。可能的原因是,因为对话通常涵盖广泛的主题,则当上下文是开放域主题时,很难产生适当或着连贯的回应。微调过程可能会损害预训练对话模型在响应适当性或对话连贯性方面的能力,导致 PLATO-LTM 及其变体的性能较差。


a9d10747994104515e38deffa588a38c.png

结论 

在本文中,提出了一种新颖的 LeMon(长期记忆对话)任务,然后构建了相应的数据集 DuLeMon,将长期角色信息建模引入到大规模生成对话模型中。进一步提出了一个长期记忆机制(LTM)作为大规模生成对话模型的插件组件。

LTM 由用户记忆和聊天机器人记忆组成,其中用户记忆用于理解和记忆用户提到的角色信息,而聊天机器人记忆保持其角色信息并随着时间的推移不断更新。实验结果表明,PLATO-LTM 可以有效利用对话历史中双方的角色信息,可以有效提高对话的一致性和参与度。未来,将进一步研究将强化学习与人类反馈信号结合起来帮助长期对话的可能性。

更多阅读

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第12张图片

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第13张图片

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第14张图片

97d6eee9e294a81a30c79c2f47cd19b8.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

 投稿通道:

• 投稿邮箱:[email protected] 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架_第15张图片

△长按添加PaperWeekly小编

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

6175ef0bf33ae0f16cff1ae46e5fe865.png

你可能感兴趣的:(python,机器学习,人工智能,深度学习,java)