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

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻