CIKM'22「阿里」多场景个性化推荐的场景自适应自监督模型

7a259e7f9a4fb5e4ff7402b79513f53b.png

关注我们,一起学习~

标题:Scenario-Adaptive and Self-Supervised Model for Multi-Scenario Personalized Recommendation

地址:https://arxiv.org/pdf/2208.11457.pdf

会议:CIKM 2022

公司:阿里

1. 导读

本文关注多场景推荐相关的问题,当然在其他场景也可以有借鉴的地方。这些场景在用户和商品中有部分重叠,而不同场景的分布不同。多场景建模的关键点是有效地最大化整个场景信息的使用,并为多个场景中的用户和商品细粒度地生成自适应表征。多场景建模存在的三个挑战:

  • (1)在多场景之间缺乏细粒度和解耦的信息迁移控制。

  • (2) 未充分利用整个空间样本。

  • (3) 商品的多场景表征解耦问题。

本文提出了一种场景自适应和自监督(SASS)模型来解决上述三个挑战。具体来说,设计了一个具有场景自适应门单元的多层场景自适应迁移(ML-SAT)模块,以非常细粒度和解耦的方式选择和融合从整个场景到单个场景的有效迁移信息。为了充分利用整个空间样本的作用,引入了包括预训练和微调的两阶段训练过程。预训练阶段基于场景监督的对比学习任务,其中训练样本来自标记和未标记的数据空间。该模型在用户端和商品端都是对称创建的,因此可以获得不同场景中商品的不同表示。

2. 问题定义

2.1 多场景匹配问题

场景集合,他们共享特征空间和标签空间。对于场景,训练数据属于特定域的分布,多场景匹配问题可以定义为下式,其中V为候选商品集合,e是在场景中用户和商品的表征向量,sim为相似度函数,最后取前K个商品。

多场景任务可以看成是一个多域学习,具有以下三个特点:

  • (a)所有场景具有相同的用户/商品类型,并享有共同的特征模式;

  • (b)所有场景都有相同的学习目标(多个输入和一个目标);

  • (c)多场景学习的关键点在于场景之间的信息共享和迁移,从而可以同时提高所有场景的性能。

3. 所提方法

91556a07ec904c4f5251f3c81051b6ca.png

SASS包含两个阶段,预训练阶段和微调阶段。

  • 预训练阶段:本阶段有用户端和商品端预训练任务。这两个任务都具有相同的模型结构。embedding层在两个任务之间共享,预训练阶段基于自监督的对比学习策略。

  • 微调阶段:微调阶段的模型结构利用双双塔框架分别生成用户和商品表征向量。微调阶段的embedding层和网络权重从预训练阶段恢复,以便微调阶段的模型可以重用整个样本空间中训练好的信息。

3.1 基于对比学习的自监督框架

这里采用曝光点击和未点击的数据进行训练,

在用户端,同一用户在不同场景中的行为可以被视为一种数据扩充机制。然后,提出了一种多层场景自适应迁移模块(ML-SAT),用于在不同场景中为同一用户生成不同的表征向量。最后,引入对比损失函数作为优化损失,以最大化不同场景中同一用户的不同潜在表征之间的一致性。如果用户u已访问k个场景,简单地分割这些场景,并将它们组合起来生成 k*(k−1)/2个对比学习样本。

在商品方面,同一商品在不同场景中的曝光和交互也可以被视为数据扩充机制。对于同一商品构建孪生网络和对比损失,和用户端一样,对样本组合进行类似的操作,生成多个样本。

3.1.1 特征组成和embedding层

在用户端,每个训练样本都包含用户画像、场景上下文特征和两组用户场景交叉行为特征,这些特征分别来自两个场景。具体而言,用户画像包含年龄、性别等。场景上下文特征主要包括场景ID。用户场景交叉行为特征包括相应场景中的用户行为序列、类别偏好和用户统计特征。

对于用户行为序列特征,得到交互序列中每个商品的embedding后,通过相应的池化策略得到用户的行为表征。作者利用自注意机制作为池化操作。

在商品侧,商品画像包含商品ID、类别ID、帐户ID等。商品场景交叉特征主要包括相应场景中的商品统计特征。

为了突出场景上下文特征的重要性,引入了单独的辅助网络来建模场景特征,其中x为场景上下文特征,f为多层感知机

3.1.2 ML-SAT

058996eb6e6b36a2822f7fd31d6f1f33.png

商品侧和用户侧的网络是一样的,所以这里只介绍用户侧的网络。

为了充分利用整个场景信息并规范从整个场景到特定场景的细粒度信息迁移,引入了一个全局共享网络来学习所有场景的信息,并提出了一个多层场景自适应迁移模块(ML-SAT)作为每个单独场景的场景特定网络。全局共享层用所有场景中的数据进行训练,对于场景特定的各个层采用对应场景中的数据训练。

基于GRU,在每个网络层中,设计了一个具有显式门机制的场景自适应门单元,以调节从整个场景到特定场景的细粒度信息迁移。如图4(b)所示,场景自适应门单元可公式化如下,其中表示第层的全局共享层的输出,表示场景网络中第层的输出,W为可学习参数,a为前面场景上下文信息辅助网络的输出。

3.1.3 场景偏置融合

在上述的门控机制后,我们可以得到场景对应的输出,场景上下文特征在区分场景的过程中是很重要的,因此把场景网络的输出a作为偏置将其融入最后的输出表征中,如图4c,公式如下,其中为场景网络输出。

3.1.4 自监督优化目标

对于在相应场景中具有两组场景特定特征的每个训练样本,可以分别获得相同用户或商品的两个输出向量,表示为和。预训练任务的目标是提取不同场景之间的共性和模型修正。因此,采用自监督对比损失作为优化损失。具体而言,对于batch size为N的训练样本, 经过ML-SAT后可以得到2N个向量。以和作为正样本对。其他2(𝑁 − 1)个场景向量被视为负向量。损失函数为下式,

最后的损失为:

3.2 微调阶段

d1c815eaf9f69f8abf77fc6648aa2501.png

3.2.1 特征和embedding层

微调阶段的训练样本为从目标场景中提取的点击数据。用户一次只能访问一个场景,因此一个训练样本中的特征仅包含单个场景中的特征。用户端特征包括用户画像、场景上下文特征(场景ID)、用户的行为序列、统计特征和目标场景中用户的偏好特征。商品侧特性包含项目画像、场景上下文特性(场景ID)、统计特性和目标场景中项目的偏好特性。然后,如图5所示,用户侧特征和商品侧特征被分别送到embedding层和上层ML-SAT模块中,以在相应场景中为用户和商品生成最终场景特定向量。ML-SAT在微调阶段的embedding层和网络权重是从预训练阶段恢复的。

3.2.2 微调优化目标

微调阶段的最终优化损失是场景特定损失和全局辅助损失的组合。

场景特定损失:与其他匹配任务类似,调整成对损失以优化微调匹配任务。对于一个场景s, 微调阶段的第k个训练样本是一个三元组。u表示用户表征向量,p和n分别表示相应的正商品向量和商品项向量。使用负采样策略从整个候选集中随机抽样负样本。场景特定损失函数定义为下式,

全局辅助损失:在微调阶段,如图5所示全局共享网络为每个样本输出一个表征向量,全局共享网络使用来自所有场景的样本进行训练。因此,输出可以被视为全局视角中的用户或商品表征。在全局范围内对用户和商品的相似性进行建模有利于提升性能。因此,引入了全局辅助损失,定义为下式,

总损失为

4. 结果

f6c1a0bb6efcd972bafd844d502a37c8.png

image.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值