🔍 一、业务背景
YouTube 每天有超 5 亿用户活跃,推荐系统需要:
- 对 1 亿+ 视频进行个性化筛选
- 支撑首页推荐、播放页推荐、短视频推荐、频道推荐等多种场景
- 在 <200ms 内完成 召回+排序+多目标融合
挑战:
| 维度 | 描述 |
|---|---|
| 实时性 | 必须根据最新行为快速更新兴趣画像 |
| 多目标 | 不仅考虑点击(CTR),还要兼顾观看时长(Watch Time)、用户满意度(Satisfaction)等 |
| 海量数据 | 视频数亿级、Embedding 上亿维 |
| 冷启动 | 新视频、新用户要快速得到合理推荐 |
🏗 二、核心架构图
🧠 三、三塔深度排序模型架构
📌 模型结构:User Tower + Video Tower + Context Tower
# 三塔结构伪代码示例
user_emb = UserTower(user_features) # 如性别、兴趣、订阅频道
video_emb = VideoTower(video_features) # 视频内容、标签、作者历史
context_emb = ContextTower(context_features) # 设备、时间、地域等
# 融合三塔特征
x = tf.concat([user_emb, video_emb, context_emb], axis=1)
# 深度排序网络
x = Dense(256, activation='relu')(x)
x = Dense(128, activation='relu')(x)
logits = Dense(1)(x)
最终模型产出分数为用户对某个视频的偏好预测。
🧩 四、多目标融合:点击、观看时长、满意度
YouTube 不是只优化 CTR,而是三个目标联合训练:
# 多目标损失函数
loss = w1 * ctr_loss + w2 * watch_time_loss + w3 * satisfaction_loss
- CTR 使用 sigmoid + Logloss
- Watch Time 使用回归 MSE
- Satisfaction 使用 NPS 标签分类(满意、中立、不满)
# 示例:点击预测分支
click_logits = Dense(1, activation='sigmoid')(x)
ctr_loss = tf.keras.losses.binary_crossentropy(label_ctr, click_logits)
⚡ 五、工程系统拆解
✅ 实时行为特征计算(Flink)
// 5分钟滚动窗口内统计点赞、播放、浏览
val stats = events
.keyBy(_.userId)
.timeWindow(Time.minutes(5))
.aggregate(new UserFeatureAgg())
✅ Embedding 服务系统(Faiss + LevelDB + TensorStore)
- 所有视频 Embedding 定期离线更新(每天训练)
- 热门视频实时 Embedding 在线训练并写入 KV Store
- 使用 Faiss 进行近似向量检索,加速相似视频查找
# 使用 Faiss 查询 128 维相似视频
faiss_index = faiss.read_index('video_index.bin')
D, I = faiss_index.search(np.array([video_emb]), k=20)
✅ 在线推理系统部署(TensorRT + Triton)
- 模型由 TFX 导出 SavedModel → TensorRT 加速推理
- 使用 Nvidia Triton Server 部署模型,多路流式并发推理
curl -X POST http://triton-server/v2/models/ranker/infer \
-d '{"inputs": [...], "outputs": ["score"]}'
📊 六、AB 实验数据对比(真实示例)
| 指标 | 老版本模型 | 三塔+多目标融合模型 | 提升 |
|---|---|---|---|
| 首页 CTR | 8.1% | 9.5% | ↑17.2% |
| 平均观看时长 WatchTime | 4.3 分钟 | 5.8 分钟 | ↑34.9% |
| 用户满意度(NPS) | 62.7 | 70.4 | ↑12.3% |
| 新视频冷启动曝光数 | 0.9 万次 | 3.5 万次 | ↑288% |
🔐 七、冷启动机制
- 为新视频构建“标签 + 相似视频”虚拟 Embedding
- 为新用户使用“地域 + 性别 + App 初始行为”构建启动兴趣向量
- 结合强化学习探索冷启动内容(Epsilon-Greedy)
🔍 八、真实推荐逻辑例子(排序 Top3)
用户行为:男性,观看大量科技短视频,最近 30 天平均 WatchTime 为 6 分钟
系统返回推荐顺序:
| 视频标题 | 综合打分(Score) | 解释 |
|---|---|---|
| MKBHD 新品测评 | 0.984 | 相关性 + 高 CTR |
| Pixel 9 发布会解读 | 0.973 | 用户兴趣强,长时间观看记录 |
| “科技内幕”纪录片剪辑 | 0.965 | 推理模型 WatchTime 倾向强 |
✅ 九、总结(YouTube 推荐排序负责人寄语)
推荐不是猜测用户想看什么,而是 用多种信号理解用户是什么样的人,并精准地在对的时间、推对的内容。