Youtube经典论文相关问题《Deep Neural Networks for YouTube Recommendations》
文章目录
- 论文中召回阶段都用了哪些特征,哪些特征令你印象深刻?
- 论文排序阶段用了哪些特征,哪些特征令你印象深刻?
- 论文中训练样本怎么设置的?
- 论文中测试样本是怎么设置的?
- 每一个备选video都会是一个分类,使用softmax训练时有何改进?
- 为什么不直接采用训练时的model进行预测,而是采用了一种最近邻搜索的方法?
- 为什么不采取类似RNN的Sequence model,而是完全摒弃了用户观看历史的时序特征,把用户最近的浏览历史等同看待,这不会损失有效信息吗?
- 在确定优化目标的时候,YouTube为什么不采用经典的CTR,或者播放率(Play Rate),而是采用了每次曝光预期播放时间(expected watch time per impression)作为优化目标?
- 在进行video embedding的时候,为什么要直接把大量长尾的video直接用0向量代替?
- 针对某些特征,比如previous impressions,为什么要进行开方和平方处理后,当作三个特征输入模型?
- 为什么ranking model不采用经典的logistic regression当作输出层,而是采用了weighted logistic regression?
论文中召回阶段都用了哪些特征,哪些特征令你印象深刻?
先用word2vec方法对video和search token做了embedding;然后加入了用户的地理位置的embedding,年龄,性别等。然后把所有这些特征concatenate起来,喂给上层的ReLU神经网络。
我对"Example Age"印象深刻,看论文的图片,我们可能认为该特征表示视频被上传之后距现在的时间。
论文排序阶段用了哪些特征,哪些特征令你印象深刻?
impression video ID embedding: 当前要计算的video的embedding
watched video IDs average embedding: 用户观看过的最后N个视频embedding的average pooling
language embedding: 用户语言的embedding和当前视频语言的embedding
time since last watch: 用户上次观看同频道时间距现在的时间间隔
previous impressions: 该视频已经被曝光给该用户的次数
前面三组特征是比较好理解的,我们重点来看一下后面两组特征的作用。第4个特征是用户上次观看同频道时间距现在的时间间隔,这里有一点attention的意思,加入我们刚看了一场NBA比赛的集锦,我们很可能继续观看NBA频道的其他视频,那么这个特征就很好地捕捉到了这一行为。第5个特征previous impressions则一定程度上引入了exploration的思想,避免同一个视频持续对同一用户进行无效曝光。尽量增加用户没看过的新视频的曝光可能性。
论文中训练样本怎么设置的?
正样本是用户所有完整观看过的视频,其余可以视作负样本
训练样本是从Youtube所有的用户观看记录里产生的,而并非只是通过推荐系统产生的。同时,针对每一个用户的观看记录,都生成了固定数量的训练样本,这样,每个用户在损失函数中的地位都是相等的,防止一小部分超级活跃用户主导损失函数。
论文中测试样本是怎么设置的?
在处理测试集的时候,YouTube没有采用经典的随机留一法(random holdout),而是把用户最近的一次观看行为作为测试集。避免产生与事实不符的数据穿越。
每一个备选video都会是一个分类,使用softmax训练时有何改进?
进行了负采样(negative sampling)并用importance weighting的方法对采样进行calibration。文中同样介绍了一种替代方法,hierarchical softmax,但并没有取得更好的效果。
为什么不直接采用训练时的model进行预测,而是采用了一种最近邻搜索的方法?
在model serving过程中对几百万个候选集逐一跑一遍模型的时间开销显然太大了,因此在通过candidate generation model得到user 和 video的embedding之后,通过最近邻搜索的方法的效率高很多。我们甚至不用把任何model inference的过程搬上服务器,只需要把user embedding和video embedding存到redis或者内存中就好了。
最近邻用局部敏感哈希算法
为什么不采取类似RNN的Sequence model,而是完全摒弃了用户观看历史的时序特征,把用户最近的浏览历史等同看待,这不会损失有效信息吗?
这个原因应该是YouTube工程师的“经验之谈”,如果过多考虑时序的影响,用户的推荐结果将过多受最近观看或搜索的一个视频的影响。YouTube给出一个例子,如果用户刚搜索过“tayer swift”,你就把用户主页的推荐结果大部分变成tayer swift有关的视频,这其实是非常差的体验。为了综合考虑之前多次搜索和观看的信息,YouTube丢掉了时序信息,讲用户近期的历史纪录等同看待。
在确定优化目标的时候,YouTube为什么不采用经典的CTR,或者播放率(Play Rate),而是采用了每次曝光预期播放时间(expected watch time per impression)作为优化目标?
这个问题从模型角度出发,是因为 watch time更能反应用户的真实兴趣,从商业模型角度出发,因为watch time越长,YouTube获得的广告收益越多。而且增加用户的watch time也更符合一个视频网站的长期利益和用户粘性。
这个问题看似很小,实则非常重要,objective的设定应该是一个算法模型的根本性问题,而且是算法模型部门跟其他部门接口性的工作,从这个角度说,YouTube的推荐模型符合其根本的商业模型,非常好的经验。
在进行video embedding的时候,为什么要直接把大量长尾的video直接用0向量代替?
这又是一次工程和算法的trade-off,把大量长尾的video截断掉,主要还是为了节省online serving中宝贵的内存资源。当然从模型角度讲,低频video的embedding的准确性不佳是另一个“截断掉也不那么可惜”的理由。
针对某些特征,比如previous impressions,为什么要进行开方和平方处理后,当作三个特征输入模型?
这是很简单有效的工程经验,引入了特征的非线性。从YouTube这篇文章的效果反馈来看,提升了其模型的离线准确度。
为什么ranking model不采用经典的logistic regression当作输出层,而是采用了weighted logistic regression?
因为我们已经知道模型采用了expected watch time per impression作为优化目标,所以如果简单使用LR就无法引入正样本的watch time信息。因此采用weighted LR,将watch time作为正样本的weight,在线上serving中使用e(Wx+b)做预测可以直接得到expected watch time的近似,完美。