0

0

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

王林

王林

发布时间:2023-06-05 08:55:02

|

1052人浏览过

|

来源于51CTO.COM

转载

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

一、场景介绍

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

首先来介绍一下本文涉及的场景—— “有好货”场景。它的位置是在淘宝首页的四宫格,分为一跳精选页和二跳承接页。承接页主要有两种形式,一种是图文的承接页,另一种是短视频的承接页。这个场景的目标主要是为用户提供满意的好货,带动 GMV 的增长,从而进一步撬动达人的供给。

二、流行度偏差是什么,为什么

接下来进入本文的重点,流行度偏差。流行度偏差是什么?为什么会产生流行度偏差?

1、流行度偏差是什么

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

流行度偏差有很多别名,比如马太效应、信息茧房,直观来讲它是高爆品的狂欢,越热门的商品,越容易曝光。这会导致优质的长尾商品或者达人创作的新商品没有曝光的机会。其危害主要有两点,第一点是用户的个性化不足,第二点是达人创作的新商品得不到足够的曝光,使得达人参与感降低,因此我们希望缓解流行度偏差。

从上图右边的蓝色柱状图可以看出,曝光 top10% 的商品在某一天中占据了 63% 的曝光,这证明在有好货的场景下马太效应是非常严重的。

2、为什么会产生流行度偏差

接下来我们去归因为什么会产生流行度偏差。首先,需要阐明我们为什么会在召回截断做缓解流行度偏差的工作。排序模型拟合的是商品的 CTR,它的训练样本包含正样本和负样本,CTR 越高的商品越容易获得曝光。但是在召回阶段,我们通常会采用双塔模型,它的负样本通常会通过两种方式产生,第一种是全局随机负采样,第二种是 batch 内负采样,batch 内负采样是将同一个 batch 取正样本的其它曝光日志当作负样本,所以它在一定程度上可以缓解马太效应。但是,通过实验我们发现,全局负采样实际的线上效率型效果会更好。不过,推荐系统中的全局随机负采样可能导致流行度偏差,因为它只为模型提供了正反馈。这种偏差可能归因于流行度分布差异和先验知识干扰,即用户倾向于点击更受欢迎的物品。因此,模型可能会优先推荐热门物品,而不考虑它们的相关性。

们也分析了流行度分布差异,如上图右边绿线所示,通过将商品按照曝光频率分组并计算每组的正样本平均分,发现即使所有样本都是正样本,平均分数也随曝光频率的下降而下降。推荐系统模型训练时存在流行度分布差异和长尾分布差异。模型会倾向于把流行度信息注入到商品的 ID 特征中,导致流行度分布差异。高爆品获得的训练次数远大于长尾商品,使得模型过拟合于高爆品,长尾商品难以得到充足训练和合理向量表示。如上图右边的 TSN 图所示,蓝点表示高曝商品的商品向量,而红点表示长尾商品的商品向量,显示出分布上的显著差异。而且如上图右边的红线所示,hit ratio 也会随着曝光数的降低而降低。所以,我们把流行度偏差的产生归因于流行度分布差异和长尾分布差异。

三、流行度偏差当前解决方案

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

当前业界的解决方案主要包括两种,分别是逆倾向评分(IPS)和因果推断。

1、逆倾向评分(IPS)

通俗来讲就是将主任务损失函数中高曝光概率商品的权重调低以避免过度关注于高曝光概率商品,从而可以更平均地关注整个正样本分布。但是,这种方法需要提前预测曝光概率,这种预测是不稳定的,容易失效或者波动较大。

2、因果推断

我们需要构建一张因果图,i 代表商品特征,u 代表用户特征,c 代表点击概率,这张图就表示给模型输入用户特征和商品特征,预测点击率。如果我们把流行度偏差也考虑到这个模型中,用 z 来代表,它不仅会影响点击率,还会影响商品的特征表示  i,因果推断的方法是尝试去阻断 z 对 i 的影响。

比较简单的方法是利用商品的一些统计特征单独得到一个 bias 塔,此时模型会输出两个分,一个是真实的点击率,另一个是商品的流行度分,在线上预测的时候会将商品的流行度分去掉,实现对流行度偏差的解耦。

第二种方法是将用户点击归因为两类,一类是从众兴趣,一类是真实兴趣,分别构建样本联合训练。相当于得到两个模型,一个模型去得到用户的从众兴趣分,一个模型去得到用户的真实兴趣分。因果推断其实也存在问题,它解决了流行度分布差异,但不能解决长尾商品缺乏训练数据的问题。当前的解决方案倾向于消除流行度偏见,但这对于需要“马太效应”来生存的推荐系统可能并不总是有益的。所以,我们建议不要完全去除推荐系统中的流行度偏差,因为流行的项目通常更优质,用户也有从众心理和真实兴趣两种心理,完全去除流行度偏差会影响用户从众兴趣的满足。应该合理利用流行度偏差,不加剧偏差。

四、CD2AN 基本框架

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

我们这一次探索的工作就是如何合理地利用流行度偏差,要想合理地利用流行度偏差,需要解决一个难点:“如何提取无偏且学习充分的商品表示?”针对流行度分布差异,我们需要从商品 ID 中解耦出真实内容向量和流行度向量。针对长尾分布差异,我们借鉴了域适应的范式将整体分布对齐,借鉴了对比学习的范式将实例分布对齐。

先来介绍 base 模型的基本结构,base 模型其实就是一个经典的双塔模型。接下来详细介绍下我们是如何解决前面提到的两个问题的(流行度分布差异和长尾分布差异)。

1、特征解耦模块缓解流行度分布差异

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

特征解耦模块是本文针对推荐系统中的流行度偏差问题提出的一种解决方案。该模块通过将物品向量表示中的流行度信息与属性信息分离开来,从而减轻流行度对物品向量表示的影响。具体地,该模块包括流行度编码器和属性编码器,通过多层感知器的组合学习得到每个物品的属性和流行度向量表示。这个模块的输入是物品的属性特征,例如物品 ID、物品类目、品牌等,如上图模型结构中的右边部分所示。这里会有两个约束,包括正交正则化和流行度相似度正则化,旨在将流行度信息与物品属性信息分离。其中,通过流行度相似度正则化,模块被鼓励将嵌入物品属性的流行度信息与真实流行度信息对齐,而通过正交正则化,模块被鼓励在编码中保留不同的信息,从而实现分离流行度信息和物品属性信息的目标。

我们还需要一个学习真实流行度的模块,如上图模型结构中的左边部分所示,它的输入主要就是商品的统计特征,然后经过一个 MLP 得到真实的流行度表示。

2、正则化缓解分布差异

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

接下来,我们想要解决长尾分布差异的问题。

我们借鉴了迁移学习的思想,实现热门商品和长尾商品的分布对齐。我们在原来的双塔模型中,引入了一个未曝光商品,使用了 MMD 的损失函数(如上图左上所示),这个损失函数希望热门商品域和长尾商品域的簇中心尽可能靠近,如上图右上示意图所示。由于这种域对齐是无监督的,可能会产生负迁移,我们做了如下优化:曝光样本在域对齐损失上的梯度被停止,防止影响到任务损失;对于未曝光样本,引入精排分进行知识蒸馏。

我们还借鉴了实例对齐的思想,希望可以学习得到更好的商品向量表示,主要思想就是有效共现次数越多的商品,向量表示越相似。这里的难点是如何去构造 pair。在用户有过往行为的商品序列中,天然存在这样的 pair。以一个用户举例,一条样本包含了一个用户的行为序列和目标商品,那么目标商品和用户行为序列中的每个商品就能构成共现的 pair。我们在经典的对比学习的损失函数的基础上还考虑了用户的兴趣多样性和商品频率,具体的损失函数公式可见上图中左下部分。

我们可以看一个直观的示意图,如上图中右下所示,灰色的点是目标商品,橙色的点是用户的行为序列,蓝色的点是我们随机负采样得到的负样本。我们希望借鉴对比学习的方法去约束用户行为序列中每个商品都和目标商品靠近。

3、有偏无偏联合训练

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

以上模块有效地得到了商品的无偏内容表示和解耦的流行度表示,我们应该怎样去应用呢?我们利用了无偏模型和有偏模型联合训练的方式,无偏商品向量可以基于解耦模块及正则化提取,为了能够利用流行度信息,我们还引入了流行度特征,有偏模型只会继承流行度偏差,不会加剧偏差。线上服务部分,如上图右边所示,我们将无偏的商品表示和有偏的商品表示通过参数 α 融合起来得到线上的商品表示,这样即可通过用户向量来召回商品,这个 α 是调节召回关注流行度信息的程度。

4、离线及线上实验

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

上图中展示了这个模型离线及线上的效果。在离线实验中,我们引入了 C-Ratio 的指标,来衡量召回结果中有多少商品是高曝光商品。通过离线实验我们可以看出各个模块都有一定程度的贡献。无偏模型在线上效率指标方面并没有收益,说明流行度信息是有用的,我们还是需要使用有偏模型去利用流行度信息。

精准推荐的秘术:阿里解耦域适应无偏召回模型详解

最后,我们对模型结果做了可视化的展示。我们发现新的模型结构的确可以将高爆商品和长尾商品的分布记性对齐,解耦出来的流行度表示向量和商品无偏的内容表示几乎是没有交集的,并且同类目的商品能有更紧密的联系,通过对 α 的调整,可以让模型有方向地去拟合用户的从众兴趣和真实兴趣。

今天的分享论文标题是《Co-training Disentangled Domain Adaptation Network for Leveraging Popularity Bias in Recommenders》。

五、问答环节

Q1:未曝光样本是怎么加入到样本中的?

A1:离线生成的,针对一条样本,我们可以拿到目标正样本及对应的类目,然后离线地随机采样出若干个和目标正样本相同类目的商品,挂载到训练样本中。

Q2:引入同类的未曝光样本,会不会增加学习难度?

A2:引入的未曝光样本是没有标签的,是通过无监督的方式来进行分布对齐,可能会存在负迁移的情况,我们用了两个技巧来解决这个问题:曝光样本在域对齐损失上的梯度被停止,防止影响到任务损失;对于未曝光样本,可以引入精排分进行知识蒸馏。

Q3:未曝光样本获取精排分成本会不会很高?

A3:离线对样本用精排模型打一遍分,作为特征来使用,性能还好。

Q4:未曝光样本是进精排未曝光的样本吗?

A4:不是,这样大概率还是一个高爆品,我们使用的是全局同类目下随机采样的结果。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

1

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

39

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

140

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

47

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

90

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

226

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

506

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

170

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号