SIGIR 2022 | 从Prompt的角度考量强化学习推荐系统

2023-10-20 15:40

本文主要是介绍SIGIR 2022 | 从Prompt的角度考量强化学习推荐系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

417bf25fa3cad4dc1d2bbfcb11e83e9d.gif

©编辑 | 李晨亮

来源 | 社媒派SMP

feb3eb8d4e3685f5015b3a88a63b261b.png

d9d0e2283c48aff7ec189c81b6ff79aa.png

引言

Next item 推荐系统是现代在线网络服务的核心组件之一,根植于应用程序中,例如音乐、视频和电子商务网站,帮助用户(user)导航和查找新内容。一般来说,系统被建模为序列预测任务,通常在递归神经网络或其他生成序列模型之上实现。其目的在于回答问题:在知晓用户过去的交互情况下,用户感兴趣的下一个物品 (item) 是什么。

强化学习是训练 Agent 在给定观察到的环境状态的情况下采取相应行动,以最大化预定义的奖励。现有的基于价值的 RL 算法通常涉及策略评估和策略改进,分别如图 1a 和图 1b 所示。因为强化学习自然符合推荐系统的优化目标:最大化一个交互会话的总体收益,RL 中灵活的奖励设置可以灵活地定制推荐目标。因此,在推荐中使用 RL 已成为一个新兴话题。

6255dda75b257e77f1bec1c5f5c837b3.png

▲ 图1. 策略评估算法、策略改进算法和PRL范式

然而,发展基于强化学习的推荐方法并非易事。具体来说,当前 RL 的学习范式通过与环境交互然后观察奖励来训练主体(Agent)。这个过程需要 Agent 本身进行大量的交互。传统 RL 的关键是通过大量在线探索试错来训练推荐引擎,但在推荐系统中,我们无法进行大量在线试错,糟糕的推荐结果会影响用户体验。因此,需要通过在不同推荐策略下收集的历史隐性反馈进行推荐引擎的离线训练。然而,历史数据不是由 Agent 本身产生的,而是来自不同甚至未知的行为策略。策略评估的期望估计很容易受到分布差异的影响,即所谓的离线训练挑战。 

针对离线训练的场景,我们提出了一种新的学习范式,基于提示的强化学习 (Prompt-Based Reinforcement Learning, PRL)。传统的 RL 算法试图将“状态-行为”输入对映射到预期的奖励,而 PRL 直接从“状态-奖励”输入中推断行为,如图 1c 所示。

简而言之,通过简单的监督学习,根据先前的交互和观察到的奖励价值训练 Agent 来预测推荐的物品。在部署时,历史(训练)数据充当知识库,“状态-奖励”对充当提示。因而 Agent 将用来解决问题:在给定的先前交互与提示的价值奖励条件下,应该推荐哪种物品?我们在四种推荐模型上实例化 PRL,并在两个电子商务数据集上进行实验,实验结果表明了我们方法的有效性。 

我们工作的贡献总结如下:

1. 对于基于强化学习的 Next item 推荐系统的离线训练,我们提出了 PRL。我们建议使用“状态-奖励”对作为提示,通过查询历史隐式反馈数据知识库来推断行为。 

2. 我们提出使用一个有监督的自注意力模块来学习和存储“状态-奖励”对的输入和行为的输出之间的信号。 

3. 我们在四种推荐模型上实例化 PRL,并在两个真实世界的电子商务数据集上进行了实验。实验结果表明,推荐性能有了普遍的提高。

1095c1b8c1f883b3ef66d66ab4b4c6de.png

基于提示的强化学习

在本节中,我们将详细介绍使用 PRL 的 Next item 推荐的训练和推理过程。 

在训练阶段,使用生成序列模型将用户之前的交互编码为隐藏状态,将历史数据组织在 {state, cumulative reward}–>{observed action}({状态,累积奖励}–>{行为}) 模板中,然后使用监督自注意力模块来学习和存储这些信号。PRL 训练过程包括三个部分:提示生成、提示编码和有监督的注意力学习,如图 2 所示。

5e209712128dae4e863c5f43db0594f8.png

▲ 图2. PRL的训练框架

提示生成旨在将离线训练数据制定为知识模板,即在先前 user-item 交互序列为 的条件下,如果我们想要获得累积奖励 ,则应该采取行动 。提示编码旨在利用深度神经网络将生成的提示映射成为 hidden state 表示。监督自注意力学习模块则用来学习和存储经过编码的 prompt 潜在表示和观察到的行为之间的映射信号。图 3 中的算法给出了 PRL 的 prompt 生成过程。

b4d5cbebe1fa4cc84c3379b9219ae9e9.png

▲ 图3. PRL的训练模版生成过程

在推理阶段,给定当前状态,我们向模型提供我们想要获得的预期累积奖励,模型可以通过查询历史知识库直接推断行为。在训练过程中,累积奖励可以从离线数据中计算出来,而对于模型推理,我们需要提供推理奖励(prompt reward),以便 Agent 可以根据奖励来调整行为,实现探索。

e2838e86617a2f0620b8c316139fcf96.png


实验

我们用四种基于深度学习的序列推荐模型来实例化 PRL,在两个电商数据集,Challenge15 和 RetailRocket4,进行了实验。实验旨在回答以下三个研究问题,以验证 PRL 学习范式的有效性: 

1. 当在不同的序列推荐模型上实例化时,PRL 的表现如何?

2. 包括自注意力模块和加权损失函数在内,监督注意力学习的效果是什么?

3. 在推理阶段,prompt reward 设置如何影响 PRL 的表现? 

针对问题一,我们通过与基线模型进行比较,在两个数据集上实验结果如表 1 和表 2 所示。无论在 Challenge15 数据集还是在 RetailRocket4 数据集上,PRL 在几乎所有情况下都取得了最好的性能,证明了 PRL 持续且显著地提高了基于 RL 的推荐任务的离线学习性能,并可应用于各种序列推荐模型。

ad333165c7eca664733e87bec916d7f3.png

▲ 表1 PRL和其他模型在Challenge15数据集推荐性能比较

6bbc2cc041e934d10e4c4bacc8c74661.png

▲ 表2. PRL和其他模型在RetailRocket4数据集推荐性能比较

c7cc3edb85d4f5209d323957a5b7f9bb.png

▲ 表3. 自注意力模块的效果

针对重新加权模式(re-weighting)的效果研究,我们与没有任何重新加权(即PRL-w/o)的 PRL 的结果和通过累积奖励(即 PRL-cumu)重新加权的 PRL 的结果进行对比,结果如表 4 所示,证明了 PRL 的 re-weighting 成功地帮助模型推荐更多有更高的 prompt reward 的购买产品。

1b554855b00bea5817ae35791e49de17.png

▲ 表4. 加权损失的影响

针对问题三,我们进行实验,通过研究推理奖励期望 μ 与推理奖励偏差 ϵ 的影响,以了解推理奖励设置如何影响模型的性能。结果分别如图 4 和图 5 所示:

9c033839130ad797e80cada714f50d45.png

▲ 图4. 推理奖励期望μ的效果

15434dab2135e1776514ed2380ff6851.png

▲ 图5. 推理奖励偏差ϵ的效果

17d3d2af2b66342449544d5a73ff1aa6.png

总结

我们提出了 prompt-based 强化学习的方法,用于基于强化学习的 Next item 推荐引擎的离线训练。从理论上分析了利用 RL 进行推荐时的离线训练挑战,我们建议将历史离线数据作为知识库,将推荐任务制定为问题:如果在状态观察下期望获得 prompt reward,应该采取什么行动。我们使用四个序列推荐模型实例化了 PRL,并在两个真实世界的数据集上进行实验,证明了所提方法的有效性。

a8353f27b44f192559c87c41720af209.png

送福利啦!

独家定制炼丹中/Fine-Tuning

超超超超超大鼠标垫

限量 200 份 

扫码回复「鼠标垫」 

立即免费参与领取 

👇👇👇

e0e042462b5e439492edad2bac11f459.png

🔍

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

进入知乎首页搜索「PaperWeekly」

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

·

60e4bbf7386e68ded9602ce5793be07d.png

这篇关于SIGIR 2022 | 从Prompt的角度考量强化学习推荐系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/248061

相关文章

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos