查看原文
其他

KDD 2022 | 通过知识增强的提示学习实现统一的对话式推荐

王晓磊 RUC AI Box 2022-12-14

© 作者|王晓磊

机构|中国人民大学高瓴人工智能学院

导师|赵鑫

研究方向|对话式信息获取


本文基于知识增强的提示学习提出一种统一的对话推荐系统。已有的对话推荐系统通常包含对话和推荐两个模块,并采用不同的模型或技术实现,导致模块之间存在语义不一致的问题。本文采用提示学习的范式重新建模对话和推荐子任务,从而使得对话和推荐模块用一个预训练模型就能轻松实现。文章也同步发布在 AI Box 知乎专栏(知乎搜索 AI Box 专栏),欢迎大家在知乎专栏的文章下方评论留言,交流探讨!

论文题目Towards Unified Conversational Recommender Systems via Knowledge-Enhanced Prompt Learning

论文链接https://arxiv.org/abs/2206.09363

论文代码:https://github.com/RUCAIBox/UniCRS


引言:对话推荐系统(CRS)旨在通过自然语言对话为用户提供推荐服务。一般来说,CRS 需要完成两个子任务:一个是推荐,根据对话从候选物品集合中选取物品推荐给用户;另一个是对话,根据对话历史生成相应的回复。现有方法通常会设计推荐和对话这两个模块分别解决上述子任务。由于这两个子任务高度耦合,CRS 作为系统要能够无缝集成这两个模块。为此,一类工作在模块之间共享知识(如知识图谱和评论)及其表示以增强模块间的语义交互,另一类工作通过设计表示对齐策略(如互信息最大化和对比学习)来增强模块间语义的一致性。
尽管如此,推荐和对话模块之间语义不一致的问题仍然存在。如图所示,对于基线模型 KGSF,尽管推荐模块预测了电影 Frozen 2 (2019) ,但对话模块似乎没有感知到这样的推荐结果,生成了包含另一部电影 Pretty Woman (1990) 的回复。

出现这种问题的原因主要有两个

  1. 大多数方法采用不同的模型或技术来实现这两个模块,其中仅有部分参数或知识共享。

  2. 一个模块的结果不能被另一个模块感知和利用。例如,基线模型 KGSF 预测推荐结果时,无法利用生成的回复。


为了解决上述语义不一致的问题,我们想要以统一的方式实现推荐和对话模块。我们注意到,预训练语言模型 (PLM) 可以有效地作为各种任务的通用解决方案,此外,最近提出的提示学习以简单而灵活的方式进一步统一了 PLM 在不同任务上的使用方式。考虑到 CRS 中的推荐和对话子任务都是基于相同的输入(对话历史)进行预测,受到 PLM 及提示学习的启发,我们通过 PLM + 提示学习来建模推荐和对话模块,并提出了一个统一的对话式推荐模型 UniCRS。

方法简介

UniCRS 旨在通过提示学习帮助 PLM 更好地统一建模 CRS。我们选取在大规模对话语料上进行预训练的 DialoGPT 作为我们的 PLM,并按照提示学习的范式固定其权重,通过在输入(对话文本)中加入提示来帮助 PLM 完成推荐和对话子任务。

提示学习中的语义融合

由于 DialoGPT 是在通用对话语料上进行预训练的,因此缺乏 CRS 所需要的领域知识,无法直接使用。我们将知识图谱(KG)中的相关知识引入提示来弥补 DialoGPT 的不足。然而,对话中的单词和 KG 中实体这两者所在的语义空间之间存在很大差异,使得 KG 上的知识不能有效地被 PLM 利用。因此,我们首先需要对齐这两个语义空间。

编码对话中的单词和 KG 上的实体

给定对话历史,我们首先将其中出现的单词和实体分别进行编码。

  • 对于单词,考虑到 DialoGPT 采用的是解码器的架构,在语言理解方面存在不足,我们采用了一个双向编码器 RoBERTa 来进行编码,得到单词的表示

  • 对于实体,我们首先将其链接到知识图谱 DBpedia,然后通过 R-GCN 编码抽取出的子图,得到实体的表示


单词与实体的语义融合

为了融合单词和实体的表示,我们设计了交叉交互机制来将两种语义表示联系起来:

其中是两种表示之间的相关性矩阵,是变换矩阵,是融合后的单词表示,是融合后的实体表示。

语义融合模块的预训练

为了更好地优化融合模块的参数,我们提出了一种基于提示的预训练方法。该方法利用了对话中的自监督信号,即根据对话的文本表示预测出对话中出现的实体,从而对齐两者的语义空间。

下游任务的提示设计

虽然 PLM 是固定的,无需微调,但我们可以通过提示使其适应 CRS 的子任务。对于每个子任务,我们设计的提示由三部分组成:对话历史、子任务特定的 soft token 和融合后的知识表示。对于推荐子任务,我们还加入了对话任务生成的回复模板来增强两个模块预测的一致性。

对话任务

对话任务的提示由原始的对话文本()、任务特定的 soft token()和融合后的的单词表示()组成,表示为:

PLM 将上述提示作为输入,预测回复。

除了共享 PLM 之外,我们发现共享子任务的中间结果对于模块间的语义一致性也很重要。例如,给定对话任务生成的回复,PLM 可以根据额外的上下文给出更相关的推荐。基于此,我们将回复模板加入到推荐子任务的提示中。具体来说,我们在 PLM 的词汇表中添加了一个特殊符号,并将回复中的所有物品替换为这一符号。在每个时间步,PLM 将生成特殊符号或其他 token。


推荐任务

推荐任务的提示由原始的对话文本()、任务特定的 soft token()、融合后的实体表示(和回复模板()组成,表示为:

PLM 将上述提示作为输入,预测要推荐的物品。 

这两个子任务的提示的不同之处在于我们将融合后的实体表示用于推荐子任务,单词表示用于对话子任务。这是因为它们的预测目标分别是物品和回复语句。此外,我们将回复模板作为推荐子任务提示的一部分,以增强子任务之间的语义交互,从而缓解预测结果不一致的问题。

实验

数据集

为了评估模型的性能,我们用 ReDial 和 INSPIRED 数据集进行了实验。

  • ReDial 数据集是一个关于电影推荐的英文 CRS 数据集,由 Amazon Mechanical Turk (AMT) 上的众包工作人员构建。

  • 与 ReDial 类似,INSPIRED 数据集也是关于电影推荐的英文 CRS 数据集,但规模较小。

推荐任务

对于推荐任务,我们采用 Recall@k(k=1,10,50) 进行评估。我们在两个数据集上进行了推荐效果的测试并和现有的baseline进行了比较。可以看到,UniCRS 的性能优于 CRS 的基线模型和经过微调的预训练模型。


对话任务

对于对话任务,评估包括自动评估和人工评估。自动评估方面,我们使用 Distinct n-gram(n=2,3,4) 来衡量句子级别的多样性。人工评估方面,我们使用 Fluency 衡量回复的流畅程度,Informativeness 衡量回复的信息量。可以看到,UniCRS 的性能同样优于 CRS 的基线模型和经过微调的预训练模型。


消融实验

我们基于模型的不同变体进行了消融实验,以确定各个模块的有效性。可以看到,去除某一个模块都会造成性能的下降。特别地,去除语义融合模块的预训练任务会造成性能的显著下降。这表明对齐单词和实体的语义空间对于有效地将领域知识注入 PLM 而言至关重要。


冷启动实验

此外,我们还模拟了冷启动场景来测试模型在数据稀疏场景下的性能。具体而言,我们从训练数据中随机抽取20%-100%的数据用于训练。可以看到,UniCRS 在各种设置下都取得了比基线模型更优的性能。特别是,在只有20%的训练数据时,其性能与基线模型使用100%的数据进行训练的效果相当。这表明 UniCRS 能在一定程度上有效缓解冷启动问题。

总结

我们提出了一种新型的对话推荐系统 UniCRS,以统一的方法完成推荐和对话子任务。以 PLM(DialoGPT)为骨干,我们利用知识增强的提示学习来重新建模这两个子任务。通过仅优化这些提示,我们的模型可以有效地完成推荐和对话子任务。实验结果表明,UniCRS 优于已有的 CRS 基线和 PLM 模型。特别地,在训练数据有限的冷启动场景,UniCRS 表现突出,取得了与基线模型在全量数据上训练相当的性能。

更多推荐




8个扩展子包!RecBole推出2.0!



有监督预训练!文本生成又一探索!





KDD 2022 | 我‍们离通用预训练推荐模型还有多远?推荐系统的通用序列表示学习模型 UniSRec




点击下方“阅读原文”前往知乎专栏
↓↓↓


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存