1. 项目概述从“刷”到“懂”快手推荐算法的冰山一角刷快手可能是很多人每天的习惯性动作。手指一划一个接一个的短视频好像总能精准地戳中你的笑点、泪点或是知识盲区。你有没有想过为什么你看到的视频好像越来越“懂”你了这背后就是一套庞大而精密的推荐算法在默默工作。今天我们不谈那些高深莫测的学术论文也不讲那些云里雾里的技术黑话就从一个一线从业者的视角来拆解一下快手这类短视频平台推荐算法的核心逻辑。这不仅仅是技术更是理解我们每天接触的信息流是如何被“塑造”的钥匙。无论你是对算法好奇的普通用户还是想入行推荐系统的开发者或者是一个想提升内容曝光的内容创作者理解这套机制都至关重要。它决定了什么内容会被看见以及被谁看见。2. 推荐系统的核心目标与挑战2.1 核心目标在“多快好省”中寻找平衡推荐算法的终极目标听起来很简单把用户可能喜欢的视频推送到他面前。但实际操作起来却是一个在多个相互制约的目标间走钢丝的精细活。我们可以把它概括为“多快好省”四个维度。“多”指的是多样性。如果一个用户只喜欢看萌宠系统就只给他推萌宠短期内用户可能很满意但长期来看信息茧房会越来越厚用户会感到单调最终可能厌倦并离开平台。因此系统必须适当地“冒险”推荐一些用户可能没看过但潜在感兴趣的内容比如在萌宠视频中穿插一个有趣的科普或旅行Vlog保持用户的新鲜感。“快”指的是响应速度。从你点击“刷新”或上划到下一条视频出现的毫秒级时间内系统需要完成从海量视频库可能是数十亿级别中召回、排序、最终决定展示哪一个的整个流程。这个速度直接决定了用户体验的流畅度。“好”指的是相关性Relevance和满意度。视频不仅要和用户的兴趣相关还要能真正让用户满意。满意度的衡量标准很多比如完播率、点赞、评论、分享、关注甚至是用户在这个视频上停留的时长。系统需要精准地预测用户对每一个候选视频的“满意程度”。“省”指的是系统资源消耗。每一次推荐请求背后都是巨大的计算量。如何在有限的服务器资源和计算时间内实现尽可能好的推荐效果是工程上的巨大挑战。不可能为了一个用户的推荐把全平台的视频都算一遍。2.2 核心挑战冷启动、探索与利用、数据稀疏性理解了目标我们再来看看实现路上的几座大山。冷启动问题这是最经典的难题。对于一个新用户系统对他一无所知怎么推荐对于一个新发布的视频没有任何互动数据点赞、评论等系统怎么判断它的质量又该推给谁解决冷启动通常需要利用一些“旁路”信息。对于新用户可能会让他选择几个兴趣标签或者根据他的设备、地理位置、注册时间等粗粒度信息进行试探性推荐。对于新视频则会依赖发布者的历史表现、视频的标题/封面/标签内容特征以及先推给一小部分可能感兴趣的用户种子用户看反馈。探索与利用的权衡这就像你吃饭是总去那几家你确定好吃的老店利用已知偏好还是冒险尝试一家新开的餐馆探索新可能推荐系统也面临同样的抉择。过分“利用”会导致推荐越来越窄陷入信息茧房过分“探索”又可能推荐太多用户不感兴趣的内容降低满意度。算法需要设计一套机制比如汤普森采样、UCB置信上界等来动态决定何时该“冒险”。数据稀疏性平台上有海量的用户和海量的视频但一个用户实际看过的视频只是九牛一毛。这就形成了一个极其稀疏的“用户-物品”交互矩阵。如何从这极少量的已知交互中挖掘出用户深层次的、广泛的兴趣是推荐模型尤其是协同过滤类模型需要解决的核心问题。3. 快手推荐系统的核心架构三层漏斗模型一个工业级的推荐系统绝不是单一模型而是一个复杂的流水线。快手采用的是业界主流的“召回-排序-重排”三层漏斗架构。这个架构就像一个筛选器从亿级视频池中一步步筛选出最终呈现在你眼前的那个视频。3.1 召回层从十亿到几百的“海选”召回层的任务是在毫秒级时间内从全量视频库十亿甚至百亿级别中快速筛选出几百到几千个和当前用户相关的候选视频。它不求精确但求“快”和“全”不能漏掉任何可能相关的视频。常用的召回策略就像一个多管齐下的侦察兵小队1. 协同过滤召回这是最经典的“物以类聚人以群分”思路。基于用户的协同过滤找到和你兴趣相似的其他用户把他们喜欢而你没看过的视频推荐给你。比如用户A和用户B都喜欢看篮球和数码评测那么用户B刚点赞的一个新数码视频就很可能会被召回给用户A。基于物品的协同过滤找到和你历史喜欢视频相似的其他视频。比如你刚看完一个“如何给猫咪剪指甲”的视频系统就会召回其他“猫咪护理”、“宠物行为”相关的视频。在实现上为了应对海量数据通常不会做全量计算而是使用向量化技术。将每个用户和每个视频都用一个稠密向量称为Embedding来表示然后通过高效的向量近似最近邻搜索如Faiss、HNSW等库快速找到和用户向量最相似的视频向量。这些Embedding可以通过矩阵分解如SVD或更复杂的深度学习模型如YouTube DNN来学习得到。2. 基于内容的召回直接分析视频本身的内容特征。多模态特征提取利用CV计算机视觉模型分析视频画面提取物体、场景、人物、情感等特征利用NLP自然语言处理模型分析标题、描述、评论、语音转文字提取关键词、主题、情感倾向。标签匹配将提取出的内容特征与用户的兴趣标签显式选择或隐式学习得到进行匹配。比如系统判断你最近对“露营”感兴趣就会召回带有“露营”、“户外”、“帐篷”等标签的视频。3. 热点/流行度召回这是一个重要的“保底”和“探索”机制。全局热点实时计算全平台最火、播放量增长最快的视频保证优质内容有基础曝光。垂类热点在你感兴趣的细分领域如“钓鱼”、“手工”内推荐近期热门的视频。同城/附近召回基于地理位置信息推荐附近用户发布的视频增强本地社交属性这是快手早期非常重要的一个召回源。4. 序列行为召回捕捉用户即时的、动态的兴趣变化。你最近10次交互点击、播放、点赞的视频序列反映了你此刻最强烈的兴趣点。模型如DIN、DIEN会分析这个序列预测你下一个可能感兴趣的视频类型并据此进行召回。比如你连续看了几个“考研数学”视频系统会立刻加强相关内容的召回。实操心得召回阶段策略的多样性比单一模型的精度更重要。我们通常会并行运行十几甚至几十路不同的召回通道每路召回几十到几百个视频最后合并、去重送入下一层。这里的关键是速度和覆盖率模型可以相对简单如双塔DNN但特征工程和索引构建必须高效。3.2 排序层从几百到几十的“精挑细选”排序层接收召回层送来的几百个候选视频它的任务是对每一个视频进行精细化的打分预测用户对这个视频的“满意程度”并按照分数从高到低排序。这是推荐系统的核心模型最复杂消耗的计算资源也最多。快手的排序模型早已从传统的逻辑回归LR、梯度提升树GBDT进化到了复杂的深度学习模型。一个典型的深度学习排序模型如DeepFM、DCN、WideDeep的输入可以看作三部分特征的融合1. 用户特征描述“你是谁”。静态特征年龄、性别、地域、注册时长等。动态特征用户长期兴趣画像过去30天对各类目的偏好权重、短期兴趣序列最近交互的item id序列、类别序列、实时行为当前session内的点击、停留。统计特征历史平均播放时长、点赞率、分享率等。2. 视频特征描述“这是什么视频”。内容特征通过CV/NLP模型提取的多模态Embedding、分类标签、发布者ID。统计特征视频的累计播放量、点赞数、评论数、分享数、实时热度如过去1小时的播放增速。上下文特征视频时长、清晰度、背景音乐等。3. 上下文特征描述“当前环境”。环境特征请求时间早/中/晚工作日/周末、网络环境Wi-Fi/4G/5G、设备类型手机型号、屏幕大小。位置特征用户当前GPS位置。这些特征经过Embedding层转化为稠密向量然后通过复杂的网络结构如多层全连接、Attention机制、Cross网络进行交互和融合最终输出一个或多个预测目标的分值。在快手最核心的预测目标通常是“完播率”和“互动率”点赞/评论/分享。模型的目标是学习到一个函数 f(用户 视频 上下文) - 预测分数使得预测分数尽可能接近用户的实际行为是否完播、是否点赞。注意事项排序模型是典型的“大数据大模型”特征工程是关键中的关键。一个有效的特征其价值可能超过模型结构的微调。例如“用户历史对同类视频的平均播放完成度”这个特征往往比单纯的“用户ID” Embedding更有预测力。另外线上服务时模型的推理速度必须严格控制这要求模型结构不能过于复杂常常需要在效果和性能之间做权衡采用模型蒸馏、量化等技术进行优化。3.3 重排层最后的“润色”与规则干预经过排序层我们已经得到了一个按预测分数从高到低排列的视频列表。但直接把这个列表推给用户体验可能并不完美。重排层就像杂志的编辑负责对排版进行最后的调整和润色并执行一些必须遵守的“规则”。1. 多样性打散避免连续出现高度同质化的内容。比如排序结果前5个都是“搞笑萌宠”重排层可能会将第3个和第6个的“美食教程”调换位置让信息流看起来更丰富。2. 创作者生态调控防止流量过度集中于头部创作者。如果排序结果前10个视频有6个都来自同一个大V重排层可能会限制其连续出现次数给中腰部和新创作者更多曝光机会。这是平台健康生态的重要保障。3. 强规则干预已读去重坚决过滤掉用户已经看过的视频。内容安全过滤根据审核策略过滤掉违规或不适合当前用户的内容。商业广告插入按照广告合约在固定位置如第3位插入信息流广告。运营活动强插在特定时间如春节活动将运营位内容插入到信息流顶部。4. 用户体验优化考虑视频的清晰度、时长与当前网络环境的匹配度。在弱网环境下可能会优先推荐时长较短、清晰度较低的视频保证流畅播放。经过重排层调整后的列表才是最终呈现给用户的视频流。这个三层漏斗每一层都承担着不同的职责共同保证了推荐系统在速度、效果、生态和商业目标上的综合平衡。4. 核心算法模型演进与实战细节4.1 从LR到深度学习模型的进化之路早期的推荐排序模型非常简单以逻辑回归为主。它的优势是训练和预测速度快可解释性强可以通过特征权重判断重要性。但LR本质是一个线性模型无法自动学习特征之间的复杂交互关系例如“年轻男性”和“篮球游戏”这个组合特征需要算法工程师手动构造大量的交叉特征费时费力且难以穷尽。随后因子分解机及其变种被广泛应用。FM模型通过为每个特征学习一个隐向量可以自动学习任意两个特征之间的交互关系大大减轻了特征工程的压力。但它通常只建模二阶交互。如今的主流是深度学习模型。它能够通过多层神经网络自动学习高阶、非线性的特征交互。例如Google提出的Wide Deep模型其“Wide”部分线性模型负责记忆Memorization学习频繁出现的特征组合“Deep”部分深度神经网络负责泛化Generalization探索未曾出现过的特征组合。这个架构思想影响深远。后续的DeepFM用FM替换了Wide部分让浅层部分也能进行特征交互。DCN引入了Cross网络显式地、高效地学习有限阶的特征交叉。而像DIEN这样的模型则专门针对用户行为序列使用GRUAttention机制模拟用户兴趣的演进和动态捕捉。在快手这样的超大规模场景下模型结构固然重要但大规模分布式训练和在线学习能力更为关键。模型需要每天甚至实时地用数百亿条样本进行更新以捕捉用户兴趣和内容热点的快速变化。4.2 多目标优化不仅要“看完”还要“叫好”早期的模型可能只预测“点击率”。但这远远不够。点击了不代表用户喜欢。用户可能点进去3秒就划走了。因此现代推荐系统普遍采用多目标优化。快手最核心的两个目标很可能是播放时长/完播率衡量用户是否真的被内容吸引这是留存的关键。互动率点赞、评论、分享、关注衡量用户对内容的深度认可和参与度这对社区活跃和内容传播至关重要。此外还可能包括“负向反馈率”不感兴趣、举报作为负向目标。如何让一个模型同时优化多个目标常见的方法有多塔结构模型底层共享特征Embedding和一部分深度网络在顶层为每个目标建立独立的“塔”层进行预测。这种方式参数共享效率较高。MMOE在共享层引入多个“专家”网络和一个门控机制让模型动态地为不同目标分配不同的专家组合更灵活地学习任务间的关联和差异。最终我们需要将多个目标的预测分如完播率分p1点赞率分p2融合成一个总分用于排序。这个融合策略本身就是一门学问可以是简单的加权和score w1*p1 w2*p2也可以设计更复杂的公式甚至用一个小的神经网络来学习这个融合权重。权重的设定直接体现了平台的价值导向是更看重用户停留时长还是更看重社区互动4.3 在线服务与A/B测试让算法在现实中迭代再好的模型不经过线上真实流量的检验都是纸上谈兵。推荐系统的迭代严重依赖A/B测试。A/B测试框架将用户随机分为多个“桶”。例如90%的用户使用当前线上主模型A组5%的用户使用新版模型B另外5%使用新版模型C。在相同的观测周期内如一周对比各组的核心业务指标人均播放时长、人均互动次数、留存率、广告收入等。只有新模型在大部分核心指标上显著优于基线模型并且没有不可接受的负向指标退化才有可能全量上线。在线服务当用户下拉刷新时请求到达推荐服务器。服务器需要毫秒级内完成特征拼接从特征数据库实时读取用户和视频特征、模型推理调用排序模型计算分数、重排逻辑并返回结果。这个链路对延迟和可用性要求极高。任何环节的抖动都会直接导致用户刷不出视频或等待时间过长。因此整个系统需要做大量的性能优化包括模型轻量化、缓存策略、降级预案等。踩坑实录曾经有一次我们上线了一个新的排序模型离线AUC指标提升显著。但全量后核心的“人均播放视频数”指标却下降了。经过排查发现新模型对“视频时长”这个特征赋予了过高的权重导致它倾向于推荐更长的视频。单个视频播放时长确实增加了但用户刷新的频次降低了总消费视频数下降。这提醒我们离线指标如AUC只是参考必须紧密结合线上多维度业务指标来评估模型效果有时模型是在“优化”一个错误的信号。5. 内容创作者视角如何让算法“看见”你理解了算法逻辑内容创作者就能有的放矢。算法本质是一个“匹配系统”你的任务就是提供清晰的“信号”帮助系统更快、更准地将你的视频匹配给对的观众。1. 封面与标题黄金3秒的吸引力这是最重要的召回入口。系统通过CV/NLP分析你的封面和标题来理解内容。封面清晰、主体突出、色彩鲜明、富有情绪感染力。避免过于杂乱或文字过多。标题补充关键信息使用具体的关键词如“五分钟快手菜”、“考研数学避坑指南”避免过于宽泛或“标题党”。标题中的关键词是触发基于内容召回的直接信号。2. 内容质量与完播率排序的核心密码系统极度关注完播率。这意味着你的视频需要在开头就抓住观众节奏紧凑减少冗余信息。前3秒定生死抛出核心看点、悬念或高潮。控制时长在信息密度足够的前提下初期可以尝试制作1分钟以内的视频更容易获得较高的完播率。价值感无论是娱乐、知识还是情感确保观众看完觉得“有所得”。3. 互动引导提升生态位的关键点赞、评论、分享、关注这些互动行为是系统判断内容价值的强信号。在视频中或文案里真诚地引导互动“你觉得呢评论区聊聊”、“如果对你有用记得点赞收藏哦”。积极回复评论这不仅能提升评论数还能增加视频的活跃度可能被系统二次推荐。创造讨论点内容本身有话题性自然能引发评论。4. 垂直化与持续性构建稳定画像系统会给创作者和内容打标签。如果你今天发美食明天发游戏后天发美妆系统很难给你建立清晰的画像不利于推荐给精准的粉丝。深耕一个或少数几个相关领域让你的账号标签清晰。保持稳定的更新频率培养粉丝的观看习惯也让系统持续有数据来学习和调整对你的推荐策略。5. 利用发布时机与话题发布时间参考你的目标受众活跃时间如通勤时段、晚间休息时间。添加相关话题标签参与平台热点话题可以增加被“热点召回”通道捕获的概率。同城内容如果你的内容有本地属性开启定位能获得同城流量的初始推荐。记住算法是公平的也是无情的。它只认数据。你的每一个视频都在和数据海洋里的其他视频竞争用户的注意力。提供清晰的内容信号封面、标题、标签创造真正的用户价值完播、互动并保持一致性是让算法成为你助力的不二法门。这套系统每天都在进化但满足用户需求的核心原则永远不会变。