Deep&Cross Network介绍

Reading time ~1 minute

google在2017年提出了一个Deep&Cross Network的模型:

1.介绍

在该paper中,提出了Deep&Cross Network(DCN)模型,它能对sparse和dense的输入进行自动特征学习。DCN可以有效地捕获关于有限阶(bounded degrees)上的有效特征交叉,学到高度非线性交叉,无需人工特征工程或暴力搜索(exhaustive searching)。并且计算代价低。

  • 我们提出了一个新的cross network,它显式地在每个layer上进行特征交叉(feature crossing),可有效学习有限阶(bouned degrees)的特征交叉预测,无需人工特征工程和暴力搜索。
  • 该cross network简单有效。通过设计,最高的多项式阶在每一layer递增,由layer depth决定。该网络包含了所有阶的交叉项(直到最高阶),它们的系数都不同。
  • 该cross network内存高效,很容易实现。
  • 我们的实验结果表明,比起接近相同阶的DNN,DCN具有更低的logloss,更少的参数。

2.DCN

本节描述了Deep & Cross Network模型。一个DCN模型会以一个embedding and stacking layer开始,接着并列连一个cross network和一个deep network。接着通过最后一个combination layer将两个network的输出进行组合。完整的DCN模型如图1所示。

图1: Deep & Cross Network

2.1 Embedding and Stacking Layer

输入数据带有sparse和dense feature。在大规模推荐系统的CTR预测中,输入几乎都是类别型特征(categorical features),比如:”country=usa”。这样的feature通常被编码成one-hot vectors,比如:”[0,1,0]”;然而,对于大的vocabularies,这通常会产生超高维度的特征空间。

为了减小该维度,我们使用一个embedding procedure来将这些二元features转换到关于真实值(real values)的dense vectors中(称为embedding vectors)。

…(1)

其中是embedding vector,是第i个category的二元输入,是对应的embedding matrix,会与网络中的其它参数一起进行优化,分别是embedding size和vocabulary size。

最后,我们将embedding vectors,以及归一化稠密特征(normalized dense features)进行stack成一个vector:

…(2)

2.2 Cross Network

新的cross network的核心思想是,将显式特征(explicit feature)以一种有效方式进行交叉。cross network由多个cross layers组成,每一个layer具有以下的公式:

…(3)

其中:

  • 是列向量(column vectors),分别表示来自第l层和第(l+1)层cross layers的输出;
  • 是第l层layer的weight和bias参数。

在完成一个特征交叉f后,每个cross layer会将它的输入加回去,对应的mapping function f:,刚好等于残差。一个cross layer的可视化如图2所示。

图2: 一个cross layer的visualization

特征的高阶交叉(high-degree interaction):cross network的独特结构使得交叉特征的阶(the degress of cross features)随着layer的深度而增长。对于第l层layer,它的最高多项式阶(在输入上)是. 实际上,cross network由这些交叉项组成,对应的阶从1到l+1. 详见第3节。

复杂度分析:假设表示cross layers的数目,d表示输入维度。那么,在该cross network中涉及的参数数目为:

一个cross network的时间和空间复杂度对于输入维度是线性关系。因而,比起它的deep部分,一个cross network引入的复杂度微不足道,DCN的整体复杂度与传统的DNN在同一水平线上。如此高效(efficiency)是受益于的rank-one特性,它可以使我们生成所有的交叉项,无需计算或存储整个matrix。

cross network的参数数目少,从而限制了模型的能力(capacity)。为了捕获高阶非线性交叉,我们平行引入了一个deep network。

2.3 Deep Network

Deep network是一个fully-connected feed-forward神经网络,每个deep layer具有以下的公式:

…(4)

其中:

  • 分别是第l层和第(l+1)层hidden layer;
  • 是第l个deep layer的参数;
  • 是ReLU function。

复杂度分析:出于简洁性,我们假设所有的deep layers具有相同的size。假设表示deep layers的数目,m表示deep layer的size。那么,在该deep network中的参数的数目为:

2.4 Combination Layer

Combination Layer将两个network的输出进行拼接(concatenate),然后将该拼接向量(concatenated vector)feed 进一个标准的logits layer上。

下面是一个二分类问题的公式:

…(5)

其中:

  • 分别是来自cross network和deep network的输出
  • 是combination layer的weight vector,其中

loss function是logloss,带有一个正则项。

…(6)

其中 是等式(5)计算得到的probabilities,是true labels,N是输入的总数,正则项参数。

我们对两个network进行jointly train,在训练期间,每个独立的network会察觉到另一个。

3.Cross Network分析

在这一节,我们分析了DCN的cross network,以便于更有效地理解。我们提供了三个视角:多项式近似,泛化到FM,有效投影。为了简洁,我们假设:

概念:假设在中的第i个元素是。对于多索引(multi-index) ,以及,我们定义了:

术语:交叉项的阶(degree)由定义。一个多项式的阶由它的项的最高阶决定。

3.1 多项式近似

根据维尔斯特拉斯逼近定理(Weierstrass approximation theorem),任意满足特定平滑假设条件下的函数,可以通过一个多项式进行逼近到一个特定的精度上。因而,我们从多项式近似的角度分析了cross network。特别的,cross network会以一种高效的、有表现力的、能更好地对现实世界数据集进行泛化的方式,近似相同阶的多项式类。

我们详细研究了一个cross network,将它近似成相同阶的多项式类(polynomial class)。假定表示n阶的多元多项式类(multivariate polynomial class):

…(7)

在该类中的每个多项式具有个系数。只有个参数,cross network包含了在相同阶的多项式中的所有交叉项,每一项的系数与其它项各不相同。

理论 3.1: 一个l-layer的cross network,具有i+1个layer,定义成:。假设网络的输入是,输出是,参数是。接着,多元多项式会以下面的类进行重现(reproduce):

其中:

  • 其中 , 是一个与独立的常数
  • 是多元索引(multi-indices),
  • 是indice 的所有排列(permutations)的集合。

定理3.1的理论证明详见paper中的附录。举个例子,的系数,其中。直到一些常数,其中;其中

3.2 FM的泛化

cross network共享参数,类似于FM模型的参数共享,并扩展到了一个更深的结构上。

在FM模型中,特征与一个 weight vector 相关联,交叉项的权重通过 计算得到。在DCN中,与标量有关,的权重是集合的参数乘积。两种模型都会为每个特征学到一些与其它特征相互独立的参数,交叉项的权重是相应参数的一种特定组合。

参数共享(parameter sharing)不权使得模型更有效,也使模型可以泛化到未见过的特征交叉上,对噪声更健壮。例如,使用sparse features的数据集。如果两个二元特征很少或者几乎从未在训练集中共现过,假设,,接着,学到关于的权重不会带有对预测有意义的信息。

FM是一个浅层结构(shallow structure),受限于交叉项的阶是2. 而DCN可以构建所有的交叉项,其中阶 由一些常数决定,见理论3.1。因而,cross network扩展了参数共享的思想,将单个layer扩展到多个layer,并且有更高阶的交叉项。注意,与高阶FM不同的是,在cross network中的参数数目,只随着输入维度线性增长。

3.3 有效投影

每个cross layer会以一种有效方式,将在间的所有pairwise交叉进行投影到输入维度上。

考虑到是一个cross layer的输入。cross layer首先隐式构建了个关于的pairwise交叉,接着以一种内存高效的方式,隐式地将它们投影到维度d上。这种直接的方式会带来3次方开销。

我们的cross layer提供了一种有效的解决方式,将开销减小到维度d的线性开销上。考虑。事实上等于:

…(8)

其中,row vectors包含了所有的pairwise交叉,投影矩阵具有一个块对角化结构,其中是一个列向量。

4.实验结果

在本节中,我们评估了CDN在多个数据集上的效果。

4.1 Criteo Display Ads数据集

Criteo Display Ads数据集用于预测点击率。具有13个integer features和26个categorial features。其中,每个category都具有一个很高的维度基数。对于该数据集,在logloss上提升0.001可以看成是巨大的提升。当考虑到在一个很大的用户基数时,在预测准确率(prediction accuracy)的一个小的提升,可以为公司带到来一个大的回报。数据包含了11GB的包含7天的用户日志(~41000,000条记录)。我们使用前6天的数据做为训练,并将第7天的数据随机划分成等size的validation和test set。

4.2 实现细节

DCN在tensorflow上实现,我们会讨论一些关于训练CDN的细节。

数据处理和embedding。实数型特征通过一个log转换进行归一化。对于类别型特征,会将这些特征嵌入到dense vectors中,维度为 。最后将所有的embedding结果拼接(concatenating)成一个维度为1026的向量。

优化(Optimization):我们使用Adam optimizer,mini-batch进行随机优化。batch size=512. Batch normalization被应用于deep网络,gradient clip norm设置为100.

正则化:我们使用early stopping,我们未发现L2正则或dropout很有效。

超参数:我们基于一个grid search来在hidden layers的数目、size、初始learning rate以及cross layers的数目上进行探索。hidden layers的数目范围为2一5, hidden layers的数目从32到1024. 对于DCN,cross layers的数目从1到6.初始learning rate从0.0001依次递增调到0.001. 所有试验都使用early stopping,训练step为150000, 超过它可能会发生overfitting。

参考

https://arxiv.org/pdf/1708.05123.pdf

xDeepFM介绍

前几天微软提出了一个xDeepFM算法:# 介绍传统交叉特征工程主要有三个缺点,以下部分来自paper:- 1.获取高质量特征代价高昂- 2.大规模预测系统(比如:推荐系统),存在大量原始特征(raw features),很难人工抽取所有交叉特征- 3.人工交叉特征不能泛化...… Continue reading

CRNN介绍

Published on March 04, 2018

CTPN介绍

Published on February 03, 2018