百度推荐排序技术的思考与实践
导读 本文将分享百度在推荐排序方面的思考与实践。
主要围绕以下五方面展开:1. 背景
2. 特征
3. 算法
4. 架构
5. 未来计划
分享嘉宾|祝帅 百度 资深研发工程师
编辑整理|river
内容校对|李瑶
出品社区|DataFun
1. 百度综合信息流推荐
2. 数据背景
大规模。每天的展现量级超过了百亿级别,因此模型需要有天级别百亿的吞吐能力。每天的 DAU 过亿,这也决定了整个模型需要有高吞吐、高可扩展性的设计。对于排序模型来说,在线每秒钟有数亿次的计算,因此模型设计时不仅要考虑效果,同时也要考虑性能,需要做到很好的性能和效果的折中。用户交互形态以及场景的多样化,还要求模型可以预估多类型任务。 高要求。整个系统的响应时间要求非常高,端到端都是毫秒级的计算,超过了预定的时间,就会返回失败。这也造成了另一个问题,就是复杂结构上线困难。 马太效应强。从数据样本角度上来看,马太效应非常强,少量的头部活跃用户贡献了大多数的分发量,头部的热门资源也覆盖到了大多数的展现量。无论是用户侧还是资源侧,马太效应都是非常强的。因此,系统设计时就需要弱化马太效应,使得推荐更加公平。
3. 基本算法策略
特征
1. 用户-系统交互决策过程
2. 离散特征设计原理
区分度高:加入特征后,后验有着很大差异。比如加入 a 特征的样本,后验点击率跟没有命中 a 特征的后验点击率差距是非常大的。 覆盖率高:如果加入的特征在整个样本中的覆盖率只有万分之几、十万分之几,那么即使特征很有区分度,但大概率也是没有效果的。 鲁棒性强:特征本身的分布要是相对稳定的,不能随着时间发生非常剧烈的变化。
交叉特征方面,业界有数百篇的相关工作,实践中发现无论任何类型的隐式特征交叉都无法完全替代显示特征交叉,也不可能把所有的交叉特征全部删掉,只用隐式表征来做。显示特征交叉能够刻画出隐式特征交叉所无法表达的相关信息。当然如果做得更深,可以用 AutoML 来进行自动搜索可能的特征组合空间。因此在实践中,以显式特征交叉为主,隐式特征交叉为辅的方式来做特征之间的 cross。 偏置类特征指的是,用户的点击不等于用户满意,因为资源的展示有各种各样的偏置,比如最普遍的就是 position bias,展现在头部的资源天然更容易被点击。还有 system bias,系统优先展现出认为最优的,但不一定是真的最优,比如新发布的资源,可能会因为缺少后验信息而处于劣势。 对于偏置特征有一个很经典的结构,就是谷歌提出的 Wide&Deep 结构,Wide 侧通常会放各种偏置的特征,线上直接可以裁剪掉,通过这种偏序排序的方式来达到无偏估计的效果。
最后是序列特征,是非常重要的一类用户个性化特征。业界现在主流的都是做超长序列的建模,具体的实验中会发现,通常长序列的存储开销是非常大的。前文中提到我们要达到性能与效果的折中。长序列可以通过离线预计算好,短序列可以在线实时计算,所以我们往往会结合两种方式。通过门控网络来决策用户当前更偏向于短序列还是长序列的方式,来 balance 长期兴趣以及短期兴趣。同时需要注意,随着序列拉长其边际收益是递减的。
3. 推荐漏斗最优化的特征体系
首先,为了提升漏斗通过率,召回和粗排直接拟合精排打分或者精排序,会导致马太效应进一步加强,此时,召回/粗排模型并非用户行为驱动学习过程,而是拟合漏斗。这不是我们希望看到的结果。正确的做法是推荐漏斗各层模型解耦合设计,而不是直接拟合下层的漏斗。 第二是粗排方面,理论上与召回靠得更近,本质上相当于是统一召回的出口。所以粗排这一层,可以引入更多召回的信号,例如协同推荐的人群投票信号,图索引的路径等等,以便粗排能够与召回队列联合优化,使得进入精排的资源的召回效率能够最优化。 第三是计算复用,在降低计算量的同时又能够提升模型的鲁棒性。此处要注意的是,常有级联类的模型,第二级模型使用第一级模型的打分作为特征,这种做法的风险很大,因为模型最终的预估值是不稳定的分布,如果直接使用第一级模型的预估值当做特征,会使得下层模型有非常严重的耦合,造成系统的不稳定。
算法
1. 系统视角下的排序模型
2. 超大规模离散 DNN 的泛化
首先是从嵌入维度方面,因为不同特征的展现量差异是很大的,有些特征的展现量非常高,比如头部的资源、头部的用户,可以使用更长的嵌入维度,这就是常见的动态嵌入维度的思想,即展现越充分嵌入维度越长。当然如果要做得更 fancy,可以用 autoML 等方式做强化学习,自动搜索最优嵌入长度。 第二个方面是创建阈值,由于不同资源展现量不同,因此,何时为特征创建嵌入表征也是需要考量的。
3. 过拟合问题
04
架构
1. 系统分层设计原理
2. 多阶段模型联合训练
3. 稀疏路由网络
未来计划
分享嘉宾
INTRODUCTION
祝帅
百度
资深研发工程师
2013 年浙江大学计算机专业研究生毕业后加入百度。历任百度凤巢系统 CTR 模型组高级研发工程师,百度 Feed 流推荐系统召回组,排序组资深研发工程师至今。目前担任百度 Feed 流推荐粗排负责人。在百度工作期间,参与或领导建设了 Mio-Learner/Abacus 大规模离散 DNN 流式训练框架;主要工作包括:2014 年深度学习首次应用于无线凤巢项目,2015 年 CTR3.0 精排重排联合训练项目,2017 年百度最高奖汉诺塔粗排双塔 DNN 项目,2018 年深度学习覆盖全凤巢莫比乌斯项目,2021 年 Feed 流推荐多目标端到端召回系统,2023 年推荐大模型项目等。研究兴趣包括搜索广告系统,推荐系统,深度学习基础理论,深度学习框架,LLM 在推荐系统的应用等。
往期文章阅读
往期推荐
点个在看你最好看