计算广告领域中数据特点:
1 正负样本不平衡
2 大量id类特征,高维,多领域(一个类别型特征就是一个field,比如上面的Weekday、Gender、City这是三个field),稀疏
在电商领域,CTR预估模型的原始特征数据通常包括多个类别,比如[Weekday=Tuesday,
Gender=Male, City=London, CategoryId=16],这些原始特征通常以独热编码(one-hot encoding)的方式转化为高维稀疏二值向量,多个域(类别)对应的编码向量链接在一起构成最终的特征向量。
高维、稀疏、多Field是输入给CTR预估模型的特征数据的典型特点。以下介绍的模型都假设特征数据满足上述规律,那些只适用于小规模数据量的模型就不介绍了。
常用模型如下:
1 LR 2 LR+GBDT 3 FM或者FFM 4 混合逻辑回归MLR
5 WDL 6 FNN (Factorization-machine supported Neural Network)
7. PNN(Product-based Neural Networks) 8.DeepFM 9.DIN
本文将从多种视角来观察这些模型,如输入数据的特点、从神经网络的视角,网络结构的组成方式,串并联结构,特征组合的方式等等。
1 LR家族
1 LR:
LR模型是广义线性模型,从其函数形式来看,LR模型可以看做是一个没有隐层的神经网络模型(感知机模型)
LR模型一直是CTR预估问题的benchmark模型,由于其简单、易于并行化实现、可解释性强等优点而被广泛使用。然而由于线性模型本身的局限,不能处理特征和目标之间的非线性关系,因此模型效果严重依赖于算法工程师的特征工程经验。为了让线性模型能够学习到原始特征与拟合目标之间的非线性关系,通常需要对原始特征做一些非线性转换。常用的转换方法包括:连续特征离散化、特征之间的交叉等。
LR的优化算法FTRL:
2 GBDT + LR
GBDT模型能够学习高阶非线性特征组合,对应树的一条路径(用叶子节点来表示)。通常把一些连续值特征、值空间不大的categorical特征都丢给GBDT模型;空间很大的ID特征(比如商品ID)留在LR模型中训练,既能做高阶特征组合又能利用线性模型易于处理大规模稀疏数据的优势。
3 FM与FFM:
从神经网络的视角来看,MF相当于为user和iem引入了嵌入向量,而FM为所有的离散特征引入了嵌入向量,降低了参数的数量,而FFM结合广告领域数据的多field特点,将不同field的特征交叉与同一filed的特征交叉进行区分,为每一维特征引入了多个隐向量。
混合逻辑回归(MLR)
MLR算法是alibaba在2012年提出并使用的广告点击率预估模型,2017年发表出来。MLR模型是对线性LR模型的推广,它利用分片线性方式对数据进行拟合。基本思路是采用分而治之的策略:如果分类空间本身是非线性的,则按照合适的方式把空间分为多个区域,每个区域里面可以用线性的方式进行拟合,最后MLR的输出就变为了多个子区域预测值的加权平均。如下图(C)所示,就是使用4个分片的MLR模型学到的结果。
上式即为MLR的目标函数,其中 为分片数(当 时,MLR退化为LR模型); 是聚类参数,决定分片空间的划分,即某个样本属于某个特定分片的概率; 是分类参数,决定分片空间内的预测; 和 都是待学习的参数。最终模型的预测值为所有分片对应的子模型的预测值的期望。
MLR模型在大规模稀疏数据上探索和实现了非线性拟合能力,在分片数足够多时,有较强的非线性能力;同时模型复杂度可控,有较好泛化能力;同时保留了LR模型的自动特征选择能力。
MLR模型的思路非常简单,难点和挑战在于MLR模型的目标函数是非凸非光滑的,使得传统的梯度下降算法并不适用。相关的细节内容查询论文:Gai et al, “Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction” 。
另一方面,MLR模型可以看作带有一个隐层的神经网络。如下图, 是大规模的稀疏输入数据,MLR模型第一步是做了一个Embedding操作,分为两个部分,一种叫聚类Embedding(绿色),另一种是分类Embedding(红色)。两个投影都投到低维的空间,维度为 ,是MLR模型中的分片数。完成投影之后,通过很简单的内积(Inner Product)操作便可以进行预测,得到输出 。
通过神经网络的视角来理解CTR模型:
前面介绍过广告领域的数据都是由one-hot表示的,如果直接连接DNN,会导致输入参数过度,所以通常需要做embedding,避免全连接,分而治之,让Dense Vector进行组合,那么高阶特征的组合就出来了,但是低阶和高阶特征组合隐含地体现在隐藏层中,如果我们希望把低阶特征组合单独建模,然后融合高阶特征组合。即将DNN与FM进行一个合理的融合:二者的融合总的来说有两种形式,一是串行结构,二是并行结构
embedding+MLP:深度学习CTR预估的通用框架
1 embedding表示 2 对embedding向量进行拼接、交叉等等特征组合 3 DNN结构
1 对不同领域的one-hot特征进行嵌入(embedding),使其降维成低维度稠密特征。
2 然后将这些特征向量拼接(concatenate)成一个隐含层。
3 之后再不断堆叠全连接层,也就是多层感知机(Multilayer Perceptron, MLP,有时也叫作前馈神经网络)。
4 最终输出预测的点击率。
如何连接FM与DNN有两种方式: 1 串联 2 并联
串联模型主要有:FNN、Product-based Neural NetWork 、Neual factorization machines 、 Attenation-Based Factorization machines
并联模型主要有: WDL,DeepFM、DeeoCrossNetWork
此外还需要注意一个问题:如何处理多个领域的嵌入特征?
1 拼接 FNN
2 交叉 NFM
3 不同类型的向量乘法: PNN
FM ->(FNN, NFM)
基本结构
FM:嵌入后再进行内积
FM的实际应用:考虑领域信息
FM与GBDT的区别:
1 使用数据不同, FM使用于处理高维稀疏数据,而GBDT在高位稀疏数据上容易产生过拟合。
2 GBDT可以做高阶特征组合,而FM只能做二阶特征组合。
1 GBDT的优势在于处理连续值特征,比如用户历史点击率,用户历史浏览次数等连续值特征。而且由于树的分裂算法,它具有一定的组合特征的能力,
模型的表达能力要比LR强。GBDT对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和该特征的最优分裂点,而且根据特征的分裂次数,
还可以得到一个特征的重要性排序。所以,使用GBDT减少人工特征工程的工作量和进行特征筛选。
2 GBDT善于处理连续值特征,但是推荐系统的绝大多数场景中,出现的都是大规模离散化特征,如果我们需要使用GBDT的话,则需要将很多特征统计成连续值特征(或者embedding),
这里可能需要耗费比较多的时间。同时,因为GBDT模型特点,它具有很强的记忆行为,不利于挖掘长尾特征,而且GBDT虽然具备一定的组合特征的能力,但是组合的能力十分有限,远不能与dnn相比。
3 树分裂的时候,选择连续值特征,等于选择了一个特征,选择离散化特征,却等于选择了一个特征的某一维,这样子往往会造成离散化特征形同虚设。
串联模型:
FNN:
FM + MLP 相当于用FM模型得到了每一维特征的嵌入向量,做了一次特征工程,得到特征送入分类器,不是端到端的思路,有贪心训练的思路。
NFM:通过逐元素乘法延迟FM的实现过程
10.AFM: 对简化版NFM进行加权求和
11.PNN:通过改进向量乘法运算延迟FM的实现过程
并联模型:
DeepFM: FM与MLP的并联结合
DCN:高阶FM的降维实现
Wide&Deep: DeepFM与DCN的基础框架
总结:
神经网络最开始都是经过Embedding把原始高纬度稀疏的输入转换为低维度稠密的向量,PNN也不例外。对于FM来说,这就是隐向量,FNN也是利用FM来进行Embedding Vector的初始化的。
处理流程: 通过设计网络结构进行组合特征的挖掘
Embedding Layer、Product Layer、Full-connect Layer。
1 FM : embedding + interaction 可以看成一个三层的神经网络。后面的二次项,可以看成神经网络embedding后,然后每两个向量做内积。
2 考虑领域信息的FM: embedding + interaction
3 embedding + MLP embedding + concatenate + MLP
embedding+MLP的缺点是只学习高阶特征组合,对于低阶或者手动的特征组合不够兼容,而且参数较多,学习较困难。
而dnn类的模型拥有很强的模型表达能力,而且其结构也是“看上去”天然具有特征交叉的能力。利用基于dnn的模型做ctr问题主要有两个优势:
1. 模型表达能力强,能够学习出高阶非线性特征。
2. 容易扩充其他类别的特征,比如在特征拥有图片,文字类特征的时候。
串并联网络结构
4 FNN:FM与MLP的串联结合 embedding(FM预训练) + concatenate + MLP
5 DeepFM: FM与MLP的并联结合 embedding + interaction/concatenate + MLP
特征交叉方式 改进元素乘法 和 网络串联结构,改进元素乘法从中也可以看出网络是串联结构。
6 NFM:通过逐元素乘法延迟FM的实现过程 embedding + interation(逐元素乘法) +MLP
7 AFM: 对简化版NFM进行加权求和 embedding + interaction + attenation
8 PNN:通过改进向量乘法运算延迟FM的实现过程 embedding + interation(内积) + concatenate + MLP
PNN的结构为embeddding+product layer + fcs。
而PNN使用product的方式做特征交叉的想法是认为在ctr场景中,特征的交叉更加提现在一种“且”的关系下,而add的操作,是一种“或”的关系,
所以product的形式更加合适,会有更好的效果。
网络并联结构
8 DCN:高阶FM的降维实现 embedding + stack + deep/cross
9 Wide&Deep: DeepFM与DCN的基础框架 embedding + concatenate + MLP
10 Deep Cross: DCN由其残差网络思想进化 embedding + stack + resnet
11 DIN 深度兴趣网络
12 ESSM 多任务
embedding + MLP
attenation 求和
FM ResNet 特征组合
模型对比:
从神经网络的角度来看
角度一: 网络架构 embedding layer + shallow/stack layer + FC layer
1. 是否保留浅层模型 (存在不保留shallow part的model,比如FNN,PNN)
2. 如何体现特征交叉性,即stack layer的做法是什么。concatenate?Bi-interaction?直接向量加法?。。。等等
cross network的设计思想是利用乘法计算代表特征交叉。而在论文的后面篇章中,它证明了cross network可以拟合任意多项式的表达形式,
所以可以涵盖非常高阶的特征交叉。个人觉得它的亮点在于设计了 x_{0}x_l}^{T} 这种表达特征交叉的计算方式,使得特征交叉通过一个rank-one的数字来表示了,
大大减少了参数量。但值得注意的是DCN只包含了deep part的结构,没有shallow part的结构(lr or fm)。
3. embedding + fc(全连接层)是基本标配。
角度二:网络串并联结构
并联 串联 (FM与DNN关系)
并联: DeepFM wide and deep DCN
串联: PNN NFM AFM
角度三: 各种DNN+FM模型如何简化成FM
NFM 当MLP的全连接层都是恒等变换且最后一层参数全为1时,NFM就退化成了FM。
AFM 权重都相等时,AFM退化成无全连接层的NFM
PNN 当MLP的全连接层都是恒等变换且最后一层参数全为1时,内积形式的PNN就退化成了FM。/PNN把NFM的逐元素乘法换成了外积。
DCN 只有两层且第一层与最后一层权重参数相等时的Cross网络与简化版FM等价。
角度四: 特征组和的方式
树系列
FM系列
DNN
不同类型向量乘法
角度五:
FNN的embedding向量需要FM预训练得到, DeepFM中Deep部分与FM部分共用嵌入向量,WDL中Wide部分侧重记忆,deep部分侧重泛化能力,输入特征类型不同,wide部分需要特征交叉。