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

前言

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

背景

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

亮点

1) 推荐系统经典结构的深度学习化, → \rightarrow 向量化 + DNN
2) 超多类在分类时的高效解决方案, → \rightarrow 负采样方法
3) 加权逻辑回归解决预测时长问题, → \rightarrow 正样本上采样

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations_第1张图片

数据特点: 巨量用户和数据;新数据响应快;数据稀疏与噪声。其整体视频推荐系统框架,如上图。这个推荐结构非常经典,现在了解到的推荐相关的系统基本都是这么个套路。

Recall Module

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations_第2张图片

目标:利用点击观看日志学习用户的点击概率,给用户筛选出候选集。特征:将视频做Embedding化,搜索query也作Embedding化,同时加入其它的用户信息,预测用户对不同视频的点击概率。因为将所有视频做分类,成了百万级规模的softmax,不是简单地按照视频类型作分类。怎么学习呢?引入负样本采样法,来构造训练样本集,一个观看完毕的正样本,再加上采样的几千条该用户没观看的负样本【语言模型中常见的负采样技术,构造负样本与正样本共同估计正样本发生概率同时降低计算压力,这里的采样没说是什么分布的,猜测是按照点击出现的频率来采样的】。在当前上下文 { U s e r , C o n t e n t } \{U_{ser}, C_{ontent} \} {User,Content}中,某用户 u u u在某时刻 t t t对视频 v i v_i vi观看 ( w t = i ) (w_t=i) (wt=i)的概率如下:
P ( w t = i ∣ U , C ) = e v i u ∑ j ∈ V e v j u P(w_t=i|U,C)=\frac{e^{v_iu}}{\sum_{j \in V} e^{v_ju}} P(wt=iU,C)=jVevjueviu
召回优化:在提供召回服务时,对某个用户计算所有的视频以选择Top-N是不现实的,线上可接受的响应时间在10毫秒内,这肯定是不行的。将计算分值问题,转换为最近邻问题,使用的是本生成网络的用户和视频的embedding值,可以实现快速响应。详见参考5。
notice :在新数据引入上,除了引入了data-age特征外,新的内容在日志中的点击更多也更容易得到高分值;还将推荐渠道之外的其他渠道数据,比如垂直频道数据,也作为训练样本的输入,从而避免了推荐训练严重依赖当前既有的推荐结果,同时也引入了新的数据。【对当前的推荐系统也是很有借鉴意义的,避免在自我引导的路上逐渐走向牛角尖】
notice:解释下held-out watch 和 future watch,是指选择complete-watch作待预测项的方式,前者是对某一用户的session记录随机选择某个观看完毕作为y,而后者是选择用户连续时间行为时的某个观看完毕作为y。

Rank Module

推荐系统之YouTube视频:Deep Neural Networks for YouTube Recommendations_第3张图片

目标:根据候选集给用户作展示排序,主要预测期望观看时长的相对顺序。训练:选择的基础模型是DNN+weighted logistic regression。负样本是无点击的视频,正样本是有点击的视频,携带有观看时长信息。
正样本在update参数时使用观看时长加权 θ : = θ − α × T i × Δ θ \theta:= \theta - \alpha \times T_i \times \Delta \theta θ:=θα×Ti×Δθ,负样本使用单位值1作加权,最大似然估计的总体学习目标变成了 ∑ T i N − k \frac { \sum T_i}{N-k } NkTi的正负样本数量分布。
notice 1:相当于对正样本作了上采样,打包更新参数,用时长加权影响了权重对正样本时长的敏感度。
notice 2:在排序时,以 e x e^x ex作激活函数来产生期望观看时长的估计值,反正排序使用的是相对顺序,计算p和计算 e x e^x ex不改变相对序。
notice 3: 对策略特征作统计并截断vocabulary,袋外的vocab其值为0;连续值作(0,1]压缩;multivalent作average合并。展现时其他需要考虑的因素不再赘述。

思考

【1】YouTube跟我们的推荐系统在基本结构上是一致的,本论文值得反复读,有很多工程细节信息,比如特征处理。
【2】Recall侧,深度的精髓在于Embedding的使用上。Rank侧,深度的使用则是在表达和学习目标的优化上作了优化。
【3】我们的图文推荐是不是也需要转向关注用户时长,不能单纯的CTR和用户导出,而是以用户体验为进一步的优化目标。
【4】新数据引入方法值得借鉴,data-age在图文里面也可以适当引入;其他渠道的数据更需考虑。
【5】抖音是一款以超强用户粘性和超长观看时长为特色的视频产品,另外,头条也是一款现象级的图文推荐产品,国内的这些产品的算法更值得我们深思。我们做不出来,不代表别人做不出来。最大的差距到底在哪里?毅然大哥说两者产品最开始的目标就完全是背道而驰的,深以为然。
notice: 回头再确认下参考5和加权逻辑回归的具体使用。

补充

FB给出了更快捷KNN查找方法faiss,在python和C++下都有对应的版本,思路跟参考5一致,作了更多优化,多层索引。

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

你可能感兴趣的:(技术博客)