推荐系统中如何做多目标优化
发布于 2019-12-11
原文: 推荐系统中如何做多目标优化
在做推荐系统的过程中,我们希望同时优化多个业务目标。比如电商场景中,希望能够在优化GMV的基础上提高点击率,从而提高用户的粘性;在信息流场景中,希望提高用户点击率的基础上提高用户关注,点赞,评论等行为,营造更好的社区氛围从而提高留存。因此推荐系统做到后期,往往会向多目标方向演化,承担起更多的业务目标。下面就介绍几种多目标相关的算法。其中有些是笔者实践过取得了线上的收益,有些是最新的论文中提出的新的解决方案,文章没有公式,易于理解,拿出来和大家一起讨论。
A. 通过sample weight进行多目标优化
该方法是多目标的0.1版本,是rank主模型上的微调,以实现多目标。这里以信息流场景为例,我们的主目标是feed的点击率,用户在feed上的任何点击行为都被认为是正反馈。与此同时,在feed中的点赞功能是我们希望boost的功能。此时点击和点赞都是正样本(点赞本身也是一种点击行为),但是点赞的样本可以设置更高的sample weight。模型训练在计算梯度更新参数时,梯度要乘以权重,对sample weight大的样本给予更大的权重。直观理解,对于sample weight大的样本,如果预测错误就会带来更大的损失。通过这种方法能够在优化某个目标(点击率)的基础上,优化其他目标(点赞率)。实际AB测试会发现,这样的方法,目标A会受到一定的损失换取目标B的增长。通过线上AB测试和sample weight调整的联动,可以保证在可接受的A目标损失下,优化目标B,实现初级的多目标优化。
- 优点:
- 模型简单,仅在训练时通过梯度上乘sample weight实现对某些目标的boost或者decay
- 带有sample weight的模型和线上的base模型完全相同,不需要架构的额外支持,可以作为多目标的第一个模型尝试。
- 缺点:
- 本质上并不是对多目标的建模,而是将不同的目标折算成同一个目标。相关的折算可能需要多次AB测试才能确定。此处有点难理解,设置sample weight,本质上是用base样本去度量其他样本。比如认为一个点赞算两次点击。比如在视频中停留了5min是等价于2次对视频的点击行为等。
- 从原理上讲无法达到最优,多目标问题本质上是一个帕累托寻找有效解的过程。有很多文章给出多目标的数学建模,如[1]。我们后续从这些文章中给出更详细的证明。
B. 多个模型 stacking
这个思路是也是很直接的。我们有多个优化的目标,每个优化的目标都有一个独立的模型来优化。可以根据优化目标的不同,采用更匹配的模型。如视频信息流场景中,我们用分类模型优化点击率,用回归模型优化停留时长。不同的模型得到预测的score之后,通过一个函数将多个目标融合在一起。
最常见的是weighted sum融合多个目标,给不同的目标分配不同的权重。当然,融合的函数可以有很多,比如连乘或者指数相关的函数,这里和业务场景和目标的含义强相关,可以根据自己的实际场景探索。
- 优点:
- 模型简单
- 缺点:
- 线上serving部分需要有额外的时间开销,通常我们采用并行的方式请求两个模型进行融合。
- 多个模型之间相互独立,不能互相利用各自训练的部分作为先验,容易过拟合。
C. Shared bottom NN model 多个模型stacking会带来更多的训练参数,导致模型的规模变大。�
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%A6%82%E4%BD%95%E5%81%9A%E5%A4%9A%E7%9B%AE%E6%A0%87%E4%BC%98%E5%8C%96/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com