[youtube2019]Recommending What V

2019-11-09  本文已影响0人  xiiatuuo

摘要

作者提出一个大规模的多目标排序在“what video to watch next”这个工业界的推荐场景下。主要是使用了软参数共享技术Multi-gate Mixture-of-Experts,同时通过W&D结构解决了选择性偏差问题

1.介绍

这篇文章主要focus在ranking阶段而不是召回阶段,在ranking阶段的两个大问题:多个冲突和互相影响的目标 ,以及隐性的偏差。对于多目标我们使用MMoE,对于偏差我们使用一个浅层的塔来进行建模,这样能够节省使用随机来进行偏差分数去除的流量(Learning to rank with selection bias in personal search)。框架如下


模型结构

注意:

2.相关工作

一般的推荐系统都是两步走,召回和排序。
召回包括:1)基于共现;2)基于协同过滤;3)在共现图上进行随机游走;4)基于内容表征(visual discover at pinterest);5)混合各种特征(youtube2016)
排序包括:1)使用线性和树模型进行point-wise和pair-wise学习;2)GBDT for pointwise;3)dnn for pointwise
我们的排序需要保持效果和效率,常见的方案就是使用dnn for point-wise,pair-wise太需要资源了
2.1 多目标学习
一个用户可能点击一个视频单最后点了不喜欢,一个用户可能只喜欢打分而不点击或者观看,我们的系统需要学习和预估用户的各种各样的行为,最后合并成一个最终的分数来进行排序(多种行为怎么合并?)
已知的系统针对多种目标一般只是在召回阶段而不适用于大规模的在线排序阶段,比如(Improving user topic interest profiles by behavior factorization)就会使用各种用户的信号来进行学习以产生候选。
2.2 理解模型偏差
使用当前模型训练的数据训练出来的新模型很有可能会产生(feedback loop effect)。通常去掉位置偏置的做法有这么几种:

3.问题描述

除了上面提到的困难,实际的大规模视频推荐系统还需要考虑以下几个方面

4. 模型结构

4.1 系统总览
从两种数据中进行学习:1)参与型行为比如点击和观看;2)满意型行为比如点赞和取关
我们分别用分类模型和回归模型来进行多目标的学习,使用pointwise的学习方法,主要是出于系统性能的考虑。
4.2 排序目标
我们把点击、点赞作为分类任务,使用交叉熵作为loss;时长和投票作为回归任务,使用mae loss。最终的结果使用权重的合并方式,手工调整权重。
4.3 MMoE
生硬的使用底层的参数共享,如果目标在low的特征层面相关性不强的话其实是有害的,所以我们采用一种软参数共享的模型结构MMoE。主要是使用混合专家的结构,通过与MoE层替换relu层来为每一个任务加上单独的门网络结构,在我们的实验中,我们把expert加在共享隐层之上,结构如下:


image.png

MoE可以学习到一些高阶的特征,但是如果直接把MoE放在input层那么计算开销就太大了,因为input层的维度特别高。我们的export网络使用MLP和relu激活函数,我们使用了比较少的expert主要是为了训练的效率
4.4 建模和去除Bias
类似Wide&Deep模型结构,我们把模型预测分为两个部分,一个是main tower还有一个浅层的偏置tower,偏置tower主要是用来添加偏置信息。训练的时候我们会把大部分position和device信息加上,丢掉10%防止模型太过依赖这个特征。预测的时候,位置特征就直接当做miss。

5.实验结果

5.1 实验设置
我们训练新的model和baseline的model都是用的增量更新的方式,这样模型就能适应更实时的数据,这其实是一个比较难的事情,因为数据分布和用户行为会随着时间的变化而变化。
在离线实验中,我们主要对分类任务检查auc,对回归任务检查squared error。线上数据我们主要通过ab测试来对比效果,比如用户的点击、时长等等。
5.2 MMOE多目标
baseline的model是2a里面的隐层全共享结构,相比之下mmoe不管是4个expert还是8个expert效果都有提升。我们通过画出每个任务的每个export的softmax的门网络的累计概率发现,有些参与型任务的expert概率分布有很多是共享和类似的,但是满意度型的任务却不是,如下图。同时,如果是直接把MoE层架在input层之上却看不到明显的效果差别。


image.png

分布式训练的时候有可能让模型经常偏离,比如Relu death。我们发现门网络中有20%的概率会极化,我们通过10%概率让export失效和重新规范化softmax的输出方法减少了极化情况。
5.3去偏
位置偏置是一个很常见的现象,点击率高有可能是因为位置靠前。有几种去偏的方法
1)直接把位置作为输入的feature,在线性模型里面很常见
2)对抗学习,使用一个辅助的任务来预测位置,并且在反向传播的时候,对梯度取负来让底层的网络不去学习位置的逻辑
最终的结果是shallow tower效果很好
5.4 讨论
1)关于模型结构,很多经典的模型结构比如cnn或者attention对我们的场景不合适主要因为:

6.重要的参考文献

Practical Lessons from Developing a Large-Scale Recommender System at Zalando
Practical lessons from predicting clicks on ads at facebook
Efficient training on very large corpora via gramian estimation
Improving user topic interest profiles by behavior factorization

上一篇 下一篇

猜你喜欢

热点阅读