推荐系统(LLM去偏?) | (WSDM24)预训练推荐系统:因果去偏视角

news2024/11/15 11:48:55

:::
大家好!今天我分享的文章是来自威斯康星大学麦迪逊分校和亚马逊AWS AI实验室的最新工作,文章所属领域是推荐系统和因果推理,作者针对跨域推荐中的偏差问题提出了一种基于因果去偏的预训练推荐系统框架PreRec。
:::

原文:Pre-trained Recommender Systems: A Causal Debiasing Perspective
地址:https://arxiv.org/abs/2310.19251
代码:https://github.com/myhakureimu/PreRec
出版:WSDM '24
机构: 威斯康星大学麦迪逊分校、亚马逊

1 研究问题

本文研究的核心问题是: 如何设计一个通用的预训练推荐系统框架,能够有效处理跨域推荐中的偏差问题。

::: block-1
假设我们有一个电商平台,想要为不同国家的用户推荐商品。每个国家的用户行为和商品特征都有所不同,直接将一个国家的推荐模型应用到另一个国家往往效果不佳。我们希望能够设计一个通用的推荐框架,可以在多个国家的数据上预训练,然后快速适应到新的国家市场,同时还能处理不同国家之间的偏差问题。
:::

本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 跨域推荐中存在域内偏差和跨域偏差,这些偏差会影响模型的泛化能力。例如,不同国家的商品流行度分布不同(域内偏差),以及不同国家的用户行为模式差异(跨域偏差)。
  • 现有的预训练推荐方法(如ZESRec和UniSRec)没有考虑这些偏差,可能会导致模型过拟合源域数据。
  • 如何在保留通用知识的同时,有效地消除这些偏差是一个挑战。

针对这些挑战,本文提出了一种基于因果去偏的"PreRec"方法:

::: block-1
PreRec的核心思想是将推荐过程建模为一个概率图模型,并引入因果推理的思想来处理偏差。它就像一个精明的导购,不仅了解每个国家的商品和用户特点,还能识别出哪些是真正的用户偏好,哪些只是由于某个国家特定的促销活动或文化差异造成的偏差。具体来说,PreRec使用一个分层贝叶斯深度学习模型来捕获用户兴趣、商品特征、域特征和流行度等因素。在预训练阶段,它通过显式建模域内偏差(如商品流行度)和跨域偏差(如域特征),将这些偏差与通用知识分离。在推断阶段,它使用因果干预的方法来消除这些偏差的影响,只保留真正的用户-商品匹配信息。这就像PreRec在每个国家都派了一个"特工",这些特工不仅收集各自国家的数据,还能识别出哪些是该国特有的"噪音"。在给新国家的用户推荐时,PreRec就能抛开这些"噪音",专注于真正通用的推荐知识。
:::

2 研究方法

2.1 PreRec模型结构

PreRec是一种新型的预训练推荐系统,采用层次化贝叶斯深度学习框架。它的核心目标是解决多域预训练中的偏差问题,提高模型在新域上的泛化能力。PreRec的整体架构包括以下几个关键组件:

  1. 用户通用嵌入网络(User Universal Embedding Network):这个网络用于生成用户的通用嵌入表示。它接收用户的历史交互序列作为输入,通过一个序列模型(如Transformer)来聚合这些交互信息,最终输出用户的嵌入向量。
  2. 物品通用嵌入网络(Item Universal Embedding Network):这个网络用于生成物品的通用嵌入表示。它以物品的文本描述为输入,通过预训练的语言模型(如BERT)和一个单层神经网络来提取物品的语义特征,最终输出物品的嵌入向量。
  3. 域属性嵌入(Domain Embedding):这是一个可学习的向量,用于捕捉每个域的特有属性,如用户群体特征、促销活动等。
  4. 流行度嵌入(Popularity Embedding):这个组件用于建模物品在特定域内的流行度偏差。它基于物品的交互次数、流量和时间等因素计算得出。

举个例子,假设我们在构建一个跨国的电商推荐系统。对于一个来自美国的用户,用户通用嵌入网络会分析他过去购买的商品序列(如手机、耳机、充电器等),生成一个能够反映他整体兴趣的嵌入向量。对于一个新上架的手机,物品通用嵌入网络会分析其产品描述,生成一个反映手机特征的嵌入向量。同时,我们还会有一个代表"美国市场"的域属性嵌入,以及反映这款手机在美国市场受欢迎程度的流行度嵌入。

PreRec的创新之处在于,它明确地将这些不同来源的信息(用户兴趣、物品特征、域属性、流行度)分开建模,这为后续的去偏和迁移学习奠定了基础。

2.2 多域预训练

在多域预训练阶段,PreRec的目标是从多个源域中提取通用知识,同时显式建模和处理不同类型的偏差。这个过程主要包括以下几个步骤:

  1. 数据收集:从多个源域(例如不同国家的电商平台)收集用户-物品交互数据、物品描述文本以及相关的元数据。
  2. 通用表示学习:使用物品通用嵌入网络和用户通用嵌入网络,分别学习物品和用户的通用表示。这些表示应该能够捕捉到跨域的共性特征。
  3. 域内偏差建模:PreRec显式地建模了域内的流行度偏差。具体来说,它引入了一个流行度嵌入 Z j Z_j Zj,用于捕捉物品 j j j 在特定域内的流行度效应。这个流行度嵌入是基于物品的交互次数、总流量和时间等因素计算得出的。
  4. 跨域偏差建模:PreRec引入了一个域属性嵌入 D k D_k Dk,用于捕捉每个域 k k k 的特有属性。这个嵌入可以理解为域的隐藏表示,它影响着该域内的用户兴趣、物品属性和用户行为模式。
  5. 联合优化:PreRec通过最小化负对数似然来联合优化所有这些组件。优化目标函数如下:

L = ∑ − l o g ( f s o f t m a x ( U i T V j + D k W d + Z j W z ) ) + λ z / 2 ∑ ∣ ∣ Z j − f p o p ( F j ) ∣ ∣ 2 + λ v / 2 ∑ ∣ ∣ V j − f e ( D k , Z j ) ∣ ∣ 2 + λ u / 2 ∑ ∣ ∣ U i − f s e q ( D k , H i ) ∣ ∣ 2 + λ d / 2 ∑ ∣ ∣ D k ∣ ∣ 2 L = ∑ -log(f_softmax(U_i^T V_j + D_k W_d + Z_j W_z)) + λ_z/2 ∑ ||Z_j - f_pop(F_j)||^2 + λ_v/2 ∑ ||V_j - f_e(D_k, Z_j)||^2 + λ_u/2 ∑ ||U_i - f_seq(D_k, H_i)||^2 + λ_d/2 ∑ ||D_k||^2 L=log(fsoftmax(UiTVj+DkWd+ZjWz))+λz/2∣∣Zjfpop(Fj)2+λv/2∣∣Vjfe(Dk,Zj)2+λu/2∣∣Uifseq(Dk,Hi)2+λd/2∣∣Dk2

这里, U i U_i Ui 是用户嵌入, V j V_j Vj 是物品嵌入, D k D_k Dk 是域属性嵌入, Z j Z_j Zj 是流行度嵌入, H i H_i Hi 是用户历史, F j F_j Fj 是流行度因子。

举个具体的例子,假设我们在美国、英国和加拿大的电商平台上预训练PreRec。对于一个在美国平台上很受欢迎的iPhone手机,它的表示会包含几个部分:

  • 通用物品嵌入:反映iPhone的基本特征,如智能手机、iOS系统等。
  • 流行度嵌入:反映这款iPhone在美国市场的高人气。
  • 域属性嵌入:可能捕捉到美国用户偏好高端科技产品的特点。

通过这种方式,PreRec能够区分出哪些特征是iPhone的固有属性,哪些是由于美国市场的特殊性造成的,从而为后续的跨域推荐打下基础。

2.3 零样本推荐

零样本推荐是PreRec的一个关键能力,它允许模型在没有见过任何目标域数据的情况下,直接在新域上进行推荐。PreRec通过巧妙的因果干预机制来实现这一点。具体步骤如下:

  1. 消除跨域偏差:在进行零样本推荐时,PreRec首先将域属性嵌入 D k D_k Dk 设置为0。这相当于执行了一个do-操作: d o ( D k = 0 ) do(D_k = 0) do(Dk=0)。直觉上,这就好比我们在问:“如果没有任何特定域的影响,用户会如何与物品交互?”
  2. 保留域内偏差:虽然消除了跨域偏差,但PreRec保留了流行度嵌入 Z j Z_j Zj。这是因为流行度信息通常在不同域之间具有一定的可迁移性。
  3. 计算推荐分数:PreRec使用因果干预后的用户嵌入和物品嵌入来计算最终的推荐分数:

P ( R i j k ∣ d o ( U i , V j , Z j ) ) = f s o f t m a x ( U i T V j + Z j W z ) P(R_ijk|do(U_i, V_j, Z_j)) = f_softmax(U_i^T V_j + Z_j W_z) P(Rijkdo(Ui,Vj,Zj))=fsoftmax(UiTVj+ZjWz)

这里, R i j k R_ijk Rijk 表示用户 i i i 与物品 j j j 在域 k k k 中的交互。

举个例子,假设我们要将预训练好的PreRec应用到澳大利亚的电商平台上。对于一个从未在澳大利亚市场出现过的新用户,PreRec会这样工作:

  1. 基于用户的历史行为(可能来自其他国家的平台)生成用户嵌入。
  2. 对于澳大利亚市场的每个商品,生成其通用物品嵌入。
  3. 计算每个商品在澳大利亚市场的流行度嵌入。
  4. 将域属性嵌入设为0,相当于"假设没有澳大利亚市场的特殊影响"。
  5. 基于以上信息计算推荐分数,并向用户推荐得分最高的商品。

这种方法的优势在于,它能够利用从其他市场学到的通用知识,同时考虑商品在新市场的受欢迎程度,但不会被源域的特殊偏好所影响。

2.4 目标域微调

随着在新域(如澳大利亚市场)积累了一定量的交互数据,PreRec可以通过微调来进一步提升推荐性能。微调过程包括以下步骤:

  1. 重新估计隐变量:PreRec会重新估计目标域的所有隐变量,包括用户嵌入 U i U_i Ui,物品嵌入 V j V_j Vj,域属性嵌入 D k D_k Dk,和流行度嵌入 Z j Z_j Zj
  2. 端到端优化:PreRec在目标域数据上优化与预训练阶段相同的目标函数:
    $$
    L = ∑ -log(f_softmax(U_i^T V_j + D_k W_d + Z_j W_z))
    • λ_z/2 ∑ ||Z_j - f_pop(F_j)||^2
    • λ_v/2 ∑ ||V_j - f_e(D_k, Z_j)||^2
    • λ_u/2 ∑ ||U_i - f_seq(D_k, H_i)||^2
    • λ_d/2 ∑ ||D_k||^2
      $$
  3. 适应性推断:微调后的推断过程会考虑目标域的特性:
    P ( R i j k ∣ d o ( U i , V j , D k , Z j ) ) = f s o f t m a x ( U i T V j + D k W d + Z j W z ) P(R_ijk|do(U_i, V_j, D_k, Z_j)) = f_softmax(U_i^T V_j + D_k W_d + Z_j W_z) P(Rijkdo(Ui,Vj,Dk,Zj))=fsoftmax(UiTVj+DkWd+ZjWz)

这里,我们不再将 D k D_k Dk 设为0,而是使用学习到的目标域属性嵌入。

具体来说,假设PreRec在澳大利亚市场运行了一段时间,收集到了一些用户交互数据。微调过程会:

  1. 更新用户嵌入,以更好地反映澳大利亚用户的偏好。比如,可能会发现澳大利亚用户特别喜欢户外运动产品。
  2. 调整物品嵌入,以适应澳大利亚市

3 实验

3.1 实验场景介绍

本论文提出了一个可以跨领域预训练的推荐系统模型PreRec。实验主要验证PreRec在新的目标领域上的推荐性能,包括零样本场景和微调场景。实验涉及跨市场(不同国家的Amazon市场)和跨平台(Amazon与Online Retail)两种跨域场景。

3.2 实验设置

  • Datasets:
    • XMarket数据集:覆盖18个本地市场(国家)的16个不同产品类别
    • Online Retail数据集:来自英国在线零售平台的数据
    • 预训练数据集:印度、西班牙、加拿大
    • 跨市场目标数据集:澳大利亚、墨西哥、德国、日本
    • 跨平台目标数据集:Online Retail
  • Baselines:Random, POP, SBERT, GRU4Rec, SASRec, ZESRec, UniSRec, PreRec_n
  • Implementation details:
    • 所有方法使用256维的物品和用户嵌入
    • 基于GRU的序列模型使用2层GRU
    • 基于自注意力的序列模型使用2层多头注意力
    • 使用Adam优化器,学习率为0.0003
    • 在验证集上使用平均r-NDCG@K%进行早停
  • Metrics:Recall@K% 和 r-NDCG@K%
  • 环境:使用一块Tesla V100 GPU进行训练

3.3 实验结果

实验1、零样本推荐实验

目的:评估PreRec在新的目标域上的零样本推荐性能
涉及图表:表1
实验细节概述:在三个源域(印度、西班牙、加拿大)上预训练PreRec,然后在五个目标域(澳大利亚、墨西哥、德国、日本、Online Retail)上进行零样本评估
结果:

  • PreRec在几乎所有情况下都显著优于所有基线方法
  • 在跨市场场景中,PreRec在澳大利亚数据集上获得最大改进,在日本数据集上改进最小
  • 在跨平台场景(Online Retail)中,PreRec同样表现出色

实验2、消融实验

目的:验证因果去偏机制的有效性
涉及图表:表1
实验细节概述:比较PreRec与其简化版本PreRec_n(忽略了跨域和域内偏差项)的性能
结果:在几乎所有情况下,PreRec都优于PreRec_n,证明了因果去偏机制的有效性

实验3、全量微调实验

目的:评估在目标域上全量微调后PreRec的性能
涉及图表:表2
实验细节概述:在目标域的所有可用训练数据上微调模型,并与基线方法比较
结果:

  • PreRec在微调后仍然在几乎所有情况下显著优于所有基线方法
  • 这表明PreRec在预训练阶段提取了通用知识,即使在目标域有充足数据的情况下仍具有互补价值
  • PreRec能够快速适应新域,同时不会遗忘预训练阶段学到的知识

实验4、增量微调实验

目的:研究目标域微调样本数量对模型性能的影响
涉及图表:图3
实验细节概述:使用逐渐增加的目标域训练数据对模型进行微调,观察性能变化
结果:

  • PreRec在所有目标域中都优于基线方法
  • 随着微调样本数量增加,PreRec的性能稳步提升,表明它在逐步适应目标域
  • 即使在有10^4个目标域训练样本时,PreRec与基线方法的性能差距仍然显著
  • 这表明PreRec在预训练阶段提取的知识在目标域数据有限的情况下具有重要价值
    非常感谢您提供的论文和问题。下面是我根据您的要求对论文进行的总结和分析:

4 总结后记

本论文针对预训练推荐系统中的域内偏差和跨域偏差问题,提出了一种名为PreRec的因果去偏视角方法。PreRec通过引入显式和隐式的混杂因子来建模不同类型的偏差,并使用因果干预机制来消除这些偏差的影响。实验结果表明,PreRec在跨市场和跨平台的零样本和微调场景下都显著优于现有方法,为构建通用的预训练推荐系统提供了新的思路。

::: block-2
疑惑和想法:

  1. 论文中提到的显式和隐式混杂因子是如何具体定义和识别的?是否存在其他类型的混杂因子需要考虑?
  2. PreRec如何处理动态变化的用户兴趣和项目特征?是否可以引入时间序列建模来捕捉这些变化?
  3. 在跨语言场景下,PreRec的性能如何?是否需要额外的跨语言对齐机制?
  4. PreRec能否扩展到处理多模态数据(如图像、视频)的推荐任务?这将带来哪些新的挑战?

:::

::: block-2
可借鉴的方法点:

  1. 将因果推断与深度学习相结合的思路可以推广到其他存在偏差问题的机器学习任务中,如计算机视觉、自然语言处理等。
  2. 使用分层贝叶斯模型来捕捉不同层次的特征和偏差的方法值得借鉴,可以应用于其他需要建模复杂层次结构的问题。
  3. 通过预训练和微调相结合的方式来提高模型的泛化能力和适应性的思路可以广泛应用于迁移学习和领域适应等场景。
  4. 设计新的评估指标(如r-NDCG@K%)来更公平地比较不同域间的性能的做法值得借鉴,可以应用于其他需要跨域评估的任务中。
    :::

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

logstash配置文件中明文密码加密

1 案例背景 应用配置文件中禁止使用明文密码,需要加密处理 上图中,红框打码位置为es的明文密码,需要对其进行处理 2 创健keystore文件 /rpa/logstash/bin/logstash-keystore --path.settings /rpa/isa/conf/logstash/ create 注&#xff1…

3d渲染软件有哪些(2),渲染100邀请码1a12

3D渲染软件有很多,上次我们介绍了几个,这次我们接着介绍。 1、Arnold Arnold渲染器是一款基于物理算法的电影级渲染引擎,它具有渲染质量高、材质系统丰富、渲染速度快等特点,是3D设计师的极佳选择。2、Octane Render Octane Ren…

一文详解:什么是企业邮箱?最全百科

什么是企业邮箱?企业邮箱即绑定企业自有域名作为邮箱后缀的邮箱,是企业用于内部成员沟通和客户沟通的邮箱系统。 一、企业邮箱概念拆解 1.什么是企业邮箱? 企业邮箱即使用企业域名作为后缀的邮箱系统。它不仅提供专业的电子邮件收发功能&a…

JFreeChart 生成Word图表

文章目录 1 思路1.1 概述1.2 支持的图表类型1.3 特性 2 准备模板3 导入依赖4 图表生成工具类 ChartWithChineseExample步骤 1: 准备字体文件步骤 2: 注册字体到FontFactory步骤 3: 设置图表具体位置的字体柱状图:饼图:折线图:完整代码&#x…

韩顺平0基础学java——第30天

p600-611 坦克大战! 艰难推进中 坦克大战-子弹 发射子弹 1.当发射一颗子弹后,就相当于启动一个线程 2.玩家拥有子弹对象,当按下J时,就启动发射行为(线程),让子弹不停移动,形成…

Ubuntu20.04安装python2和python3及版本配置

Ubuntu20.04安装python2和python3及版本配置_ubuntu 20.04 python3-CSDN博客https://blog.csdn.net/pangc2014/article/details/117407413 >>>ubuntu 安装源码python2_mob649e8161c39d的技术博客_51CTO博客https://blog.51cto.com/u_16175489/7327966

让python的报错代码只显示第一层

在 Python 中,sys.tracebacklimit 是 sys 模块中的一个属性,它用于控制在错误发生时,Python 解释器显示的堆栈追踪(traceback)的深度。 具体来说: • 默认行为:当出现未处理的异常时&#xff…

华为OD机试 - 掌握单词个数(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

Spark运行spark-shell与hive运行时均报错的一种解决方案

环境按照尚硅谷的配置的。 在运行hive的时候,报错代码为30041,无法执行insert语句。 在运行spark-shell的时候,报错,无法进入到shell脚本中。 可能的问题: 对集群设置的域名与集群的主机名称不一致。 例如:…

C#之Delta并联机械手的视觉相机标定与形状匹配

本文导读 上节课程我们讲述了如何建立Delta并联机械手正逆解,本节课程我们主要讲解如何通过C#语言开发正运动Delta并联机械手视觉流水线同步分拣的视觉部分。 VPLC711硬件介绍 VPLC711是正运动推出的一款基于x86平台和Windows操作系统的高性能机器视觉EtherCAT运…

75. UE5 RPG 创建场景摆放部件蓝图

这一篇文章来点简单的内容,相当于我们使用蓝图创建类似于unity的预制体。 创建一个一个柱子蓝图 首先,我们创建一个立柱的蓝图,将我们之前创建的柱子上面含有火焰和灯光的部分合并成一个蓝图,方便往场景内添加。 点击创建一个基…

Docker系列之安全

Docker的安全前言一、Docker 容器与虚拟机的区别 1. 隔离与共享 2. 性能与损耗二、Docker 存在的安全问题 1.Docker 自身漏洞 2.Docker 源码问题三、 Docker 架构缺陷与安全机制 1. 容器之间的局域网攻击 2. DDoS 攻击耗尽资源 3. 有漏…

ACL 2023事件相关(事件抽取、事件关系抽取、事件预测等)论文汇总

ACL 2023事件抽取相关(事件抽取、事件关系抽取、事件预测等)论文汇总,后续会更新全部的论文讲解。 Event Extraction Code4Struct: Code Generation for Few-Shot Event Structure Prediction 数据集:ACE 2005 动机:与自然语言相比&#xf…

利用maven命令往本地仓库添加jar包

一:遇到问题 有些jar包在中央仓库没有,需要手动往本地仓库添加,方便以后打包使用。 比如:添加红框这个依赖,现在爆红 二:解决办法 **第一步:**打开idea,找到运行按钮旁边的框&am…

Android集成高德地图SDK(2)

1.解压下载的压缩包,找到AMap_Android_SDK_All\AMap3DMap_DemoDocs\AMap_Android_API_3DMap_Demo\AMap3DDemo\app\libs,复制libs里的所有文件,将其粘贴到Android工程的libs目录下,如图所示。 2.打开app下的build.gradle&#xff0…

无忧易售升级:一键设置图片分辨率,赋能十大跨境电商平台

在电商领域,产品图片的品质直接影响着顾客的购买决策与品牌形象的塑造。无忧易售ERP特推出图片分辨率修改功能,为电商卖家们提供更专业的图像优化工具,让每一像素都成为吸引客户的秘密武器! 一、Allegro、OZON、Coupang、Cdiscou…

数据分析python基础实战分析

数据分析python基础实战分析 安装python,建议安装Anaconda 【Anaconda下载链接】https://repo.anaconda.com/archive/ 记得勾选上这个框框 安装完后,然后把这两个框框给取消掉再点完成 在电脑搜索框输入"Jupyter",牛马启动&am…

低代码:释放企业创新力的钥匙

近年来,随着信息技术的不断发展,企业对于快速开发应用程序的需求越来越迫切。然而,传统的软件开发过程常常耗时费力,限制了企业的创新潜力。于是,低代码应运而生,成为解决开发难题的一把利器。 低代码开发…

完整代码Python爬取豆瓣电影详情数据

完整代码Python爬取豆瓣电影详情数据 引言 在数据科学和网络爬虫的世界里,豆瓣电影是一个丰富的数据源。在本文中,我们将探讨如何使用Python语言,结合requests和pyquery库来爬取豆瓣电影的详情页面数据。我们将通过一个具体的电影详情页面作…

节流工具,避免操作太频繁

ThrottleUtil 用于保证某个操作在一定时间内只执行一次的工具。 package com.cashpro.kash.lending.loan.utils;/*** <pre>* Created by zhuguohui* Date: 2024/6/26* Time: 13:43* Desc:用于节流执行任务,限制任务执行的频次* </pre>*/import android.os.Handle…