推荐系统中的多目标优化算法详解
推荐系统中的多目标优化算法详解
在推荐系统开发中,如何同时优化多个业务目标是一个常见且重要的问题。本文将介绍几种主流的多目标优化算法,包括通过sample weight调整、多个模型stacking、共享底部神经网络模型(Shared bottom NN)以及Google提出的MMoE模型。这些方法各有优劣,适用于不同的业务场景和技术需求。
在开发推荐系统的过程中,我们常常需要同时优化多个业务目标。例如,在电商场景中,我们希望在优化GMV的同时提高点击率,以增强用户粘性;在信息流场景中,则希望在提升点击率的基础上增加用户关注、点赞和评论等互动行为,营造更好的社区氛围并提高用户留存率。因此,推荐系统在发展到一定阶段后,往往会向多目标优化方向演进,承担起更多的业务目标。下面将介绍几种实现多目标优化的算法,其中有些是作者在实践中验证过并取得线上收益的方法,有些则是最新研究论文中提出的解决方案。
A. 通过sample weight进行多目标优化
这种方法可以视为多目标优化的初级版本,主要是在主模型训练时进行微调。以信息流场景为例,我们的主目标是提升feed的点击率,同时希望增强用户的点赞行为。在这种情况下,点击和点赞都被视为正样本,但可以为点赞样本设置更高的sample weight。在模型训练过程中,计算梯度更新参数时会乘以权重,对sample weight较大的样本给予更大权重。直观来说,对于sample weight较大的样本,如果预测错误将带来更大的损失。通过这种方法,可以在优化点击率的同时,提升点赞率。实际AB测试表明,这种方法会在一定程度上牺牲目标A(点击率)以换取目标B(点赞率)的增长。通过线上AB测试与sample weight调整的联动,可以在可接受的A目标损失范围内优化目标B,实现初级的多目标优化。
优点:
- 模型简单,仅需在训练时通过梯度乘以sample weight实现对某些目标的boost或decay
- 带有sample weight的模型与线上的base模型完全相同,不需要额外的架构支持,可以作为多目标优化的第一个尝试方案
缺点:
- 本质上并不是真正的多目标建模,而是将不同目标折算成同一个目标
- 相关的折算可能需要多次AB测试才能确定
- 从原理上讲无法达到最优,多目标问题本质上是一个帕累托寻找有效解的过程
B. 多个模型stacking
这个思路较为直接:针对每个优化目标训练独立的模型,然后通过一个函数融合多个模型的预测结果。例如,在视频信息流场景中,可以使用分类模型优化点击率,用回归模型优化停留时长。不同模型得到的预测分数通过加权求和等方式融合。
优点:
- 模型简单易实现
缺点:
- 线上服务时需要额外的时间开销,通常采用并行方式请求多个模型进行融合
- 多个模型之间相互独立,不能互相利用各自训练的部分作为先验,容易过拟合
C. Shared bottom NN model
多个模型stacking会带来更多的训练参数,导致模型规模变大,特别是在基于深度学习的推荐模型中更容易过拟合。因此引入了shared bottom layer来加强参数共享,多个目标的模型可以联合训练,减小模型的参数规模,防止模型过拟合。
但是,由于不同的任务最终预测的目标不同,共享参数会在一定程度上限制不同目标的特异性,最终训练效果可能会打折扣。因此,Shared bottom NN model能够成功的关键在于预测目标之间的相关性较高。文献[3]中提出了衡量任务相关性的方法,以及如何在众多任务中选择合适的任务子集进行多目标学习。
在参数共享中,还有一类方法是soft parameter sharing的方法。
在这个NN的场景中,通过给模型参数之间距离加正则化,鼓励参数趋于一致,从而减小过拟合的风险,同时也为训练样本少的模型提供一些先验信息。但是在实际的推荐系统多目标优化中,没有看到类似的模型结构,可能是因为线上serving的时候计算量显著高于shared bottom NN model,且效果也不一定好。
D. MMoE
MMoE是Google研究人员提出的一种专门用于神经网络中多目标优化的模型结构[2]。在Recsys 2019中,Google已经将MMoE应用于YouTube视频推荐系统中[4]。MMoE为每个模型目标设置一个gate,所有目标共享多个expert,每个expert通常是数层规模较小的全连接层。gate用来选择每个expert的信号占比。每个expert都有其擅长的预测方向,最后共同作用于上面的多个目标。
此处我们可以将每一个gate认为是weighted sum pooling操作。如果我们选择将gate换成max操作。x为输入,g(x)中分量最大值对应的expert被唯一选中,向上传递信号。如果g(x)与input无关,则模型退化成多个独立的NN模型stacking,这样就便于我们更方便理解模型的进化关系。Recsys 2019 Google的文章,是在shared bottom layer上面增加MMoE层。这样做是为了减少模型的复杂度,降低训练的参数数量。只不过此处的shared bottom layer层数很少,推荐系统中特征的输入非常稀疏,input对应的参数维度很大,因此先作用于浅层的shared bottom layer,有利于减小上层MMoE的模型复杂度,也减少线上serving的开销。
总结
本文介绍了几种主流的多目标优化算法,包括通过sample weight调整、多个模型stacking、共享底部神经网络模型(Shared bottom NN)以及Google提出的MMoE模型。这些方法各有优劣,适用于不同的业务场景和技术需求。在实际应用中,可以根据具体需求选择合适的算法,或者将多种方法结合使用,以达到最佳的优化效果。
参考文献
[1] Lin X, Chen H, Pei C, et al. A pareto-efficient algorithm for multiple objective optimization in e-commerce recommendation[C]//Proceedings of the 13th ACM Conference on Recommender Systems. ACM, 2019: 20-28.
[2] Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 1930-1939.
[3] Ruder S. An overview of multi-task learning in deep neural networks[J]. arXiv preprint arXiv:1706.05098, 2017.
[4] Zhao Z, Hong L, Wei L, et al. Recommending what video to watch next: A multitask ranking system[C]//Proceedings of the 13th ACM Conference on Recommender Systems. ACM, 2019: 43-51.