• 人工特征工程缺点:

        • 高质量的交叉特征往往代价太高。数据科学家需要花费大量时间探索数据中的潜在模式,然后才能了解问题领域并提取有意义的交叉特征。
        • web-scale 规模的系统中,原始特征数量太大,无法人工分析所有的特征交叉组合。
        • 人工交叉特征无法推广到训练数据中从未出现的特征组合。
      • FM 模型缺点:

        • 只能对低价、线性的特征交互建模。
        • 对所有的特征交互建模,无论该是有用的还是无用的组合。事实上,无用的特征交互可能引入噪声并降低模型性能。
      • DNN 模型缺点:

        • DNN 隐式的在 bit-wise 级别对特征交互建模,这意味着:即使是同一个特征的 embedding 向量内部的元素之间也会相互影响。

        • 另外,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 也能够隐式的学习任意低阶和高阶的特征交互。

    1. 如果一个 field 中只有一个取值(如:用户性别),则该 fieldembedding 就是对应 one-hot1 对应的 embedding 的取值。

      如果一个 field 中有多个取值(如:用户最近一个月看过的电影),则该 fieldembedding 就是对应 one-hot 中所有 1 对应的 embedding 的累加。

    2. DCNcross network 虽然对高阶特征交互显式建模,但是它学到的高阶特征交互非常特殊,仅仅是某种非常特殊的形式。

      假设一个 十、xDeepFM - 图1 层的 cross network,我们忽略偏置项,第 层定义为:

      十、xDeepFM - 图2

      则可以用数学归纳法证明:cross network 的输出 是 十、xDeepFM - 图3 的一个标量乘积。

      即:

      其中:

      十、xDeepFM - 图4

      注意:标量乘积仅仅意味着向量的方向相同,但是并不意味着线性关系。

    3. cross network 能够有效的学到高阶特征交互,其计算复杂度相对于 DNN 来讲可以忽略不计,但是有两个严重不足:

      • 网络输出形式过于单一,仅仅是 十、xDeepFM - 图5 的标量乘积。
      • 基于 bit-wise 级别学习特征交互。

      xDeepFMCIN 参考了 cross network 的思想,但是具有以下特点:

      • cross network 相同,CIN 也可以显式建模高阶特征交互,且网络复杂度并没有随着交互阶数的增加而指数增长。
      • cross network 不同,CIN基于 vector-wise 级别学习特征交互,且网络的表达能力更强输出形式更多。

    10.1.1 CIN

    1. CIN 的建模过程非常类似卷积神经网络CNN

      • 首先引入临时三维张量 ,它是 十、xDeepFM - 图6 和 的外积。

        十、xDeepFM - 图7

      • 然后将三维张量 视为一张图片,将 十、xDeepFM - 图8 视为一个卷积核,沿着 维度进行卷积得到 featuremap ,即向量 。

        十、xDeepFM - 图9

      • 使用 个卷积核执行卷积,得到的 featuremap 组成输出张量 十、xDeepFM - 图10

      因此 CIN 网络将 个交叉向量压缩到 十、xDeepFM - 图11 个向量,这就是网络名称中的 compressed 的由来。

    2. CIN 网络的整体结构如下图所示。令 表示网络深度,每层输出 十、xDeepFM - 图12 都和输出单元相连。

      • 首先对每层的 feature map 应用 sum pooling

        这里池化仍然是沿着 embedding 维度进行。

        因此得到该层的池化向量: 。

      • 拼接所有层的输出池化向量,则有:

        十、xDeepFM - 图13

        该向量作为 CIN 网络的输出向量。

      • 输出向量输入到 sigmoid 输出层,得到 CIN 网络的输出得分:

        其中 十、xDeepFM - 图14 为网络参数。

    3. 卷积、池化操作都是沿着 embedding 维度进行,而不是沿着其它方向。原因是:我们希望对特征之间的高阶特征交叉显式建模。

      • 根据 CIN 网络的基本原理,卷积必须对 十、xDeepFM - 图15embedding 维度进行。

      • 为了得到显式的交叉特征,池化也必须对 十、xDeepFM - 图16embedding 维度进行。

    4. 设第 层第 十、xDeepFM - 图17feature map 的参数 ,因此第 十、xDeepFM - 图18 层的参数数量为 。

      另外最后一层 sigmoid 输出层的参数数量为 十、xDeepFM - 图19,因此总的参数为:

      可以看到,CIN 的空间复杂度和 embedding 维度 十、xDeepFM - 图20 无关。

      • 一个 T 层的、第 层隐向量长度为 十、xDeepFM - 图21DNN 网络的参数数量(包括sigmoid 输出层)为:

        可以看到 DNN 的空间复杂度和 embedding 维度 十、xDeepFM - 图22 有关。

      • 通常 和 十、xDeepFM - 图23 不会太大,所以 规模不会太大。一旦有必要,可以对 十、xDeepFM - 图24 进行 阶分解,将其分解为两个小矩阵:

        十、xDeepFM - 图25

        其中 ,十、xDeepFM - 图26

        假设 ,则分解之后的空间复杂度从 十、xDeepFM - 图27 下降到 。

    5. 假设 十、xDeepFM - 图28 ,则计算 的时间复杂度为 十、xDeepFM - 图29 。由于有 层,则总的时间复杂度为 十、xDeepFM - 图30

      常规 DNN 网络的时间复杂度为 ,因此 CIN 的时间复杂度太高。

    6. 假设所有的 feature map 都是 十、xDeepFM - 图31 维度,即: 。

      • 第一层第 十、xDeepFM - 图32feature map 为:

        因此第一层的 feature map十、xDeepFM - 图33 对交叉特征建模。

      • 第二层第 个feature map 为:

        十、xDeepFM - 图34

        其中下标 的计算已经在第一层完成,因此第二层使用 十、xDeepFM - 图35 个额外的参数对三阶特征交叉建模。

      • 一个典型的 阶特征交叉有 十、xDeepFM - 图36 个参数,但是CIN 网络只需要 个参数就可以建模 十、xDeepFM - 图37 阶特征交叉。

      .

    10.1.2 xDeepFM

    1. xDeepFM 结合了 CIN 网络和 DNN 网络,分别对特征交互显式、隐式的建模,二者互补。

      • 模型输出为:

        十、xDeepFM - 图38

        其中 为激活函数; 十、xDeepFM - 图39 分别为线性部分、DNN 部分、CIN 部分的输出层权重参数; 分别为模型的原始输入特征、DNN 网络提取的特征、CIN 网络提取的特征。

      • 模型损失函数为负的对数似然函数:

        十、xDeepFM - 图40

        其中 为样本数量。

      • 十、xDeepFM - 图41

        其中 为正则化系数;十、xDeepFM - 图42 为所有参数,包括线性部分、CIN部分、DNN 部分。

    2. xDeepFM 可以退化为 DeepFM 模型和 FM 模型。

      • CIN 网络的深度为1,且所有卷积核的元素都固定为 1 时,xDeepFM 退化为 DeepFM 模型。

        注意:DeepFM 中,FM 层直接连接到输出单元,不需要任何参数。

    10.2 实验

    1. 数据集:

      • 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
      • 数据集:Bing News 是微软 Bing 搜索引擎中的一部分。

        数据包含连续五天的曝光日志,其中前三天的数据用于训练和验证,后两天的数据用于测试。

      十、xDeepFM - 图43

    2. 模型的评估指标为 AUC,logloss

    3. 对照模型包括LR,FM,DNN,PNN,Wide&Deep,DCN,DeepFM 模型。

      • 为验证模型能够自动学习有效的特征,我们不包含任何人工设计的交叉特征。

      • 每个模型的超参数通过验证集获取最佳的超参数,最后在测试集上比较各模型的评估指标。

      • 神经网络模型的一些默认配置:

        • 采用 Adam 优化器,初始化学习率为 0.001batch-size = 4096

        • 对于 DNN,DCN,Wide&Deep,DeepFM,xDeepFM,采用 正则化,正则化系数为 十、xDeepFM - 图44

          对于 PNN,采用 dropout 正则化,dropout 系数为 0.5

        • 每个 fieldembedding 向量维度为 10

        • DNN 层隐向量的维度为400CIN 层的影响力的维度为:Criteo 数据集 200Dianping/BingNews 数据集 100

    10.2.1 CIN 网络

    1. 理论表明:FM 显式建模二阶特征交互;DNN 隐式建模高阶特征交互;cross network 试图用少量参数显式建模高阶特征交互(已被证明无效);CIN 显式建模高阶特征交互。

      实际上模型的表现严重依赖于数据集。如果某个数据集 A 上模型 M1 优于模型 M2,那么无法从理论上保证在其它数据集上也是如此。如:如果数据集不需要高阶特征交互,则 FM 可能就是最佳的模型。

      下表给出了各模型在各数据集上的表现。其中 Depth 表示网络的最佳深度(通过超参数搜索得到)。

      注意:这里 CINxDeepFMCIN 网络,不包含 xDeepFMDNN 部分;CrossNetDCNcross network 部分,也不包含 DNN 部分。

      结论:

      • DNN,CrossNet,CIN 在所有数据集上明显优于 FM,说明对于这三个数据集,高阶特征交互是必要的。
      • 在所有的数据集上,CIN 都优于其它模型,说明了 CIN 在显式建模高阶特征交互方面的有效性。

    10.2.2 xDeepFM

    1. xDeepFM 集成了 CIN 网络和 DNN 网络,因此我们将它和其它模型比较。

      结论:

      • LR 模型远比其它模型差,这表明对特征交互建模非常重要。
      • Wide&Deep,DCN,DeepFM,xDeepFM 明显强于 FM,这说明混合结构对于模型提升非常重要。
      • xDeepFM 在所有数据集上都表现最好,说明必须将显式、隐式高阶特征交互进行组合。
      • 所有基于神经网络的模型都不需要非常深,就可以获得最佳性能。

      十、xDeepFM - 图45

    10.2.3 超参数探索

    1. 这里对 xDeepFMDNN 部分的超参数选择最佳的配置并固定不动,然后对 CIN 部分的超参数进行探索。

    2. 首先探索CIN网络的深度。可以看到:xDeepFM 的性能随着网络深度增加而增加,但是当深度大于3时模型性能下降。

      这是由于过拟合导致,因为当添加更多的隐层时训练集损失仍在下降。

      十、xDeepFM - 图46

    3. 然后探索 CIN 网络隐向量维度。实验中我们将隐层数量设为 3

      • 当隐向量维度从20 增加到 200 时,Bing News 数据集的模型性能稳定提高。

      十、xDeepFM - 图47

    4. 最后评估CIN 网络的激活函数。可以看到:当采用线性激活函数(即不采用任何激活函数)时,模型表现最佳。