一、首先从数量上看下这几个阶段
二、粗排漏斗分析
1:学习目标
学习目标是“精排的输出”(可能只是曝光+点击,有时也会用到unpv样本),尽量保证粗排和精排的效果一样,取topk才能会精排缓解压力。就是因为精排的量级太大,才引入的粗排
2:衡量指标
(1) NDCG,排序相似性的指标,看精排的排序结果和粗排有多相似
(2) 粗排的召回率/重叠率,粗排的topk和精排的topk有多大占比
3:模型
(1) 经典的内积双塔模型(pointwise),也是精准值预估技术,缺点有下面这几个
-- 不能使用交叉特征(向量版wide-deep一定程度解决了交叉特征,但是受限于rt,也不会太复杂)。特征表达上是缺失的,因为user跟item解耦之后,很难使用一些交叉特征,一旦用了交叉特征,有多少item就得进行多少次预估,这违背了我们使用双塔模型的初衷
-- 它在结构上也是有缺陷的,我们回忆一下上面这幅框架图,可以看到user跟item的交互非常少,这会限制它的表达能力的上限
-- 实时性差,冷启动也就不好
-- user、item向量版本会有差异
(2) 集合选择技术
针对不同目标,构建不同的通道,选取不同集合,再合并(多通道方法)
listwise方法,如lamdaMART,训练的时候考虑整个集合,指标NDCG最大化
序列生成办法,先用“评估器”对所有item打分选择top1,作为集合中的第1个商品,再挑选第2个和第1个组合,并用“评估器”打分,如此循环,找到最优集合
优点:算力消耗非常小、性能非常好
缺点:它的缺点是本身的表达能力是有限的,可以明显预估到它的天花板
(3) 粗排内积模型 与 精排模型,进行模型蒸馏训练
(4) COLD
并非是内积模型,而是pointwise模型,特征上支持(user、item、交叉),只不过为了平衡算例,用SE-BLOCK方法选取了一批特征
模型结构无限制
为了加速,采用很多工程优化(分包、GPU并行计算包中item的特征,float16加速)
实时训练
GAUC、RT等指标进行权衡
4:粗排和召回、精排相比
粗排夹在召回跟精排之间,它的定位是什么?相比于召回,粗排更强调排序性,也就是更强调topk内部的排序关系;相对于精排,粗排更强调性能,因为精排通常有非常复杂的网络结构,非常大的参数量,这也意味着它在实际应用的过程中比较难去处理一个较大规模量级的候选集的打分,这时粗排就必须要解决这个问题,所以它在性能上会相较于精排有更多的要求
三、召回漏斗分析
1:学习目标
(1) 相关性 -> 向量模型召回(U2I)
(2) 兴趣(多样性很重要) -> I2I
(3) rpm最大化,在训练模型时,loss部分加上点击loss、下单loss、相关性loss
2:衡量指标
类似于粗排