「炼丹笔记」传送门: 这些我全要!推荐系统一石二鸟之道
在做推荐系统时,在系统刚刚搭建时,针对业务目标我们可能只需要去优化CTR或者CVR即可,但是不同的推荐场景下的优化目标不同。同时,随着系统的不断迭代,我们希望推荐算法能够同时优化多个业务目标。
比如,在内容信息流场景中,希望提高用户点击率CTR的基础上提高用户关注、点赞、评论、停留时长等行为,营造更好的社区氛围从而提高留存;而在电商场景中,则希望能够在优化GMV的基础上提高点击率,从而提高用户的粘性和复购行为等。因此,一个成熟的推荐系统,会向多目标、多任务方向进行演化,从而承担起更多的业务目标!
本文,我来分享一下在多目标优化问题上一些思路,包括多目标任务的技巧、算法模型MMOE、SNR、ESMM、PLE等。
通过Sample Weight进行多目标优化,保证一个主目标的同时,通过将其它目标转化为样本权重的方式改变数据分布,从而达到优化其它目标的效果。
这里我们以内容信息流场景为例。设定主目标为内容点击率CTR,用户在内容流中的点击行为定义为正样本。同时,在信息流点赞、评论、转发功能也同样定义为正样本,但是点赞、评论、转发、完播率大的样本可以设置更高的样本权重。对于样本权重大的行为,如果预测错误就会带来更大的损失。通过这种方法能够在优化A目标CTR的基础上,优化B目标停留时长。目标A会受到一定的损失换取目标B的增长。通过线上AB-Test和Sample Weight调整的联动,可以保证A目标损失较小的前提下,带来目标B的提升,实现初级的多目标优化。
这种方式模型简单,上线容易,仅在训练时通过梯度乘以样本权重实现对其它目标的加权即可。但本质上并不是多目标建模,而是将不同的目标转化为同一个目标,样本的加权权重需要根据线上AB测试才能确定。
多目标模型融合,通过一个模型同时训练多个目标(label的构造),线上进行融合。该方法的优点是各个任务之间能够共享信息,统一迭代方便,节省资源。但缺点也比较明显,目标越多模型越复杂,各任务之间相互影响,迭代速度慢等,尤其是在线上需要模型一定的响应时间时,该方法就变得有些笨重。