社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】厉害了!!!提示学习(Prompt)用在推荐系统上

机器学习初学者 • 2 年前 • 354 次点击  

KDD  2022 | Towards Unified Conversational Recommender Systems via Knowledge-Enhanced Prompt Learning

文章信息

来源:Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD 2022)
标题:Towards Unified Conversational Recommender Systems via Knowledge-Enhanced Prompt Learning
作者:Wang, Xiaolei and Zhou, Kun and Wen, Ji-Rong and Zhao, Wayne Xin
链接:https://dl.acm.org/doi/10.1145/3534678.3539382

内容简介

会话推荐系统 (下面简称为:CRS) 旨在通过自然语言对话主动引发用户偏好并推荐高质量的项目。通常,CRS 由一个推荐模块(用于预测用户的首选项目)和一个对话模块(用于生成适当的响应)组成。要开发有效的 CRS,必须无缝集成这两个模块。现有的工作要么设计语义对齐策略,要么在两个模块之间共享知识资源和表示。然而,这些方法仍然依赖于不同的架构或技术来开发这两个模块,使得有效的模块集成变得困难。

为了解决这个问题,本文提出了一个基于知识增强即时学习的统一 CRS 模型,名为 UniCRS。本文的方法将推荐和对话子任务统一到提示学习范式中,并利用基于固定预训练语言模型 (下面简称为PLM) 的知识增强提示以统一的方法完成这两个子任务。在提示设计中,本文包括融合的知识表示、任务特定的软标记和对话上下文,它们可以提供足够的上下文信息来使 PLM 适应 CRS 任务。此外,对于推荐子任务,本文还将生成的响应模板作为提示的重要组成部分,以增强两个子任务之间的信息交互。在两个公共CRS数据集上的大量实验证明了本文方法的有效性。本文的代码在以下链接公开可用:https://github.com/RUCAIBox/UniCRS。

本文的主要贡献有:

  • 据本文所知,这是第一次以通用提示学习的方式开发统一的 CRS。
  • 本文的方法将 CRS 的子任务制定为统一的提示学习形式,并设计具有相应优化方法的特定任务提示。
  • 对两个公共 CRS 数据集的广泛实验证明了本文的方法在推荐和对话任务中的有效性。

方法介绍

本文提出了一种统一的 CRS 方法,即基于 PLM 的知识增强型即时学习,即 UniCRS。本文首先概述了所提出的方法,然后讨论了如何融合来自单词和实体的语义作为提示的一部分,最后介绍了 CRS 任务的知识增强提示方法。本文提出的模型的整体架构如图 1 所示。

用于即时学习的语义融合

由于 DialoGPT 是在通用对话语料库上进行预训练的,因此缺乏 CRS 任务的特定能力,无法直接使用。根据先前的研究,本文将 KG 合并为特定于任务的知识资源,因为它涉及对话中提到的实体和项目的有用知识。然而,已经发现对话的语义空间和 KGs 之间存在很大的语义差距。本文需要首先融合两个语义空间以进行有效的知识对齐和丰富。特别是,这一步的目的是融合来自不同编码器的令牌和实体嵌入。

编码词标记和知识图谱实体  给定对话历史 𝐶,本文首先将 𝐶 中出现的对话词和 KG 实体分别编码为词嵌入和实体嵌入。为了补充本文的基础 PLM DialoGPT(单向解码器),本文采用了另一个固定的 PLM RoBERTa(双向编码器)来推导词嵌入。从固定编码器 RoBERTa 导出的上下文化令牌表示被连接成一个词嵌入矩阵,即

词实体语义融合为了弥合词和实体之间的语义鸿沟,本文使用交叉交互机制通过双线性变换将两种语义表示联系起来:

预训练融合模块对于这个预训练任务,本文简单地利用提示增强的上下文序列 来预测出现在响应中的实体。实体的预测概率公式为:

特定于子任务的提示设计

虽然基础 PLM 是固定的,无需微调,但本文可以设计特定的提示以使其适应 CRS 的不同子任务。对于每个子任务(推荐或对话),提示的主要设计由三部分组成,即对话历史、子任务特定软令牌和融合知识表示。对于推荐,本文进一步将生成的响应模板合并为额外的提示标记。接下来,本文详细描述这两个子任务的具体提示设计。

提示生成响应响应生成的提示由原始对话历史记录(以单词标记𝐶的形式)、特定于生成的软标记(以潜在向量 的形式)和融合的文本上下文(以潜在向量 的形式)组成。正式表示为:

在上述提示设计中,唯一可调的参数是经过预训练的融合文本表示 和特定于生成的软令牌 。它们被表示为 。本文使用提示增强的上下文 推导出学习 的预测损失,其形式为:

提示项目推荐项目推荐提示由原始对话历史 𝐶(以单词标记的形式)、特定于推荐的软标记 (以潜在向量的形式)、融合实体上下文 (以潜在向量的形式)和 响应模板 𝑆(以单词标记的形式),正式描述为:

本文利用提示增强的上下文 推导出学习 的预测损失,其形式为:

实验分析

表 3 显示了不同方法在推荐任务上的性能。对于这三种 CRS 方法,所有数据集的性能顺序是一致的,即 KGSF > KBRD > ReDial。KGSF 和 KBRD 都将外部 KG 纳入其推荐模块中,这可以丰富对话历史中提到的实体的语义,以更好地捕捉用户意图和偏好。此外,KGSF 还采用互信息最大化的方法来进一步改进实体表示。对于四个预训练模型,本文可以看到 BERT 和 BART 的表现优于 GPT-2 和 DialoGPT。原因可能是 GPT-2 和 DialoGPT 基于单向 Transformer 架构,这限制了它们的对话理解能力。此外,可以看到 BART 在 ReDial 数据集上实现了相当的性能,甚至优于 BERT。这表明 BART 也可以很好地理解推荐任务的对话语义。最后,可以看到本文模型大大优于所有基线。本文利用专门设计的提示来指导基础 PLM,并结合 KG 通过预训练任务提高提示质量。

结果如图 2 所示。可以看到,删除任何组件都会导致性能下降。这表明本文模型中的所有组件都有助于提高推荐任务的性能。其中,去除语义融合模块中的预训练任务后,性能下降幅度最大。这表明这样的预训练过程在本文的方法中很重要,因为它可以学习实体和令牌之间的语义相关性,从而强制实体语义与基础 PLM 保持一致。

本文在表 4 中展示了不同方法的自动度量的评估结果。可以看出,在三种 CRS 方法中,性能顺序也与 KGSF > KBRD > ReDial 一致。这是因为 KBRD 采用基于 KG 的 token bias 来提升低频 token 的概率,而 KGSF 设计了 KG-enhanced cross-attention 层来改善生成过程中实体和 token 的特征交互。此外,可以看到 PLM 的性能优于三种 CRS 方法。最后,与这些基线相比,本文的模型也始终表现更好。在本文的方法中,本文执行语义融合和快速预训练。通过这种方式,可以有效地将特定于任务的知识注入 PLM,并帮助生成信息丰富的响应。此外,由于与全参数微调相比,文中只调整了几个参数,因此可以缓解 PLM 的灾难遗忘问题。

结论

本文提出了一种名为 UniCRS 的新型会话推荐模型,以统一的方法完成推荐和会话子任务。首先,以固定的 PLM(即 DialoGPT)为骨干,本文利用知识增强的即时学习范式来重新制定这两个子任务。然后,本文设计了多个有效的提示来支持这两个子任务,其中包括由预训练的语义融合模块生成的融合知识表示、特定于任务的软标记和对话上下文。本文还利用从对话子任务生成的响应模板作为提示的重要部分来增强推荐子任务。上述提示设计可以提供足够的关于对话上下文、任务指令和背景知识的信息。通过仅优化这些提示,本文的模型可以有效地完成推荐和对话子任务。广泛的实验结果表明,本文的方法优于几种竞争性 CRS 和 PLM 方法,尤其是在只有有限的训练数据可用时。

未来,本文会将文中的模型应用于更复杂的场景,例如主题引导的 CRS 和多模态 CRS。本文还将考虑设计更有效的即时预训练策略,以快速适应各种 CRS 场景。




    
往期精彩 回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/149776
 
354 次点击