Deep Learning Recommender System
深度学习推荐系统
本文主要参考了深度学习推荐系统这本书,对推荐系统的发展历程、深度学习推荐模型、Embedding技术、推荐系统工程实现、模型评估体系、业界前沿实践等几方面进行了梳理,并进行了总结。
推荐系统的进化之路
模型名称 | 基本原理 | 特点 | 局限性 |
---|---|---|---|
协同过滤 | 根据用户的行为历史生成用户-物品共现矩阵,利用用户相似性和物品相似性进行推荐 | 原理简单、直接,应用广泛 | 泛化能力差,处理稀疏矩阵的能力差,推荐结果的头部效应较明显 |
矩阵分解 | 将协同过滤算法中的共现矩阵分解为用户矩阵和物品矩阵,利用用户隐向量和物品隐向量的内积进行排序并推荐 | 相较协同过滤,泛化能力有所加强,对稀疏矩阵的处理能力有所加强 | 除了用户历史行为数据,难以利用其他用户、物品特征及上下文特征 |
逻辑回归 | 将推荐问题转换成类似 CTR 预估的二分类问题,将用户、物品、上下文等不同特征转换成特征向量,输入逻辑回归模型得到 CTR,再按照预估 CTR 进行排序并推荐 | 能够融合多种类型的不同特征 | 模型不具备特征组合的能力,表达能力较差 |
FM | 在逻辑回归的基础上,在模型中加入二阶特征交叉部分,为每一维特征训练得到相应特征隐向量,通过隐向量间的内积运算得到交叉特征权重 | 相比逻辑回归,具备了二阶特征交叉能力,模型的表达能力增强 | 由于组合爆炸问题的限制,模型不易扩展到三阶特征交叉阶段 |
FFM | 在 FM 模型的基础上,加入 “特征域” 的概念,使每个特征在与不同域的特征交叉时采用不同的隐向量 | 相比 FM,进一步加强了特征交叉的能力 | 模型的训练开销达到了 的量级,训练开销较大 |
GBDT+LR | 利用 GBDT 进行 “自动化” 的特征组合,将原始特征向量转换成离散型特征向量。并输入逻辑回归模型,进行最终的 CTR 预估 | 特征工程模型化,使模型具备了更高阶特征组合的能力 | GBDT 无法进行完全并行的训练,更新所需的训练时长较长 |
LS-PLM | 首先对样本进行 “分片”,在每个 “分片” 内部构建逻辑回归模型,将每个样本的各 “分片” 概率与逻辑回归的得分进行加权平均,得到最终的预估值 | 模型结构类似三层神经网络,具备了较强的表达能力 | 模型结构相比深度学习模型仍比较简单,有进一步提高的空间 |
深度学习在推荐系统中的应用
模型名称 | 基本原理 | 特点 | 局限性 |
---|---|---|---|
AutoRec | 基于自编码器,对用户或者物品进行编码,利用自编码器的泛化能力进行推荐 | 单隐层神经网络结构简单,可实现快速训练和部署 | 表达能力较差 |
Deep Crossing | 利用 “Embedding 层 + 多隐层 + 输出层” 的经典深度学习框架,预完成特征的自动深度交叉 | 经典的深度学习推荐模型框架 | 利用全连接隐层进行特征交叉,针对性不强 |
NeuralCF | 将传统的矩阵分解中用户向量和物品向量的点积操作,换成由神经网络代替的互操作 | 表达能力加强版的矩阵分解模型 | 只使用了用户和物品的 id 特征,没有加入更多其他特征 |
PNN | 针对不同特征域之间的交叉操作,定义 “内积” “外积” 等多种积操作 | 在经典深度学习框架上模型会提高特征交叉能力 | “外积” 操作进行了近似化,一定程度上影响了其表达能力 |
Wide&Deep | 利用 Wide 部分加强模型的 “记忆能力”,利用 Deep 部分加强模型的 “泛化能力” | 开创了组合模型的构造方法,对深度学习推荐模型的后续发展产生重大影响 | Wide 部分需要人工进行特征组合的筛选 |
Deep&Cross | 用 Cross 网络替代 Wide&Deep 模型中的 Wide 部分 | 解决了 Wide&Deep 模型人工组合特征的问题 | Cross 网络的复杂度较高 |
FNN | 利用 FM 的参数来初始化深度神经网络的 Embedding 层参数 | 利用 FM 初始化参数,加快整个网络的收敛速度 | 模型的主结构比较简单,没有针对性的特征交叉层 |
DeepFM | 在 Wide&Deep 模型的基础上,用 FM 替代原来的线性 Wide 部分 | 加强了 Wide 部分的特征交叉能力 | 与经典的 Wide&Deep 模型相比,结构差别不明显 |
NFM | 用神经网络代替 FM 中二阶隐向量交叉的操作 | 相比 FM,NFM 的表达能力和特征交叉能力更强 | 与 PNN 模型的结构非常相似 |
AFM | 在 FM 的基础上,在二阶隐向量交叉的基础上对每个交叉结果加入了注意力得分,并使用注意力网络学习注意力得分 | 不同交叉特征的重要性不同 | 注意力网络的训练过程比较复杂 |
DIN | 在传统深度学习推荐模型的基础上引入注意力机制,并利用用户行为历史物品和目标广告物品的相关性计算注意力得分 | 根据目标广告物品的不同,进行更有针对性的推荐 | 并没有充分利用除 “历史行为” 以外的其他特征 |
DIEN | 将序列模型与深度学习推荐模型结合,使用序列模型模拟用户的兴趣进化过程 | 序列模型增强了系统对用户兴趣变迁的表达能力,使推荐系统开始考虑时间相关的行为序列中包含的有价值信息 | 序列模型的训练复杂,线上服务的延迟较长,需要进行工程上的优化 |
DRN | 将强化学习的思路应用于推荐系统,进行推荐模型的线上实时学习和更新 | 模型对数据实时性的利用能力大大加强 | 线上部分较复杂,工程实现难度较大 |
Embedding 技术在推荐系统中的应用
Embedding | 基本原理 | 特点 | 局限性 |
---|---|---|---|
word2vec | 利用句子中的相关性建模,利用单隐层神经网络获得词的 Embedding 向量 | 经典 Embedding 方法 | 仅能针对词序列样本进行训练 |
Item2vec | 把 Word2vec 的思想扩展到任何序列数据上 | 将 Word2vec 应用于推荐领域 | 仅能针对序列样本进行训练 |
DeepWalk | 在图结构上进行随机游走,生成序列样本后,利用 Word2vec 的思想建模 | 易用的 Graph Embedding 方法 | 随机游走进行抽样的针对性不强 |
Node2vec | 在 DeepWalk 的基础上,通过调整随机游走权重的方法使 Graph Embedding 的结果在网络的同质性和结构性之间进行权衡 | 可以有针对性地挖掘不同的网络特征 | 需要较多的人工调参工作 |
EGES | 将不同信息对应的 Embedding 加权融合后生成最终的 Embedding 向量 | 融合多种补充信息,解决 Embedding 地冷启动问题 | 没有较大的学术创新,更多是从工程角度解决多 Embedding 融合问题 |
局部敏感哈希 | 利用局部敏感哈希的原理进行快速的 Embedding 向量最近邻搜索 | 解决利用 Embedding 作为推荐系统召回层的快速计算问题 | 存在小概率的最近邻遗漏的可能,需要进行较多的人工调参 |
多角度审视推荐系统
- 推荐系统如何选取和处理特征?(How Do Recommender Systems Select and Process Features?)
- 推荐系统召回层的主要策略有哪些?(What Are the Main Strategies in the Recall Stage of Recommender Systems?)
- 推荐系统实时性的重要性体现在哪儿?有哪些提高实时性的方法?(How Is the Importance of Real-Time Performance Reflected in Recommender Systems, and What Methods Can Be Used to Improve It?)
- 如何根据具体场景构建推荐模型的优化目标?(How to Construct Optimization Objectives for Recommendation Models Based on Specific Scenarios?)
- 如何基于用户动机改进模型结构?(How to Improve Model Architecture Based on User Motivation?)
- 推荐系统冷启动问题的解决方法有哪些?(What Are the Solutions to the Cold Start Problem in Recommender Systems?)
- 什么是 “探索与利用” 问题?有哪些主流的解决方法?(What Is the “Exploration-Exploitation” Problem and What Are the Mainstream Solutions?)
“探索与利用” 机制在推荐系统中的应用
- 物品冷启动:对新加入的物品或者长久没有互动信息的长尾物品来说,探索与利用算法对新物品和长尾物品有天然的倾向性,因此可以帮助这类物品快速收集用户反馈,快速度过冷启动期,并在较少伤害系统整体收益的前提下,快速找到有潜力的物品,丰富优质的物品候选集。
- 发掘用户新兴趣:如果推荐系统总是利用现有数据为用户推荐物品,相当于对用户的已发掘兴趣进行 “涸泽而渔” 的利用,短期内用户可能满足于当前的推荐结果,但很可能快速疲倦离开。为了发掘用户兴趣,推荐系统有必要进行一定程度的探索,维持用户的长期兴趣。另外,用户兴趣本身也在不断的改变和进化,需要通过探索不断抓住用户兴趣改变的趋势。
- 增加结果多样性:探索与利用也是增加推荐结果多样性的手段。增加结果多样性对于推荐系统的好处主要有两方面,一方面是让用户能明显感觉到结果的丰富性;另一方面是减少大量同质化内容同时出现时用户的厌倦情绪。
深度学习推荐系统的工程实现
从工程的角度看推荐系统,可以将其分为两大部分:数据部分和模型部分。数据部分主要指推荐系统所需数据流的相关工程实现;模型部分指的是推荐模型的相关工程实现,根据模型应用阶段的不同,可进一步分为离线训练部分和线上服务部分。
- 推荐系统的数据流:与推荐系统数据流相关的大数据平台的主要框架和实现大数据平台的主流技术。
- 深度学习推荐模型的离线训练:训练深度学习推荐系统的主流平台,如 Spark MLlib、Parameter Server(参数服务器)、TensorFlow、PyTorch 的主要原理。
- 深度学习推荐模型的上线部署:部署深度学习推荐模型的技术途径和模型线上服务的过程。
推荐系统的评估
推荐系统评估相关的重要性应摆在与推荐系统构建同样的位置。主要有以下三点:
- 推荐系统评估所采用的指标直接决定了推荐系统的优化方向是否符合客观合理。
- 推荐系统评估是机器学习团队与其他团队沟通合作的接口性工作。
- 推荐系统评估指标的选取直接决定了推荐系统是否符合公司的商业目标和发展愿景。
聚焦推荐系统的评估问题,从离线评估到线上测试,从多个层级探讨推荐系统评估的方法和指标,具体包括以下内容:
- 离线评估的方法和指标。
- 离线仿真评估方法 ---- Replay(重播评估法)。
- 线上 A/B 测试方法和线上评估指标。
- 快速线上评估测试方法 ---- Interleaving(间隔插值测试法)。
深度学习推荐系统的前沿实践
Facebook 深度学习推荐系统总结
无论是 GBDT+LR 组合模型,还是最新的 DLRM 模型,Facebook 的技术选择总给人非常工业化的感觉,简单直接,以解决问题为主。虽然从学术角度看模型的创新性不足,但业界的从业者却能从中借鉴非常多的工程实践经验。DLRM 模型是非常标准且实用的深度学习推荐模型。如果公司刚开始从传统机器学习模型转到深度学习模型,则完全可以采用 DLRM 作为标准实现。而 GDBT+LR 组合模型传递出的特征工程模型化及模型组合的思路,对推荐系统技术发展有更深远的影响。
Airbnb 实时搜索推荐系统总结
-
工程与理论结合得极佳
通过对经典的 Word2vec 方法进行改造,完成对用户和房源的 Embedding,并针对数据稀疏的问题,利用用户属性和房源属性聚合稀疏数据。
-
业务与知识结合得极佳
在对 Embedding 目标函数的改造过程中,不止一次引入了与业务强相关的目标项,使算法的改造与公司业务和商业模型紧密结合。
YouTube 深度学习视频推荐系统总结
YouTube 分享的关于其深度学习推荐系统的论文使迄今为止看到的包含实践内容最丰富的一篇工程导向的推荐系统论文。
阿里巴巴推荐技术架构总结
-
工程实践性很强
一是应用场景来源于实际,二是解决问题的方案更容易落地。这得益于阿里巴巴得天独厚的业务和数据环境,再加上有优秀工程师的持续输出,看到很多 “实践出真知” 的解决方案。
-
对用户行为的观察非常精准
在改进推荐系统的过程中,只有将用户的行为和习惯揣摩到位,才能以此出发,从技术上映射用户的习惯。DIN、DIEN、MIMN 等一系列针对用户兴趣的推荐模型,精准地抓住了用户的行为习惯,这样的工作是细致且有效的。
-
模型的微创新
从低维到高维是创新,从离散到连续是创新,从单一到融合也是创新,阿里巴巴的一系列模型将在自然语言处理领域大行其道的注意力机制、序列模型引入推荐领域,是另一种典型且有效的创新手段。除此之外,每次模型的迭代更新都不是推导重建,而是基于之前模型的微创新,这往往是一个成熟团队进行高效技术迭代的成果。