第 3 章 浪潮之巅 —— 深度学习在推荐系统中的应用
概述
与传统机器学习模型相比,深度学习模型的优势
-
1、表达能力更强
- 能够挖掘出更多数据中潜藏的模式
-
2、结构非常灵活
- 能够根据业务场景和数据特点,灵活调整模型结构,使模型与应用场景完美契合
深度学习推荐模型的演化关系图
1、改变神经网络的复杂程度
- AutoRec --> Deep Crossing
2、改变特征交叉方式
-
代表模型
- NeuralCF, PNN
3、组合模型
-
代表模型
- Wide&Deep, Deep&Cross, DeepFM
-
思路
- 通过组合两种不同特点、优势互补的深度学习网络,提升模型的综合能力
4、FM 模型的深度学习演化版本
-
代表模型
- NFM, FNN, AFM
5、注意力机制与推荐模型的结合
-
代表模型
- AFM, DIN
6、序列模型与推荐模型的结合
-
特点
- 使用序列模型模拟用户行为或用户兴趣的演化趋势
-
代表模型
- DIEN
7、强化学习与推荐模型的结合
-
代表模型
- DRN
AutoRec — 单隐层神经网络推荐模型
AutoRec 模型的基本原理
-
将自编码器 ( AutoEncoder ) 的思想和协同过滤结合的一种「单隐层神经网络推荐模型」
-
基本原理
- 1、利用协同过滤中的共现矩阵,完成物品向量或用户向量的自编码
- 2、再利用自编码的结果得到用户对物品的预估评分,进行进行推荐排序
AutoRec 模型的结构
-
重建函数的具体形式
-
目标函数
基于 AutoRec 模型的推荐过程
-
I-AutoRec
- 输入向量:物品的评分向量
-
U-AutoRec
-
输入向量:用户的评分向量
-
优势
- 仅需输入一次目标用户的用户向量,就可以重建用户对所有物品的评分向量
- 即:得到用户的推荐列表仅需一次模型推断过程
-
劣势
- 用户向量的稀疏性可能会影响模型效果
-
AutoRec 模型的特点和局限性
Deep Crossing 模型 — 经典的深度学习架构
Deep Crossing 模型的应用场景
- Bing 中的推荐广告推荐场景
Deep Crossing 模型的网络结构
-
网络结构
-
Embedding 层
- 将稀疏的类别型特征转换成稠密的 Embedding 向量
- Embedding 层结构:以「全连接层」结构为主
- 补充:Feature#2 : 代表「数值型」特征,其不需要经过 Embedding 层,直接进入 Stacking 层
-
Stacking ( 堆叠 )层
- 把不同的 Embedding 特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量
-
Multiple Residual Units 层
-
主要结构
-
多层感知机 / MLP
- 采用「多层残差网络」作为 MLP 的具体实现
-
-
多层残差网络对特征向量各个维度进行充分的交叉组合,使模型能够抓取到更多的「非线性特征特征」和「组合特征」的信息
-
-
Scoring 层
- 输出层,拟合优化目标
Deep Crossing 模型对特征交叉方法的革命
-
Deep Crossing 模型中没有任何人工特征工程的参与
-
原始特征经 Embdding 后输入神经网络层,将全部「特征交叉」的任务交给模型
-
相比于 FM / FFM 只具备二阶特征交叉的能力
- Deep Crossing 模型可以通过调整神经网络的深度进行特征之间的「深度交叉」
NeuralCF 模型 — CF 与深度学习的结合
从深度学习的视角重新审视矩阵分解模型
-
在实际使用矩阵分解来训练和评估模型的过程中,往往会发现模型容易处于「欠拟合」状态,其原因是:
- 矩阵分解的模型结构相对比较简单,特别是「输出层」(也被称为 Scoring 层),无法对优化目标进行有效的拟合
NeuralCF 模型的结构
-
多层神经网络 + 输出层
-
优势
- 1、让用户向量和物品向量做更充分的交叉,得到更多有价值的特征组合信息
- 2、引入更多的「非线性特征」,让模型的表达能力更强
NeuralCF 模型的优势和局限性
-
局限性
-
由于是基于「协同过滤」的思想进行构造的,所以 NerualCF 没有引入更多其他类型的特征
- 这在实际应用中无疑浪费了其他有价值的信息
-
PNN 模型 — 加强特征交叉能力
PNN 模型的网络架构
-
网络架构
-
相比于 Deep Crossing 模型
-
PNN 模型用乘积层 ( Product Layer ) 代替了 Deep Crossing 模型中的 Stacking 层
- 即:不同特征的 Embedding 向量不再是简单的拼接,而是用 Product 操作进行两两交互,更有针对性地获取特征之间的交叉信息
-
-
相比 NeuralCF 模型
- PNN 模型的输入不仅包括用户和物品信息,还可有更多不同形式、不同来源的特征,通过 Embedding 层的编码生成同样长度的稠密特征 Embedding 向量
Product 层的多种特征交叉方式
- TODO
PNN 模型的优势和局限性
-
局限性
-
在外积操作的实际应用中,为了优化训练效率进行了大量的简化操作
-
对所有特征进行无差别的交叉
- 在一定程度上,忽略了原始特征向量中包含的有价值的信息
-
Wide & Deep 模型 — 记忆能力和泛化能力的综合
概述
-
主要思路
-
由单层的 Wide 部分和多层的 Deep 部分组成的混合模型
- Wide 部分:让模型具有较强的「记忆能力」( memorization )
- Deep 部分:让模型具有「泛化能力」( generalization )
-
-
优势
-
兼具「逻辑回归」和「深度神经网络」的优点
- 1、能够快速处理并记忆大量历史行为特征
- 2、具有强大的表达能力
-
-
开启了不同网络结构融合的新思路
-
输出
- 采用 softmax / logistic regression 综合 Wide 和 Deep 部分的输出
模型的「记忆能力」与「泛化能力」
-
记忆能力
-
模型直接学习并利用历史数据中物品或特征「共现频率」的能力
-
发现「直接的」、「暴力的」、「显然的」关联规则的能力
-
代表模型
- 协同过滤、逻辑回归
-
-
泛化能力
-
模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力
-
代表模型
- 矩阵分解
-
-
总结
-
简单模型的「记忆能力」强
- 善于记忆用户行为特征中的信息,并根据此类信息直接影响推荐结果
-
深度神经网络的「泛化能力」强
-
Wide&Deep 模型的结构
-
结构图
-
Wide & Deep
-
Wide 层:广义线性结构
- 模型能够从历史数据中学习到高频共现的特征组合,发掘特征之间的相关性,通过特征交叉产生特征相互作用的「记忆」,高效可解释。
-
Deep 层:前馈神经网络
- 模型能够利用相关性的传递性去探索历史数据中从未出现过的特征组合,通过 embedding 方法,使用低维稠密特征输入,可以更好的泛化训练样本中从未出现的交叉特征
-
-
概述
-
把「单输入层的 Wide 部分」与由「 Embedding 层和多隐层组成的 Deep 部分」连接起来,一起输入最终的输出层
- 1、单层的 Wide 部分:善于处理大量稀疏的 id 类特征
- 2、Deep 部分:利用神经网络表达能力强的特点,进行深层的特征交叉,挖掘隐藏在特征背后的数据模式
- 3、最终,利用「逻辑回归模型」,输出层将 Wide 部分和 Deep 部分组合起来,形成统一的模型
-
-
-
详细结构
-
概述
-
Wide 部分的输入:User Installed App, Impression App
-
原因:充分发挥 Wide 部分「记忆能力」强的优势
-
交叉积变换 ( Cross Product Transformation ) 函数:组合上述两个特征
-
-
Deep 部分的输入:全量的特征向量
- 是一个「前馈神经网络 ( feed-forward neural network )」
-
-
Wide&Deep 模型的进化
——
Deep&Cross ( DCN ) 模型
-
主要思路
- 使用 Cross 网络替代原来的 Wide 部分
-
设计 Cross 网络的目的:
-
增加特征之间的交互力度
- 使用多层交叉层 ( Cross layer ) 对输入向量进行特征交叉
-
-
总结
- 由多层交叉层组成的 Cross 网络在 Wide&Deep 模型中 Wide 部分的基础上进行特征的自动化交叉,避免了更多基于业务理解的人工特征组合
优化方法
-
Wide 部分
-
带有 L1 正则的 FTRL 算法
-
FTRL
-
概述
-
Follow- the-regularized-leader
- 在线学习算法
-
曾是「线性模型」「在线训练」的主要方法
-
可视为一个稀疏性很好,精度又不错的「随机梯度下降」方法
-
-
采用 TFRL with L1 的目的
-
让 Wide 部分变更更加稀疏
- 即:让 Wide 部分的大部分权重都为 0
-
好处
- 大大压缩了模型权重、也压缩了特征向量的维度
-
-
-
参考资料
- 为什么 Wide 部分要用 L1 TFRL 训练
-
-
Deep 部分
- AdaGrad
Wide&Deep 模型的影响力
-
DeepFM、NFM 等模型都可以看成 Wide&Deep 模型的延伸
-
优势
- 1、能够融合传统模型记忆能力和深度学习模型泛化能力的优势
- 2、模型结构不复杂,比较容易在工程上实现、训练和上线
实现
- tf.estimator.DNNLinearCombinedClassifier
FM 与深度学习模型的结合
FNN —— 用 FM 的隐向量完成 Embedding 层初始化
-
关键:
- 对 Embedding 层的改进
-
Embedding 层
-
作用
- 将稀疏输入向量转换为稠密向量
-
Embedding 层的收敛速度往往很慢
-
1、Embedding 层参数数量巨大
-
2、由于输入向量过于稀疏,在随机梯度下降过程中,只有与非零特征相连的 Embedding 层权重会被更新
- Embedding 层的输入极端稀疏化
-
-
-
针对 Embedding 层收敛速度慢,FNN 的「解决思路」
- 用 FM 模型训练好的各特征隐向量初始化 Embedding 层的参数
DeepFM —— 用 FM 代替 Wide 部分
-
对 Wide & Deep 的改进
- 用 FM 替换了原来的 Wide 部分,加强了浅层网络部分「特征组合」的能力;这是 wide&Deep 模型中 Wide 部分所不具备的
-
FM 部分与 Deep 部分共享相同的Embedding层
-
FM 部分对不同的特征域的 Embedding 进行两两交叉
- 即:将 Embedding 向量当作原 FM 中的特征隐向量
NFM —— FM 的神经网络化尝试
基于 FM 的深度学习模型的优点和局限性
-
概述
-
FNN, DeepFM, NFM 特点
- 在经典多层神经网络的基础上加入有针对性的特征交叉操作,让模型具有更强的非线性表达能力
-
注意力机制在推荐模型中的应用
AFM — 引入注意力机制的 FM
-
AFM 模型可以被认为是 NFM 模型的延续
-
注意力机制
-
基本假设
- 不同的「交叉特征」对于结果的影响程度不同
-
-
AFM 模型引入如何注意力机制 ?
-
在特征交叉层和最终的输出层之间加入「注意力网络 ( Attention Net )」
-
AFM 模型结构图
-
「注意力网络」的作用
- 为每一个交叉特征提供权重,即:注意力得分
-
「注意力网络」的结构
- 一个简单的单全连接层加 softmax 输出层
-
-
DIN — 引入注意力机制的深度学习网络
-
应用场景
- 阿里巴巴电商广告推荐
-
「注意力」强弱的表示
- 利用候选商品和历史行为商品之间的相关性计算出一个权重
DIEN — 序列模型与推荐系统的结合
概述
-
DIEN — DIN 模型的演化版本
-
应用场景
- 与 DIN 完全一致
-
创新
- 用序列模型模拟了用户兴趣的进行过程
DIEN 的「进行」动机
-
概述
- 特定用户的历史行为都是一个随时间排序的序列
- 与时间相关的序列,一定存在或深或浅的前后依赖关系
- 对于一个综合电商来说,用户兴趣的迁移是非常快的
-
序列信息的重要性
- 1、它加强了最近行为对下次行为预测的影响
- 2、序列模型能够学习到购买趋势的信息
DIEN 模型的架构
-
DIEN 模型的创新点
- 如何构建「兴趣进化网络」
-
兴趣进化网络分为三层,从下至上依次是
-
1、行为序列层 / Behavior Layer
- 把原始的 id 行为序列转换成 Embedding 行为序列
-
2、兴趣抽取层 / Interest Extractor Layer
- 通过模拟用户兴趣迁移过程,抽取用户兴趣
-
3、兴趣进化层 / Interest Evolving Layer
- 通过在兴趣抽取层基础上加入注意力机制,模拟与当前目标广告相关的兴趣进化过程
-
-
兴趣抽取层的结构
-
基本结构
-
GRU / 门循环单元
-
与 RNN 相比
- 解决了梯度消失问题
-
与 LSTM 相比
- GRU 参数量更少,训练收敛速度更快
-
-
-
-
兴趣进行层的结构
-
加入「注意力机制」
- 由 AUGRU 结构引入「注意力机制」
-
目的:为了更有针对性地模拟与目标广告相关的兴趣进行路径
-