从多模态拆解到三层漏斗,拆解那个让你停不下来的推荐引擎
开场:凌晨三点,你还在刷
凌晨三点,你告诉自己"看完这条就睡"。然后你看了三十条。你以为是自制力的问题,但真相是——你对面坐着的不是手机屏幕,是一套把你看透了的推荐系统。它比你妈还了解你的笑点,比你前任还清楚你会为哪种视频多停留三秒。
而你,就是那个被 512 个维度的向量温柔地困在信息茧房里的人。
第一幕:视频不是视频,是向量——多模态解构
抖音每天几千万条新视频涌进来。人工分类?不存在的。抖音做的第一件事,是把每条视频变成一串数字。具体来说,是一个 512 维的向量。
一段视频
│
▼
┌─────────────────────────────────────┐
│ 多模态解构 │
├─────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 视觉特征 │ │ 音频特征 │ │
│ │ ViT 逐帧 │ │ ASR→文本 │ │
│ │ 提取 │ │ NLP情感 │ │
│ └──────────┘ └──────────┘ │
│ │ │ │
│ └───────┬───────┘ │
│ ▼ │
│ 512 维向量 │
│ [0.85科技, 0.05幽默...] │
└─────────────────────────────────────┘
视觉侧,用的是 Vision Transformer(ViT)——把每一帧画面送进 Transformer 里,它能认出一只猫、一个程序员、一寝室人围着看世界杯,甚至通过画面的色彩光源判断视频的情绪基调:温暖治愈,还是冷酷硬核。
音频侧也不闲着。通过 **ASR(自动语音识别)**把语音转成文字,再用 **NLP(自然语言处理)**做语义分析——这首歌是欢快的还是伤感的?这个口播的情绪是激动的还是平和的?声音的大小、节奏的快慢,全被量化成向量里的一个维度。
最终,每个视频被压缩成类似这样的东西:
[0.85 科技, 0.05 幽默, 0.03 西语, 0.12 编程, ...] ← 512维
这就是后续一切推荐的基础语言。没有标题党,没有热搜,只有向量和向量之间的距离。
第二幕:三层漏斗——从1000万到你的屏幕
有了向量,问题就变成了:这 1000 万条视频,哪几条应该出现在你的屏幕上?答案是一个层层缩圈的漏斗。
┌──────────────────────────────────────────────┐
│ 抖音推荐漏斗 │
├──────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────┐ │
│ │ 1000 万条视频 │ │
│ └─────────────────────────────────────┘ │
│ │ │
│ 召回:双塔模型,cosine 点积运算 │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 1000 条 │ │
│ └──────────────────┘ │
│ │ │
│ 粗排:轻量 ML 模型,粗筛内部特征 │
│ ▼ │
│ ┌──────────┐ │
│ │ 300 条 │ │
│ └──────────┘ │
│ │ │
│ 精排:预测点击、完播、点赞、评论、分享 │
│ ▼ │
│ ┌──────────┐ │
│ │ TOP N │ │
│ └──────────┘ │
│ │ │
│ 重排:打散同类内容,注入多样性 │
│ ▼ │
│ ┌───────────────────┐ │
│ │ 你的手机屏幕 │ │
│ └───────────────────┘ │
│ │
└──────────────────────────────────────────────┘
第一步——召回(双塔模型)
这是漏斗最宽的一层,要把 1000 万条缩减到约 1000 条。核心技术叫"双塔模型"——一个塔是你(用户画像向量),一个塔是视频(内容向量)。计算两个向量的 cosine 夹角(余弦相似度),夹角越小,你们越投缘。这一步粗但快,目的是广撒网,不漏鱼。
第二步——粗排
从 1000 条到 300 条。用相对轻量的机器学习模型,根据用户的粗粒度特征再筛一轮。快,但比双塔模型稍微仔细一点。
第三步——精排
这才是真正的重头戏。模型要预测你对每条视频的:点不点击、会不会完播、点不点赞、评不评论、分不分享。最后打一个总分:
score = w1 × 点击率 + w2 × 完播率 + w3 × 点赞率 + w4 × 评论率 + w5 × 分享率
每条视频都被算出一个分,排名前几的进入你的推荐流。
最后——重排
如果前十名全是 AI 教程,你会审美疲劳。重排机制会强制打散:每两个硬核内容之间,塞一条跳舞小姐姐。这不是偶然,是设计。
第三幕:80%喂饱你,20%偷袭你——Explore & Exploit
推荐系统有一个经典两难:是给你你确定喜欢的东西(Exploit:利用),还是给你你没见过、但可能喜欢的东西(Explore:探索)?
抖音的策略是 80/20。80% 的内容是你已知爱好的延续——科技、编程、搞笑段子。剩下 20%,是系统在"试探"你的边界。给你推一条野外求生,你多停了 3 秒——好,一个新的兴趣标签就这样被记录下来,下次就多给你推一点。
这 20% 的"偷袭",就是为什么你经常发现自己的抖音从编程教程变成了赶海视频,而你甚至不记得什么时候点过赞。
┌─────────────────────────────────────────┐
│ 推荐内容分配策略 │
│ │
│ 80% exploit:已知爱好 │
│ ┌──────────────────────────────┐ │
│ │ 科技│编程│搞笑│游戏│美食 │ │
│ └──────────────────────────────┘ │
│ │
│ 20% explore:探索潜在兴趣 │
│ ┌───────────────────────┐ │
│ │ 野外求生│手工│钓鱼 │ │
│ └───────────────────────┘ │
│ │
│ 多停留 3 秒 → 新标签被记录 │
└─────────────────────────────────────────┘
结尾:你在刷手机,手机也在刷你
你每多滑一屏,每多停顿一秒,每次不经意的点赞,都在精准地向抖音服务器报告:"这条好,再来。"你的用户画像是被你自己一笔一笔画出来的——只不过画笔是你自己的拇指。
下次凌晨三点再告诉自己"最后一条"的时候,你可以选择关掉手机,也可以选择坦然接受:你刷的不是抖音,你刷的是 512 维向量里那个被解剖了的自己。