作者 | 知乎博主@青枫拂岸 整理 | NewBeeNLP
今天继续代码MMoE在推荐系统中的应用篇,来自Google Youtube团队发表在Recsys 2019的文章 Recommending what video to watch next: a multitask ranking system
- 论文:Recommending What Video to Watch Next: A Multitask Ranking System
- 链接:https://dl.acm.org/doi/10.1145/3298689.3346997
不了解MMoE的小伙伴可以参考我之前的文章:多任务学习经典品读:MMoE模型篇
文章聚焦于推荐系统的排序层,对于工业界多任务目标相互竞争以及用户反馈中的隐性选择偏差问题进行深入研究和解决。
1.背景介绍
给定用户当前播放视频,如何预测用户下一个可能播放的视频,这是Youtube工程师关注的问题。但是摆在面前的两个问题需要解决:
- 优化的多个目标往往不同,有时相互冲突。例如,除了点击观看视频(ctr)外,我们可能还想推荐给用户评价较高或者更可能个朋友分享的视频。
- 系统中经常存在隐性偏见。例如,用户单击并观看视频可能仅仅是因为该视频被排在物理位置的前面,而不是因为该视频是用户最喜欢的视频。因此,使用当前系统生成的数据训练的模型将有偏差,可能会出现反馈循环,导致模型越学偏差越大。如何有效地学习减少此类偏差是也是一个需要解决的问题。
2.模型结构
整体结构图
文章针对两个问题,使用Wide&Deep架构:
针对问题1,采用MMoE 代替 Deep层通用结构,将任务分为两大类:(更为详细可参考MMoE结构的上篇专栏)
1> 参与度目标 如点击、对推荐视频的参与度 等。
2> 满足度目标 如 喜欢 不喜欢 评分等。
目标是分类和回归问题的组合。从而避免多任务优化冲突问题。
针对问题2,在主模型中添加shallow tower。
针对于偏差单独建模。只接收选择偏差相关的输入,例如:当前系统决定的排名顺序,输出则为一个倾向分数 propensity score 。
采用的预测方法是point-wise,虽然pair-wise和list-wise可以对两个或多个candidate的顺序进行预测,可以潜在的提升推荐结果的多样性,但是point-wise更加适应serving。更加快速和有效。对比而言,pair-wise和list-wise 更加耗时。
(point-wise、pair-wise和list-wise的差别可参考 Point wise、pairwise及list wise的比较[1] )
两个任务分别为:
- engagement objective(参与目标 ) 是否点击或观看(分类问题) 、用户观看视频时长(回归问题)
- satisfaction objective(满足目标) 是否点击”喜欢“(分类问题)、视频打分(回归问题)。
多任务就是两类目标的互相组合。分类问题设置loss为交叉熵,回归问题设置loss为平方损失。
输出:对于每个候选item,计算得到的engagement objective和satisfaction objective进行组合函数得到最终的组合分数。
MMoE模型代替shared Bottom
常见的多目标的排序系统用的是shared-bottom结构,但是这种hard-parameter强行共享底层的方案对于目标之间相关性小的任务,效果不够好。
利用gating网络和expert网络组成的MMoE模型针对不同任务对expert网络的输出结果进行不同比例的融合,更好的建模多模态特征空间,效果更好,但是也带来了更大的参数量和时间消耗。
具体MMoE模型可参考我的上篇文章:
消除位置、选择偏差
很过youtube用户看完当前视频,下一个视频并不是他们感兴趣的,而可能是处于位置最上方的视频,这就是我们所说的选择偏差的一种表现形式:位置偏差。这部分的目的就是消除排序模型的选择偏差,从而打破模型越学越偏的反馈循环。
解决的办法则是类似wide&deep架构,在main tower 即前面的MMoE模型旁边,构建一个shallow tower。单独建模select bias,将输出的logit添加到main model的输出上如图3所示。
训练时,浏览时的位置信息作为输入,drop-out rate为10%,从而防止过度依赖。线上服务时,位置特征被设置为"missing"。上图中文章将 位置特征 与 设备特征 交叉,是因为作者发现在不同类型的设备上观察到不同的位置偏差。
3.实验结果
实验当然是利用youtube平台,毕竟是世界上最大的视频分享网站,月活19亿,每天千亿级别的用户日志。
对于offline实验,评价指标:分类任务用AUC 和 回归任务用squared error。并进行生产环境A/B测试,使用离线和实时指标调整超参数,如learning rate。测试了多种参与度指标( 如:使用时间) 和 满意度指标(如:用户调查响应)。另外,也关心在线服务的计算成本,由于Youtube每秒有大量查询响应。
针对多任务问题实验
Baseline Model 采用shared-bottom model。改变模型内部参数来改变模型复杂度。
结果表明:模型复杂性相同时,MMoE显著提高了参与度(engagement metric)和满意度(satisfaction metric)指标。
Gating 网络是对Expert网络输出分配权重动态分配权重的,我们将权重的分配图进一步展示。(注:所有Expert网络分配权重之和为1)
可以出,engagement task 概率分布更加均匀;而satisfaction task概率分配更加极端,可能只依赖于一个或几个Expert输出。
Gating网络稳定性问题
当使用多台机器训练神经网络模型时,分布式训练策略会导致模型频繁发散。比如Relu death。在MMoE中,softmax选通网络已被指出对于不平衡的Expert分布问题,即对接受分布式培训的Expert的利用率为零的情况,我们在我们的模型中观察到20%的概率存在这种gating网络极化问题。gating网络极化会损害使用极化gating网络的任务上的模型性能。
本文针对解决此问题的方法是:使用drop-out。设置为10%,将专家利用率设置为0并重新规范化softmax输出,可以消除了所有gating网络的权重分布极化问题。
针对position bias问题实验
下图6展示了位置1-9的CTR,结果包含了item相关性,但也有position bias的因素。
Baseline Model 两个:
- Input Feature:将Postition feature 作为一个特征输入模型,现阶段最广泛使用的方法。
- Adversarial Learning:引入副主任吴预测训练数据中的展现位置,反向传播时,使反向传播梯度消失,以确保主模型的预测不依赖于位置特征。(具体参考论文:Eric Tzeng, Judy Hofman, Kate Saenko, and Trevor Darrell. 2017. Adversarial discriminative domain adaptation)
对比之后,Shallow Tower模型效果最优。其中的各位置的ctr情况为下图7:
模型学习到了每个位置的偏差,越靠下位置,position bias消除的越好。说明shallow tower在position bias消除方面有效果。
4.未来改进方向
- 探索更多多目标模型架构 平衡 稳定性、可训练性和表达性。MMoE通过灵活的选择共享Expert 网络。下一步要在不影响预测性能的情况下,提高稳定性。
- 继续探索未知的潜在bias 模型去自动识别潜在的偏差目标并消除这些bias。
- 模型压缩 让模型参数更少,更简单。
5.总结
- 这篇文章是MMoE模型的工程落地,可以看出多任务场景下,MMoE对比常用的shared-bottom在工业界的大规模数据部署使用上,效果提升。
2. 把多任务进行分类,分别是:engagement task 和 satisfaction task。
- engagement task:是否点击 、 观看时长
- satisfication task:是否点击喜欢或讨厌 、 用户对视频的评分
个人认为:engagement 代表着客观反馈 只要你在app内,一定会留下这种目标值,而并非主观做出的;satisfaction 相反,则是代表着主观的反馈 如 知乎文章,喜欢则点击赞同, 不喜欢则点击不感兴趣,或者 B站的一键三连 等等,这些根据主观来进行的行为
3. 提出了implicit selection bias 是可以影响模型结果的,文中举例如 position bias,有可能用户点击只是因为没想好下一个看什么,但是这个query就是顺序上的第一个,这样播放的视频并不是用户喜欢的,但是模型训练会产生循环,导致模型越学越偏。单独构建shallow tower来解决这个问题,也是有效的。
本文参考资料
[1]
Point wise、pairwise及list wise的比较: https://zhuanlan.zhihu.com/p/337478373