业界 | 从FM推演各深度CTR预估模型
本文对该文章的keypoint进行整理,同时对CTR预估模型与POI推荐进行比较。
CTR预估模型与POI推荐中预测user对POI的check-in预测是等价的。本质上,二者都是二分类问题。因此,对CTR预估模型也可以应用到POI预测中
CTR背景:以移动端展示广告推荐为例,依据日志中的用户侧的信息(比如年龄,性别,国籍,手机上安装的app列表)、广告侧的信息(广告id,广告类别,广告标题等)、上下文侧信息(渠道id等),去建模预测用户是否会点击该广告。
模型1:早期的人工特征工程+线性模型(e.g. LR),人工特征工程存在的问题:特征爆炸、组合特征难设计等
模型1_plus: 为解决模型1中存在的问题,将线性模型替换为二阶多项式模型(模型能自动考虑特征间二阶组合信息),存在问题:特征权重矩阵中参数多,计算复杂度很高
模型2: FM (Factorization Machines),为解决模型1_plus中存在问题,利用FM实现降维的效果,去除了重复项与特征平方项,特征两两相乘(组合)的权重是相互不独立的,它是一种参数较少但表达力强的模型。和POI推荐中的MF(Matrix Factorization)相似。
-
模型3:embedding+FM,利用NN(neural network),将W*x[注:利用特征权重矩阵对特征进行组合,此外通过矩阵乘法将结果降维成低维稠密向量,等价于NN中的embedding]
- step1: FM首先是对离散特征进行嵌入
- step2: 通过对嵌入后的稠密向量进行内积来进行二阶特征组合
- step3: 再与线性模型的结果求和进而得到预估点击率
-
模型3_plus: 模型3+领域信息,模型3中FM对离散特征的embedding并未考虑领域信息,使得同领域内的特征也被当做不同领域特征进行两两组合了,而我们假设领域内的信息是相似的,这样假设是合理的同时也能达到降维的目的。
-
具体做法:同领域的特征嵌入后直接求和作为一个整体嵌入向量,进而与其他领域的整体嵌入向量进行两两组合。而这个先嵌入后求和的过程,就是一个单领域的小离散特征向量乘以矩阵的过程。
-
以上的FM/embedding+FM/embedding+FM+领域信息均为浅层网络,表现力有限——>将浅层网络“深化”来增加表现力
-
模型4:Embedding+MLP(multilayer perceptron,前馈NN),它是对于分领域离散特征进行深度学习CTR预估的通用框架,
也是利用深度学习的POI推荐系统的通用框架,如图,图中架构以embedding+MLP作为baseline,利用邻域信息(即各种contexts,e.g. user context, POI context etc.)进一步提高推荐性能:
Embedding+MLP存在的问题:只学习高阶特征组合,对于低阶或者手动的特征组合不够兼容,而且参数较多,学习较困难
-
模型5:FNN(Factorisation Machine supported Neural Network),存在的问题:需要预训练
- 采用FM预训练得到的隐含层及其权重作为神经网络的第一层的初始值,之后再不断堆叠全连接层,最终输出预测的点击率。
- 可以将FNN理解成一种特殊的embedding+MLP,其要求第一层嵌入后的各领域特征维度一致,并且嵌入权重的初始化是FM预训练好的。
- 这不是一个端到端的训练过程,有贪心训练的思路。而且如果不考虑预训练过程,模型网络结构也没有考虑低阶特征组合
-
模型6:DeepFNN,与FNN相比,不需要预训练,将考虑领域信息的FM部分与MLP部分并联起来(对两个模型进行联合训练)。
考虑领域信息的FM部分的嵌入向量拼接起来作为MLP部分的输入特征,也就是是两个模型共享嵌入后的特征。
-
模型7:NFM(Neural Factorization Machines),特点如下:
- 利用二阶交互池化层(Bi-Interaction Pooling)对FM嵌入后的向量两两进行元素级别的乘法,形成同维度的向量求和后作为前馈神经网络的输入。计算图中用圈乘⨂表示逐元素乘法运算。
- NFM与DeepFM的区别是没有单独的FM的浅层网络进行联合训练,而是将其整合后直接输出给前馈神经网络。
当MLP的全连接层都是恒等变换且最后一层参数全为1时,NFM就退化成了FM。可见,NFM是FM的推广,它推迟了FM的实现过程,并在其中加入了更多非线性运算。 - 另一方面,我们观察计算图会发现NFM与FNN非常相似。它们的主要区别是NFM在embedding之后对特征进行了两两逐元素乘法。因为逐元素相乘的向量维数不变,之后对这些向量求和的维数仍然与embedding的维数一致。因此输入到MLP的参数比起直接concatenate的FNN更少。
-
模型8: AFM(Attentional Factorization Machine)引入了注意力机制,NFM的主要创新点是在FM过程中添加了逐元素相乘的运算来增加模型的复杂度。但没有在此基础上添加更复杂的运算过程,比如对加权求和,AFM就是在这个方向上的改进
- AFM与NFM都是致力于充分利用二阶特征组合的信息,对嵌入后的向量两两进行逐元素乘法,形成同维度的向量。而且AFM没有MLP部分。
- AFM通过在逐元素乘法之后形成的向量进行加权求和,而且权重是基于网络自身来产生的。其方法是引入一个注意力子网络(Attention Net)。
-
当权重都相等时,AFM退化成无全连接层的NFM。
“注意力子网络”的主要操作是进行矩阵乘法,其最终输出结果为softmax,以保证各分量的权重本身是一个概率分布。
-
模型8: PNN(Product-based Neural Networks,PNN):AFM、NFM可以通过添加逐元素乘法的运算来增加模型的复杂度,那向量乘法有这么多,也可以用其他的方法增加FM复杂度(PNN),其特点如下:
- 利用二阶向量积层(Pair-wisely Connected Product Layer)对FM嵌入后的向量两两进行向量积,形成的结果作为之后MLP的输入。计算图中用圆点•表示向量积运算。PNN采用的向量积有内积与外积两种形式。
- 需要说明的是,本计算图中省略了PNN中向量与常数1进行的乘法运算。这部分其实与FNN类似,不是PNN的主要创新点。故在此图中省略。
- 对于内积形式的PNN,因为两个向量相乘的结果为标量,可以直接把各个标量“拼接”成一个大向量,就可以作为MLP的输入了。
- 当MLP的全连接层都是恒等变换且最后一层参数全为1时,内积形式的PNN就退化成了FM。
- 对于外积形式的PNN,因为两个向量相乘相当于列向量与行向量进行矩阵相乘,得到的结果为一个矩阵。各个矩阵向之前内积形式的操作一样直接拼接起来维数太多,论文的简化方案是直接对各个矩阵进行求和,得到的新矩阵(可以理解成之后对其拉长成向量)就直接作为MLP的输入。
-
观察计算图发现外积形式的PNN与NFM很像,其实就是PNN把NFM的逐元素乘法换成了外积。
以上的FM推广形式,主要是对FM进行二阶特征组合(通过向量embedding之间的内积来实现)。高阶特征组合是通过MLP实现的(在向量embedding之后一层一层进行权重矩阵乘法实现)——>能否将FM的过程在高阶特征组合上进行推广
- 模型9:DCN(深度与交叉神经网络 Deep & Cross Network)