首页 机器学习 深度学习 LLM 推荐算法 Agent 项目 关于

YouTube 深度神经网络推荐系统架构

1 背景

YouTube 拥有数以十亿计的用户和海量的视频资源。在如此庞大的生态下,构建一个实时、高效且精准的推荐系统,面临着三大核心挑战:

  • 超大规模性 (Scale): 视频库和用户基数极其庞大。深度学习模型必须在数毫秒的严苛时延限制内,从数千万的视频库中筛选出最相关的几十个视频呈现给用户。
  • 高动态性/时效性 (Freshness): YouTube 的视频库具有极高的动态性,每秒都有海量新视频被上传。推荐系统必须在短时间内感知并分发这些“新鲜”视频,同时在“探索(Exploration)”与“利用(Exploitation)”之间取得平衡。
  • 强噪声与稀疏性 (Noise & Sparsity): 用户的历史行为高度稀疏,且充斥着隐式反馈(如点击后迅速关闭)带来的巨大噪声。此外,视频元数据(Metadata)极其杂乱,缺乏结构化的显式标注。

为了在海量计算与实时性之间取得折中,YouTube 创新性地提出了两阶段推荐框架

  1. 召回阶段 (Candidate Generation): 从数百万的视频库中,利用粗粒度的特征和高效的检索算法,筛选出数百个与当前用户最相关的候选视频。
  2. 排序阶段 (Ranking): 针对数百个候选视频,利用极其丰富的多维度特征(包括难以在召回阶段使用的高维交互特征),进行精细化的打分和排序,最终输出 Top-N 推荐列表。

2. 模型架构

2.1 召回阶段:极端多分类视角 (Candidate Generation as Extreme Multiclass Classification)

YouTube DNN召回

YouTube 将召回阶段视作一个超大规模的多分类问题。在给定用户历史行为及上下文 $U$ 的情况下,预测用户在时刻 $t$ 观看第 $i$ 个视频(视频库为 $V$)的概率 $P$:

\[P(w_t = i \mid U) = \frac{e^{v_i \cdot u}}{\sum_{j \in V} e^{v_j \cdot u}}\]

其中,$u \in \mathbb{R}^d$ 是通过深度神经网络(DNN)学到的用户高维表征向量(User Representation),而 $v_i \in \mathbb{R}^d$ 是候选视频 $i$ 的嵌入向量(Video Embedding)。

2.1.1 输入层与特征表示

召回模型的输入层对多种异构特征进行了深度融合:

  • 历史观看历史 (Watch History): 将用户最近观看的 $N$ 个视频 ID 映射为稠密向量,并通过 Average Pooling 融合成一个固定维度的向量。
  • 历史搜索历史 (Search History): 将用户的历史搜索词分词并转化为词向量,同样通过 Average Pooling 处理。
  • 人口统计学及上下文特征 (Demographics & Context): 包括用户地理位置、设备、性别、年龄等特征,进行独热编码(One-Hot)或归一化处理。
  • 样本年龄 (Example Age): 全剧最惊艳的特征工程之一。 视频的上传时间对点击率有极大影响(用户更偏爱新视频)。YouTube 在训练时将“样本距离当前时间的时间差”作为连续特征输入,并在预测时将其设为 0,从而完美消除了模型对老视频的过拟合偏置,大幅提升了新视频的曝光率。

2.1.2 多层感知机 (MLP)

所有特征拼接(Concat)后,喂入多层全连接网络(ReLU 激活),逐层降维,最终输出用户向量 $u$。

2.2 排序阶段:精细化预估 (Ranking Network)

YouTube DNN排序

排序阶段的目标是针对召回出的数百个视频进行精准打分。其网络架构与召回网络类似,但在特征工程目标函数设计上更为精细。

2.2.1 特征工程与特征交叉

排序模型使用了更多无法在召回阶段使用的高维交叉特征:

  • 历史关联度特征: 例如“该用户上一次观看此频道的视频是什么时候?”“该视频已被该用户展现过多少次但未被点击?”这类特征对于捕捉用户短期的疲劳感和即时兴趣至关重要。
  • 连续特征的非线性变换: 对连续特征(如历史观看次数)进行 $\sqrt{x}$、 $x^2$ 以及归一化等多种非线性变换,赋予线性层和 DNN 更好的特征表达能力。

2.2.2 核心创新:加权逻辑回归 (Weighted Logistic Regression)

传统的推荐模型通常以点击率(CTR)为优化目标,但这会导致系统倾向于推荐“标题党”视频。YouTube 的核心改进是将优化目标设为“期望观看时长(Expected Watch Time)”。

为此,他们在训练排序模型时采用了加权逻辑回归

  • 对于正样本(用户点击了该视频),其样本权重设为该视频的实际观看时长 $T$
  • 对于负样本(展现未点击),其样本权重设为 1

通过该设计,逻辑回归学到的 Odds(几率)近似等于期望观看时长。其数学原理如下:

假设正样本比例 $p$ 极小(点击率通常很低),在加权逻辑回归下,正样本的权重为 $T$,负样本权重为 1。则模型预测的几率(Odds)为:

\[\text{Odds} = \frac{p}{1-p} \approx p = \frac{\sum T}{\text{Total Samples}} = E[T]\]

因此,在服务(Serving)阶段,模型只需计算 $e^{W^T x + b}$ 即可直接作为期望观看时长的估算值,用于最终的排序。

3 工程实现与落地技巧 (Engineering Implementation)

理论的优雅必须建立在工程的可落地性之上。YouTube 论文披露了数个极具参考价值的工程落地细节。

在模型训练完成后,Softmax 层输出的参数即为视频的 embedding $v_i$,而最后一层全连接的输出即为用户向量 $u$。 在在线服务时,为了保证毫秒级的响应,系统不运行复杂的 DNN 预测,而是采用高效的近邻检索库(如基于 LSH 或级联 K-Means 算法的局部敏感哈希):

\[\text{Candidate Video} = \operatorname{argmax}_{i \in V} (v_i \cdot u)\]

通过在多维空间中检索与用户向量 $u$ 距离最近的 $K$ 个视频,将计算复杂度从 $O(\vert{}V\vert{})$ 直接降至 $O(\log \vert{}V\vert{})$。

3.2 离线训练的负采样 (Negative Sampling)

召回分类的类别数 $\vert{}V\vert{}$ 高达数百万,直接计算 Softmax 的分母是不可承受之重。

  • 解决方案: 论文在离线训练时采用了 Sampled Softmax(样本负采样)。每次更新时,仅抽取数千个负样本进行梯度更新,从而将计算复杂度降低了几个数量级,极大提升了训练速度。

3.3 特征交叉与 Embedding 共享

排序阶段和召回阶段存在特征共享。为了节省内存并加速收敛,系统对相同的稀疏 ID 属性(如 Video ID)在召回和排序两个网络间共享 Embedding 表达。此外,网络对稠密特征(Dense Features)进行了多项式级的非线性处理,以辅助深度模型更好地捕捉非线性边界。

4. 总结

YouTube 2016 年的这篇论文不仅开创了工业界深度推荐系统的先河,其蕴含的设计哲学至今仍指引着推荐系统的技术迭代:

    • 分而治之的经典两阶段架构: 兼顾了“海量候选集的检索效率(召回)”与“小样本空间的评估精度(排序)”,至今仍是绝大多数大厂推荐、广告系统的标配。
    • 紧贴业务指标的损失函数设计: 将传统的“点击率预估”升华为“期望观看时长预估”(通过加权逻辑回归巧妙实现),深刻阐释了算法服务于业务目标的本质。
    • 工程细节决定成败: “Example Age” 特征对时间偏置的消除、在线 ANN 检索的落地,展示了工业界推荐系统在平衡理论完美性与工程可行性方面的顶尖智慧。