#Paper Reading# Deep Neural Networks for YouTube Recommendations

论文题目: Deep Neural Networks for YouTube Recommendations
论文地址: https://dl.acm.org/citation.cfm?id=2959190
论文发表于: RecSys 2016(CORE B类会议)

论文大体内容:
本文主要介绍了DNN在YouTube视频推荐上的应用,这也是DNN模型在视频推荐领域的开山之作,后续所有的视频推荐引擎基本都使用类似的架构(召回+排序)来提升推荐效果。

1. YouTube推荐系统主要面临下面3类问题:
①Scale,大用户量+大视频池,非常规方法能解决的;
②新视频的分发,每秒上传数小时的视频;
③用户反馈的识别,包括隐式反馈的识别;

2. YouTube的DNN模型大小为十亿参数、千亿样本;

3. 本文使用了召回和排序分开的架构,分开为这2个stage的好处:
①整个大池子里面的视频都有机会被推荐出来(召回);
②容易和其它工作结合(多路并行召回);
③最后推荐的结果是个性化的(排序);
#Paper Reading# Deep Neural Networks for YouTube Recommendations

4. 训练中这是一个分类问题,每个video作为一个类别进行分类,然后用负采样方法来解决softmax低效的问题,这比传统softmax快100倍;作者也尝试过层次softmax,但是效果并不好,每个节点用于区分不相关的class而引入误差;而predict时候为了效率,用的是最近邻搜索,对user vector和video vector进行计算;
#Paper Reading# Deep Neural Networks for YouTube Recommendations

Ticky的做法
5. 视频Example Age特征,用的是训练样本产生时间到当前的时间差,而不是video的发布时间到当前时间差;
用这个特征,能够让视频火的时候更多的推送,不火的时候少点推送;所以predict的时候这个特征设置为0;比如10天前这个视频特别火,ctr=0.5,而今天ctr只有0.1,那么train的时候,能够捕捉到当前是否火的状态,而predict的时候,特征=0,代表当天;但是这种做法对于增量式模型不太友好;从实验可以看到,加了这个特征后,预测的分布更接近实际分布;
#Paper Reading# Deep Neural Networks for YouTube Recommendations

6. 用全站样本,非只有推荐的;

7. 对每个用户使用相同数量的样本,避免model偏向高活用户;

8. 最近观看历史不用顺序,同等对待即可,因为如果用顺序,那么推荐结果会被最近观看或搜索的一个视频所影响;

9. 网络越深(越Deep),feature越多(越Wide),效果越好;
#Paper Reading# Deep Neural Networks for YouTube Recommendations

10. 召回的信息带入精排,也是很重要的feature;

11. 对于连续特征,必须进行normalization;

12. Train的时候用Weighted Loss,使用TS加权正样本,可以推导[1],这种方式其实是求TS的期望;Predict的时候是将TS的期望进行predict;
而为什么用Weight Loss而不直接回归TS呢,主要原因是由于TS的值域scale较大,并且大部分的样本TS=0,所以回归的时候并不能取得很好的效果;而LR的值域为[0, 1],对于数据兼容性比较好,相比回归会更加适合;
#Paper Reading# Deep Neural Networks for YouTube Recommendations


参考资料: 
[1] https://zhuanlan.zhihu.com/p/61827629

以上均为个人见解,因本人水平有限,如发现有所错漏,敬请指出,谢谢!