六、DCN
人工交叉特征效果很好,但是有两个主要缺点:
- 人工探索所有的交叉特征是不现实的。
- 难以推广到未曾出现过的交叉特征。
虽然
DNN
能够自动探索交叉特征并推广到未出现过的交叉特征,但是DNN
的学习效率不高,且无法显式的学习特征交叉。论文
《Deep & Cross Network for Ad Click Predictions》
提出了Deep&Cross Network:DCN
模型,该模型保留了DNN
的优点。此外,
DCN
提出了一种新的cross network
,该网络能够高效学习高阶特征交互。实验结果表明:
DCN
无论在模型表现以及模型大小方面都具有显著优势。其优点:cross network
显式的在每层应用特征交叉,有效的学习了预测能力强的交叉特征,无需人工特征工程。cross network
简单高效,可以学习高阶交叉特征。每增加一层,能够学到的交叉特征的阶数就加一阶。- 模型表现更好,且参数要比
DNN
少一个量级。
Wide&Deep
模型使用交叉特征作为输入,其成功依赖于选择合适的交叉特征。如何选择合适的交叉特征是个指数级问题,目前尚未有明确有效的方法。
6.1 模型
DCN
模型结构如下图所示,模型包含embedding and stacking
层、cross network
、deep network
三个组成部分。embedding and stacking
层:假设输入包含sparse
特征和dense
特征。设原始特征为向量 ,其中:其中 为
field i
的one-hot
向量, 为经过归一化的dense
特征, 为向量拼接。首先将
field i
的特征映射到embedding
向量:其中 为
one-hot
向量长度, 为参数。
然后将
embedding
向量和归一化的dense
特征拼接成向量:其中 为 的向量长度。
embedding and stacking
层就是将 转换为 。
cross network
:cross network
是一个新颖的结构,其核心思想是以高效的方式显式应用特征交叉。cross network
由交叉层构成,每层的输入输出为:其中 为第 层的输出, 为第 层的参数。 其中 。
每一层的输出都包含两个部分:该层的输入 、交叉特征 。
cross network
的特殊结构使得交叉特征的阶数随着网络的深度加深而增加。对于 层的
cross network
,其交叉特征的阶数最高可达 阶。假设
cross network
有 层,则cross network
部分的参数数量为: 。另外,
cross network
的时间复杂度、空间复杂度都是输入维度 的线性函数。因此cross network
相对于右侧的deep network
部分来讲,其代价几乎是可以忽略不计的。因此DCN
的整体时间复杂度、空间复杂度与DNN
几乎相同。cross network
的本质是用 来捕获所有的特征交叉,这种方式避免了存储整个矩阵以及矩阵乘法运算。由于
cross network
的参数很少,所以这部分网络的容量较小,网络过于简单,模型容易陷入欠拟合。为了加强模型的学习能力,
DCN
在右侧引入了并行的deep network
。
deep network
:deep network
部分是一个简单的全连接前馈神经网络:其中 为激活函数,, 为 的向量长度。
假设所有隐层的维度都是 ,一共 层,则
deep network
的参数数量为:其中:
- 输入为 ,所以第一层的参数数量为:
- 后续的 层,每一层的参数数量为:
DCN
通过拼接层combination layer
来拼接cross network
和deep network
两个网络的输出向量,然后输出到标准的sigmoid
输出层:其中 为预测的点击概率, 为
cross network
的输出向量, 为deep network
的输出向量, 为模型参数。模型的损失函数为带正则化的对数似然函数:
其中 为样本数量, 为样本的真实
label
。注意:这里只对dense network
的权重进行正则化。DCN
训练时联合训练cross network
和deep network
。
6.2 cross network
cross network
可以理解为:多项式逼近polynomial approximation
、FM
泛化generalization to FM
、或者有效投影efficient projection
。为讨论方便,假设 。设 的第 个元素为 。令 ,交叉项为 ,其中 为每一项的度
degree
。则该交叉项的度为:如果多项式中有多个交叉项,则多项式的度为所有交叉项中
degree
的最大值。多项式逼近:
Weierstrass
逼近定理表明:在一定条件下,任何函数都可以通过多项式逼近到任意精度。定义多项式:
该多项式的项一共有 个,即参数数量有 个。
- 与之相比,
cross network
仅仅包含 的参数就可以达到与 相同的度。 - 可以证明: 层的
cross network
,其输出可以表示为 的各交叉特征的多项式,多项式的度不超过 。
- 与之相比,
FM
泛化:在FM
中,特征 和向量 相关联,交叉特征 的权重为 。而在DCN
中,特征 和一组标量 相关联,交叉特征 的权重从两个集合 中的元素相乘项构成。相同点:二者都是首先学习特征独立的一些参数(如: ),然后交叉项的权重时相应参数的某种组合。
不同点:
FM
是个浅层网络,其交叉项的度为2,因此表达能力受限。DCN
网络相对较深,能够表达 阶交叉特征,其中 为cross network
的深度。
另外和高阶
FM
(三阶及其以上)不同,cross network
的参数数量是输入特征数量的线性函数,而不是指数函数。效投影
efficient projection
:cross network
的每一层都是在 和 之间计算成对交互pariwise interaction
,然后投影到 维。其中:
- 行向量包含了 各元素,它代表成对交互
pariwise interaction
。 - 是一个对角矩阵,整个矩阵构成了一个分块对角矩阵。
- 行向量包含了 各元素,它代表成对交互
6.3 实验
Criteo Display Ads
数据集:用于预测广告点击率的数据集,包含13个整数特征,26个类别特征,其中每个类别特征的取值集合(即:cardinality
)都很大。数据包含 7 天的
11 GB
用户日志(约 4100万条记录)。我们用前 6 天的数据训练,第7天的数据随机划分为相同大小的验证集和测试集。数据集经过预处理:
- 整数特征:通过
log
函数来归一化 - 类别特征:执行
one-hot
编码。
注意:类别特征经过
embedding
时,每个特征的embedding
维度为 。当拼接所有
embedding
特征和整数特征之后,向量维度为1026
维。即:embedding and stacking
层的输出维度为 。- 整数特征:通过
参数配置:
优化策略:
- 采用
Adam
优化器,batch size = 512
- 对
deep network
采用batch normalization
- 对范数超过100的梯度进行裁剪
- 采用
正则化:采用早停策略。因为论文未发现 正则化或者
dropout
有效。超参数:
deep network
隐向量维度、deep network
层数、cross layer
层数、初始化学习率通过超参数搜索grid search
获得。搜索空间:
deep network
隐向量维度:32~1024
deep network
层数:2~5
cross layer
层数:1~6
- 初始化学习率:
0.0001~0.001
DCN
模型和其它四个模型的对比,这些模型为:LR
模型:所有整数特征通过log
映射然后离散化。使用单个特征和交叉特征作为输入,其中交叉特征采用一个复杂的特征选择工具来选择。超参数搜索得到最佳超参数:42个交叉特征。
FM
模型:标准的FM
模型。DNN
模型:标准的前馈神经网络模型。超参数搜索得到最佳超参数:5层网络,隐向量维度 1024。
Wide&Deep
模型:其wide
部分依赖领域知识来构建交叉特征。由于没有一个很好的方法来做交叉特征筛选,因此这里跳过了比较。DeepCrossing
模型:它没有显式的特征交叉,而是依赖于stacking
和残差单元来构建隐式的特征交叉。超参数搜索得到最佳超参数:5层残差单元,输入维度424,隐向量维度 537。
DCN
:超参数搜索得到最佳超参数:deep network
为2层,cross layer
为6层,deep network
隐向量为 1024维。
基于验证集
logloss
的比较结果:达到指定最佳验证集
logloss
需要的参数数量:给定不同的内存限制,模型大小和效果(验证集
logloss
)考察不同网络结构对于
DCN
的影响:deep network
深度和隐向量维度对于模型效果的影响:所有的结果都是相对于DNN
的验证集logloss
的绝对数量变化(单位为 ),负数表示下降。比较的
DNN
模型和DCN
模型在deep network
上具有相同的结构,只是DNN
模型没有cross network
而已。cross network
深度对于模型效果的影响:当cross network
深度从 0 到1时,所有DCN
模型的验证集logloss
都下降; 当cross network
深度继续增加时,部分DCN
模型的验证集loglss
反而上升。图中的
2 layers,32 nodes
表示deep network
的深度和隐向量维度。