百度多场景多任务模型MTMS:《Multi-Task and Multi-Scene Unified Ranking Model for Online Advertising》

背景

百度在线广告包含不同的场景,如搜索广告、信息流广告,通个场景也需要建模不同的目标,如CTR、CVR,构建统一的多场景多任务精排模型存在两大挑战:

  • 不同目标之间数据不平衡。比如CTR和CVR,如果同时训练这俩目标,模型很可能偏向于CTR,导致CVR的指标受损。
  • embedding耦合。多任务或多场景共享embedding是常见的范式,好处是能够缓解部分场景的数据稀疏性问题,坏处是模型不同场景不同任务embedding耦合在一起,拓展性差且容易有跷跷板问题。尤其当场景的数量很多的时候,这个问题更为严重。比如百度可能有超过100个场景。

为了解决这样的问题,作者提出了一种面向多任务多场景的统一精排模型。文章主要的贡献有2个部分:

  • 提出了一种面向多任务多场景的统一精排模型MTMS,为每个场景每个目标设置独立的embedding表征。不同组件之间耦合度低,对于场景或任务的扩展性好。
  • 提出了一种交替更新的模型训练策略。embedding update时关注表征的学习,fine tuning时固定住表征,只更新排序上层的网络参数。

 

方法

技术架构

这里以信息流广告和搜索广告两个场景(百度实际有100+场景)为例子展示MTMS的整体架构:我们从下往上看,最下面一层是各个场景的数据源,第二层是统一特征管理的一个服务,第三层是各个场景user、item的特征表征,最上面一层是各个场景的预估任务

百度通过这样的技术架构可以方便的接入多个场景

 

模型结构

整体采用了ESMM的模型结构,但是有以下几点不同:

1. 显式建模了CVR

我们知道,ESMM只建模CTR和CTCVR两个目标,CVR是间接被训练的,百度经过分析发现,当转化率(CVR)的训练数据非常稀疏且 CVR 的 AUC 水平相对较低时,ESMM效果良好,当 CVR 的训练数据变得丰富且 AUC 较高时,CTR 任务就会对 CVR 预测产生负面影响。百度场景的 CVR 的 AUC 相对较高。因此,MTMS没有像在 ESMM 中那样将 CVR 视为一个中间变量,而是选择对 CVR 进行显式建模:

\[ L_{ESMM} = L_{CTR}(\theta_{ctr}) + L_{CTCVR}(\theta_{ctr}, \theta_{cvr}) \]

\[ L_{MTMS} = L_{CTR}(\theta_{ctr}) + L_{CVR}(\theta_{cvr}) + L_{CTCVR}(\theta_{ctr}, \theta_{cvr}) \]

 

2. embedding不共享

ESMM中CTR和CVR任务是共享的特征embedding,但是MTMS不同场景的不同任务的特征embedding是不共享的

 

3. 交替训练

MTMS训练过程分两个步骤交替进行:

(1)训练embedding

如上图(b)所示,在此阶段各个场景会独立的训练模型,训练完成后得到各个场景各个任务训练的好的特征embedding

(2)训练dense网络

如上图(c)所示,在此阶段会固定上一阶段训练好的embedding参数,然后训练dense部分参数,需要注意的是这一步训练的dense网络和第一步训练的dense网络结构是不同的,会更大一些,因为这一步训练的dense网络会拼接不同场景的embedding作为输入,比如同一个user_id,在不同场景下都训练得到了1个embedding,那么在finetune的时候,对某个场景的某个任务,该user_id所有场景的向量可以一起参与finetune和predict,这样就利用到了其他场景的信息了

 

补充:百度两阶段训练方式

解决的问题:为了解决样本shuffle之后统计特征和序列特征穿越导致的过拟合问题

方案:

  • 并行训练模型0和模型1
  • 模型0只更新NN参数,模型1所有参数都更新,定时把模型1的统计特征和sparse embedding同步到模型0
  • 最终用模型0的NN参数和模型1的统计特征和sparse embedding构成的模型serving

 

参考资料

百度凤巢 | MTMS多任务多场景统一精排模型

posted @ 2025-05-01 20:26  AI_Engineer  阅读(217)  评论(0)    收藏  举报