十、xDeepFM

  1. CTR 预估任务中,常用的人工特征工程、FM 模型、DNN 模型都存在不足。

    • 人工特征工程缺点:

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

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

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

        与之相反,FMvector-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 模型

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

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

    十、xDeepFM - 图1

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

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

    十、xDeepFM - 图4

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

    即:

    十、xDeepFM - 图7

    其中:

    十、xDeepFM - 图8

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

    十、xDeepFM - 图9

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

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

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

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

10.1.1 CIN

  1. 假设所有的 embedding 向量维度为 十、xDeepFM - 图11 ,假设 field iembedding十、xDeepFM - 图12。假设有 十、xDeepFM - 图13field,将所有 embedding 拼接成矩阵:

    十、xDeepFM - 图14

    矩阵的第 十、xDeepFM - 图15 行就是field iembedding十、xDeepFM - 图16

    CIN 的第 十、xDeepFM - 图17 层输出也是一个矩阵 十、xDeepFM - 图18,其中 十、xDeepFM - 图19 为输出向量的数量,其中 十、xDeepFM - 图20

    十、xDeepFM - 图21

    其中:

    • 十、xDeepFM - 图22 为向量的逐元素积
    • 十、xDeepFM - 图23 为权重向量,它用于为 vector-wise 的交叉特征 十、xDeepFM - 图24 赋予不同的权重。

    由于 十、xDeepFM - 图25 是通过 十、xDeepFM - 图26十、xDeepFM - 图27 计算得到,因此 CIN 显式的建模特征交互,并且特征交互的阶数随着CIN 网络的深度加深而加深。

    另外在计算过程中,所有的特征交互都是基于向量的运算,因此整个建模过程是 vector-wise 的。

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

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

      十、xDeepFM - 图31

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

      十、xDeepFM - 图35

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

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

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

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

      十、xDeepFM - 图42

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

      因此得到该层的池化向量:十、xDeepFM - 图43

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

      十、xDeepFM - 图44

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

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

      十、xDeepFM - 图45

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

    十、xDeepFM - 图47

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

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

      十、xDeepFM - 图49

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

  5. 设第 十、xDeepFM - 图51 层第 十、xDeepFM - 图52feature map 的参数 十、xDeepFM - 图53,因此第 十、xDeepFM - 图54 层的参数数量为 十、xDeepFM - 图55

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

    十、xDeepFM - 图57

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

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

      十、xDeepFM - 图61

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

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

      十、xDeepFM - 图68

      其中 十、xDeepFM - 图69十、xDeepFM - 图70

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

  6. 假设 十、xDeepFM - 图74 ,则计算 十、xDeepFM - 图75 的时间复杂度为 十、xDeepFM - 图76 。由于有 十、xDeepFM - 图77 层,则总的时间复杂度为 十、xDeepFM - 图78

    常规 DNN 网络的时间复杂度为 十、xDeepFM - 图79,因此 CIN 的时间复杂度太高。

  7. 假设所有的 feature map 都是 十、xDeepFM - 图80 维度,即:十、xDeepFM - 图81

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

      十、xDeepFM - 图83

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

    • 第二层第 十、xDeepFM - 图85feature map 为:

      十、xDeepFM - 图86

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

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

      十、xDeepFM - 图93

    .

10.1.2 xDeepFM

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

    • 模型输出为:

      十、xDeepFM - 图94

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

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

      十、xDeepFM - 图98

      其中 十、xDeepFM - 图99 为样本数量。

    • 模型训练目标:损失函数 + 正则化项

      十、xDeepFM - 图100

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

    十、xDeepFM - 图103

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

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

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

    • 当进一步移除 DNN 部分时,xDeepFM 退化为 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
    • BingNews 数据集:Bing News 是微软 Bing 搜索引擎中的一部分。

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

    十、xDeepFM - 图104

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

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

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

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

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

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

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

        对于 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 在显式建模高阶特征交互方面的有效性。

    十、xDeepFM - 图107

10.2.2 xDeepFM

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

    结论:

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

    十、xDeepFM - 图108

10.2.3 超参数探索

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

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

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

    十、xDeepFM - 图109

    十、xDeepFM - 图110

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

    • 当隐向量维度从20 增加到 200 时,Bing News 数据集的模型性能稳定提高。
    • 在大众点评数据集上,隐向量最佳维度为 100

    十、xDeepFM - 图111

    十、xDeepFM - 图112

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

    十、xDeepFM - 图113

    十、xDeepFM - 图114