推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations

时间:2024-04-03 18:41:05

前言

  YouTube在2016年的时候,用深度网络完成了工业级的视频推荐系统,主要分为候选视频集的选择和线上的rank,虽然时间过去两年了,对我们的推荐系统仍具有重大的学习参考价值。

背景

  深度学习在学术界频发神级文章,工业界的推荐系统还没有特别重量级的成果,YouTube则在2016年给大家带来了DNN在推荐中的最新探索paper
  主要应用场景:为YouTube用户提取候选视频集,并对其排序展示给用户,追求最大化的观看时长。(追求时长,隐含着追求用户体验,并争取用户在APP上的更多时间,同时意味着用户习惯的养成)

亮点

  1) 推荐系统经典结构的深度学习化。
  2) 超多类在分类时的高效解决方案。
  3) 加权逻辑回归解决预测时长问题。
  数据特点:巨量用户和数据;新数据响应快;数据稀疏与噪声。其整体视频推荐系统框架,如下:

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations

  这个推荐结构非常经典,现在了解到的推荐相关的系统都是这么个套路。

Candicate Generation Module

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations

  为选择出给用户的候选展示集,对所有日志学习用户的点击概率。将视频做Embedding化,搜索query也作Embedding化,同时加入其它的用户信息。预测用户对不同视频的点击概率。
  因为将所有视频做分类,成了百万级规模的softmax,不是简单地按照视频类型作分类。怎么学习呢?引入负样本采样方法,来构造训练样本集,一个有观看的正样本,再加上采样的几千条没观看的负样本。某用户U在某时刻t对视频vi的观看概率如下:
P(wt=i|U,C)=eviujVevju

  其中使用的不仅仅是明确的反馈,比如thumbs up/down, in-prduct surveys,也充分利用了模糊反馈,如下:
推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations

  在提供召回服务时,对某个用户计算所有的视频以选择Top-N是不现实的,线上可接受的响应时间在10毫秒内,这肯定是不行的。将计算分值问题,转换为最近邻问题,使用的是本生成网络的用户和视频的embedding值,可以实现快速响应。详见参考5。同时,这里引入了视频的天级的生命周期概念,新的内容更容易大概率被观看。

Rank Module

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations

  根据候选集给用户作展示排序,再做期望观看时长的预测,依据预测时长排序,选择的基础模型是DNN+weighted logistic regression。正样本是有点击的视频,负样本是无点击的视频,携带有观看时长信息。正样本使用观看时长加权,负样本使用单位值1作加权,总体的学习目标被TiNk总加权。
  在使用排序时,以ex作**函数来产生期望观看时长的估计值。【理解起来就是用二分问题,作加权的分类,然后在使用的时候使用中间变量ewx+b
对策略特征作统计并截断vocabulary,袋外的vocab其值为0;连续值作(0,1]压缩;multivalent作average合并。展现时其他需要考虑的因素不再赘述。

思考

1)YouTube跟我们的推荐系统在规模和方法上大不相同,只要基本结构是一样的。这篇文章的信息含量非常高,值得反复读,有很多工程细节信息。
2)候选集的选择上,深度的精髓在于Embedding表达的使用上,当然目标学习也非常重要。排序的深度使用则是在表达和学习目标的优化上作了优化。额外注意的是输入特征的预处理,直接影响效果。
3)我们的图文推荐是不是也要转向关注用户时长,而不仅仅是单纯的CTR和用户导出,后续以用户体验为进一步的优化目标。
4)数据的生命周期在图文里面是否也具有非常强的特点,可以适当引入进来。
5)抖音是一款以超强用户粘性和超长观看时长为特色的视频产品,另外,头条也是一款现象级的图文推荐产品,国内的这些产品的算法更值得我们深思。我们做不出来,不代表别人做不出来。最大的差距到底在哪里?毅然大哥说两者产品最开始的目标就完全是背道而驰的,深以为然。
notice: 回头再确认下参考5和加权逻辑回归的具体使用。

补充

facebook给出了更快捷的查找方法(思路跟参考5一致,作了更多优化,多层索引),名为faiss,在python和C++下都有对应的版本https://github.com/facebookresearch/faiss/wiki/Getting-started

Reference

  1. https://www.hardikp.com/2017/09/17/youtube-recommendations/
  2. 2016 - Deep Neural Neworks for YouTube Recommendations
  3. 2010 - The YouTube Video Recommendation System
  4. 1998 - Implicit Feedback for Recommender Systems
  5. 2004 - An Investigation of Practical Approximate Nearest Neighbor Algorithms