-
基本定义:
物品信息:视频信息、物品信息、新闻信息等;
用户信息:历史行为、人口属性、关系网络等;
场景信息:又称上下文信息。用户的最终选择一般会受时间、地点、用户的状态等一系列场景信息的影响。
-
推荐系统要解决的根本问题:
简单化定义:在“信息过载”的情况下,用户如何高效获取感兴趣的信息。
形式化定义:对于某个用户U(User),在特定场景C(Context)下,针对海量的“物品”信息构建一个函数 ,预测用户对特定候选物品i(Item)的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题。
-
推荐系统逻辑架构图:
-
工程师要解决的两类问题
~1. 数据和信息问题:“用户信息”,“物品信息”,“场景信息”分别是什么?如何存储、更新和处理?该部分逐渐发展为:推荐系统中融合了数据离线批处理、实时流处理的数据流框架;
~2. 算法和模型问题:模型如何训练、预测,以及如何达成更好的推荐效果?该部分则进一步细化为推荐系统中,集训练(Training)、评估(Evaluation)、部署(Deployment)、线上推断(Online Inference)为一体的模型框架。
-
技术架构图:
基于上述两类问题,推荐系统的技术架构图如图所示:
-
第一部分:数据部分
~1. 负责“用户”、“物品”、“场景”信息的收集与处理。根据数据量和实时性划(实时性由强到弱/海量数据处理能力由弱到强)分为三种数据处理方式,成熟的推荐系统会将三者取长补短。例如:Spark 离线数据处理,Flink 准实时数据处理等。
~2. 大数据计算平台通过对推荐系统日志,物品和用户的元数据等信息的处理,获得了推荐模型的训练数据(模型训练与评估)、特征数据(线上推断)、统计数据(监控系统)等。
-
第二部分:模型部分
~1. 模型的结构一般由“召回层”、“排序层”以及“补充策略与算法层”组成:
召回层:一般由高效的召回规则、算法或简单的模型组成,这让推荐系统能快速从海量的候选集中召回用户可能感兴趣的物品。
排序层:利用排序模型对初筛的候选集进行精排序。
再排序层,返回给用户推荐列表之前,为兼顾结果的“多样性”、“流行度”、“新鲜度”等指标,结合一些补充的策略和算法对推荐列表进行一定的调整,最终形成用户可见的推荐列表。
~2. 模型的训练方法根据环境的不同,可以分为“离线训练”和“在线更新”两部分:
离线训练:利用全量样本和特征,使模型逼近全局最优点;
在线更新:准实时地“消化”新的数据样本,更快地反应新的数据变化趋势,满足模型实时性的需求。
~3. 推荐系统的模型部分还包括“离线评估”和“线上 A/B 测试”等多种评估模块,用来得出线下和线上评估指标,指导下一步的模型迭代优化。
-
革命性体现
深度学习对于推荐系统的革命集中在模型部分,体现在3点:
~1. 深度学习中 Embedding 技术在召回层的应用;
~2. 不同结构的深度学习模型在排序层的应用;
~3. 增强学习在模型更新、工程模型一体化方向上的应用;