@第4章 粗排之柔

粗排发展趋势

  • 模型复杂化指的是从双塔(偏向召回)变为MLP(偏向精排)​,甚至是其他更复杂的结构。#card

    • 这一条路径的发展和算力的发展息息相关,随着算力的提升,粗排可以运行更复杂的网络。

    • 说不定在未来,召回也是基于MLP的。

  • 样本松弛化有三方面的动机:#card

    • 其一是粗排召回的都是序敏感的,不必得到XTR(CTR、CVR等指标的概括写法)准确的值;

    • 其二是学习的目标和后面的环节联系更强;

    • 其三是目标松弛后对网络要求变低,反而更容易学好,带来提升。

4.1 粗排存在与否的必要性

  • 那为什么要多粗排这一个环节呢?在现有的召回+精排两级的结构下,实践中加一个粗排其实不一定能直接观测到提升,此时我们可以下结论说不应该加粗排吗?加一个额外的排序环节,应该需要两点支持 #card
    • (1)算力充足,加新环节后,整个推荐系统的并发和时延可以支持。

    • (2)对未来的信心,多了一个环节,前面的漏斗可以透出更多,后面的漏斗可以输入更少。

      • 此时相信后面的环节输入更少后,可以改出更复杂的结构进一步做出收益,或者前面的环节卸下了一个很大的负担,从而学得更好。

4.2 粗排复杂化的方法

  • 第一个方面是特征,输入特征可以不是精排的全部,而是最重要的一个子集。#card

    • 在Embedding+DNN范式中,特征变少,输入的嵌入的拼接就更窄,DNN的入口也会变小,再往下就会减少很多复杂度。

    • 对于特征筛选,COLD训练了一个SE(Squeeze-and-Excitation)的模块,和第3章所讲的注意力机制类似,随着训练的进行,注意力系数会揭示哪些特征是更重要的(系数大的更重要)。

    • 据此我们从高往低挑选想要的数量的特征,然后可以重新训练一个网络,就是所要的粗排。

  • 第二个方面是计算精度,在很多任务中都可以尝试用低一点的精度来做加速。#card

    • 原来的网络是float 32的计算精度,如果能够简化到uint 8来计算,那么时间消耗能够大大降低。

    • 反过来,如果时间不是太关键,也可以把网络变大,在时延差不多不变的情况下追求性能提升。

    • 在COLD中就是用float 16来替代float 32的,这个跨度是比较小的。

4.3  [[Pair Wise]] 与 [[List Wise]]

  • Pair-wise和List-wise的区别#card

    • Pair-wise表达的东西比较清晰,A比B大写出来就是最大化A-B的得分,

    • 而List-wise的损失函数表达的过程是间接的,需要借助归一化或有界化才能完整表达。

  • 缺点

    • Pair-wise的收敛相对于List-wise要慢,有拉扯的问题:#card

      • A大于B,可以是0.9大于0.8,也可以是0.2大于0.1,

      • 因此A和B的位置飘忽不定,必须学习大量的样本,反复振荡才能收敛到最终的位置。

    • List-wise一开始就缩小了范围:A、B、C、D、E、F由大到小,分别在1、0.8、0.6、0.4、0.2和0附近,省去了很多收敛需要的时间。#card

      • 不过List-wise想要看到全局,列表的长度会比较长,在实践中列表长度会和批处理的那一维复用。

      • 比如Point-wise的batch-size=100,换到List-wise下,列表长度是10的话,batch-size就只能缩减到10。

      • 所以在应用List-wise学习方法时,太长的列表长度会导致batch-size变小,这一点要额外注意。

作者

Ryen Xiang

发布于

2025-06-07

更新于

2025-06-21

许可协议


网络回响

评论