推荐系统的发展历史
推荐系统是一种信息过滤系统,用于预测用户对物品的"评分"或"偏好"
一个常见的推荐系统架构:
- 目标:匹配用户和信息
- 召回:猜用户可能喜欢什么内容
- 排序服务: 确定用户最喜欢什么
- 重排序(Reranking) 服务:不要出现同样分类、重复密集等
- 应用场景:Feed流 信息流
推荐系统发展历史:
- 早期阶段(1990年代初):推荐系统起源于图书馆学科,基于过滤和关键词匹配。代表性产品/服务:早期的图书馆检索系统、学术论文推荐系统。
- 协同过滤时期(1990年代末至2000年代初):引入协同过滤算法,通过分析用户行为,找到相似用户或物品进行推荐。代表性产品/服务:亚马逊的商品推荐、Netflix的电影推荐、Last.fm的音乐推荐。
- 内容过滤时期(2000年代中期):基于内容特征和用户偏好进行推荐,利用物品的元数据和用户画像进行匹配。代表性产品/服务:Google News的新闻推荐、Pandora的音乐推荐、StumbleUpon的网页推荐。
- 混合推荐时期(2000年代后期至今):将协同过滤、内容过滤等不同算法进行组合,提供更准确和多样化的推荐结果。代表性产品/服务:淘宝的商品推荐、Spotify的音乐推荐、LinkedIn的职业推荐。
- 个性化推荐时期(2010年代初):以今日头条为代表,通过机器学习算法实现千人千面的个性化推荐。张一鸣团队开发的推荐算法成为行业标杆,推动了推荐系统的普及和应用。
- 深度学习时期(2010年代中期至今):利用深度学习技术提取更丰富的特征,结合用户行为序列、上下文信息等,进一步提高推荐的准确性。代表性产品/服务:YouTube的视频推荐、TikTok的短视频推荐、Instagram的内容推荐。
- 云服务化时期(2020年代至今):推荐算法在各大厂已经变成标准化的云服务,通过API接口提供给开发者使用。代表性服务:AWS Personalize、Google Recommendations AI、Azure Personalizer。这些服务封装了常用的推荐算法,如协同过滤、内容过滤和混合推荐,同时注重用户隐私保护,仅使用必要的行为数据进行推荐。
协同过滤算法
协同过滤算法是推荐系统中的一种基本算法,它基于用户行为数据来推荐物品,对现代推荐系统发展有着深远影响。协同过滤奠定了基于用户行为数据进行推荐的基础思想,为后续的矩阵分解、因子分解机(FFM)、深度学习推荐模型等提供了理论基础。它引入的用户-物品交互矩阵成为推荐系统数据组织的标准方式,而其解决稀疏性和冷启动问题的思路也启发了混合推荐、多模态推荐等新方法。现代推荐系统如YouTube的深度神经网络推荐和TikTok的多目标优化推荐,都能看到协同过滤的影子。
现在大厂提供的标准化推荐服务(例如火山引擎),大多都是基于协同过滤算法。
协同过滤算法主要分为以下三种:
- 基于内容的推荐:如果用户浏览或购买过某种类型的内容,则给用户推荐这种类型下的其它内容。例如,向用户推荐某位主演的其他电影,这种是基于内容的推荐。
- 基于用户的协同过滤:基于"跟用户喜好相似的人喜欢的东西,用户也很有可能喜欢"的原理。通过分析用户之间的相似性,找到相似用户群体,然后推荐相似用户喜欢但目标用户尚未接触的物品。例如,"购买了该商品的用户还购买了什么商品"这类推荐。
- 基于物品的协同过滤:基于"与用户喜欢的物品相似的物品,用户也可能喜欢"的原理。通过分析物品之间的相似关系,向用户推荐与其已经喜欢的物品相似的其他物品。例如,用户购买了某个商品后,系统会推荐与该商品经常一起购买的相关商品。
现代推荐系统
现代推荐系统的主要流程采用数据流优先的设计原则,具有高度灵活性。
其核心流程为:
- 收集用户行为数据
- 拼接训练样本
- 模型训练
- 生成推荐
- 用户反馈
- 模型更新
这种设计实现了端到端的实时更新能力,具体特点包括:
-
模型训练与部署
- 支持多种训练框架:LR(逻辑回归)、FM(因子分解机)、TensorFlow、DeepRec等
- 自研模型存储系统:统一的数据流架构和模型格式
- 快速更新:模型训练到线上更新可在分钟级完成
- 多Backend支持:可灵活切换不同计算后端
-
平台化开发
- 兼容主流深度学习框架的算子和自研算子
- 支持自定义算子开发
- 性能优化:针对不同框架进行内存分配和算子优化
- 框架迁移:2022年从TensorFlow迁移到DeepRec,发现性能优化思路具有通用性
这种架构设计确保了推荐系统能够快速响应业务需求,同时保持技术栈的灵活性,为持续优化推荐效果提供了坚实的技术基础。
推荐系统架构
召回模块
召回模块的目标是从海量候选集中快速筛选出与用户兴趣相关的候选集合,以较低的计算成本获取高召回率。主要特点:
- 效率优先:处理百万甚至亿级别的候选集,要求算法高效
- 广覆盖:确保不遗漏潜在相关内容,追求高召回率
- 多样性:通过多路召回策略保证推荐内容的多样性
- 实时性:能够快速响应用户最新行为和兴趣变化
工程实现:一般采取多路召回再进行融合
- 融合用户特征、商品特征和行为特征,通过多种召回通道获取候选集
- 使用向量检索等技术在线上进行高效召回
- 多路召回结果融合,平衡效率与多样性
常见召回策略:召回技术可以分为四大类型:传统召回、知识召回、表示召回和匹配召回,实际应用中通常是这些方法的融合。
-
传统召回
- 虽然近年来使用减少,但仍占据推荐系统的重要位置
- 包括热门召回、协同过滤召回和基于内容的召回
- 协同过滤召回:基于用户行为相似性
- 内容特征召回:基于内容标签、属性匹配
- 热门/时效性召回:基于全局热度和时效性
- 代表算法:SVD、Slim系列(gSlim、fSlim)、UserCF、ItemCF、Swing等
-
知识召回
- 基于知识图谱构建,具有强可解释性和高性能
- 实现方式:通过图谱或规则标签建立
- 社交关系召回:基于用户社交网络
- 兴趣标签召回:基于用户显性兴趣标签
- 应用:基于实体召回、基于标签召回、基于路径推理、基于逻辑表达
-
表示召回
- 向量检索召回(将用户和内容映射到同一向量空间)
- 从简单双塔模型发展到基于Graph的复杂模型
- 主要分类:
- 显式行为建模:
- GRE4Rec (Gated Recurrent Units for Recommendation)
- DUPN (Deep User Perception Network)
- BERT4Rec (Bidirectional Encoder Representations from Transformers for Recommendation)
- 隐式行为建模:
- XDM (eXtreme Deep Factorization Machine)
- 多兴趣表征:
- MIND (Multi-Interest Network with Dynamic routing)
- SASNet (Self-Attention Sequential Network)
- 超长行为建模
- 显式行为建模:
-
匹配召回
- 为精准表征行为,对模型复杂度要求更高
- 代表算法:
- NCF (Neural Collaborative Filtering)
- TDM (Tree-based Deep Matching)
- DR (Deep Retrieval)
- TDM和DR从检索、模型、索引三方面优化召回链路
- 需要精准的负样本采样
粗排模块
粗排模块的目标是在召回阶段筛选出的候选集上进行更精细的排序,以提高推荐的准确性和效率。
粗排模块通常需要平衡模型复杂度和计算效率,处理数百到数千个候选项,为精排阶段提供更优质的候选集。主要特点:
- 计算效率与精度平衡:比召回更精准,比精排更高效
- 特征使用:使用比召回更丰富但比精排更精简的特征集
- 模型复杂度:中等复杂度,通常采用轻量级深度学习模型
- 候选集规模:处理数百到数千个候选项,输出几十到几百个结果
粗排的发展历程:
- 早期:主要基于人工规则或后验概率统计,简单直接但表达能力有限。
- 中期:引入LR、XFTRL、GBDT等简单线性模型,开始有了基础的特征表达能力。
- 现代:轻量级深度学习模型(如双塔模型、三塔模型、和FSCD模型)将用户和商品分别进行表征后再进行匹配,大幅提升了表达能力。
- 最新趋势:端到端深度粗排、与精排模型协同优化
- 如COLD模型、AutoFAS模型等,在特征工程和模型架构上进行深度优化,追求更高性能和精度
- 与精排模型的融合:通过模型蒸馏等技术,使粗排模型能够学习精排模型的能力,保持决策一致性。
- 优化目标的一致性:将粗排的优化目标与整体推荐系统目标对齐,确保粗排决策有利于最终效果。
- 工程效率优化:随着模型复杂度增加,需要更强的工程优化能力来保证实时性。
粗排面临的主要挑战:
- 如何与召回和精排保持一致性
- 如何在有限计算资源下提高模型表达能力
- 特征交叉设计:如何在轻量模型中实现有效的特征交叉
- 性能与精度平衡:在保证推理速度的同时提升模型精度
- 样本选择偏差(SSB):如何解决由于前序环节筛选导致的数据分布偏差问题
- 如何处理样本选择偏差(SSB)问题
- 如何设计高效的特征交叉机制
粗排模型的演进与融合:
精排
精排模块是推荐系统中最核心的排序环节,负责对粗排筛选后的候选集进行精细化排序,直接决定最终的推荐结果质量。主要特点:
- 高精度优先:追求最高的预测准确性,是整个推荐系统的核心决策环节
- 特征丰富:使用最全面的特征集,包括用户特征、物品特征、上下文特征和交叉特征
- 模型复杂度高:采用复杂的深度学习模型,充分挖掘特征间的非线性关系
- 候选集规模:处理几十到几百个候选项,输出最终的推荐结果
精排模块的主要目标:
- 准确预测用户行为:精确预测用户对不同物品的点击率、转化率等关键指标
- 多目标平衡:同时优化点击率、转化率、用户体验等多个业务目标
- 实时响应:在有限的延迟要求下完成复杂模型的推理
- 可解释性:提供推荐结果的解释,增强用户信任和系统透明度
精排模型的演进历程:
- 传统机器学习阶段
- 线性模型:基于LR (Logistic Regression)、MLR (Mixed Logistic Regression)
- 树模型:GBDT (Gradient Boosting Decision Tree)、XGBoost
- 因子分解:FM (Factorization Machines)、FFM (Field-aware Factorization Machines)
- 具体做法:通过样本分组做 MLR、通过特征交叉做 FM,通过 FM 做序列,通过树模型的 GBDT 相关序列,XGBOST 序列,有实时性的、 FTRL、XFTRL等
- 优点:训练和推理效率高,可解释性强
- 局限:表达能力有限,难以捕捉复杂特征交互
- 深度学习早期阶段
- 基础深度网络:DNN (Deep Neural Network)、Wide & Deep
- 特征交互增强:DeepFM、DCN (Deep & Cross Network)、xDeepFM
- 优点:增强了特征交互能力,提升了模型表达能力
- 局限:对序列和时序信息建模不足
- 注意力机制阶段
- 行为序列建模:DIN (Deep Interest Network)、DIEN (Deep Interest Evolution Network)
- 多兴趣建模:MIND (Multi-Interest Network)、ComiRec
- 优点:能够捕捉用户兴趣动态变化,提升个性化推荐效果
- 代表模型:
- DIN:通过注意力机制对用户历史行为进行加权,突出与当前候选物品相关的历史行为
- DIEN:在DIN基础上引入兴趣进化网络,建模用户兴趣的演变过程
- SIM (Search Interest Model):融合搜索和浏览行为,更全面地理解用户兴趣
- 多任务学习阶段
- 共享表示学习:Shared-Bottom、MMoE (Multi-gate Mixture-of-Experts)
- 任务关系建模:PLE (Progressive Layered Extraction)、AITM (Adaptive Information Transfer Multi-task)
- 优点:能够同时优化多个业务目标,提升整体推荐效果
- 代表模型:
- MMoE:通过多个专家网络和门控机制,实现任务间的选择性知识共享
- PLE:通过分层提取结构,平衡任务间的共享与竞争关系
- 预训练与迁移学习阶段
- 大规模预训练:BERT4Rec、P5 (Personalized Prompt Learning for Product Search)
- 跨域迁移:STAR (Sparse Transfer Learning for Recommendation)
- 优点:能够利用大规模数据和跨域知识,提升推荐效果
- 局限:计算资源需求高,工程实现复杂
精排面临的主要挑战:
-
多目标优化:如何平衡点击率、转化率、用户体验等多个业务目标
- 解决方案:多任务学习、帕累托最优、约束优化等
-
样本偏差处理:如何处理曝光选择偏差、位置偏差等数据偏差问题
- 解决方案:反事实学习、因果推断、去偏技术等
-
冷启动问题:如何处理新用户、新物品的推荐问题
- 解决方案:元学习、迁移学习、内容特征增强等
-
计算效率与实时性:如何在保证模型复杂度的同时满足实时推理需求
- 解决方案:模型压缩、知识蒸馏、分布式计算等
-
可解释性与透明度:如何提供推荐结果的解释,增强用户信任
- 解决方案:注意力可视化、特征重要性分析、本地解释模型等
该技术演进图可以从四个部分来分析:
- 下部分:主要基于多层感知机(MLP)到Wide & Deep的演进路线,包括Deep & Cross Network(DCN)、DeepFM、Attentional Factorization Machine(AFM)、Neural Factorization Machine(NFM)等模型,这些模型都是针对特定部分进行优化
- 上部分:主要是对多层感知机(MLP)架构的增强,引入了注意力(Attention)机制、Product Layer以及图神经网络(GNN)等先进技术
- 右侧部分:主要基于自编码器(AE)、强化学习或神经协同过滤(NCF)的改进和变体
- 左侧部分:主要是基于注意力机制演化而来,包括Deep Interest Network(DIN)、Deep Interest Evolution Network(DIEN)、Multi-channel Interest Merge Network(MIMN)、Deep Session Interest Network(DSIN)和Search Interest Model(SIM)等模型,主要解决长序列建模问题
精排技术的发展趋势主要朝着四个方向发展:多模块、多任务、多目标和多模态。其中:
- 多任务方向:代表模型有Multi-gate Mixture-of-Experts(MMoE)和Progressive Layered Extraction(PLE)等
- 多目标方向:代表技术有帕累托最优等
- 多模态方向:代表模型有Multi-Modal Graph Convolution Network(MMGCN)、LOGO等
这些发展趋势体现在三个核心方面:、
- 模型目标:从单一目标向多目标优化转变
- 模型表达:采用更成熟复杂的结构增强表达能力
- 模型容量:通过引入更多特征处理和外部信息扩充模型容量
重排/混排
重排(Reranking)是推荐系统流程中的最后一个环节,主要负责对精排输出的候选集进行最终调整和优化,以提升整体推荐效果。与精排不同,重排阶段可以:
- 全局优化:考虑候选集整体的多样性、新颖性和覆盖度
- 解决方案:基于贪心算法、整数规划、强化学习等方法
- 考虑上下文:将用户当前状态、历史交互和页面展示效果纳入考量
- 解决方案:序列模型、注意力机制、图神经网络等
- 实时反馈:能够利用用户最新的交互信号进行实时调整
- 解决方案:在线学习、增量更新、边缘计算等
重排的主要技术方法包括:
- 基于规则的重排
- 多样性规则:控制同类内容比例、打散相似内容
- 约束规则:业务规则、合规要求、运营干预等
- 优点:可解释性强,易于实现和调整
- 局限:难以捕捉复杂模式,规则维护成本高
- 基于模型的重排
- 全局排序模型:DLCM (Deep Listwise Context Model)、PRM (Personalized Re-ranking Model)
- 序列感知模型:SetRank、IRGPR (Intent-aware Re-ranking with Graph Neural Networks)
- 优点:能够学习复杂的全局依赖关系,提升整体推荐质量
- 局限:计算复杂度高,实时性要求高
- 基于强化学习的重排
- 策略梯度方法:REINFORCE、Actor-Critic
- 值函数方法:DQN、Double DQN
- 优点:能够直接优化长期收益,处理延迟反馈
- 局限:训练不稳定,样本效率低
- 边缘计算重排
- 轻量级模型:EdgeRec(阿里开源)、MobileRec
- 模型压缩:量化、剪枝、知识蒸馏
- 优点:低延迟,能够利用端侧实时信息
- 局限:模型能力受限,依赖端侧计算资源
重排面临的主要挑战:
- 实时性与复杂性平衡:如何在毫秒级响应时间内完成复杂的全局优化
- 解决方案:模型压缩、计算优化、分布式处理
- 评估指标多元化:如何平衡点击率、多样性、用户满意度等多维度指标
- 解决方案:多目标优化、加权评分、A/B测试
- 冷启动与探索:如何在重排阶段引入探索机制,避免推荐系统固化
- 解决方案:Thompson采样、上下文赌臂算法、探索-利用平衡
- 个性化与公平性:如何在满足个性化的同时保证算法公平性和内容多样性
- 解决方案:公平性约束、多样性指标、伦理审计
例如,序列重排:
数据层
数据层是推荐系统的基础,负责数据的收集、处理和存储,为上层算法提供高质量的数据支持。一个完善的数据层架构通常包括以下几个关键组件:
-
数据采集系统
- 埋点设计、采集方案和数据流设计
- 用户行为数据:点击、浏览、停留时间、收藏、分享、评论等
- 内容特征数据:文本、图像、视频、音频的结构化和非结构化特征
- 上下文数据:时间、地点、设备、网络环境等
- 业务数据:交易、支付、退款、客服互动等
-
数据处理框架
- 实时处理:Kafka、Flink、Spark Streaming等
- 离线处理:Hadoop、Spark、Hive等
- 特征存储:Redis、HBase、Cassandra、特征存储系统(如阿里的FeatureStore)
-
特征工程系统
- 特征提取:从原始数据中提取有价值的信号
- 特征变换:归一化、标准化、离散化、编码等
- 特征选择:过滤、包装、嵌入式方法等
- 特征组合:交叉特征、多域特征融合等
-
用户理解系统
- 数据层:构建全面的用户画像基础
- 全面收集用户基础信息、行为信息、时空信息及设备信息
- 依赖成熟的实时数据采集框架支持
- 确保数据的全面性、实时性和准确性
- 洞察层:深度分析用户特征
- 用户价值洞察:消费能力、活跃度、忠诚度等
- 行为模式洞察:浏览习惯、购买周期、兴趣变化等
- 生命周期洞察:新用户、成长期、成熟期、流失风险等
- 标签体系建设:需求强度标签、价格敏感度标签、行为序列模式标签等
- 理解层:用户偏好与意图解析
- 显式理解:
- 用户行为筛选与分析(物料、类目偏好等)
- 兴趣标签抽取与权重计算
- 用户群体聚类与相似用户发现(Lookalike模型)
- 高层意图推断(购买力、品牌偏好、决策周期等)
- 用户生命周期全链路理解(从浏览到购买决策的完整路径)
- 隐式理解/表达:
- 多维度用户行为向量化表达
- 多模态行为序列建模(短期、长期、超长期)
- 行为序列的隐式语义挖掘
- 生命周期的连续性表达
- 显式理解:
- 可解释性建设:
- 基于相似用户和商品的推荐解释机制
- 基于文本和视觉内容的推荐理由生成
- 通过社交关系网络增强推荐可信度
- 数据层:构建全面的用户画像基础
数据层的核心挑战包括:
- 数据质量保障
- 完整性:确保数据无缺失、无重复
- 准确性:确保数据真实反映用户行为和内容特征
- 时效性:确保数据能够及时更新和处理
- 数据规模处理
- 海量数据存储:PB级数据的高效存储和检索
- 高并发处理:每秒百万级请求的实时处理
- 低延迟访问:毫秒级的特征获取和计算
- 数据隐私保护
- 数据脱敏:敏感信息的加密和匿名化
- 访问控制:严格的数据访问权限管理
- 合规处理:符合GDPR、CCPA等隐私法规
在实际应用中,大型推荐系统通常采用Lambda架构或Kappa架构,结合批处理和流处理能力,以满足不同场景下的数据处理需求。
推荐系统的评估
推荐系统的评估是确保系统有效性和持续优化的关键环节,主要分为线上业务指标和离线模型指标两大类:
线上/业务指标
线上指标直接反映推荐系统对业务的实际影响,是最终评判系统价值的关键:
- 转化率指标
- 点击率(CTR):用户点击推荐内容的比例
- 购买转化率(CVR):从推荐到最终购买的转化比例
- 下单率(Order Rate):用户通过推荐系统产生订单的比例
- 留存率(Retention Rate):推荐系统对用户留存的提升效果
- 推荐质量指标
- 覆盖率(Coverage):推荐系统能够推荐的物品占总物品的比例
- 多样性(Diversity):推荐结果的类别丰富程度
- 新颖性(Novelty):推荐结果中新内容的比例
- 相关性(Relevance):推荐内容与用户兴趣的匹配度
- 时效性(Timeliness):推荐内容的实时更新能力
- 用户满意度指标
- 用户反馈评分:用户对推荐内容的直接评价
- 停留时长:用户在推荐内容上的停留时间
- 互动深度:评论、分享、收藏等深度互动行为
- NPS(净推荐值):用户推荐意愿的综合评分
- 用户投诉率:对推荐内容不满的反馈比例
离线/模型链路指标
离线指标主要用于算法迭代和模型优化,按推荐系统的不同阶段有不同的评估重点:
- 召回阶段指标
- Recall(召回率):正确召回的相关物品占所有相关物品的比例
- Precision(精确率):正确召回的物品占所有召回物品的比例
- F1 Score:Recall和Precision的调和平均
- Hit Rate:至少一次命中的比例
- NS-recall/NS-precision:考虑负采样的召回/精确率
- KL散度:评估推荐分布与真实分布的差异
- 长尾覆盖率:对非热门内容的推荐能力
- 粗排阶段指标
- AUC(曲线下面积):模型区分正负样本的能力
- GAUC(分组AUC):考虑用户分组的AUC加权
- MAP(平均精度均值):考虑排序位置的精确率
- 与精排一致性:粗排结果与精排打分的相关性
- 计算效率:处理速度和资源消耗
- 精排和重排阶段指标
- 场景化AUC/GAUC:不同场景下的区分能力
- 分类目/人群AUC:针对不同类目和用户群体的表现
- NDCG(归一化折损累计增益):考虑位置权重的排序质量
- MRR(平均倒数排名):相关项排名的倒数平均
- 商业目标达成度:GMV、收入等业务指标的提升
- 公平性指标:不同用户群体获得推荐质量的均衡性
评估体系的构建原则
- 多维度评估:单一指标无法全面反映系统质量,需要构建多维度的评估体系
- 线上线下结合:离线指标提供快速迭代基础,线上指标验证实际业务价值
- 短期长期平衡:兼顾即时转化与用户长期价值
- A/B测试验证:通过对照实验验证模型迭代的实际效果
- 持续监控与优化:建立实时监控机制,及时发现并解决问题
推荐系统的评估是一个动态过程,需要根据业务发展阶段和用户需求变化不断调整评估指标和权重,确保系统持续为用户和平台创造价值。