Recommendation

推荐系统演进:从零到上瘾算法

https://www.bilibili.com/video/BV1eqagzSECT/

推荐系统的演进:从简单规则到深度智能

推荐系统的本质是一个持续演进的"打怪升级"过程。从冷启动时代的流行度排序,到协同过滤的记忆能力,再到矩阵分解的抽象理解,最终抵达双塔模型与深度学习的实时智能——每一代算法都在解决前一代的致命短板,同时暴露新的局限。这种螺旋式上升揭示了一个核心真理:没有完美的算法,只有不断逼近用户真实需求的迭代。现代推荐系统早已超越"猜你喜欢"的范畴,进化为理解时间、场景、情绪的综合决策引擎。

冷启动:流行度排序的朴素智慧

App 刚上线时,系统对新用户一无所知,此时流行度排序是最务实的策略。通过一个手写公式(如 0.5×完播率 + 0.2×点赞 + 0.1×分享 − 时间衰减)对所有视频排序,将大众偏好的内容(如舞蹈、搞笑、萌宠)推给所有人。这看似简单,却能保证用户打开 App 八成能看到感兴趣的内容。更重要的是,这个阶段的核心任务是攒数据——记录谁看完了哪个视频、谁点赞、谁一秒划走,这些数据是未来算法的金矿。冷启动的本质是"用确定性换数据,用数据换个性化"。

协同过滤:基于相似性的推荐

当积累了几天数据后,系统进入协同过滤(Collaborative Filtering)阶段。原理直观:与你喜好相似的人看过的内容,你可能也喜欢。如果用户 A 和用户 B 都点赞了视频 X、Y、Z,而 B 还点赞了视频 W,那么 A 很可能也会喜欢 W。这种方法上手快、几行代码即可实现,但致命缺陷是只会死记硬背,不会泛化——即使你看了十条 PAPI 酱和十条脱口秀,它依然看不出你喜欢"搞笑"这个潜在因子,只会机械地推荐"相似用户"看过的具体视频。

见:推荐系统中的矩阵分解详解协同过滤算法原理与实践

矩阵分解:提取潜在因子的必杀技

为了让系统"开悟"、学会理解抽象口味,矩阵分解(Matrix Factorization)应运而生。将用户-视频的交互数据(完播率、点赞、转发等融合成评分)构成大矩阵,然后分解为两个低维矩阵:用户喜好矩阵和视频风格矩阵。每个用户被抽象成一个向量(如 0.8 搞笑 + 0.6 萌宠 + 0.1 新闻),每个视频也被编码为类似向量。通过计算向量点积判断匹配度——用户向量和视频向量的点积越高,推荐优先级越高。训练时使用 SGD 迭代优化,让两个小矩阵的乘积逼近原始大矩阵。这种方法解决了数据稀疏问题,并能捕捉到"0.8 搞笑 + 0.6 萌宠"的细腻组合,而非"搞笑/不搞笑"的一刀切。

见:基于矩阵分解的推荐算法

双塔模型 + ANN:捕捉非线性的深度智能

矩阵分解的局限在于只能做简单的"口味×风格"线性匹配,无法处理时间、场景、人群的复杂组合。第三代推荐系统引入神经网络和双塔架构:视频塔用神经网络将标题、封面、BGM、点赞数等离线转换为视频向量;用户塔实时将用户历史行为、搜索词、设备、城市、时间等信息编码为用户向量。当用户请求时,实时计算用户向量,通过 ANN(近似最近邻)算法快速找到最接近的视频候选,完成召回。随后进入精排阶段,用更复杂的模型对这 1000 个候选打分,选出最终推荐。这种架构能理解"通勤时看新闻、午休时看知识、晚上看搞笑"的场景化需求,实现真正的千人千面。

见:双塔模型基本原理与实践DSSM 双塔模型浅析ANN 近似最近邻搜索算法

召回与精排:推荐系统的"招聘流程"

现代推荐系统的工程架构模仿大厂招聘流程:先召回(从百万视频中筛出 1000 候选),再精排(从 1000 中选出 20 个最终推荐)。召回追求速度快、覆盖面广,精排追求精度高、体验好。双塔模型负责召回,用向量相似度快速粗筛;深度神经网络负责精排,融合更多特征精细打分。这种分层设计解决了"算力无限、时间有限"的矛盾——无法在几百万视频上都跑一遍复杂模型,于是先用轻量方法缩小范围,再集中算力精细决策。召回+精排的分层思想是工业级推荐系统的标配。

为什么你会刷到天亮?

顶级推荐系统的可怕之处在于:它不仅懂你喜欢什么类型,还懂你在什么时间、什么地点、什么心情下想看什么。通过双塔模型捕捉实时上下文,通过精排模型预测完播概率,系统精准推给你"此刻最想看到"的内容。每一次滑动都在产生新的行为数据,数据又实时反馈到模型,形成"越刷越懂你、越懂你越刷"的强化循环。这就是明明只想刷 5 分钟,抬头却发现天亮的底层机制——不是一个魔法,而是一整套从数据积累、特征工程到深度学习的技术栈在共同作用。


Copyright © 2024 Lionad - CC-BY-NC-CD-4.0