登录
原创

Youtube推荐系统

发布于 2020-11-18 阅读 863
  • 人工智能
原创

Youtube推荐系统

代码地址:YouTubeDNN
YouTube代表了现有规模最大,最复杂的行业推荐系统之一。论文从高层次描述了该系统,并着重于深度学习带来的显着性能提升。 论文根据经典的两阶段信息检索二分法进行拆分:首先详细介绍了一个深层候选生成模型,然后描述了一个单独的深度排名模型。 论文还提供从设计,迭代和维护具有巨大影响力的庞大推荐系统中获得的实践经验教训和见解。
image.png

基本架构:

候选集生成

模型的的一部分是候选集生成,也就是现在常说的召回模块:基本的过程就是将千万乃至亿万级别的数据缩减为千百级的数据,以这部分数据为基础,送入第二部分的排序模块进一步的筛选出top-10左右的推荐列表。这种框架基本是现在大多数互联网公司采用的一种推荐架构,这篇文章提出的从召回到排序(粗排、精排、重排)的过程在工业界广泛使用。

image.png

对于模型而言,我们从图中可以发现最底层的输入是用户观看过的视频的特征向量,以及搜索词的特征向量。作者是先用word2vec方法对视频和搜索的token序列做了向量化之后再作为输入的。这里的特征向量里面还包括:

  • 用户的地理位置的特征向量,
  • 年龄
  • 性别
  • 等等。

之后把所有这些特征向量进行concatenate,输入到上层的DNN网络中。通过三层DNN网络过后,得到了用户的特征向量。这里通过一个softmax函数,将用户对物品的评分转化成一个多分类的概率分布问题,通过这个概率分布值来得到物品的特征向量。最终利用一些向量计算引擎得到最邻近的用户-物品对来构成Top-N推荐列表。
image.png

这里得到用户和物品embedding的方式是通过类似于矩阵分解的一种方式:假设用户的向量(最后一层输出)为[N_users, k], 对于每一个用户向量[1,k],Softmax需要将其转成[N_items,1]的概率值,因此softmax矩阵的shape为[N_items,k]。其中每一行的向量既可以看作每一个物品的向量表示。

排序

在召回阶段之后,基于得到的几百个候选集合利用ranking模型进行精排序,Youtube排序算法的深度学习网络的架构图如下所示:

image.png

描述嵌入式分类特征(单价和多单价)的深度排序网络结构,具有共享的嵌入和标准化连续特征的幂。所有层都是完全连接的。实际上,数百个特征被输入到网络中。具体的特征如图可以总结为:

  • impression video ID embedding: 当前的视频特征向量
  • watched video IDs average embedding: 用户最近观看的N个视频特征向量的平均池化
  • language embedding: 用户常用语言特征向量和当前视频语言特征向量
  • time since last watch: 最后一次观看间隔时间
  • previous impressions: 该视频已经被曝光给该用户的次数

第四个和第五个特征可以很好的反映Youtube的业务场景。"最后一次观看间隔时间"这个特征来反应用户看同类视频的间隔时间。从用户的角度想一想,假如我们刚看过某个channel的视频,很大概率是会继续看这个channel的视频的,那么该特征就很好的捕捉到了这一用户行为。"视频已经被曝光给该用户的次数"这一特征则一定程度上引入了exploration的思想,避免同一个视频持续对同一用户进行无效曝光。尽量增加用户没看过的新视频的曝光可能性。

模型的目标是预测给定训练示例的预期观看时间,这些示例要么是正面的(视频被点击了),要么是负面的(视频没有被点击)。正例会根据用户观看视频所花费的时间进行注解。为了预测预期的观看时间,文章使用了加权逻辑回归技术。该模型在交叉损失下使用logistic回归进行训练。然而,积极(点击)行为是通过观察观看视频的时间加权的。负面(未点击)行为都得到单位权值。这样,logistic回归学习的概率为<math><semantics><mrow><mo>∑</mo><mo>(</mo><msub><mi>T</mi><mi>i</mi></msub><mo>)</mo><mi mathvariant="normal">/</mi><mo>(</mo><mi>N</mi><mo>−</mo><mi>K</mi><mo>)</mo></mrow><annotation encoding="application/x-tex">\sum(T_i)/(N-K)</annotation></semantics></math>(Ti)/(NK)。其中N为训练例数,<math><semantics><mrow><mi>k</mi></mrow><annotation encoding="application/x-tex">k</annotation></semantics></math>k为正例数目,<math><semantics><mrow><msub><mi>T</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">T_i</annotation></semantics></math>Ti为第i次印象的观看时间。假设正面印象的比例很小(在我们的例子中是正确的),学习的概率大约是<math><semantics><mrow><mi>E</mi><mo>[</mo><mi>T</mi><mo>]</mo><mo>(</mo><mn>1</mn><mo>+</mo><mi>P</mi><mo>)</mo></mrow><annotation encoding="application/x-tex">E[T](1+P)</annotation></semantics></math>E[T](1+P),其中<math><semantics><mrow><mi>P</mi></mrow><annotation encoding="application/x-tex">P</annotation></semantics></math>P是点击概率,<math><semantics><mrow><mi>E</mi><mo>[</mo><mi>T</mi><mo>]</mo></mrow><annotation encoding="application/x-tex">E[T]</annotation></semantics></math>E[T]是预期的观看时间。由于<math><semantics><mrow><mi>P</mi></mrow><annotation encoding="application/x-tex">P</annotation></semantics></math>P很小,这个乘积接近<math><semantics><mrow><mi>E</mi><mo>[</mo><mi>T</mi><mo>]</mo></mrow><annotation encoding="application/x-tex">E[T]</annotation></semantics></math>E[T]。为了进行推断,模型使用指数函数<math><semantics><mrow><msup><mi>e</mi><mi>x</mi></msup></mrow><annotation encoding="application/x-tex">e^x</annotation></semantics></math>ex作为最终的激活函数来产生这些接近估计预期的观察时间的概率。

评论区

哎嘿

0

0

2

举报