YouTube是在推荐系统领域应用深度学习技术的典型案例。作为拥有海量用户和视频的平台,YouTube在面临诸多技术挑战的同时,也展示了深度学习在解决这些难题上的巨大潜力。
本文作者从"召回"和"排序"两个子系统入手,全面解读了YouTube推荐系统的深度学习实践。从构建视频向量和用户向量,到离线训练和在线召回,再到最后的排序环节,作者对各个关键环节进行了深入分析和讨论。同时,作者还提出了一些自己的思考和疑问,为读者呈现了一幅极具价值的YouTube推荐系统实践图景。
与大多数推荐系统一样,YouTube的推荐系统也分为"召回"和"排序"两个子系统。"召回"负责从海量候选视频中选出几百个用户可能感兴趣的视频,要求"低延时"和"高精度"。"排序"则是将召回的视频进行打分排序,以将用户最有可能点击的视频排在前面,对"个性化"有更高的要求。
在这两个子系统中,YouTube都采用了深度神经网络,但在使用的特征上有所不同:召回网络使用相对简单的特征以满足性能要求,而排序网络则利用了更丰富的特征以保证精准的个性化。
YouTube将"召回"过程建模成一个拥有海量类别的多分类问题,类别数量就是视频库中的视频总数,数量在百万级别。召回网络的核心是计算用户在给定上下文条件下观看每个视频的概率,并选出概率最高的前N个视频。
为了解决百万级别类别下训练和预测效率低下的问题,YouTube采用了Sampled Softmax的方法,即为每个正样本配合几千个负样本进行训练。同时,在线召回时,YouTube将训练好的视频向量存入数据库并建立索引,从而将召回过程简化为一个高效的K近邻搜索问题。
另外,YouTube还将视频的"上传时间"作为特征加入训练,以缓解新视频被冷落的问题。在线上召回时,YouTube将所有候选视频的"上传时间"设置为0,对新老视频一视同仁,从而保证了模型的"探索"能力。
"排序网络"的架构与"召回网络"非常相似,但使用的特征更加丰富和个性化,涵盖了用户与视频/相似视频的各种交互历史。同时,排序网络不再采用多分类建模,而是转向了加权的点击率预估问题。
值得一提的是,排序网络并不简单预测"点击与否",而是预测视频的"平均观看时长"。具体做法是,将正样本(点击样本)的权重设置为该视频的观看时长,负样本(未点击样本)的权重设置为1。这样一来,排序网络优化的是视频的平均观看时长,有助于推荐用户更感兴趣的长视频,增加用户黏性。
总的来说,YouTube在推荐系统中应用深度学习的实践,为我们搭建自己的推荐系统提供了很多有价值的经验和启示。