七、DeepFM

  1. 理解用户点击行为背后隐藏的交叉特征对于 CTR 预估非常重要。例如,对 app store 的研究表明:人们经常在用餐时间下载送餐 app。这说明:app 类别和时间戳构成的交叉特征可以作为 CTR 预估的信号。

    通常用户点击行为背后的特征之间的各种交互非常复杂,其中的低阶交叉特征和高阶交叉特征都能发挥重要作用。根据 Wide&Deep 的理解,与仅考虑其中一种情况相比,同时考虑低阶交叉特征和高阶交叉特征能够带来额外的收益。

    但是这个问题的挑战在于:如何有效的构建交叉特征。

    • 有些交叉特征很容易理解,可以由业务专家人工设计。如上面的 app store 例子。
    • 大多数交叉特征都隐藏在数据中,很难事先预知,只能通过机器学习自动识别。如,经典的关联规则 “啤酒 & 尿布” 是从数据中提取的,而不是专家人工设计的。
  2. 目前的模型要么利用低阶特征交叉(如 FM 模型),要么利用高阶特征交叉(如 DNN 模型),要么需要专业的特征工程(如 Deep&Wide)。

    • 理论上 FM 可以建模任意高阶的交叉特征,但是由于代价太大,通常只考虑建模二阶交叉特征。因此实际上 FM 只能建模低阶交叉特征。
    • 基于 CNN 的模型倾向于捕捉相邻特征之间的交互,而点击率预估任务的相邻特征之间并没有显著的相关性。
    • 基于 RNN 的模型更适合具有顺序依赖性的数据,而点击率预估任务的特征之间并不存在顺序依赖性。
    • PNNFNN 像其它 DNN 模型一样,只能捕捉高阶交叉特征,几乎捕捉不到低阶交叉特征。
    • Deep&Wide 模型虽然可以同时捕获到低阶交叉特征和高阶交叉特征,但是 deep 部分和 wide 部分需要分别两个不同的输入,其中 wide 部分的输入仍然依赖于专业的特征工程。

    论文《DeepFM: A Factorization-Machine based Neural Network for CTR Prediction》 提出了 DeepFM 模型,该模型结合了 FM 的推荐能力和 DNN 的特征学习能力,综合利用了低阶交叉特征和高阶交叉特征。其特点有:

    • DeepFM 集成了 FMDNN,可以对低阶交叉特征和高阶交叉特征建模,同时无需对原始输入执行任何特征工程。
    • DeepFMwide 部分和 deep 部分共享输入及embedding

7.1 模型

  1. DeepFM 模型由两种组件构成:FM 组件、deep 组件,它们共享输入。这种共享输入使得DeepFM 可以同时从原始特征中学习低阶特征交互和高阶特征交互,完全不需要执行特征工程(如 Wide&Deep )。

    七、DeepFM - 图1

  2. 假设输入包含 sparse 特征和 dense 特征。设输入向量 七、DeepFM - 图2,其中:

    七、DeepFM - 图3

    其中 七、DeepFM - 图4field ione-hot 向量,七、DeepFM - 图5 为原始的 dense 特征,七、DeepFM - 图6 为向量拼接。对于特征 j (即 七、DeepFM - 图7):

    • 标量 七、DeepFM - 图8 用于对它的一阶特征重要性进行建模,即 FM 组件左侧的 + 部分。
    • 向量 七、DeepFM - 图9 用于对它的二阶特征重要性进行建模,即 FM 组件右侧的 x 部分。
    • 向量 七、DeepFM - 图10 也作为 deep 组件的输入,从而对更高阶特征交互进行建模,即 deep 组件。

    最终模型联合了 FM 组件和 deep 组件的输出:

    七、DeepFM - 图11

    其中 七、DeepFM - 图12 为模型预测的CTR七、DeepFM - 图13FM 组件的输出,七、DeepFM - 图14deep 组件的输出。

  3. FM 组件:该部分是一个 FM ,用于学习一阶特征和二阶交叉特征。

    FM 组件由两种操作组成:加法 Addition 和内积 Inner Product

    七、DeepFM - 图15

    其中 七、DeepFM - 图16

    • 第一项 Addition Unit 用于对一阶特征重要性建模
    • 第二项 Inner Product 用于对二阶特征重要性建模

    七、DeepFM - 图17

  4. deep 组件:该部分是一个全连接的前馈神经网络,用于学习高阶特征交互。

    假设 embedding 层的输出为:七、DeepFM - 图18 ,其中 七、DeepFM - 图19field iembedding 向量,七、DeepFM - 图20 为前馈神经网络的输入。则有:

    七、DeepFM - 图21

    其中 七、DeepFM - 图22 为第 l 层,七、DeepFM - 图23 为激活函数。

    最终有:

    七、DeepFM - 图24

    七、DeepFM - 图25deep 部分的网络深度。

    七、DeepFM - 图26

  5. DeepFM 和其它模型的区别:

    • FNNFNN 虽然也用到了 FM 模型,但是它仅使用 FM 模型来初始化 FNN 然后来微调模型。这使得 FNNembedding 层参数严重受制于 FM 模型,从而降低模型效果。

      另外 FNN 仅捕捉高阶特征交互。

      与之相比,DeepFM 不需要预训练,而是端到端的学习低阶特征交互和高阶特征交互。

    • PNN:作者发现 OPNN 不如 IPNN 可靠,因为外积的近似计算丢失大量信息使得结果不稳定。

      虽然 IPNN 更可靠,但是由于 Product 层的输出连接到第一个隐层的所有神经元,所以计算复杂度较高。同时 IPNNOPNN 会忽略低阶特征交互。

      与之相比,DeepFM 中的 Product 层(即 FM 组件)的输出仅仅连接到输出层(只有一个神经元),计算复杂度很低。

    • Wide&Deep:虽然 Wide&Deep 也可以对低阶特征和高阶特征同时建模,但是 wide 部分需要人工特征工程,而这需要业务专家的指导。

      与之相比,DeepFM 直接处理原始特征,不需要任何业务知识。

      另外,Wide&Deep 的一个直接扩展是:使用 FM 代替 wide 部分的LR 模型,记作 FM&DNN 模型,原始的 Wide&Deep 模型记作 LR&DNN 模型。

      FM&DNN 模型更类似于 DeepFM 模型。但是 DeepFMFMDNN 之间共享 embedding 特征,这种共享策略有助于特征的 representation 学习,使得学到的特征 representation 更加精确。

    七、DeepFM - 图27

    七、DeepFM - 图28

7.2 实验

  1. 数据集:

    • Criteo Display Ads 数据集:用于预测广告点击率的数据集,包含13个整数特征,26个类别特征,其中每个类别特征的取值集合(即:cardinality )都很大。

      数据包含 7 天的 11 GB 用户日志(约 4100万条记录)。我们将数据集拆分为 90% 训练集和 10%测试集。

    • 华为公司数据:从华为 App Store 的游戏中心收集连续 7 天的用户点击数据作为训练集,第八天的数据作为测试集。整个训练集+测试集约10亿条记录。

  2. 评估指标 AUC,logloss

  3. 参数配置:对于华为公司数据集,通过超参数搜索来获取最佳参数。对于 Criteo 数据集,参数为:

    • FNNPNN 的参数:dropout = 0.5Adam 优化器、网络结构400-400-400、激活函数IPNN 模型为tanh 其它为 relu
    • DeepFM 参数:与 FNN/PNN 相同。
    • LR/FM 参数:优化算法FTRL & Adam ,同时 FMembedding 向量维度为 10。
  4. 模型训练效率:评估指标为 模型训练时间/LR模型的训练时间 。结论:

    • FNN 的预训练步骤拉低了它的训练效率。
    • 由于内积的低效预算,IPNNPNN* 的训练效率很低。其中 PNN* 是综合了 内积和外积的 PNN 模型。
    • DeepFM 在所有模型中,训练效率几乎是最高的。

    七、DeepFM - 图29

  5. 不同模型效果比较如下。结论:

    • LR 性能比其它模型都差,所以学习特征交互可以提高模型的预测能力。
    • DeepFM 优于仅学习低阶特征交互的 FM 或者仅学习高阶特征交互的 FNN,IPNN,OPNN,PNN* 模型,因此同时学习高阶特征交互和低阶特征交互可以提升模型的预测能力。
    • DeepFM 优于 Wide&Deep 及其变种,因此低阶特征交互和高阶特征交互共享 embedding 层可以提升模型的预测能力。

    七、DeepFM - 图30

  6. 基于 Company* 数据集,研究DeepFM 的超参数影响:

    • 激活函数:几乎所有的深度学习模型中,relutanh 效果更好。但是 IPNN 是例外,可能原始是 relu 导致很强的稀疏性。

      七、DeepFM - 图31

    • dropout:当设置正确的 dropout 比例(从 0.6~0.9 )时,模型可以达到最佳性能。这表明向模型添加一定的随机性可以增强模型的鲁棒性。

      七、DeepFM - 图32

    • deep 组件的隐向量维度:当其它条件不变时,单纯增加隐向量维度会增加模型复杂度,提高模型容量。这不一定是有利的,因为可能导致严重过拟合。

      七、DeepFM - 图33

    • deep 组件的深度:增加网络深度也可以增加模型复杂度、提高模型容量,同样也可能导致严重过拟合。

      七、DeepFM - 图34

    • 网络性质:在相同网络深度、总神经元数量的条件下,网络可以呈现四种形状:每层神经元数量相等(恒定)、底层神经元数量多高层神经元数量少(递减)、底层神经元数量少高层神经元数量多(递增)、两头神经元数量少中间神经元数量多(菱形)。

      实验结果表明:恒定网络形状表现最好。

      七、DeepFM - 图35