数据稀疏场景下 Embedding 学习策略综述
在推荐系统中,冷启动或长尾分布是一个长期存在的核心挑战。模型在处理数据量较少的用户(User)或物品(Item)时,预测效果往往显著下降。造成冷启动样本预测效果不佳的重要原因之一,是冷启动样本积累的数据稀缺,不足以通过常规训练得到高质量的 Embedding 表示。Embedding 是将 User 或 Item 的 ID 映射到一个可学习的连续向量空间的过程,若该向量无法准确反映用户兴趣或物品属性,将直接导致模型在该部分样本上的召回与排序能力受损。
本文整理了 2020 年以来 SIGIR、Multimedia 等顶级会议中,围绕如何在数据不充分的情况下生成高质量 Embedding 表示的工作。主要集中在推荐系统领域的 User 和 Item Embedding 生成,解法涵盖了域自适应(Domain Adaptation)、变分自编码器(VAE)、对比学习(Contrastive Learning)、引入用户历史行为序列等多种技术路径。
1. 利用域自适应解决冷启动问题
利用 Domain Adaptation (DA) 解决长尾问题的典型论文是 ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performance (SIGIR 2020)。其核心思路是通过特征分布对齐和用户反馈信息,利用 DA 技术将尾部 Item 的特征分布向头部 Item 靠拢。
1.1 问题定义与假设
本文旨在解决长尾 Item 的预估准确性问题。长尾 Item 指的是展现机会较少、曝光频率低的物品。由于模型在这部分 Item 上学习不充分,会导致推荐过程中无法准确实现长尾 Item 的推荐,进而进一步恶化长尾 Item 的学习,形成马太效应。
文章提出了一个核心假设:无论一个 Item 是否属于长尾,它们的一些底层属性信息是有关联的。例如,奢侈品类型的 Item 价格普遍较高,价格特征与品牌的关系比与材质的关系更紧密。这些特征之间的关联规律是可以从头部 Item 泛化到长尾 Item 上的。
1.2 域自适应框架
文章主要采用 Domain Adaptation 的思路对齐头部 Item 和长尾 Item。具体而言,将头部 Item 视为源域(Source Domain),将长尾 Item 视为目标域(Target Domain)。整体的损失函数通常包含多个部分,主要包括以下逻辑:
- 预测误差损失 (Ls):衡量头部 Item 和对应 Query 的预测误差,保证基础推荐性能。
- 属性相关性一致性 (A2C):对应 LDA 部分,目标是缩小 Source Domain 和 Target Domain 特征关系的差异。由于希望长尾 Item 各个特征之间的相互关系与头部一致(例如价格和品牌特征的相关性模式),这个底层特征规律也会反映到上层 Item 特征表征向量上。实际计算时采用 mini-batch 方式采样一部分样本,计算两个 Domain 中 Item 向量各个维度之间的关系的一致性。
- 中心聚类损失 (LDCc):基于另一个假设,即如果两个 Item 相似,它们对应的用户反馈也应该是相似的,无论是否是长尾 Item。据此提出 Center-wise Clustering,让具有相似用户反馈的 Item 距离更近。
- 自监督伪标签 (LDCp):引入自监督学习思路,给未展现的 Item 分配一个伪标签。伪标签来自于上一版模型的预测结果,并通过正则化筛选出置信度足够高的伪标签进行训练,以增强模型对未见数据的泛化能力。
2. 根据属性特征生成 Embedding
根据属性特征生成 Embedding 是业内解决冷启动问题的常用做法。虽然对于冷启动样本,仅根据 ID 生成 Embedding 比较困难,但这些 User 和 Item 通常拥有比较丰富的泛化特征(Side Information),例如用户的年龄、爱好,商品的价格、品类等。因此可以将问题转换为学习一个映射函数,根据泛化特征生成 ID Embedding。
2.1 随机化训练与多专家网络
第一篇文章是 Recommendation for new users and new items via randomized training and mixture-of experts transformation (SIGIR 2020)。本文同时解决 Item 侧和 User 侧的冷启动问题,核心思路也是学习一个映射函数,根据 User 或 Item 的 Side Information 生成较好的 ID Embedding。主要包括三个核心点:
- 映射函数学习:一方面在模型中只输入 Side Information 生成 User 侧和 Item 侧的表示并计算 Loss;另一方面使用一个预训练的良好 ID Embedding 指导映射函数学习,通过 L2 距离约束映射函数产出的 Embedding 和预训练 Embedding 的距离,确保生成的向量空间语义合理。
- 随机化训练:上述框架可能存在一侧信息学得不好影响另一侧学习的情况。为了解决这个问题,在训练过程中会以一定概率选择是使用预训练的 Embedding 还是通过映射函数生成的 Embedding,以此增加训练的鲁棒性。
- 多专家映射网络:以往的映射函数通常是所有 User 或 Item 共用的,但实际上一个映射函数可能无法兼容所有情况。例如存在两个 User 的特征差别很大但兴趣类似的情况。为此,文中采用了多专家网络(Mixture of Experts)的思路,采用多个专家网络生成的 Embedding 进行组合得到最终表示,以适应不同特征的分布。
2.2 Meta Scaling and Shifting Networks
第二篇文章是 Learning to warm up cold item embeddings for cold-start recommendation with meta scaling and shifting networks (SIGIR 2021)。本文的核心思路是,具有相似特征、相同用户群体点击的 Item 应该更相似,因此利用了 Item 的属性等特征以及 User 的特征对冷启动 Item 做 Warm-up。
核心公式涉及 Scale + Shift 操作:
- Scale 操作:使用的是 Item 的属性特征生成的向量,用于调整初始 Embedding 的幅度。
- Shift 操作:使用的是 User 的 Embedding,用于平移初始 Embedding 的位置。
这两种信息同时作用到初始的 Item Embedding 上,实现冷启动 Embedding 的动态调整。
在具体的训练方法上,首先使用所有数据训练一个基础的推荐模型,然后固定住其他参数不变,使用非冷启动 Item 通过数据采样的方式模拟冷启动样本,在这些样本上单独训练 Scale、Shift 网络和 Item 的 Embedding。冷启动 Item 的 Embedding 使用预训练模型产出的全局所有 Item 的 Embedding 求均值得到,避免随初始化影响模型训练。
2.3 变分自编码器 (CVAE)
在今年的 SIGIR 上,Improving Item Cold-start Recommendation via Model-agnostic Conditional Variational Autoencoder (SIGIR 2022) 提出使用变分自编码器提升使用特征生成 ID Embedding 的效果。这篇文章专注于解决 Item 侧的冷启动问题,核心是利用 Conditional Variational AutoEncoder (CVAE) 对齐使用 Side Information 生成的 Item Embedding 和 Item 的 ID Embedding。
具体做法是,使用两个 CVAE 分别对 Item ID 生成的 Embedding 和使用 Item 的 Side Information 特征生成的 Embedding 进行自编码,在隐空间让二者分布距离最小。在训练过程中,同一个样本会先使用主模型预估 CTR,然后再走另一个自编码通道训练自编码器。
使用 CVAE 的好处在于:目标是学习 Side Information 到 Item Embedding 的映射,而模型在训练过程中得到的 Item Embedding 不一定完全反映的是 Side Information,还包含了和 User 的交互信息,这导致很难让 Side Information 和 Item Embedding 对齐。因此文中采用 CVAE,将 Item ID Embedding 压缩到隐空间去除噪声,再在隐空间和 Side Information 侧信息对齐,从而获得更纯净的特征表示。
3. 基于对比学习学习 Embedding
基于对比学习学习 Embedding 的典型工作是 Contrastive learning for cold-start recommendation (Multimedia 2021)。这里也借助了 Item 的属性特征,通过对比学习拉近同一个 Item 属性特征生成的 Embedding 和 ID 得到的 Embedding 的距离。
3.1 互信息优化
本文通过对 Item 表示最优化的推导,得出想要得到最优的 Item 表示需要同时优化两个互信息:
- User-Item 互信息:根据历史 User-Item 的交互行为优化 User-Item 的互信息。
- Item-Item 互信息:Item 的协同过滤信号得到的 Embedding 与使用内容信息得到 Embedding 的互信息。
3.2 对比学习实现
在优化上述互信息时采用的是对比学习的方法学习:
- User-Item 互信息:正样本为有交互的 User-Item Pair,负样本中适应随机采样的 Item。直接使用 ID Embedding 加上一个 Encoder 学习二者的协同过滤 Embedding。
- Item-Item 互信息:同一个 Item 为正样本,该 Item 和其他随机采样的 Item 为负样本。对比学习让通过内容生成的 Embedding 和协同过滤学到的 Embedding 相似,从而增强内容特征在推荐中的有效性。
4. 根据用户历史行为生成 Embedding
在今年 SIGIR 2022 中阿里发表了一篇文章 Transform Cold-Start Users into Warm via Fused Behaviors in Large-Scale Recommendation (SIGIR 2022),主要利用用户的历史行为数据解决冷启动 User 的问题。
4.1 融合行为序列
一个核心点是引入曝光未点击的数据扩充冷启动用户稀疏的历史行为。一般的做法是对冷启动 User 生成一个更好的 User ID Embedding。这种方法的缺点是生成 User ID Embedding 的网络是用非冷启动用户训练的,而冷启动用户和非冷启动用户的特征分布差异很大,导致非冷启动用户上训练的 Embedding 生成器在冷启动用户上可能并不适用。
本文的做法是使用用户的历史行为作为 Context 来 Warm up 初始的 User Embedding。具体做法是将用户历史行为序列和初始的 User Embedding 拼接后过 Transformer,实现 User Embedding 的转换。Transformer 结构能够捕捉长距离依赖,有效处理稀疏序列。
4.2 区分交互类型
由于冷启动 User 的历史行为稀疏,点击行为就更稀疏了,因此本文会将用户历史点击和曝光未点击的行为都加进来作为历史行为序列,缓解冷启动用户的历史行为序列稀疏问题。点击和不点击是两种不同类型的交互行为,为了区分这两种不同的交互行为,文中将行为序列中每个 Item 的 Embedding 做了一步 Label Encoding 的变换,用一个可学习的参数根据交互类型(点击或未点击)进行转换。
最后,本文在训练过程中会将冷启动 User 的 Embedding 以一定概率替换成一个全局可学习的冷启动 Embedding,帮助模型对齐冷启动和非冷启动的 ID Embedding 分布,减少分布偏移带来的负面影响。
5. 总结
本文主要围绕推荐系统中,如何给冷启动或长尾的样本生成好的 ID Embedding 表示这一问题,介绍了近年来 4 种思路 6 篇顶会工作。包括 Domain Adaptation、变分自编码器、对比学习、引入用户历史行为序列等多种类型的解法。
- 域自适应:通过特征分布对齐,利用头部数据辅助尾部数据学习。
- 属性映射:利用 Side Information 构建映射函数,结合 VAE 去噪或 Meta Learning 动态调整。
- 对比学习:通过最大化互信息,拉近内容与协同过滤表示的距离。
- 行为融合:利用曝光未点击数据扩充序列,结合 Transformer 和全局 Embedding 对齐分布。
在实际工程中,建议根据数据规模和业务场景选择合适的组合策略。例如,对于极度冷启动场景,可优先考虑基于属性特征的映射方案;对于有一定曝光但无点击的场景,融合行为序列的方法更为有效。未来随着大模型技术的发展,利用预训练语言模型提取更丰富的语义特征也将成为 Embedding 学习的重要方向。