美文网首页
负样本为王:评Facebook的向量化召回算法

负样本为王:评Facebook的向量化召回算法

作者: 舟舟洋 | 来源:发表于2020-08-07 09:55 被阅读0次

    文章亮点:

    1.提出“曝光未点击”在召回场景中的鸡肋作用
    2.提出筛选负样本的方案(主要是筛选hard负样本的三种方案)
    3.将hard负样本训练模型并行、串行运用到场景中

    召回和排序在场景中的作用:

    1.排序:可用高复杂模型
    2.召回:可用低复杂模型,且有很多模型竞争

    简述Facebook EBR模型

    1.模型的优化:
    使用FAISS计算User和Item向量
    2.Loss的优化:
    loss=max(0,margin-<u,d_+>+<u,d_->);
    <u,d_+>,<u,d_->分别代表正负样本与user计算的score
    BPR loss=$log(1+exp(<u,d_->-<u,d_+>))要比一般的Hinge loss好;即鼓励margin优势越大越好。
    3.离线评估
    出现线下不明显,线上提升明显的模型,一个置信度高的离线评测手段仍然是召回工作中的痛点。

    重中之重是"筛选(负)样本"(本文的重点

    1.破除了“召回照搬排序”的迷信,明确指出,不能(只)拿“曝光未点击”做负样本
    2.提出了easy negative/hard negative的样本分级思路
    3.提出了增强hard negative的思路(也不算首创了,和百度Mobius的思路几乎一模一样,也算英雄所见略同了)

    为什么不能(只)拿"曝光未点击"做负样本?

    排序模型:在比较优质的数据中挑选更加优质的数据
    召回模型:在好坏混杂的数据中分离出好/坏样本,并进行筛选;
    如果只用曝光未点击的数据,有以下缺点:
    1.该数据较优质,已经经过上一次排序,召回筛选,只能在较优质与优质文章中筛选;
    2.未见过坏样本数据,导致训练强度不够,导致训练出结果偏差较大。
    本质为线上和线下样本分布不一致。

    拿随机采样做负样本

    为防止热门绑架个性化数据
    1.热门点做正样本,降采样;做负样本,过采样;

    挖掘Hard Negative增强样本

    样本分三类:

    1.正样本(用户点击),
    2.easy 负样本(随机筛选,可很好鉴别出来),
    3.hard负样本(能够增加模型训练难度,可提升模型关注细节能力的负样本)

    筛选hard负样本方式:

    1.增加属性相似负样本(例如同城Item);
    2.增加被拒绝的负样本;
    3.自己挖掘负样本:
    利用上一版本模型召回算出101-500的文章作为负样本;
    Online样本集:
    一个batch中所有user与所有d_+的cross join
    Offline样本集:上一版本的召回模型过一遍历史数据。
    easy:hard=100:1

    不同难度的模型相互融合:

    用不同难度的negative训练不同难度的模型,再做多模型的融合。

    并行融合

    不同难度的模型独立打分,最终取Top K的分数依据是多模型打分的加权和。
    线上召回用Fassis时:embedding = model_weight1 * embedding1 :+ model_weight2 * embedding2 :+ model_weight3 * embedding3 (拼接)
    挖掘数据出的hard负样本训练的模型+easy负样本训练的模型加起来评判效果最好

    串行融合

    通过easy模型初选,hard模型进行再次筛选

    全链路优化

    需要优化排序的结果

    "曝光未点击"就是鸡肋

    曝光未点击在召回作为正、负样本、并行、串行模型都无效果,在召回中十分鸡肋;
    原因:推荐系统认为用户会喜欢,但用户却不喜欢;

    引用:
    https://zhuanlan.zhihu.com/p/165064102?utm_source=ZHShareTargetIDMore&utm_medium=social&utm_oi=28434143117312

    相关文章

      网友评论

          本文标题:负样本为王:评Facebook的向量化召回算法

          本文链接:https://www.haomeiwen.com/subject/pidsrktx.html