十、xDeepFM
在
CTR
预估任务中,常用的人工特征工程、FM
模型、DNN
模型都存在不足。人工特征工程缺点:
- 高质量的交叉特征往往代价太高。数据科学家需要花费大量时间探索数据中的潜在模式,然后才能了解问题领域并提取有意义的交叉特征。
web-scale
规模的系统中,原始特征数量太大,无法人工分析所有的特征交叉组合。- 人工交叉特征无法推广到训练数据中从未出现的特征组合。
FM
模型缺点:- 只能对低价、线性的特征交互建模。
- 对所有的特征交互建模,无论该是有用的还是无用的组合。事实上,无用的特征交互可能引入噪声并降低模型性能。
DNN
模型缺点:DNN
隐式的在bit-wise
级别对特征交互建模,这意味着:即使是同一个特征的embedding
向量内部的元素之间也会相互影响。与之相反,
FM
在vector-level
级别对特征交互建模。另外,
FNN/PNN
更多的关注高阶特征交互而不关注低阶特征交互;Wide&Deep/DeepFM
虽然同时对低阶、高阶特征交互建模,但是它们是隐式建模而不是显式建模。
针对以上不足,论文
《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》
提出了xDeepFM
模型,该模型引入了一种新的网络Compressed Interaction Network:CIN
,该网络显式的在vector-wise
级别建模特征交互。该模型被称作
eXtreme Deep Factorization Machine:xDeepFM
,其优点有:通过
CIN
网络显式的在vector-wise
级别学习高阶特征交互。其中
CIN
网络每增加一层,能学到的特征交叉的阶数就增加一阶。通过
DNN
网络,xDeepFM
也能够隐式的学习任意低阶和高阶的特征交互。
10.1 模型
如果一个
field
中只有一个取值(如:用户性别),则该field
的embedding
就是对应one-hot
中1
对应的embedding
的取值。如果一个
field
中有多个取值(如:用户最近一个月看过的电影),则该field
的embedding
就是对应one-hot
中所有1
对应的embedding
的累加。DCN
的cross network
虽然对高阶特征交互显式建模,但是它学到的高阶特征交互非常特殊,仅仅是某种非常特殊的形式。假设一个 层的
cross network
,我们忽略偏置项,第 层定义为:则可以用数学归纳法证明:
cross network
的输出 是 的一个标量乘积。即:
其中:
注意:标量乘积仅仅意味着向量的方向相同,但是并不意味着线性关系。
cross network
能够有效的学到高阶特征交互,其计算复杂度相对于DNN
来讲可以忽略不计,但是有两个严重不足:- 网络输出形式过于单一,仅仅是 的标量乘积。
- 基于
bit-wise
级别学习特征交互。
xDeepFM
的CIN
参考了cross network
的思想,但是具有以下特点:- 和
cross network
相同,CIN
也可以显式建模高阶特征交互,且网络复杂度并没有随着交互阶数的增加而指数增长。 - 和
cross network
不同,CIN
基于vector-wise
级别学习特征交互,且网络的表达能力更强输出形式更多。
10.1.1 CIN
假设所有的
embedding
向量维度为 ,假设field i
的embedding
为 。假设有 个field
,将所有embedding
拼接成矩阵:矩阵的第 行就是
field i
的embedding
: 。CIN
的第 层输出也是一个矩阵 ,其中 为输出向量的数量,其中 :其中:
- 为向量的逐元素积
- 为权重向量,它用于为
vector-wise
的交叉特征 赋予不同的权重。
由于 是通过 和 计算得到,因此
CIN
显式的建模特征交互,并且特征交互的阶数随着CIN
网络的深度加深而加深。另外在计算过程中,所有的特征交互都是基于向量的运算,因此整个建模过程是
vector-wise
的。CIN
的建模过程非常类似卷积神经网络CNN
。首先引入临时三维张量 ,它是 和 的外积。
然后将三维张量 视为一张图片,将 视为一个卷积核,沿着
embedding
维度进行卷积得到featuremap
,即向量 。使用 个卷积核执行卷积,得到的
featuremap
组成输出张量 。
因此
CIN
网络将 个交叉向量压缩到 个向量,这就是网络名称中的compressed
的由来。CIN
网络的整体结构如下图所示。令 表示网络深度,每层输出 都和输出单元相连。首先对每层的
feature map
应用sum pooling
:这里池化仍然是沿着
embedding
维度进行。因此得到该层的池化向量: 。
拼接所有层的输出池化向量,则有:
该向量作为
CIN
网络的输出向量。输出向量输入到
sigmoid
输出层,得到CIN
网络的输出得分:其中 为网络参数。
卷积、池化操作都是沿着
embedding
维度进行,而不是沿着其它方向。原因是:我们希望对特征之间的高阶特征交叉显式建模。根据
CIN
网络的基本原理,卷积必须对 的embedding
维度进行。为了得到显式的交叉特征,池化也必须对 的
embedding
维度进行。
设第 层第 个
feature map
的参数 ,因此第 层的参数数量为 。另外最后一层
sigmoid
输出层的参数数量为 ,因此总的参数为:可以看到,
CIN
的空间复杂度和embedding
维度 无关。一个
T
层的、第 层隐向量长度为 的DNN
网络的参数数量(包括sigmoid
输出层)为:可以看到
DNN
的空间复杂度和embedding
维度 有关。通常 和 不会太大,所以 规模不会太大。一旦有必要,可以对 进行 阶分解,将其分解为两个小矩阵:
其中 , 。
假设 ,则分解之后的空间复杂度从 下降到 。
假设 ,则计算 的时间复杂度为 。由于有 层,则总的时间复杂度为 。
常规
DNN
网络的时间复杂度为 ,因此CIN
的时间复杂度太高。假设所有的
feature map
都是 维度,即: 。第一层第 个
feature map
为:因此第一层的
feature map
为 对交叉特征建模。第二层第 个
feature map
为:其中下标 的计算已经在第一层完成,因此第二层使用 个额外的参数对三阶特征交叉建模。
一个典型的 阶特征交叉有 个参数,但是
CIN
网络只需要 个参数就可以建模 阶特征交叉。
.
10.1.2 xDeepFM
xDeepFM
结合了CIN
网络和DNN
网络,分别对特征交互显式、隐式的建模,二者互补。模型输出为:
其中 为激活函数; 分别为线性部分、
DNN
部分、CIN
部分的输出层权重参数; 分别为模型的原始输入特征、DNN
网络提取的特征、CIN
网络提取的特征。模型损失函数为负的对数似然函数:
其中 为样本数量。
模型训练目标:损失函数 + 正则化项
其中 为正则化系数; 为所有参数,包括线性部分、
CIN
部分、DNN
部分。
xDeepFM
可以退化为DeepFM
模型和FM
模型。当
CIN
网络的深度为1,且所有卷积核的元素都固定为1
时,xDeepFM
退化为DeepFM
模型。注意:
DeepFM
中,FM
层直接连接到输出单元,不需要任何参数。当进一步移除
DNN
部分时,xDeepFM
退化为FM
模型。
10.2 实验
数据集:
Criteo Display Ads
数据集:用于预测广告点击率的数据集,包含13个整数特征,26个类别特征,其中每个类别特征的取值集合(即:cardinality
)都很大。数据包含 7 天的
11 GB
用户日志(约 4100万条记录),训练集、验证集、测试集的比例为8:1:1
。DianPing
数据集:大众点评网(中国最大的消费者评论网站)提供的数据集,包含很多特征,如:评论、check-in
、商店元信息(包括地理位置、商店属性)。数据包含6个月的用户
check-in
记录,目标是餐厅推荐。即:给定用户的个人资料、餐厅属性、用户最近访问过的三个POI
,我们希望预测用户访问每个餐厅的概率。- 由于只有
check-in
记录而没有负反馈记录,所以我们只有正样本。为了获取负样本,我们对用户check-in
的每个餐厅,取该餐厅附近3公里内随机抽样的四个热门餐厅作为负样本。 - 训练集、验证集、测试集的比例为
8:1:1
。
- 由于只有
BingNews
数据集:Bing News
是微软Bing
搜索引擎中的一部分。数据包含连续五天的曝光日志,其中前三天的数据用于训练和验证,后两天的数据用于测试。
模型的评估指标为
AUC,logloss
。对照模型包括
LR,FM,DNN,PNN,Wide&Deep,DCN,DeepFM
模型。为验证模型能够自动学习有效的特征,我们不包含任何人工设计的交叉特征。
每个模型的超参数通过验证集获取最佳的超参数,最后在测试集上比较各模型的评估指标。
神经网络模型的一些默认配置:
采用
Adam
优化器,初始化学习率为0.001
,batch-size = 4096
。对于
DNN,DCN,Wide&Deep,DeepFM,xDeepFM
,采用 正则化,正则化系数为 。对于
PNN
,采用dropout
正则化,dropout
系数为0.5
。每个
field
的embedding
向量维度为10
。DNN
层隐向量的维度为400
,CIN
层的影响力的维度为:Criteo
数据集200
,Dianping/BingNews
数据集100
。
10.2.1 CIN 网络
理论表明:
FM
显式建模二阶特征交互;DNN
隐式建模高阶特征交互;cross network
试图用少量参数显式建模高阶特征交互(已被证明无效);CIN
显式建模高阶特征交互。实际上模型的表现严重依赖于数据集。如果某个数据集
A
上模型M1
优于模型M2
,那么无法从理论上保证在其它数据集上也是如此。如:如果数据集不需要高阶特征交互,则FM
可能就是最佳的模型。下表给出了各模型在各数据集上的表现。其中
Depth
表示网络的最佳深度(通过超参数搜索得到)。注意:这里
CIN
是xDeepFM
的CIN
网络,不包含xDeepFM
的DNN
部分;CrossNet
是DCN
的cross network
部分,也不包含DNN
部分。结论:
DNN,CrossNet,CIN
在所有数据集上明显优于FM
,说明对于这三个数据集,高阶特征交互是必要的。- 在所有的数据集上,
CIN
都优于其它模型,说明了CIN
在显式建模高阶特征交互方面的有效性。
10.2.2 xDeepFM
xDeepFM
集成了CIN
网络和DNN
网络,因此我们将它和其它模型比较。结论:
LR
模型远比其它模型差,这表明对特征交互建模非常重要。Wide&Deep,DCN,DeepFM,xDeepFM
明显强于FM
,这说明混合结构对于模型提升非常重要。xDeepFM
在所有数据集上都表现最好,说明必须将显式、隐式高阶特征交互进行组合。- 所有基于神经网络的模型都不需要非常深,就可以获得最佳性能。
10.2.3 超参数探索
这里对
xDeepFM
的DNN
部分的超参数选择最佳的配置并固定不动,然后对CIN
部分的超参数进行探索。首先探索
CIN
网络的深度。可以看到:xDeepFM
的性能随着网络深度增加而增加,但是当深度大于3时模型性能下降。这是由于过拟合导致,因为当添加更多的隐层时训练集损失仍在下降。
然后探索
CIN
网络隐向量维度。实验中我们将隐层数量设为3
。- 当隐向量维度从
20
增加到200
时,Bing News
数据集的模型性能稳定提高。 - 在大众点评数据集上,隐向量最佳维度为
100
。
- 当隐向量维度从
最后评估
CIN
网络的激活函数。可以看到:当采用线性激活函数identify
(即不采用任何激活函数)时,模型表现最佳。