返回
Featured image of post 推荐系统中的样本采样问题

推荐系统中的样本采样问题

正负样本不均衡

数据增强

通过对数据进行变换,生成更多的样本,以增加样本多样性。

  • 在图像领域的应用:
    • 旋转缩放翻转:通过对图像进行几何变换,生成新的样本。
    • 加噪:在图像中添加噪声,模拟真实场景中的不确定性。
    • 颜色变换:调整图像的亮度、对比度等,增加样本的多样性。

过抽样

  • 定义:通过增加少数类样本的数量来平衡数据分布。
  • 方法
    • 简单复制:直接复制少数类样本,但可能导致模型过拟合。
    • SMOTE(Synthetic Minority Over-sampling Technique):通过对少数类样本进行插值,生成新的合成样本。
  • 优点:增加少数类样本数量,缓解样本不均衡问题。
  • 缺点:可能导致过拟合,尤其是简单复制样本时。

 降抽样

  • 定义:通过减少多数类样本的数量来平衡数据分布。
  • 方法
    • 随机删除多数类样本。
    • 使用聚类方法,从多数类样本中选择代表性样本。
  • 优点:减少样本数量,降低计算复杂度。
  • 缺点:可能丢失重要信息,尤其是随机删除样本时。

改变正负样本的惩罚权重

  • 定义:通过在损失函数中引入权重,调整模型对不同类别样本的关注程度。
  • 方法
    • 加权交叉熵损失:对少数类样本赋予更高的权重,对多数类样本赋予较低的权重。
    • Focal Loss:一种改进的损失函数,通过调整样本的权重,使模型更加关注难分类的样本。
      • 公式:Focal Loss(p_t) = -α_t * (1 - p_t)^γ * log(p_t),其中 p_t 是模型预测的概率,α_t 是类别权重,γ 是调节因子。
  • 优点:无需修改数据分布,直接通过损失函数调整模型。

不同活跃度用户样本不均衡

问题:中长尾用户的样本数量较少,而高频用户的样本数量较多,导致训练后的模型容易偏向高频用户,对中长尾用户的预估准确性较低。

方案: - 对高频用户进行降采样,减少高频用户的样本数量,从而平衡中长尾用户和高频用户的样本分布。 - 模仿YouTube的做法,对每个用户采用相同的样本数量,确保数据集中各用户的样本分布更加均衡。

各个环节正负样本构建

精排(Ranking)

  • 正样本:真实点击(用户实际点击的样本)。
  • 负样本:真实曝光但未点击(用户看到但未点击的样本)。
  • 特点
    • 精排阶段的样本是用户实际曝光和点击的样本,样本质量较高。
    • 精排模型的目标是 区分比较感兴趣的和非常感兴趣的,因此负样本是曝光未点击的样本。

粗排(Pre-Ranking)

  • 正样本:与精排一致,为真实点击。
  • 负样本
    • 一般情况下,与精排一致,为真实曝光未点击
    • 问题:粗排训练样本仅覆盖精排下发的样本,而实际线上打分样本分布更广(包括未下发的样本),这会导致训练样本与线上打分样本分布不一致。
    • 解决方案:从精排未下发的样本中采一部分,添加至粗排模型的训练负样本中。
      • 这些未下发的样本通常是精排给分较低的样本,可以视为粗排的 Hard 负样本
      • 这种做法能够提升粗排模型的效果,使其更加贴近线上实际分布。

召回(Retrieval)

  • 正样本
    • 一般情况下,为真实点击。
    • 在某些场景下,甚至会使用精排排序高的样本作为正样本(曝光点击的样本是其子集)。
  • 负样本:随机负采样,而不是曝光未点击的样本。
    • 原因
    • 召回阶段的目的是 区分不感兴趣的和比较感兴趣的,而精排阶段的目的是 区分比较感兴趣的和非常感兴趣的
      • 曝光但未点击的样本,已经属于 比较感兴趣 的范畴,不适合作为召回的负样本。
      • 因此,召回的负样本通常是通过随机采样的方式,从未曝光的样本中选取。 - 特点
      • 召回阶段的负采样通常基于全局样本池,而不是局限于用户实际曝光的样本。
      • 在某些情况下,曝光但未点击的样本甚至可以被视为召回的正样本,因为其已经接近用户兴趣。

总结对比

阶段 正样本 负样本 目标
召回 真实点击(或精排排序高的样本) 随机负采样(从未曝光的样本中选取) 区分不感兴趣的和比较感兴趣的
粗排 真实点击 真实曝光未点击 + 精排未下发的 Hard 负样本 贴近线上实际分布,提升打分准确性
精排 真实点击 真实曝光未点击 区分比较感兴趣的和非常感兴趣的

负采样方式

推荐系统召回负样本专题(1) 负样本的构建艺术

问题由来

物料流向路径为物料库空间 -> 召回空间 -> 曝光空间 -> 点击空间

按照“样本应服从总体分布”原则,召回模型的训练样本应与线上分布保持一致。召回模型的职能为从整个物料库中筛选用户喜好的物料。因此其正样本应来源于代表用户喜好的点击空间,负样本应来源于物料库中除点击空间外的其他空间,即上图中曝光未点击 space A + 召回未曝光 space B + 未召回 space C。在此背景下产生各类负样本优化问题。

全局负采样

点击空间相对物料库空间占比很小,space A + space B + space C ≈ 物料库空间。由此业内通常在物料空间中随机采样来作为负样本。但该负采样方式会引入偏差,如流行度偏差、假负样本、类别偏差等。

流行度偏差

推荐系统在运行过程中,受多种外部因素影响,例如 曝光度机制口碑效应促销活动 以及 物料质量 等。这些因素共同作用,使得推荐系统难逃“二八定律”的影响:即 20% 的热门物料占据了 80% 的用户交互。用户对物料的交互数据通常呈现长尾分布,即少数热门物料吸引了大量用户交互,而大量冷门物料则鲜少被触及。

在这种长尾分布的数据下,模型通过拟合训练数据会继承这种偏差,进而产生 流行度偏差(Popularity Bias),也称为 高热偏差。具体表现为,模型倾向于推荐热门物料,而忽视个性化需求。这种偏差会进一步在推荐反馈闭环中被放大:

  1. 模型基于用户历史交互数据推荐热门物料。
  2. 用户与推荐列表中的热门物料进一步交互。
  3. 新增用户交互数据被用于更新模型,导致模型更加倾向于推荐热门物料。

这种闭环机制会逐渐加剧流行度偏差,形成“马太效应”:热门物料越来越热,冷门物料越来越冷。最终,推荐系统可能完全失去个性化,沦为“热门排行榜”,用户的长尾需求被彻底忽视。

环节的方法可以通过负样本采样概率正比于热门程度,例如3/4次方

推荐系统流行度偏差专题(1)深入理解流行度偏差

假负样本

负样本中可能包含用户实际感兴趣的物料,这些物料被错误地标记为负样本。

UFNRec: Utilizing False Negative Samples for Sequential Recommendation里面提到了FMR和FCR两种方式来检查假负样本,根据消融实验证明FMR的贡献会更大

FMR(False Negative Mitigation via Re-labeling)

核心:通过标签反转解决召回模型中的假负样本问题。

  1. 模型训练
    • 训练模型至损失稳定,捕捉用户行为。
  2. 识别假负样本
    • 记录预测得分持续高于正样本的负样本,视为假负样本。
  3. 标签反转
    • 将假负样本标签从 0 反转为 1
  4. 重新训练
    • 使用更新标签继续训练,学习潜在兴趣。

FCR(False Negative Correction via Consistency Regularization)

核心:通过一致性正则化修正假负样本预测,基于教师-学生框架

  1. 生成教师模型
    • 使用 指数移动平均(EMA) 生成稳定教师模型。
  2. 生成软标签
    • 教师模型为假负样本生成软标签,反映潜在兴趣。
  3. 计算一致性损失
    • 计算学生模型预测与教师软标签间的一致性损失(如KL散度)。
  4. 模型优化
    • 最小化一致性损失,使预测接近教师模型,提升鲁棒性。

类别偏差

物料库空间中各类别分布不均,随机采样方式导致负样本中大类别占主导。模型由此过度打压大类别物料,倾向于小类别物料。

Fairly Adaptive Negative Sampling for Recommendations

  • 项目组公平性感知
    • 通过感知模型在每个步骤中的不公平状态(即不同项目组之间的召回性能差异),为调整组级别的采样分布提供指导。
    • 使用组二元交叉熵(G-BCE)损失作为代理指标来衡量每个项目组的召回性能,从而间接优化项目组公平性。
  • 自适应动量更新组采样分布
    • 根据感知到的组性能差异,动态调整每个组的负采样概率,以减少不同组之间的召回性能差异。
    • 采用自适应动量更新策略,结合历史梯度信息,以平滑优化过程中的波动,提高学习稳定性。
  • 负采样分布混合
    • 将公平感知的采样概率与重要性感知的采样概率相结合,通过混合机制同时考虑公平性和负样本的代表性。
    • 重要性感知的采样概率基于用户和项目之间的相关性,选择更有可能的负样本来增强特征表示的学习

Batch内负采样

batch 内负采样,指从 batch 内除本样本外的其他样本中随机选择物料作为负样本。该采样方法只在 batch 内做文章,与全局负采样相比训练成本更低。与全局采样中负样本均匀分布不同,batch 内样本通常为曝光样本或只为正样本,因此 batch 内负采样可实现对高热物料的打压,但有时打压过度。batch 内负样本中无法包含未曝光的低频物料,会造成模型对低频物料精度较差。针对以上缺点,Batch 负采样的改进方式如下:

Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

  • 重要性采样与概率估计:论文引入了重要性采样(importance sampling)的思想。具体来说,需要估计每个项目在数据流中被采样的概率。这里的关键是,通过巧妙利用全局训练步数(global step)来实时、动态地估计项目的频率。通过维护一个哈希数组,记录每个项目最后一次出现的步骤,并计算其出现的时间间隔,从而推断出该项目的采样频率。
  • LogQ校正:一旦得到了项目的采样概率,就可以将其用于校正模型的损失函数。具体做法是,对每个内积结果(logit)减去该项目采样概率的对数,从而调整softmax概率。这种方法被称为logQ校正,它能够有效减少采样偏差,使得模型在训练过程中更加关注那些被低估的长尾项目。

Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations

  • 引入索引数据流:除了当前批次中的 item,还引入了全局候选 item 集合。该集合被称为索引数据流,包含来自整个 item 语料库中的 item。这些 item 可以从最新的快照中提取,并带有相应的内容特征。
  • 均匀采样与 batch 内采样的混合:在训练时,除了从当前批次采样负样本(batch 内负采样)外,还额外从索引数据流中均匀采样部分 item 作为负样本。这两部分负样本共同组成了训练中的负样本集合。这种混合策略既保留了 batch 内采样的高效性,又通过引入全局范围的均匀采样减轻了选择偏差,使得模型能够接触到更广泛的 item,特别是长尾 item。

Hard负采样

负样本应来源于 space A + space B + space C,其中 |C| » |B| > |A|,A + B 可能只占物料空间的千分之一。尽管随机负采样有概率采集到 A + B 的物料,但其占比过低,该类型物料被海量 C 物料淹没,由此从训练效果来看 A + B + C ≈ C。但从与正样本相似度而言 C « B < A,若只含有与正样本差异大的 C,将导致模型无法捕捉用户细粒度喜好。

以用户喜欢郭德纲相声而不喜欢郭德纲电影为例,用户观看郭德纲相声后可将其作为正样本。但由于负样本来源于物料库随机采样,与正样本八竿子打不着,模型只能模糊参照正样本对物料打分。“郭德纲电影”因与“郭德纲相声”相像也会有高打分值而被推荐给用户,但用户其实并不喜欢。另一方面,随机负样本过于简单,模型分类难度低,AUC 动则 95%+,沿增加拟合能力迭代模型性价比很低。为了能在复杂模型上“讲故事”,需要引入 hard 负样本增加分类难度。

为解决以上问题,挖掘与正样本相像的 hard 负样本一直是业界的热点。一类是利用全链路信息挖掘,即调整 space A + space B 的样本权重以增加其影响面。一类使用模型打分挖掘,选择与正样本打分相近但不太相近的的物料作为 hard 负样本。一类使用业务逻辑挖掘,比如在与正样本相同物料类别内随机负采样。值得注意的是,召回模型的负样本需仍以 C 为主,以保证训练样本与线上分布的一致性。

UMA2:Re-weighting Negative Samples for Model-Agnostic Matching

  • UMA2 将负样本分为三个不同的空间:
    • Space A:暴露但未点击的样本(Exposed but Unclicked)。
    • Space B:召回但未暴露的样本(Recalled but Unexposed)。
    • Space C:整个空间但未被召回的样本(Entire but Unrecalled)。
  • 负采样去偏网络(NSDN)
    • UMA2 引入了一个名为 Negative Samples Debias Network (NSDN) 的模块,用于对不同空间的负样本进行加权处理。NSDN 的核心思想是利用 Inverse Propensity Weighting (IPW) 方法,通过对负样本进行加权来减少样本选择偏差(Sample Selection Bias, SSB)。
  • 通过两个辅助任务预测概率:
    • Entire→Recall:预测从整个空间到召回空间的概率 $P_1$。
    • Recall→Exposure:预测从召回空间到暴露空间的概率 $P_2$。
  • 加权处理: - 对于 Space B 中的负样本,通过乘以权重 $1/P_1$ 来调整损失函数中的权重。
    • 对于 Space A 中的负样本,通过乘以权重 $1/(P_1 \cdot P_2)$ 来调整损失函数中的权重。
    • 对于 Space C 中的负样本,保持等权重处理。

关于未曝光样本负采样的作用

如果不针对未曝光样本进行负采样,可能会引发一些问题。具体来说,那些未被更新或者曝光次数较少的item,其embedding可能会均匀地分布在嵌入空间的各个角落。在这种情况下,对于给定的某个query的embedding,其附近很有可能会存在一些未被更新或长尾的item。这种分布会导致召回结果的可信度降低。

通过引入未曝光样本的负采样,可以在模型训练过程中有效避免上述问题。

具体机制如下:对于每一个query的embedding,负采样会推动那些未曝光或少曝光的item远离该query的embedding区域。这样一来,这些未曝光或少曝光的item被召回的概率就会大大降低。

由此可见,全局负采样的主要目的是提升召回模型的精度,而不是为那些历史曝光较少的item提供更多的曝光机会。恰恰相反,这种做法会进一步抑制这些item的曝光机会。


如何提高未曝光或少曝光item的曝光机会

为了提升未曝光或少曝光item的曝光机会,可以采取以下两种策略:

对item的记忆型特征做特征粒度的dropout

记忆型特征是指那些缺乏泛化能力的特征,例如物品ID。 这些特征无法将其携带的知识泛化到其他物品上。在常规的模型结构中,这类特征往往会导致特征重要度的长尾分布,进而使得模型的偏好也呈现出长尾分布,即模型更倾向于推荐曝光次数较多的item。

为了解决这一问题,可以在训练过程中对记忆型特征进行特征粒度的dropout。具体来说,这种方法会随机丢弃某些记忆型特征,从而迫使模型更多地依赖泛化型特征进行学习。 这种方式可以有效减少模型对高曝光item的依赖,提升未曝光或少曝光item被召回和推荐的机会。

使用门控网络

另一种方法是引入门控网络架构。在这种方法中,item的特征被分为记忆型特征和泛化型特征两组,每组特征分别通过一个子网络进行学习和提取。最后,通过一个门控网络将两个子网络的输出进行融合。

门控网络的输入是一个特殊的子网络,它的输入特征主要是item的各种行为统计信息,例如曝光次数、点击次数等。通过这种方式,门控网络可以动态地权衡记忆型特征和泛化型特征的贡献,从而在推荐过程中平衡高曝光item和低曝光item的权重,为未曝光或少曝光item提供更多的曝光机会。


热门打压

关于热门物品的探讨

热门物品是否一定要打压?这个问题需要从多个角度来考虑。如果最终推荐给用户的内容全部是热门物品,这显然是不理想的,因为会影响冷门物品的曝光、用户兴趣的多样性以及内容创作者的积极性。然而,在某些场景下,热门物品并不适合被打压。例如,当一个热点事件或新梗出现时,用户可能会非常关注和搜索相关内容。此时,打压热门内容可能会降低用户体验。此外,如果一个热门物品被推送给某个用户,但用户并未点击,这个样本可以作为非常有效的Hard负样本,帮助模型更好地学习用户偏好。

召回阶段如何打压

  • 训练样本热度降权
    • 核心思想是:
      • 热门物品作为正样本时进行降采样,减少其在训练数据中的比例
      • 热门物品作为负样本时进行过采样,增加其作为负样本的概率
    • 具体方法:
      • Batch内采样:在同一个Batch中,热门物品被选为负样本的概率更高
      • 全局负采样:在全局负采样时,热门物品被选为负样本的概率与其热度成正比
  • 增加召回通路
    • 通过引入更多召回通路(例如基于内容的召回、基于协同过滤的召回等),提升候选集的多样性,避免单一召回通路导致的过度集中
    • 注意:多路Merge后的结果通常不需要再进行热门打压,而在单路内部(如Embedding召回或协同过滤召回)可能需要热门打压,因为高点击物品的表征可能与许多其他物品的表征相似,导致召回结果过于集中

排序阶段如何打压

  • 样本排序阶段降权
    • 在排序阶段,可以对热门物品进行降权处理,降低其排序优先级
  • Score扶持
    • 对非热门物品进行打分扶持,具体方式为:每个物品的最终得分 = 模型排序分 + 系统扶持分。系统扶持分可以根据物品的热度和多样性需求动态调整
  • 去偏处理
    • 类似于处理Position Bias和冷启动问题,在模型中引入热门偏置的学习机制,明确建模热门物品对用户行为的影响,从而在排序阶段对热门偏置进行校正
© 2023 - 2025 壹壹贰捌· 0Days
共书写了265.7k字·共 93篇文章 京ICP备2023035941号-1