YouTube推荐系统(下):Deep Neural Networks for YouTube Recommendations

本文深入探讨YouTube推荐系统,介绍其由深度学习驱动的候选生成和排名阶段。模型通过大规模数据训练,应对推荐系统的规模化、内容新鲜性和噪声挑战。召回阶段采用分类模型学习用户和上下文嵌入,而排名阶段则关注预期观看时间,以避免点击诱饵问题。模型结构和损失函数的设计旨在优化观看时长预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

咳,还是要说说这篇文章,虽然讲它的人已经很多了。毕竟作为深度学习模型大规模应用于工业界推荐系统的标志,这篇文章是绕不过去的。原文来自Deep Neural Networks for YouTube Recommendations,是YouTube2016年发表于Recosys的文章。

这篇文章的结构依然很经典:由deep candidate generation model(召回阶段)和deep ranking model(排序阶段)组成。

Overview

YouTube的推荐系统的主要挑战有三:

  • Scale:有一些算法在小规模的问题上表现很好,但是难以应用于较大规模的问题,而YouTube拥有世界上最大规模的推荐系统之一,规模化是一个算法能够应用的首要问题。
  • 新鲜性(其实我们一般称为内容冷启动):YouTube某种意义上是个短视频公司,和Netflix以及Hulu这样的公司不同,它的网站上随时都有新鲜内容产生,怎么把这些新鲜内容推荐出去是需要考虑的。
  • 噪声:implicit feedback和content feature中都有大量的噪声,需要好好利用这些有噪声的数据。

YouTube的模型在Google Brain上训练,它的开源版本即为tensorflow。他们的模型有十亿量级的参数数目,并在千亿级别的数据量上训练。
系统的结构图如下:


可以看到这是一个两阶段的模型。关于other candidate resource的部分我的上一篇文章中有。

Candidate Generation

在召回阶段,YouTube要从海量数据集中选出数百个召回结果。在使用神经网络之前,YouTube使用的是MF算法。在使用深度学习算法时,YouTube把找回阶段建模为一个分类模型,其目标是根据上下文 C C C,用户 U U U,从集合 V V V中找到时刻 t t t最可能被观看的视频 w t w_t wt
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

其中 u u u代表user和context的embedding, v v v代表video的embedding。deep learning的任务是从用户观看的历史数据和当前上下文中学习用户的embedding u u u,并使用softmax选择最有可能被观看的video。模型使用implicit feedback进行训练,用户观看完视频作为正样本。

在实际进行服务时,YouTube并不追求完整的softmax过程,而是使用最近邻算法来选择最有可能的N个结果。

Model Architecture

具体来说,召回阶段的模型的结构如下:


而各层的设定为:

Ranking

排序模型的结构和召回模型的结构很像,比较特殊的是它采用的目标函数是watch_minutes_per_impression的函数,而不是ctr的函数。这主要是为了避免click-bait问题。click-bait在中国的语境中应该是标题党,即刻意用标题吸引人而内容乏味的video吸引用户的注意力,导致用户点击之后很快退出。

特征工程的部分我就不在这里讲了,有兴趣的读者可以去看原文,我们主要说一下loss function的问题。
模型的目标是预测impression导致的观看时长,不管这个impression是正例还是负例。正例的原始标签为用户观看视频的时长,文章设计了一个加权逻辑回归函数来解决这个问题。本质上,他们还是以逻辑回归的方法训练模型,但是给所有负样例赋以单位权重,给所有正样例赋以一个观看时间权重。因此,

整个ranking模型的结构如下:

Model Expected Watch Time

咳,这算是本文中最难理解的一部分了,我说我自己的理解,但不一定对,欢迎批评指正:

文章采用watch_minutes_per_impression作为预测目标,但这个目标很难被直接预测,所以作者对模型做了一些修改:

  • 所有正样本的权重等于观看时长
  • 所有负样本的权重等于一
  • 采用加权逻辑斯蒂回归来处理这个问题。加权逻辑斯蒂回归的思想可以去Weighted Logistic Regression Model一文中查阅。这是一种重采样相关的方法。
  • 标准的logistic regression中,y的值为[0,1]之间的数,其表达式为 y = 1 1 + e − w T x + b y = \frac{1}{1 + e^{-w^Tx + b}} y=1+ewTx+b1,而它的odds表达为 o d d s = e w T x + b = p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) odds = e^{w^Tx + b} = \frac{p(y = 1| x)}{p(y = 0|x)} odds=ewTx+b=p(y=0x)p(y=1x)。其中,正样本出现的概率为 p = o d d s o d d s + 1 = e w T x + b 1 + e w T x + b p = \frac{odds}{odds + 1} = \frac{e^{w^Tx + b}}{1 + e^{w^Tx + b}} p=odds+1odds=1+ewTx+bewTx+b,负样本出现的概率为 1 − p = 1 1 + e w T x + b 1 - p = \frac{1}{1 + e^{w^Tx + b}} 1p=1+ewTx+b1
  • 在weighted logistic regression中,这个式子则被替换为: o d d s = ∑ T i N − k odds = \frac{\sum{T_i}}{N - k} odds=NkTi,即正样本出现的概率和/负样本出现的概率和(其中 T i T_i Ti代表每个正样本的观看时长, N N N表示样本总数, k k k表示正样本的数量)。
  • 而per impression的观看时长的期望为 E ( T ) = ∑ T i N = o d d s N N − k E(T) = \frac {\sum{T_i}}{N} = \frac{odds}{\frac{N}{N - k}} E(T)=NTi=NkNodds,即 o d d s = E ( T ) ∗ N N − k = E ( T ) ∗ 1 1 − p ≃ E ( T ) ∗ ( 1 + p ) ≃ E ( T ) odds = E(T) * \frac{N}{N-k} = E(T) * \frac{1}{1 - p} \simeq E(T) * ( 1 + p) \simeq E(T) odds=E(T)NkN=E(T)1p1E(T)(1+p)E(T)。其中 p p p即为CTR,由于 p p p的值相对很小,最后的两个约等于才能成立。所以我们最终可以用odds来估计expected watch minutes。
  • 因此在serving的时候, e w T x + b e^{w^Tx + b} ewTx+b即为watch_minutes_per_impression的估计值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值