从协同过滤到强化学习,万字拆解推荐系统的“技术灵魂”
如果要评选互联网领域最“低调”的增长引擎,推荐系统绝对能排进前三。它不像自动驾驶那样炫酷,也不像大模型那样频频刷屏,但你每一次“刷”短视频、逛淘宝、看新闻,背后都有一堆模型在疯狂运算——只为让你多停留几秒,多点击几次。
最近重读了王喆的《深度学习推荐系统》,这本书不啰嗦、不炫技,把推荐系统从“石器时代”到“深度学习时代”的进化脉络捋得清清楚楚。今天就用一篇长文,把书里的核心认知+我的解读串起来,希望对正在做推荐、广告、搜索的朋友,或者想入门的同学,有点实实在在的启发。
一、推荐系统到底在“推荐”什么?先搞懂这三大信息
很多人以为推荐系统就是“猜你喜欢”,但技术视角下,它解决的是一个形式化问题:
在特定场景(Context)下,针对用户(User),从海量物品(Item)中预测用户对每个物品的喜好程度,然后排序输出。
这里面有三个核心信息源:
专业解读:早期推荐系统只盯着“用户-物品”交互矩阵(协同过滤),后来发现这太“近视”了——用户买不买,还跟价格、季节、促销、甚至心情有关。所以现代推荐系统的核心竞争力,就是“能融合多少维度的信息”。
二、前深度学习时代:那些“老兵不死”的经典模型
书里花了整整一章讲“前深度学习时代”,很多人会觉得过时,但这些模型是今天所有深度学习架构的“基因”。
1. 协同过滤(CF)——推荐界的“老祖宗”
- • UserCF:跟你兴趣相似的人喜欢什么,就推给你。
- • ItemCF:你之前喜欢的东西,跟它相似的其他东西也推给你。
问题:稀疏矩阵面前,协同过滤直接“跪”——新用户、新物品根本没数据,而且头部效应严重,热门物品被推烂,长尾物品永无出头之日。
2. 矩阵分解(MF)——隐向量的“鼻祖”
把用户-物品共现矩阵分解成用户隐向量和物品隐向量,用内积预测评分。这其实就是Embedding的雏形。
书中金句:矩阵分解的产出是用户和物品的隐向量,这与深度学习的Embedding思想不谋而合。
3. LR、FM、FFM——特征交叉的“三步走”
- • LR
:能融合多特征,但不会自动交叉,辛普森悖论就是例证。
- • FFM:引入“特征域”概念,不同域交叉用不同隐向量,表达能力更强,但计算量飙升。
4. GBDT+LR——特征工程模型化的“里程碑”
Facebook 2014年提出,用GBDT自动做特征筛选和组合,输出离散特征向量,再喂给LR。这相当于把“人工特征工程”变成了“模型内部流程”,直接启发了后来的深度学习。
5. LS-PLM(MLR)——阿里巴巴的“前深度学习”主力
分片线性模型,先聚类再LR,其实已经有三层神经网络的“味道”了。
我的体会:很多人觉得传统模型“土”,但它们训练快、解释性强、资源消耗低,在中小场景下依然能打。别盲目追新,适合的才是最好的。
三、深度学习时代:模型进化的“七条路径”
从2015年开始,推荐系统被深度学习彻底“翻新”。书里梳理了七条进化主线,我挑最关键的讲。
1. AutoRec——最简单的深度学习推荐
单隐层自编码器,输入评分向量,输出重建评分。虽然简单,但拉开了深度学习推荐的大幕。
2. Deep Crossing——经典的“Embedding+MLP”框架
微软2016年提出,彻底摒弃人工特征交叉,全靠Embedding + 多层神经网络自动完成。这是现在几乎所有深度推荐模型的“标准模板”。
3. NeuralCF——用神经网络替代内积
矩阵分解的最后互操作是内积,太简单。NeuralCF用MLP来“交互”用户向量和物品向量,表达能力大幅提升。
4. PNN——多种特征交叉“工具箱”
内积、外积、加权……不同特征域之间的交叉方式被显式定义,让模型“有意识”地做特征组合,而不是全交给全连接层乱炖。
5. Wide&Deep——记忆与泛化的“黄金组合”
谷歌2016年提出,Wide部分擅长“记住”高频共现(比如:点过A就推B),Deep部分擅长“泛化”稀疏特征。这个架构影响深远,后来的DeepFM、DCN、Deep&Cross都是它的变体。
6. 注意力机制入驻——DIN、AFM
- • AFM:给FM的每个二阶交叉特征加一个“注意力权重”,让模型知道哪些交叉更重要。
- • DIN:阿里巴巴的招牌模型,根据候选商品动态计算用户历史行为中每个商品的权重——你买键盘,历史中的鼠标就比T恤重要得多。
核心洞察:注意力机制本质就是“加权平均”,但它让推荐从“一视同仁”变成了“见人下菜碟”,效果提升非常明显。
7. 序列模型 + 强化学习——DIEN、DRN
- • DIEN:在DIN基础上加入GRU,模拟用户兴趣的演化过程,不仅看“买了什么”,还看“先买什么后买什么”。
- • DRN:把强化学习引入推荐,在线实时更新模型,每获得一次反馈就微调参数,真正做到“越用越聪明”。
我的解读:深度学习推荐模型的最大贡献不是“准确率高了几个点”,而是让模型能够“理解”用户行为背后的时序、兴趣迁移、注意力焦点,这是传统模型完全做不到的。
四、Embedding:深度学习的“核心操作”
书里专门用一章讲Embedding,不是没有道理——没有Embedding,深度学习推荐根本跑不起来。
1. Word2vec → Item2vec → Graph Embedding
- • Item2vec:把“词序列”换成“用户行为序列”,学物品向量。
- • DeepWalk / Node2vec:在图结构上随机游走,生成序列再学向量,能保留更多结构信息。
2. EGES——阿里巴巴的“冷启动杀手锏”
新商品没有交互历史,怎么生成Embedding?引入补充信息(类目、价格、品牌等),加权融合多个Embedding,让新商品也能有“初始向量”。
3. 局部敏感哈希(LSH)——让Embedding检索“飞起来”
几百万候选集,遍历算相似度太慢。LSH通过哈希分桶,把最近邻搜索从O(n)降到常数级别,是召回层工程化的关键。
实用建议:Embedding预训练 + 轻量级线上模型(比如LR或浅层MLP)是很多大厂的标配——既享受了深度学习的表达能力,又避免了线上推断的延迟噩梦。
五、除了模型,还有哪些“隐形天花板”?
书里第5章从多个角度“拷问”推荐系统,我挑几个最扎心的。
1. 特征工程——永远的基础
深度学习自动交叉≠你可以不做特征工程。用户行为序列、上下文特征、统计特征依然是效果的根本。书里强调:特征工程要与业务理解深度绑定,模型只是“放大器”,不是“无中生有”的魔法。
2. 召回层——多路召回 vs Embedding召回
召回层必须快,所以常用多路召回(热门、协同过滤、兴趣标签……)或Embedding召回。Embedding召回的好处是评分连续、可统一排序,但多路召回更灵活,两者常常并用。
3. 实时性——“唯快不破”
Facebook的实验证明:模型更新延迟越大,效果损失越明显。实时性包含两部分:
- • 特征实时性:session内行为能否立即影响下一次推荐?
- • 模型实时性:在线学习、增量更新能否跟上数据分布变化?
工程上常用流计算(Flink)+ 内存数据库(Redis)+ 在线学习(FTRL) 的组合拳。
4. 冷启动——巧妇难为无米之炊
- • 丰富用户/物品属性特征(注册信息、第三方DMP)。
- • 主动学习、迁移学习、探索与利用,让系统“主动问”或“借鉴”其他领域知识。
5. 探索与利用(E&E)——别“涸泽而渔”
只推已知兴趣,短期收益高,但用户会腻。UCB、Thompson Sampling、LinUCB 等算法在“探索新内容”和“利用已知兴趣”之间找平衡。DRN更是用随机扰动模型参数的方式实现探索,思路非常新颖。
六、工程实现:理论要“落地”,得有这些“家伙”
书里第6章讲工程,干货密度极高。
1. 大数据架构:Lambda → Kappa
- • Lambda:批处理 + 流处理双轨,保证实时性和准确性。
- • Kappa:一切皆流,批处理是“大窗口的流”,更优雅但工程难度高。
2. 离线训练:Spark MLlib vs Parameter Server vs TensorFlow
- • Spark MLlib:数据并行,简单但同步阻断,大模型吃力。
- • Parameter Server:异步非阻断 + 多server节点,
解决单点瓶颈,是分布式训练的“老兵”。
- • TensorFlow:任务关系图调度 + CPU/GPU混合,灵活性和生态最强。
3. 线上部署:五种“姿势”
- • 预存Embedding(常用,但不支持复杂模型)。
- • PMML跨平台转换(通用,但对复杂模型支持有限)。
- • TensorFlow Serving(最主流,但性能仍需调优)。
笔者的体会:工程上没有“银弹”,必须在Redis容量、延迟、模型复杂度、研发周期之间做取舍。书里特别强调“木桶理论”——有时候提升效果最快的不是改模型,而是优化数据流或特征实时性。
七、评估体系:离线 → Replay → Interleaving → A/B测试
书里第7章搭建了一套四层评估金字塔:
- 1. 离线评估:AUC、Recall、RMSE,快速筛选想法。
- 2. Replay:按时间顺序动态回放样本,模拟线上更新过程,比静态离线更真实。
- 3. Interleaving:把两个算法的结果混合展示给同一批用户,用更少样本快速判断优劣,灵敏度是A/B测试的100倍。
- 4. 线上A/B测试:最终“金标准”,直接验证商业指标(点击率、时长、转化率)。
关键原则:越靠近金字塔底层,越看重“效率”;越靠近顶层,越看重“正确性”。不要跳过中间层直接上A/B,那样浪费流量又低效。
八、四大厂实战:Facebook、Airbnb、YouTube、阿里巴巴
书里最后用四家大厂的案例,把前面所有知识点串了一遍。
1. Facebook——实用主义至上
- • GBDT+LR:特征工程模型化,至今仍有参考价值。
- • 2019年DLRM:标准Embedding+MLP,用CPU+GPU混合并行,不搞花哨,重在稳定高效。
2. Airbnb——Embedding的“教科书”
- • 短期兴趣:Session内点击序列训练房源Embedding,目标函数里特意加入“预订房源”作为全局上下文。
- • 长期兴趣:用用户属性和房源属性聚合解决数据稀疏,把user type和listing type放到同一向量空间。
- • 搜索词Embedding让“France Skiing”能召回滑雪胜地,而不是字面匹配。
3. YouTube——观看时长为王
- • 候选集生成:多分类 + Embedding最近邻,用负采样加速softmax。
- • 排序模型:加权逻辑回归,正样本权重=观看时长,服务时用 ( e^{Wx+b} ) 预测期望时长。
- • Example Age特征:解决新视频偏好,把训练样本的“年龄”作为特征,线上设为0,效果显著。
4. 阿里巴巴——用户兴趣建模的“连续剧”
从基础MLP → DIN(注意力) → DIEN(序列演化) → MIMN(多兴趣通道),
每一步都精准踩在“用户行为怎么建模”这个核心痛点上。工程上还把序列模型拆解到“用户兴趣中心”服务,延迟从200ms降到19ms,非常硬核。
九、推荐工程师的“四维能力模型”
书里最后一章给出一个很实在的技能雷达:知识、工具、逻辑、业务。
- • 工具:会TensorFlow、Spark、Flink、Redis……
我的补充:现在很多工程师只盯着“知识”和“逻辑”,刷论文、调参,却忽视“工具”和“业务”。结果模型在离线指标上漂亮,上线后一塌糊涂。真正优秀的推荐工程师,是能在“离线调参”和“线上压测”之间无缝切换的人。
写在最后
《深度学习推荐系统》这本书,既是技术史,也是工程手册,更是一份“避坑指南”。它告诉我们:
- • 推荐系统不是“一个模型打天下”,而是数据、特征、模型、工程、评估的系统工程。
- • 深度学习不是“万能药”,传统模型的优点(可解释、轻量、稳定)依然有巨大价值。
- • 对业务的深刻理解,永远比模型结构的“创新”更重要——DIN、DIEN的诞生,都源于对“用户兴趣如何变化”的细致观察。
如果你正在做推荐、广告、搜索,或者想进入这个领域,这本书值得放在工位上反复翻看
。而今天这篇长文,算是我交的一份“读书笔记”加“实战心得”。希望能帮你少走弯路,更快地构建自己的推荐系统知识框架。
互动话题:你在推荐系统实战中,遇到最大的“坑”是什么?是冷启动、实时性,还是模型上线后的效果衰减?欢迎评论区聊聊。