二、FNN
传统的
CTR
预估模型大多数采用线性模型。线性模型的优点是易于实现,缺点是:模型表达能力较差,无法学习特征之间的相互作用interaction
。非线性模型(如:
FM,GBDT
)能够利用不同的组合特征,因此能够改善模型的表达能力。但是这些特征无法利用不同特征的任意组合。论文
Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction
提出了FNN
和SNN
两种模型来学习特征的交互作用。由于视觉、听觉、文本信号在空间或者时间上是局部相关的,因此深度神经网络能够利用这种局部依赖性,并学习特征空间的
dense representation
,从而使得神经网络能够直接从原始输入中直接有效的学习高阶特征。而在
CTR
预估任务中,大多数输入特征是离散的categorical
特征,特征之间的局部依赖性是未知的。Factorisation-machine supported Neural Networks: FNN
和Sampling-based Neural Networks: SNN
两种模型就是从离散的sparse feature
学到dense representation
。FNN
和SNN
的主要思路是:- 从
sparse feature
学到dense representation
- 将 作为一个深度前馈神经网络的输入,输出为概率
二者的区别在于学到 的方式不同。
另外
FNN
和SNN
采用了 “逐层预训练 + 微调” 的训练方式,事实上这种训练方式目前已经不推荐使用,而是直接端到端的训练方式。- 从
2.1 模型
2.1.1 FNN
FNN
模型结合了神经网络和FM
模型,网络分为以下几层:- 第 0 层输入层:
categorical
经过one-hot
编码之后作为输入,该层也被称作sparse binary feature
层。 - 第1层
embedding
层:输入层经过局部连接生成embedding
向量,该层也被称作dense real layer
层。 - 第2层到第 层:全连接层。
- 最后一层:
sigmoid
输出层。
- 第 0 层输入层:
FNN
的核心在于embedding
向量的生成。假设有 个field
,one-hot
向量为 ,field i
在向量中的起始位置为 、终止位置为 (包含)。每个
field
生成一个embedding
向量。即field i
生成 。同时还有全局bias
。即:输入位置 仅仅与 相连,即:局部连接:
其中 为映射参数。
由
FM
模型初始化。由于采用逐层预训练,因此一旦初始化 之后就固定。因此求解
FM
的过程就是求解 的过程,且一旦初始化后就冻结 ,直到最后的微调阶段才更新 。
一旦求解出 ,就可以计算后续网络:
其中 为激活函数。
- 网络每层的隐向量维度可以不同。
- 网络每层通过
layer-wise RBM
逐层预训练来初始化。
一旦进行了
FM
预训练和layer-wise RBM
预训练之后,则可以通过监督学习来微调模型。模型的损失函数为交叉熵:
考虑到:
当 时,对应梯度为0。因此只需要更新 非零的分量对应的参数,这大大降低了参数更新的计算量。
2.1.2 SNN
SNN
和FNN
的区别在于第一层的网络结构,在SNN
中第一层是全连接的。其中 为激活函数, 为第一层的网络参数。
第一层参数可以通过两种预训练方式来预训练:
restricted Boltzmann machine:RBM
或者denoising auto-encoder:DAE
。
2.2 实验
数据集:采用
iPinYou
数据集。该数据集是一个公开的、真实的展示广告数据集,包含 1950万曝光数据,其中点击数据 14790个。所有特征都是
categorical
特征,经过one-hot
编码之后有 937670 维。模型比较了全量广告主,以及部分广告主(广告主
1458,2259,2997,3386
) 上的预测结果。结论:
FM
模型并没有显著的强于LR
模型,这意味着该任务中二阶特征交叉并没有很好的捕捉到数据的模式。- 大多数情况下
FNN
的效果最好。