2006 年,Netflix 宣布了一项百万美元竞赛:谁能让公司的电影推荐算法预测准确率提升 10%,就获得 100 万美元奖金。竞赛吸引了全球数千支团队,历时三年。最终获奖的方案综合了超过 100 种不同算法,准确率恰好超过了 10% 的门槛。
这场竞赛让推荐系统从学术领域进入了公众视野,也暴露了这个问题的本质:如何从海量历史行为中预测某个人接下来最想看什么,是一个极端困难的机器学习问题。
破除误解:推荐不是"给你看你搜索过的东西"
最直觉的个性化系统是"基于内容"的:用户买了科幻书,就给他推更多科幻书。这种方法存在致命弱点——过度专业化(overspecialization):系统永远不会把用户带到他从未尝试过但可能喜欢的领域。
真正强大的推荐系统基于协同过滤:不是分析物品内容,而是分析用户群体的行为模式。你喜欢 A 和 B,另一个用户也喜欢 A 和 B 且还喜欢 C——那你很可能也会喜欢 C。这个逻辑不需要知道 A、B、C 的任何内容信息。
更准确地说,现代推荐不是"猜你喜欢什么"这么简单,它是在有限屏幕、有限注意力和商业目标之间排序。系统要同时考虑相关性、多样性、新鲜度、商业约束、内容安全、库存、延迟和公平性。
你看到的一排视频或商品,往往是几十个模型、规则和业务约束共同作用的结果。
核心方法一:协同过滤
基于用户的协同过滤:找到与目标用户行为最相似的一组用户,推荐他们喜欢的物品。用余弦相似度或皮尔逊相关系数衡量用户相似性。缺点是随着用户数增长,计算两两相似度的代价变为 ,不可扩展。
基于物品的协同过滤:转而计算物品之间的相似性——购买了物品 A 的用户中,有多大比例也购买了物品 B?亚马逊在 2003 年发表的论文中将此方法工业化,使其可扩展到数亿用户。物品相似度矩阵可以离线预计算,推荐时只需做简单查表。
核心方法二:矩阵分解
协同过滤的一个核心数据结构是用户-物品评分矩阵:行是用户,列是物品,每格是该用户对该物品的评分(大多数格是空的——用户只看过极少数物品)。
推荐问题等价于矩阵补全:填满矩阵中的空缺格。
矩阵分解(Matrix Factorization)把这个稀疏矩阵分解为两个低秩矩阵的乘积:
其中 是用户的潜在因子矩阵, 是物品的潜在因子矩阵,$k$ 是潜在维度(通常为 20 到 200 之间)。这些潜在因子可以被直觉理解为"用户对某类风格的偏好程度"和"物品属于某类风格的程度"——但它们由数据驱动生成,无法手动解释。
Netflix 竞赛的最终获奖方案(BellKor Pragmatic Chaos,2009)的核心正是多种矩阵分解方法的集成。Simon Funk 在竞赛期间博客公开的 SVD 实现技巧,成为了这个领域的教科书案例。
工业架构:召回、粗排、精排、重排
真实平台不会直接从几亿个物品里用一个巨大模型排出最终列表,工业推荐通常分成多阶段。
第一步是召回:系统从海量物品中快速找出几百到几千个候选。召回可以来自协同过滤、双塔向量检索、热门榜、关注关系、地理位置、内容标签等多路通道。
第二步是粗排,用较轻的模型过滤掉明显不合适的候选,兼顾速度和质量。第三步是精排,模型会使用更多特征:用户近期行为、物品内容、上下文时间、设备、社交关系、价格、库存、创作者质量等。
第四步是重排。这里不只看单个物品的分数,还看整个列表的体验——如果前十个视频都来自同一主题,用户可能很快疲劳。重排会加入多样性、去重、探索比例、政策约束和广告插入。
这套流水线解释了为什么推荐系统既是机器学习问题,也是大型系统工程问题:它必须在几十毫秒内做出决定,同时处理冷启动、实时行为、模型更新和在线实验。
深度学习时代
2016 年之后,深度神经网络全面进入推荐系统:
Wide & Deep(Google,2016):把记忆能力(线性模型,Wide)与泛化能力(深度神经网络,Deep)结合,用于 Google Play 应用推荐。
YouTube 深度推荐(2016):把视频推荐分为候选生成(粗排,从数百万视频选出几百个)和精排(对几百个候选做细粒度排序)两阶段,应对规模挑战。
双塔模型(Two-Tower):用两个独立的神经网络分别编码用户和物品,内积作为相关性分数。用户塔和物品塔可以独立更新,物品向量离线计算,检索时用近似最近邻算法——是目前工业界主流架构。
Transformer 与序列推荐:把用户历史行为看成序列,用 Self-Attention 建模兴趣的时序演变(SASRec、BERT4Rec),成为当前学术前沿。
评价指标:准确率不是全部
Netflix Prize 以评分预测 RMSE 为核心指标,这推动了矩阵分解和集成方法的发展,却也暴露了推荐评估的局限。用户在真实平台上很少给 1 到 5 星评分,更常见的是点击、停留、购买、收藏、跳出、举报、分享这些隐式反馈。
因此现代系统会同时看多种指标:
- 点击率(CTR)衡量吸引注意的能力。
- 转化率(CVR)衡量用户是否购买、订阅或完成目标动作。
- 观看时长/停留时长衡量持续参与。
- 长期留存衡量用户是否愿意回来。
- 覆盖率与多样性衡量系统是否只服务头部内容。
- 满意度与负反馈衡量用户是否真的喜欢,而不只是被刺激。
指标之间经常冲突:提高点击率可能降低满意度;提高短期时长可能伤害长期信任;提高广告收入可能破坏内容生态。推荐系统最难的部分之一,就是选择优化什么。
代价与争议
信息茧房与成瘾性设计:推荐系统优化的是点击率、观看时长等代理指标,不一定对应用户的真实福祉。极端内容往往比温和内容更能激发情绪,更容易被高时长推荐。Facebook 2021 年泄露的内部研究显示,平台自身都承认算法可能加剧极端化。
探索-利用权衡(Exploration-Exploitation):一个只推用户已知喜欢的东西的系统,会把用户锁在窄小的兴趣圈里(利用)。需要一定比例的随机推荐来发现用户的新兴趣(探索)——但这会损害短期指标。
冷启动问题:新用户没有历史行为,协同过滤无法工作。新物品没有被人评价,无法建立相似关系。如何处理冷启动是推荐系统的永恒难题。
隐私:精准推荐意味着系统对用户了如指掌。欧盟 GDPR(2018)对个性化推荐使用的数据类型和保留时限设立了约束,但全球监管差异极大。
反馈回路:推荐系统会影响它观察到的数据。如果系统总给某类内容更多曝光,那类内容就会得到更多点击,模型下一轮会更确信用户喜欢它。这会造成自我强化:被推荐是因为热门,热门又因为被推荐。对创作者和商家来说,这意味着早期曝光机会本身就是资源分配。
偏见与公平:训练数据反映过去行为,也会继承过去偏见。招聘、信贷、教育内容推荐若只优化历史点击,可能持续放大性别、地区、阶层差异。公平推荐不仅要问"用户想看什么",还要问"系统给谁机会被看见"。
可解释性:一句"因为你看过 X,所以推荐 Y"通常只是简化解释,深度模型真正的排序理由可能来自数百个特征和复杂交互。用户、监管者和平台运营者都需要解释,但可解释性与模型性能之间常有张力。
冷启动与探索:系统如何学习新东西
冷启动不是一个小 bug,而是推荐系统的结构性难题。新用户没有历史行为,系统只能依赖注册信息、地理位置、入口来源、热门内容或主动问卷;新物品没有互动数据,系统只能依赖内容特征、创作者信誉、相似物品或少量试探性曝光。
探索机制就是为了解决这个问题。多臂老虎机(multi-armed bandit)提供了一种经典框架:在已知高收益选项和未知潜力选项之间分配流量。上下文老虎机进一步把用户特征和场景纳入决策。
在短视频、新闻和电商中,探索不是可有可无的随机噪声,而是系统保持活力的方式——没有探索,新内容没有机会,用户兴趣也会被旧数据锁死。但探索有成本:给用户展示不确定内容,可能降低短期指标。所以推荐系统始终在学习与赚钱、长期生态与短期转化之间做权衡。
跨域连接
- 自证预言:反馈回路在这里有精确的技术形式:训练数据由上一版策略生成,被推荐的内容才有机会被点击,于是「用户喜欢它」这个估计部分地自我实现。推论是离线评估在这种日志上有偏,必须用倾向得分加权或保留一小股随机流量做校正,否则每次迭代都在验证上一次的选择,而不是在测量偏好。
- 斯金纳:可变比率强化产生最高、最难消退的反应率——不确定下一次是否有回报,恰恰使行为最顽固,而无限下拉刷新正是这一程式的界面化实现。这给出比「加使用时长提醒」更硬的干预方向:把不确定性去掉,比如按主题分块、给出明确终点,其效应可从强化程式直接预测,而提醒并不改变程式本身。
- 平台经济学:推荐系统是双边市场的分配机制,它同时决定用户看到什么和创作者能否被看见,早期曝光本身就是被分配的资源。推论相当尖锐:排序目标函数事实上是一份产业政策,改一个权重就改变整个创作者生态的收益分布,而这项决定通常由工程指标而非任何公开程序做出。
- 矩阵:矩阵分解假设用户与物品的评分矩阵近似低秩,也就是假设偏好由少量潜在因子生成。这解释了补全为何可能——观测虽极稀疏,自由度却远少于格子数。同一假设也指明失效方向:当真实偏好并不低秩,误差会集中在长尾与小众口味上,而那正是覆盖率与多样性指标恶化的地方。
- 信息检索与搜索:检索有查询作为显式条件,推荐没有,于是正确答案只能从行为反推。这条差别决定了评价方式:检索可以靠固定测试集与人工判定长期推进,推荐的进步则高度依赖在线实验基础设施。推论是推荐系统的迭代速度受实验平台的统计功效限制,而不是受模型能力限制。
参考文献
- Koren, Y., Bell, R., Volinsky, C. Matrix Factorization Techniques for Recommender Systems. IEEE Computer 42(8), 2009.(Netflix 竞赛总结,矩阵分解综述)
- Covington, P., Adams, J., Sargin, E. Deep Neural Networks for YouTube Recommendations. RecSys, 2016.
- Cheng, H. et al. Wide & Deep Learning for Recommender Systems. Workshop on Deep Learning for RecSys, 2016.
- Linden, G., Smith, B., York, J. Amazon.com Recommendations: Item-to-Item Collaborative Filtering. IEEE Internet Computing 7(1), 2003.
- Bennett, J. & Lanning, S. The Netflix Prize. KDD Cup and Workshop, 2007.
- Rendle, S. Factorization Machines. IEEE International Conference on Data Mining, 2010.
- Hidasi, B. et al. Session-based Recommendations with Recurrent Neural Networks. ICLR Workshop, 2016.
延伸阅读
- Ricci, F., Rokach, L., Shapira, B. Recommender Systems Handbook. 3rd ed., Springer, 2022.
- Ekstrand, M. D., Riedl, J. T., Konstan, J. A. Collaborative Filtering Recommender Systems. Foundations and Trends in Human-Computer Interaction, 2011.