每天,全球数十亿人打开 YouTube 时,首页上那几十个缩略图是怎么被"选中"的?whiteboardinterview 频道的这期 How YouTube's Algorithm Actually Works (Engineering Deep Dive),把这道互联网最难的选择题,拆成了一台可以画在白板上的机器。它背后的工程蓝图,正是工业级推荐系统的教科书范本。
如果你做过任何"给用户推荐点什么"的功能——文章、商品、视频、好友——你迟早会撞上同一堵墙:候选太多、用户耐心太少、在线延迟以毫秒计。YouTube 的处境是这堵墙的极限版本——语料库里有数亿条视频,每分钟还有人往里塞几百小时的新内容,却要在一个呼吸之间,从其中挑出你此刻最可能点开的那一个。
这个视频值得看,是因为它不卖"算法玄学"那套焦虑叙事,而是把推荐系统还原成一个可以拆解的软件工程问题:召回(recall)与排序(precision)的两段式流水线、把"猜你下一个视频"重新定义为一道超大单选题、用观看时长而不是点击来训练模型。它底层依赖的是 Google 2016 年发表的那篇奠基性论文 Deep Neural Networks for YouTube Recommendations(Covington、Adams、Sargin),这篇论文至今仍是面试官口中最常被问到的系统设计题之一。
读懂它,你不仅理解了 YouTube,也理解了 TikTok、B 站、Netflix、淘宝首页——它们的骨架几乎是一回事。
| 项目 | 内容 |
|---|---|
| 视频标题 | How YouTube's Algorithm Actually Works (Engineering Deep Dive) |
| 频道 | whiteboardinterview |
| 视频链接 | youtube.com/watch?v=747MlpaVtrg |
| 形式 | 白板讲解式深度长视频(系统设计级) |
| 内容定位 | 拆解推荐系统的召回—排序两段式工程架构 |
| 核心论文 | Covington et al., Deep Neural Networks for YouTube Recommendations, RecSys 2016 |
| 适合人群 | 后端/算法工程师、系统设计面试者、想搞懂"推荐"本质的开发者 |
说明:本卡片的频次、时长等以 oEmbed 接口核实的元数据为准;频道 whiteboardinterview 主打系统设计与白板讲解,属编程垂类的硬核长内容。以下解读既忠实于视频主线,也补充了大量论文与延伸背景。
视频的第一个关键认知,也是整篇论文最反直觉的地方:YouTube 不是用"评分预测"或"协同过滤"来推荐,而是把推荐直接建模成一个极端多分类问题(extreme multiclass classification)。
想象一道有上百万个选项的单选题:题目是"这个用户此刻的观看历史 + 上下文",正确答案是"他下一秒真正会点开的那个视频"。模型的输出是一个覆盖全部语料库的 softmax 概率分布,概率最高的那几个视频,就是召回阶段的候选。
视频核心论点:召回塔本质上是一个"百万分类器",它的 softmax 权重矩阵,恰好就是每个视频的 embedding 向量。
延伸分析:这个视角的巧妙之处在于,它把"匹配"变成了一个可以用标准深度学习训练的目标函数。你不需要手工设计相似度规则,只要喂足够的"用户历史 → 下一跳"样本,网络自己会学出视频和用户在同一个向量空间里的坐标。这正是后来工业界所谓"万物皆可 embedding"的源头之一。
视频反复强调的工程主线,是一条两段式流水线(two-stage pipeline),它和搜索引擎的经典范式如出一辙:
延伸分析:为什么要分两段?因为"用最重的模型给最全的语料打分"在工程上是不可能的。如果排序塔那种带着上百个特征、多层全连接的模型,去给一亿条视频逐条打分,单次请求就要算到天荒地老。两段式本质是用计算预算换分层精度——便宜的模型先做大范围粗筛,贵的模型只在少数候选上做精排。这套思想后来演化成了召回→粗排→精排→重排的四段甚至五段式架构,是阿里、腾讯、字节等公司推荐系统的标配。
视频对召回塔的拆解,对应论文里的深度候选生成模型。它的输入是一大包"你是谁、你看过什么"的特征:
这些特征拼起来,喂进一个几层全连接网络,最后一层就是 softmax。softmax 的每个输出对应一个视频,于是那个巨大的权重矩阵,天然就是一张"视频向量表"。推理时,模型把用户编码成一个向量,再用近似最近邻(ANN)算法,从视频向量表里捞出最近的几百个——这本质上就是工业界说的 two-tower / DSSM 双塔召回。
视频核心论点:召回塔的妙处在于,用户向量和视频向量在训练后落在同一个度量空间里,"距离近"就等价于"可能感兴趣",于是离线可以预先把所有视频向量化建索引,在线只需一次向量检索。
延伸分析:双塔结构的杀手锏是可解耦——视频塔可以离线全量计算并建好索引(用 ScaNN、Faiss 这类 ANN 库),用户塔只在线算一次,最后就是一次"近邻查询"。这是百万级候选能在几毫秒内返回的根本原因。理解了这一点,你就理解了为什么向量数据库(Pinecone、Milvus、pgvector)会成为 AI 时代的基础设施。
这是视频里最容易被忽略、却最有工程味道的一个细节。论文里叫 Example Age 特征。
朴素的训练数据天然偏向老视频——因为老视频被点得多、积累的样本多,模型容易学成"永远推荐那些已经爆过的视频",新视频永远没有出头之日。YouTube 的解法很朴素也很聪明:给每个训练样本打一个"年龄"标签(从视频发布到样本产生的时间差),让模型显式知道"这条样本是多久以前的"。推理时把 Example Age 设成一个很小的值(接近 0),模型就会给"仿佛刚发布"的内容加分。
视频核心论点:Example Age 是对抗"流行度偏差(popularity bias)"的关键特征,它让模型学会"内容会过时"这件事,从而给新视频公平的曝光机会。
延伸分析:这个特征揭示了推荐系统一个永恒的矛盾——exploitation(利用已知的爆品)vs exploration(探索新内容)。只利用,系统会越来越同质化、越来越无聊;只探索,短期指标会崩。Example Age 是一个工程上极轻量、却巧妙地把"探索偏好"写进模型的方法。后来业界又引入了多目标优化里的"探索项"、bandit 算法、以及专门的冷启动流量池,但思想源头都是同一个。
召回塔给的是"相关",排序塔问的是"值得不值得排到首页"。视频强调,排序塔有一个和大多数人直觉相反的设计:它最终优化的目标是期望观看时长(expected watch time),而不是点击率。
排序塔用了比召回塔丰富得多的特征:不仅有你这个用户的画像,还有"这条候选视频"本身的统计特征(历史展示数、点击率、观看时长分布、主题 embedding 等),二者拼接后过几层全连接(论文里是 256→128→64)。损失函数用的是加权逻辑回归(weighted logistic regression)——把正样本(被观看)的权重设为实际观看时长,负样本(没被点击)权重为 1。训练完之后,推理时取 sigmoid 的比值(odds,即 e^(wx)),它恰好近似等于"期望观看时长"。
视频核心论点:YouTube 不奖励"骗你点进来",而奖励"让你看得下去"。加权逻辑回归是用一个二分类器,间接回归出一个连续的"观看时长"。
延伸分析:这是整个系统里最反直觉也最优雅的一处工程技巧。直接回归观看时长会被异常长视频(比如十小时白噪音)带偏;用 CTR(点击率)做目标又会鼓励"标题党缩略图"——用户点了立刻划走,平台看起来点击很高,体验却在崩塌。用加权逻辑回归折中,既保留了分类问题的稳健性,又让目标对齐到了"用户真正在消费内容"。这种"用分类的 loss 回归一个连续量"的套路,后来在很多 CTR/时长预测系统里被反复借用。
视频在讲完主链路后,必然要回答一个工程上最棘手的问题:一个刚刚上传、没有任何观看历史的视频,模型凭什么推它?这就是推荐系统著名的冷启动问题(cold start)。
视频核心论点:冷启动的本质是"信息缺失"——新视频没有 embedding 学好,新用户没有历史可读。解法是:用内容本身的特征(标题、描述、缩略图、音频、视频内容理解)做 fallback,并刻意划出一部分"探索流量"给新内容"试水"。
延伸分析:现代做法通常分三层。第一层是内容理解:用多模态模型把视频的画面、字幕、音频编码成特征,即使没人看过,它也有一个可用的向量。第二层是流量探索:给每个新视频分配一小撮初始曝光(比如先给 200 次展示),观察它的"性价比"指标(点击率、完播率、留存),表现好就追加流量,像滚雪球。第三层是多臂老虎机(bandit)思想:在"已知好内容"和"待探索新内容"之间动态分配流量,让系统既不浪费也在持续发现新爆款。理解冷启动,你就理解了为什么新 YouTuber 的前几个视频"涨粉曲线"经常是断崖式跳变——那是流量池机制的直接体现。
视频主要讲的是 2016 年论文奠定的经典骨架,但作为延伸,值得补一句它后来长出了什么:
延伸分析:所有这些升级都没有推翻"召回—排序"的两段式骨架,而是在骨架内部替换更先进的零件。这就是好架构的力量——它让算法可以"热更新",而工程框架十年不变。
下面这张图把视频的完整工程链路浓缩成一张图:从用户特征进入召回塔,经 ANN 检索得到几百候选,再进排序塔用观看时长打分,最后重排出 Top-N。
flowchart TD
U["用户请求(上下文)"] --> CG["召回塔 Candidate Generation"]
subgraph Recall["召回阶段:追求召回率,必须快"]
F1["观看历史 ID → embedding 平均"] --> NET
F2["搜索历史 token → embedding"] --> NET
F3["地区/设备/画像/Example Age"] --> NET
NET["全连接深度网络"] --> SM["softmax:百万类分类"]
SM --> UE["用户向量 ↔ 视频向量表"]
UE --> ANN["近似最近邻 ANN 检索<br/>(Faiss / ScaNN)"]
end
ANN --> CAND["几百个候选视频"]
CAND --> RK["排序塔 Ranking"]
subgraph Rank["排序阶段:追求精度,可以用重特征"]
R1["用户特征 + 候选视频统计特征<br/>(展示数/点击率/时长分布/主题embedding)"] --> DNN
DNN["全连接 256→128→64"] --> WLR["加权逻辑回归<br/>正样本权重=观看时长"]
WLR --> WT["预测:期望观看时长"]
end
WT --> RE["重排层:多样性/新颖性/满意度"]
RE --> TOP["首页 / 推荐栏 Top-N"]
SM -. "softmax 权重 = 视频 embedding" .-> UE
给后端/算法工程师:这是一份现成的系统设计模板。下次被问"设计一个短视频推荐系统",你可以稳稳地讲两段式、双塔召回、ANN 索引、加权逻辑回归、冷启动流量池——这几乎就是大厂面试的满分答案。更进一步,把召回塔换成本地向量库(pgvector / Milvus),你就能给任何"列表页"加上语义推荐能力,门槛比你想象的低得多。
给系统设计学习者:注意这套架构里分层与解耦的工程美学。召回塔之所以能快,是因为"视频向量可以离线预计算、在线只做一次查询"——这种"把贵的计算搬到离线、把便宜的判断留给在线"的思路,适用于一切高 QPS 系统,和搜索引擎的倒排索引、CDN 的边缘缓存是同一种智慧。
给内容创作者:理解了 Example Age 和冷启动流量池,你就会明白——新视频的早期数据被极其仔细地评估(完播率、点击率、留存),它决定了能不能进入下一个更大的流量池。所以封面、开头 3 秒钩子、完播结构,比"话题本身热不热"更能决定一条视频的命运。而"观看时长"而非"点击"是核心目标,也解释了为什么"标题党"长期看会反噬一个频道。
给所有吃互联网饭的人:这套"召回—排序"的逻辑正在外溢到一切领域——AI 搜索结果的重排、Agent 工具的召回、企业知识库的 RAG 检索。学会用"先粗筛后精排、用向量度量相关性、用业务目标而非表面指标来优化"这三招,你就在任何需要"从一堆东西里挑几个"的场景里有了方法论。
WK_Nr4tUtl8)——论文作者的会议讲解,能把图看懂一半。YouTube 的推荐不是玄学,而是一台精密的两段式机器:召回塔用"百万分类"把你和视频压进同一个向量空间做粗筛,排序塔用"加权逻辑回归"以观看时长做精排——读懂它,就读懂了整个互联网推荐系统的脊梁。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
