1、前深度学习CTR预估模型的演化模型
在互联网永不停歇的增长需求下,CTR预估模型发展可谓一日千里。从逻辑回归进化到因子分解机、梯度提升树,再到深度学习的各种模型架构。LR、FM等传统CTR模型仍然凭借可解释性强、轻量级的训练部署要求、便于在线学习等不可替代的优势,拥有大量适用的应用场景。中间位置的LR模型:向下为了解决特征交叉问题,演化出了PLOY2\FM\FFM等模型;向右为了使用模型化、自动化的手段解决之前的特征工程难题,Facebook将LR和GBDT进行结合,提出GBDT+LR组合模型;向左Google从online learning的角度解决了模型的时效性问题,提出了FTRL;向上阿里基于样本分组的思路增加模型的非线性,提出了LS-PLM(MLR)模型。
(1)LR-CTR模型的核心和基础
逻辑回归的数学基础:逻辑回归作为广义线性模型的一种,它的假设是因变量服从伯努利分布,在点击率预估这个事情上,点击这个事件是否发生就是模型的因变量。
人类直觉和可解释性:不同特征的重要程度
工程化的需要:LR模型也凭借其易于并行化、模型简单、训练开销小等特点占据着工程领域的主流。
(2)PLOY2-特征交叉的开始
进行所有特征的暴力组合,虽然一定程度解决了特征组合问题,但本质上仍是线性模型,但采用one-hot的方法处理id类数据,致使特征向量极度稀疏,PLOY2进行无选择的特征交叉使原本稀疏的特征更加稀疏,使得大部分交叉特征的权重缺乏有效的数据进行训练,无法收敛;权重参数由n上升到n^2,增加了训练的复杂度。
(3)FM-隐向量特征交叉
FM为每一个特征学习一个隐向量,利用两个向量的内积来取代权重,减小了权重参数,增强了泛化能力。
(4)FFM-引入特征域概念
FFM模型学习每个特征在f个域上的k维隐向量,计算权重时取对方域的隐向量。
(5)GBDT+LR-特征工程模型化的开端
简而言之,Facebook提出了一种利用GBDT自动进行特征筛选和组合,进而生成新的离散特征向量,再把该特征向量当作LR模型输入,预估CTR的模型结构。
需要强调的是,用GBDT构建特征工程,和利用LR预估CTR两步是独立训练的。所以自然不存在如何将LR的梯度回传到GBDT这类复杂的问题,而利用LR预估CTR的过程前面已经有所介绍,在此不再赘述,下面着重讲解如何利用GBDT构建新的特征向量。
大家知道,GBDT是由多棵回归树组成的树林,后一棵树利用前面树林的结果与真实结果的残差做为拟合目标。每棵树生成的过程是一棵标准的回归树生成过程,因此每个节点的分裂是一个自然的特征选择的过程,而多层节点的结构自然进行了有效的特征组合,也就非常高效的解决了过去非常棘手的特征选择和特征组合的问题。
利用训练集训练好GBDT模型之后,就可以利用该模型完成从原始特征向量到新的离散型特征向量的转化。具体过程是这样的,一个训练样本在输入GBDT的某一子树后,会根据每个节点的规则最终落入某一叶子节点,那么我们把该叶子节点置为1,其他叶子节点置为0,所有叶子节点组成的向量即形成了该棵树的特征向量,把GBDT所有子树的特征向量连接起来,即形成了后续LR输入的特征向量。
GBDT生成特征向量的过程,举例来说,如上图所示,GBDT由三颗子树构成,每个子树有4个叶子节点,一个训练样本进来后,先后落入“子树1”的第3个叶节点中,那么特征向量就是[0,0,1,0],“子树2”的第1个叶节点,特征向量为[1,0,0,0],“子树3”的第4个叶节点,特征向量为[0,0,0,1],最后连接所有特征向量,形成最终的特征向量[0,0,1,0,1,0,0,0,0,0,0,1]。
由于决策树的结构特点,事实上,决策树的深度就决定了特征交叉的维度。如果决策树的深度为4,通过三次节点分裂,最终的叶节点实际上是进行了3阶特征组合后的结果,如此强的特征组合能力显然是FM系的模型不具备的。但由于GBDT容易产生过拟合,以及GBDT这种特征转换方式实际上丢失了大量特征的数值信息,因此我们不能简单说GBDT由于特征交叉的能力更强,效果就比FFM好,在模型的选择和调试上,永远都是多种因素综合作用的结果。
GBDT+LR比FM重要的意义在于,它大大推进了特征工程模型化这一重要趋势,某种意义上来说,之后深度学习的各类网络结构,以及embedding技术的应用,都是这一趋势的延续。在之前所有的模型演化过程中,实际上是从特征工程这一角度来推演的。
(6)FTRL-天下武功,唯快不破
FTRL解决了模型精度(随机梯度下降优化)和模型稀疏性(权重减小)兼顾的训练问题。
(7)LS-PLM-阿里曾经的主流CTR模型
即MLR(mixed logistic regression),先对样本进行分片,再在样本分片中应用LR进行CTR预估。先用聚类函数进行多分类(soft Max函数)再用LR模型计算样本在分片中具体的CTR,然后将二者进行相乘后加和。实现端到端的非线性学习,在建模时加入L1L2范数可以使得最终训练出来的模型具有较高的稀疏性,模型的学习和在线预测性能更好。
2、 深度学习CTR模型演化
base model:微软Deep Crossing
架构优化:PNN\FNN\BIN\DIEN
LR作为wide部分与MLP deep部分的结合,wide&deep;
Wide部分改进:DCN\DeepFM
Deep部分改进:AFM(在deep部分加入attention net)\NFM(将deep部分替换成有Bi-interaction层的MLP)
(1)微软Deep Crossing(2016年)-深度学习的CTR模型的base model
Deep Crossing - Web-Scale Modeling without Manually Crafted Combinatorial Features
通过加入embedding层将稀疏特征转化为低维稠密特征,用stacking layer,或者叫做contact layer将分段的特征向量连接起来,再通过多层残差神经网络完成特征的组合、转换,最终用scoring layer完成CTR的计算。
(2)FNN(2016年)-用FM的隐向量完成embedding初始化
Deep Learning over Multi-field Categorical Data
FNN相比deep crossing的创新在于使用FM的隐层向量作为embedding。由于ID类特征大量采用one-hot的编码方式,导致其维度极大,向量极稀疏,所以embedding层与输入层的连接极多,梯度下降的效率很低,这大大增加了模型训练的时间和embedding的不稳定性,使用pre train的方法完成embedding层的训练,是降低深度学习模型复杂度和训练不稳定性的有效工程经验。
(3)PNN(2016年)-丰富特征交叉的方式
Product-based Neural Networks for User Response Prediction
PNN模型的embedding层学习种类特征的分布式表示,product层捕获种类特征之间的交互特征(学习filed之间的交互特征),全连接层捕获高阶交互特征。PNN的关键在于在embedding层和全连接层之间加了product layer,完成针对性的特征交叉,并定义了inner product,outer product等多种product的操作捕捉不同的交叉信息,增强模型表征不同数据模式的能力。图中Product层包括Z和P两部分:
Z:在数据流中,假设Field个数为N,那么经过Embedding后的Field得到了N个Feature,将这N个Feature拿过来并排,没有经过线性变换,就得到Z(参考Embedding Vector有两种处理策略)。这部分代表的是对低维度特征,或者说原始特征的建模。加入这一部分训练会变得稳定。
P:经过Embedding后得到的N个Feature两两组合进行Product操作,把结果放到一起就得到了p。N个向量两两组合,会产生N(N-1)/2对组合。其中Product操作包括内积运算和外积运算,内积运算:每个神经元就是一个实数值,外积运算:每个神经元就是一个二维矩阵。
其中fi是field i经过Embedding后得到的Feature。Pi,j = g(fi, fj)定义为Feature之间两两组合,PNN中操作方式的不同,g函数会不同。
(4)Google wide&deep(2016年)-记忆能力和泛化能力的综合权衡
Wide & Deep Learning for Recommender Systems
把单输入层的wide部分和经过多层感知机的deep部分连接起来,一起输入最终的输出层。其中wide部分的主要作用是让模型具有记忆性,单层的wide部分善于处理大量的历史信息,deep部分的主要作用是让模型具有泛化性,利用DNN表达能力强的特点,挖掘藏在特征后面的数据模式。最终利用LR输出层将wide部分和deep 部分组合起来,形成统一的模型。
(5)华为deepFM(2017年)-用FM代替wide 部分
Factorization-Machine based Neural Network for CTR Prediction(果然优秀到让一眼看过去就会觉得不一样,哈哈)
deepFM用FM替换掉了原来的wide部分,加强了浅层网络部分特征组合的能力。事实上,由于FM本身就是由一阶部分和二阶部分组成的,deepFM相当于同时组合了原wide部分+二阶特征交叉部分+deep部分三种结构,进一步增强了模型的表达能力。
(6)Google deep&cross(2017年)-使用cross网络代替wide部分
Deep & Cross Network for Ad Click Predictions
使用cross网络替代了原来的wide部分,使用多层cross layer对输入向量进行特征交叉。
(7)NFM deepFM(2017年)-对deep部分的改进
Neural Factorization Machines for Sparse Predictive Analytics
deep部分变成了二阶隐向量相乘的形式,NFM从修改FM二阶部分的角度出发,用一个带Bi-interaction Pooling层的DNN替换了FM的特征交叉部分,形成了独特的wide&deep架构。其中Bi-interaction Pooling可以看作是不同特征embedding的element-wise product的形式,这也是NFM相比Google wide&deep的创新之处。
(8)AFM(2017年)-引入attention机制的FM
Attentional Factorization Machines - Learning the Weight of Feature Interactions via Attention Networks
对FM的二阶部分的每个特征交叉赋予了权重,这个权重控制了交叉特征对最后结果的影响,也就非常类似于NLP领域的注意力机制。
(9)阿里DIN(2018年)-阿里加入attention机制的深度学习网络
Deep Interest Network for Click-Through Rate Prediction
deep interest network将attention机制作用于深度神经网路,在模型的embedding layer和concatenate layer之间加入了attention unit,使模型能够根据候选商品的不同,调整不同特征的权重。
(10)阿里DIEN(2018年)-DIN的进化
Deep Interest Evolution Network for Click-Through Rate Prediction
DIEN的全称为Deep Interest Evolution Network,它不仅是对DIN的进一步“进化”,更重要的是DIEN通过引入序列模型 AUGRU模拟了用户兴趣进化的过程。具体来讲模型的主要特点是在Embedding layer和Concatenate layer之间加入了生成兴趣的Interest Extractor Layer和模拟兴趣演化的Interest Evolving layer。其中Interest Extractor Layer使用了DIN的结构抽取了每一个时间片内用户的兴趣,Interest Evolving layer则利用序列模型AUGRU的结构将不同时间的用户兴趣串联起来,形成兴趣进化的链条。最终再把当前时刻的“兴趣向量”输入上层的多层全连接网络,与其他特征一起进行最终的CTR预估。
参考资料
1、https://zhuanlan.zhihu.com/p/61154299 前深度学习时代CTR预估模型的演化之路
2、https://zhuanlan.zhihu.com/p/63186101 谷歌、阿里、微软等10大深度学习CTR模型最全演化图谱【推荐、广告、搜索领域】 (包含各篇论文地址)