七、DeepFM
理解用户点击行为背后隐藏的交叉特征对于
CTR
预估非常重要。例如,对app store
的研究表明:人们经常在用餐时间下载送餐app
。这说明:app
类别和时间戳构成的交叉特征可以作为CTR
预估的信号。通常用户点击行为背后的特征之间的各种交互非常复杂,其中的低阶交叉特征和高阶交叉特征都能发挥重要作用。根据
Wide&Deep
的理解,与仅考虑其中一种情况相比,同时考虑低阶交叉特征和高阶交叉特征能够带来额外的收益。但是这个问题的挑战在于:如何有效的构建交叉特征。
- 有些交叉特征很容易理解,可以由业务专家人工设计。如上面的
app store
例子。 - 大多数交叉特征都隐藏在数据中,很难事先预知,只能通过机器学习自动识别。如,经典的关联规则
“啤酒 & 尿布”
是从数据中提取的,而不是专家人工设计的。
- 有些交叉特征很容易理解,可以由业务专家人工设计。如上面的
目前的模型要么利用低阶特征交叉(如
FM
模型),要么利用高阶特征交叉(如DNN
模型),要么需要专业的特征工程(如Deep&Wide
)。- 理论上
FM
可以建模任意高阶的交叉特征,但是由于代价太大,通常只考虑建模二阶交叉特征。因此实际上FM
只能建模低阶交叉特征。 - 基于
CNN
的模型倾向于捕捉相邻特征之间的交互,而点击率预估任务的相邻特征之间并没有显著的相关性。 - 基于
RNN
的模型更适合具有顺序依赖性的数据,而点击率预估任务的特征之间并不存在顺序依赖性。 PNN
和FNN
像其它DNN
模型一样,只能捕捉高阶交叉特征,几乎捕捉不到低阶交叉特征。Deep&Wide
模型虽然可以同时捕获到低阶交叉特征和高阶交叉特征,但是deep
部分和wide
部分需要分别两个不同的输入,其中wide
部分的输入仍然依赖于专业的特征工程。
论文
《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》
提出了DeepFM
模型,该模型结合了FM
的推荐能力和DNN
的特征学习能力,综合利用了低阶交叉特征和高阶交叉特征。其特点有:DeepFM
集成了FM
和DNN
,可以对低阶交叉特征和高阶交叉特征建模,同时无需对原始输入执行任何特征工程。DeepFM
的wide
部分和deep
部分共享输入及embedding
。
- 理论上
7.1 模型
DeepFM
模型由两种组件构成:FM
组件、deep
组件,它们共享输入。这种共享输入使得DeepFM
可以同时从原始特征中学习低阶特征交互和高阶特征交互,完全不需要执行特征工程(如Wide&Deep
)。假设输入包含
sparse
特征和dense
特征。设输入向量 ,其中:其中 为
field i
的one-hot
向量, 为原始的dense
特征, 为向量拼接。对于特征j
(即 ):- 标量 用于对它的一阶特征重要性进行建模,即
FM
组件左侧的+
部分。 - 向量 用于对它的二阶特征重要性进行建模,即
FM
组件右侧的x
部分。 - 向量 也作为
deep
组件的输入,从而对更高阶特征交互进行建模,即deep
组件。
最终模型联合了
FM
组件和deep
组件的输出:其中 为模型预测的
CTR
, 为FM
组件的输出, 为deep
组件的输出。- 标量 用于对它的一阶特征重要性进行建模,即
FM
组件:该部分是一个FM
,用于学习一阶特征和二阶交叉特征。FM
组件由两种操作组成:加法Addition
和内积Inner Product
:其中 。
- 第一项
Addition Unit
用于对一阶特征重要性建模 - 第二项
Inner Product
用于对二阶特征重要性建模
- 第一项
deep
组件:该部分是一个全连接的前馈神经网络,用于学习高阶特征交互。假设
embedding
层的输出为: ,其中 为field i
的embedding
向量, 为前馈神经网络的输入。则有:其中 为第
l
层, 为激活函数。最终有:
为
deep
部分的网络深度。DeepFM
和其它模型的区别:FNN
:FNN
虽然也用到了FM
模型,但是它仅使用FM
模型来初始化FNN
然后来微调模型。这使得FNN
的embedding
层参数严重受制于FM
模型,从而降低模型效果。另外
FNN
仅捕捉高阶特征交互。与之相比,
DeepFM
不需要预训练,而是端到端的学习低阶特征交互和高阶特征交互。PNN
:作者发现OPNN
不如IPNN
可靠,因为外积的近似计算丢失大量信息使得结果不稳定。虽然
IPNN
更可靠,但是由于Product
层的输出连接到第一个隐层的所有神经元,所以计算复杂度较高。同时IPNN
和OPNN
会忽略低阶特征交互。与之相比,
DeepFM
中的Product
层(即FM
组件)的输出仅仅连接到输出层(只有一个神经元),计算复杂度很低。Wide&Deep
:虽然Wide&Deep
也可以对低阶特征和高阶特征同时建模,但是wide
部分需要人工特征工程,而这需要业务专家的指导。与之相比,
DeepFM
直接处理原始特征,不需要任何业务知识。另外,
Wide&Deep
的一个直接扩展是:使用FM
代替wide
部分的LR
模型,记作FM&DNN
模型,原始的Wide&Deep
模型记作LR&DNN
模型。FM&DNN
模型更类似于DeepFM
模型。但是DeepFM
在FM
和DNN
之间共享embedding
特征,这种共享策略有助于特征的representation
学习,使得学到的特征representation
更加精确。
7.2 实验
数据集:
Criteo Display Ads
数据集:用于预测广告点击率的数据集,包含13个整数特征,26个类别特征,其中每个类别特征的取值集合(即:cardinality
)都很大。数据包含 7 天的
11 GB
用户日志(约 4100万条记录)。我们将数据集拆分为 90% 训练集和 10%测试集。华为公司数据:从华为
App Store
的游戏中心收集连续 7 天的用户点击数据作为训练集,第八天的数据作为测试集。整个训练集+测试集约10亿条记录。
评估指标
AUC,logloss
。参数配置:对于华为公司数据集,通过超参数搜索来获取最佳参数。对于
Criteo
数据集,参数为:FNN
和PNN
的参数:dropout = 0.5
、Adam
优化器、网络结构400-400-400
、激活函数IPNN
模型为tanh
其它为relu
。DeepFM
参数:与FNN/PNN
相同。LR/FM
参数:优化算法FTRL & Adam
,同时FM
的embedding
向量维度为 10。
模型训练效率:评估指标为
模型训练时间/LR模型的训练时间
。结论:FNN
的预训练步骤拉低了它的训练效率。- 由于内积的低效预算,
IPNN
和PNN*
的训练效率很低。其中PNN*
是综合了 内积和外积的PNN
模型。 DeepFM
在所有模型中,训练效率几乎是最高的。
不同模型效果比较如下。结论:
LR
性能比其它模型都差,所以学习特征交互可以提高模型的预测能力。DeepFM
优于仅学习低阶特征交互的FM
或者仅学习高阶特征交互的FNN,IPNN,OPNN,PNN*
模型,因此同时学习高阶特征交互和低阶特征交互可以提升模型的预测能力。DeepFM
优于Wide&Deep
及其变种,因此低阶特征交互和高阶特征交互共享embedding
层可以提升模型的预测能力。
基于
Company*
数据集,研究DeepFM
的超参数影响:激活函数:几乎所有的深度学习模型中,
relu
比tanh
效果更好。但是IPNN
是例外,可能原始是relu
导致很强的稀疏性。dropout
:当设置正确的dropout
比例(从0.6~0.9
)时,模型可以达到最佳性能。这表明向模型添加一定的随机性可以增强模型的鲁棒性。deep
组件的隐向量维度:当其它条件不变时,单纯增加隐向量维度会增加模型复杂度,提高模型容量。这不一定是有利的,因为可能导致严重过拟合。deep
组件的深度:增加网络深度也可以增加模型复杂度、提高模型容量,同样也可能导致严重过拟合。网络性质:在相同网络深度、总神经元数量的条件下,网络可以呈现四种形状:每层神经元数量相等(恒定)、底层神经元数量多高层神经元数量少(递减)、底层神经元数量少高层神经元数量多(递增)、两头神经元数量少中间神经元数量多(菱形)。
实验结果表明:恒定网络形状表现最好。