流式更新索引一致性问题

发布于 2024-06-06  630 次阅读


召回流式更新的目的:加强学习物品表征与用户表征的实时性,尤其是近线模型更新间隔产生交互行为的用户和物品的表征。

召回流式更新的问题

  • 向量召回特有问题:存量物品索引的与在线模型的一致性问题,尤其是存量索引版本和在线模型版本时间差距越来越大以后,在线模型的用户向量空间和历史版本物品向量空间大幅度偏差。
  • 推荐模型在线学习共有问题:

    • 样本分布与离线不一致:在线学习的样本是实时获取的,所以实时样本无法和离线样本一样进行全局 shuffle。这使每一时刻下的实时样本分布与全局整体分布有很大差异。简单增量训练(直接 load 旧模型,train 新数据的方式),很容易产生灾难性遗忘(Catastrophic Forgetting)
    • 正样本延迟:在实时流式样本中,通常正例会延迟于负例到达(召回中负样本基于采样的,影响较小)

期望:在保证实时性的同时,使得模型的学习更加稳定,存量物品索引与在线模型输出的用户特征保持尽量正确的距离关系。

方案(流式增量+天级别全量)

  • 不同层学习率的分级、部分层冻结
  • 新用户embedding和物品存量以及物品新的embedding分数拉近(MSE),这个辅助损失的反向传播可以只针对于用户塔,保证物品塔的更新幅度大一些
  • 模型多版本与索引多版本维护

腾讯-推荐系统在线学习方案

  • 参数冻结:冻结模型的 FC 层、Cross 层等交叉结构的参数,令其不进行更新,仅使用实时样本更新 Embedding 层的参数
  • 样本回放:从昨天的样本中根据一定策略,选取部分离线样本,与在线实时样本一起给模型进行增量训练
  • 蒸馏学习:采用离线模型作为 teacher,实时训练模型作为 student,在 loss 上除了 student 的 Logloss 损失,添加了 teacher 与 student 之间的交叉熵损失,两个损失的权重比为 1:0.2

分钟级在线深度学习在手淘信息流排序模型中的探索与实践

  • 延迟反馈建模:针对正样本delay问题
  • 特征mask对应梯度置为0:一些时间特征比如week和hour在流模型中统一将这类特征的值和梯度置0(批模型不改),以保障模型的稳定性。

实时增量学习在云音乐直播推荐系统中的实践

  • 样本归因:针对正样本delay问题
  • 特征准入:针对流式样本中的时间偏差特征与低频不置信特征设计了一套特征准入方案来缓解这种现象,主要包括 feature freezing、特征硬准入、动态 L1 正则的软准入方式。

面向ACG编程