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

文章插图
【精准推荐的秘术:阿里解耦域适应无偏召回模型详解】我们这一次探索的工作就是如何合理地利用流行度偏差,要想合理地利用流行度偏差,需要解决一个难点:“如何提取无偏且学习充分的商品表示?”针对流行度分布差异,我们需要从商品 ID 中解耦出真实内容向量和流行度向量 。针对长尾分布差异,我们借鉴了域适应的范式将整体分布对齐,借鉴了对比学习的范式将实例分布对齐 。
先来介绍 base 模型的基本结构,base 模型其实就是一个经典的双塔模型 。接下来详细介绍下我们是如何解决前面提到的两个问题的(流行度分布差异和长尾分布差异) 。
1、特征解耦模块缓解流行度分布差异

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

文章插图
接下来,我们想要解决长尾分布差异的问题 。
我们借鉴了迁移学习的思想,实现热门商品和长尾商品的分布对齐 。我们在原来的双塔模型中,引入了一个未曝光商品,使用了 MMD 的损失函数(如上图左上所示),这个损失函数希望热门商品域和长尾商品域的簇中心尽可能靠近,如上图右上示意图所示 。由于这种域对齐是无监督的,可能会产生负迁移,我们做了如下优化:曝光样本在域对齐损失上的梯度被停止,防止影响到任务损失;对于未曝光样本,引入精排分进行知识蒸馏 。
我们还借鉴了实例对齐的思想,希望可以学习得到更好的商品向量表示,主要思想就是有效共现次数越多的商品,向量表示越相似 。这里的难点是如何去构造 pAIr 。在用户有过往行为的商品序列中,天然存在这样的 pair 。以一个用户举例,一条样本包含了一个用户的行为序列和目标商品,那么目标商品和用户行为序列中的每个商品就能构成共现的 pair 。我们在经典的对比学习的损失函数的基础上还考虑了用户的兴趣多样性和商品频率,具体的损失函数公式可见上图中左下部分 。
我们可以看一个直观的示意图,如上图中右下所示,灰色的点是目标商品,橙色的点是用户的行为序列,蓝色的点是我们随机负采样得到的负样本 。我们希望借鉴对比学习的方法去约束用户行为序列中每个商品都和目标商品靠近 。
推荐阅读
- 盘点20多个强大且免费的数据源,任何人都能以此来构建AI
- 线程池的工作原则揭秘:如何合理管理线程数量?
- 超越了人类的创造力,首届纽约AI时装周带来了什么?
- QQ批量删除好友的图文教程
- Mysql的存储引擎有哪些?
- 10年前的显卡都流畅 《暗黑4》被曝移植苹果平台:iPad也能玩
- 王者荣耀新版百里守约出装推荐,最新出装铭文攻略
- 王者荣耀存在感非常低的三位英雄,我不说你可能都记不起来
- 一文看懂脑机接口未来的无限可能
- 一辆SUV的盲区到底有多大?竟能藏下75个孩子!
