八、NFM

  1. FM 是一个有效捕捉二阶特征交互的方案,但是它仅能以线性的方式交互,无法学得真实世界数据的非线性关系,因此模型的表达能力较弱。

    DNN (如 Wide&Deep、DeepCrossing )虽然可以学习非线性特征交互,但是深度网络难以训练。

    论文 《NeuralFactorizationMachinesforSparsePredictiveAnalytics》 提出了 Neural Factorization Machine:NFM 模型,该模型结合了FM 建模二阶特征交互中的线性,以及 DNN 建模高阶特征交互中的非线性。

    • FM 相比,FM 可以作为 NFM 的一个特例,因此 NFM 表达能力比 FM 更强。
    • Wide&Deep、DeepCrossing 相比,NFM 网络结构更浅,预测能力更强,更容易训练和调整。
  2. 人工特征工程、FMDNN 的缺点:

    • 人工特征工程的缺点:

      • 成本很高,因为它需要大量的工程设计、大量的领域知识从而设计有效的特征。
      • 即使针对某个问题开发出有效特征,该方案无法推广到新的问题或领域。
    • FM 的缺点:模型使用一阶特征、二阶交叉特征的线性组合,模型简单,表达能力较弱。

    • DNN 的缺点:在信息检索和数据挖掘任务中,大多数数据都是天然稀疏的。尽管 DNN 具备从 dense 数据中学习 pattern 的强大能力,但是目前还不清楚如何配置网络从而使得模型能够从 sparse 数据中有效的学习 pattern

      另外,DNN 还存在优化困难。大多数 DNN 首先学习 embedding 向量,然后将 embedding 向量拼接起来送入后续的 deep 层来学习特征之间的交互。仅仅拼接 embedding 向量并没有包含多少特征交互信息,必须通过接下来的 deep 层来学习特征交互。

      但是deep 层太深又容易导致优化问题,如:梯度消失、梯度爆炸、过拟合、网络退化 degradation 等问题。

      为说明该问题,我们绘制了 Wide&Deep 以及 DeepCrossing 在每个 epochtrain errortest error 。其中 Wide&Deep 采用3层双塔结构,DeepCrossing 采用 10层残差网络。

      • 从左图可知:从头训练这两个模型比FM 模型还要差(测试误差)。

        Wide&Deep 测试误差相对较高,可能是因为模型退化问题;DeepCrossing 的训练误差最低但是测试误差最高,说明发生了严重的过拟合。

      • 从右图可知:当采用 FM 初始化模型的 embedding 向量之后(可以视为预训练阶段),两个模型的性能头提升(大约 11% )。

        对于 Wide&Deep,模型退化问题得到解决,因为现在它的训练误差要低得多,而且测试误差也比 FM 要好。

        对于 DeepCrossing,模型仍然遭受严重过拟合,且测试误差比 FM 要高。

      以上问题表明:DNN 模型的优化困难。

      八、NFM - 图1

  3. NFM 模型引入了 Bi-Interaction pooling 二阶交叉池化层,然后再二阶交叉池化层上方堆叠非线性全连接层。

    • FM 方法相比,NFM 可以视为深层的 FM,它在 FM 的基础上提升了对高阶特征交叉和非线性特征交叉建模的能力,提升了模型的能力。
    • 与传统的 DNN 方法仅将底层 embedding 向量拼接再一起或者取均值相比,二阶交叉池化层对交叉信息进行编码,为后续的全连接层提供更有意义的信息。
  4. NFM 模型首次在神经网络模型中引入 Bi-Interaction pooling 操作,并为 FM 提供了基于神经网络的解释。

8.1 模型

  1. 给定经过one-hot 编码之后的输入向量 八、NFM - 图2,其中特征 八、NFM - 图3 表示第 八、NFM - 图4 个特征不存在。则 NFM 的预测结果为:

    八、NFM - 图5

    • 类似 FMNFM 的第一项为全局偏置,第二项为一阶特征。
    • FM 不同,NFM 的第三项 八、NFM - 图6 对交叉特征进行建模,它是一个多层前馈神经网络,包含 embedding层、Bi-Interaction 层、Hidden 层、输出层。如下图所示(仅仅包含 八、NFM - 图7 )。

    八、NFM - 图8

  2. embedding 层将每个feature 映射到一个 dense vector representation,即特征 八、NFM - 图9 映射到向量 八、NFM - 图10

    一旦得到 embedding 向量,则输入 八、NFM - 图11 就可以表示为:

    八、NFM - 图12

    由于输入 八、NFM - 图13 的稀疏性,八、NFM - 图14 只需要保存非零的特征。

    注意:这里使用输入特征 八、NFM - 图15 来调整 embedding 向量,而不是简单的从embedding table 中查找。这样做的好处是可以统一处理实值特征 real valued feature

  3. Bi-Interaction 层对输入的 八、NFM - 图16 执行池化操作,将一组 embedding 向量(即一个矩阵)转换为一个向量,该操作称作 Bi-Interaction pooling 操作:

    八、NFM - 图17

    其中: 八、NFM - 图18 是逐元素乘法;八、NFM - 图19 是一个 八、NFM - 图20 维向量,它在 embedding 空间编码了二阶交叉特征。

    Bi-Interaction 层有两个优秀的特性:

    • Bi-Interaction 层并没有引入任何额外的模型参数

    • Bi-Interaction 层可以在线性时间内有效计算:

      八、NFM - 图21

      其中 八、NFM - 图22 表示 八、NFM - 图23

      由于输入 八、NFM - 图24 的稀疏性,我们可以在 八、NFM - 图25 的时间内计算 Bi-Interaction pooling ,其中 八、NFM - 图26 表示输入中非零项的数量。

    这些性质意味着 Bi-Interaction 层对二阶交叉特征建模的代价很低。

    另外,Bi-Interaction 层也支持求导运算:

    八、NFM - 图27

  4. Hidden 层是一组全连接层,用于捕获高阶特征交叉:

    八、NFM - 图28

    其中 八、NFM - 图29 为隐层数量,八、NFM - 图30 为激活函数。

  5. 输出层用于输出预测得分:八、NFM - 图31

  6. 最终模型为:

    八、NFM - 图32

    模型的参数为:八、NFM - 图33 。和 FM 相比,NFM 多了 八、NFM - 图34 的部分。

    • 和浅层、线性的 FM 模型相比,可以认为 FMNFM 的特例。当 NFM 的隐层数量为0、固定 八、NFM - 图35 时,NFM 的输出为:

      八、NFM - 图36

      这是首次在神经网络框架下解释 FM 模型,这位改进 FM 提供了更多思路。尤其是我们可以在 FM 上使用各种神经网络技术来提高其学习和泛化能力。如:在 Bi-Interaction 层之上使用 dropout。与传统的 L2 正则化相比,该方法更有效。

    • 和现有的DNN 模型相比,NFM 结构非常相似,除了 NFM 具有 Bi-Interaction 层。 如果将 Bi-Interaction 层替换为拼接层,则 NFM 退化为 Wide&Deep

      拼接操作的一个明显不足是:它无法处理特征交互关系。因此 Wide&Deep 仅依赖于后续的更高层来捕获特征交互。而在实践中发现,深层网络难以优化和训练。

      Bi-Interaction 层在底层就能捕获到二阶特征交互,这使得后续层学习更高阶特征交互时更容易。

  7. Bi-Interaction 层的时间复杂度为 八、NFM - 图37,因此主要的时间消耗在隐层计算。

    对于第 八、NFM - 图38 层隐层,计算复杂度为 八、NFM - 图39,其中 八、NFM - 图40 表示该层隐向量维度。因此总的时间复杂度为:

    八、NFM - 图41

    这与 Wide&Deep,DeepCrossing 几乎相同。

  8. NFM 可以执行不同类型的任务,包括回归、分类、排序 ranking

    • 对于回归任务,损失函数为平方误差:

      八、NFM - 图42

      这里没有添加正则化项,因为论文发现:神经网络的某些正则化技术(如:dropout )要比正则化项效果更好。

    • 对于分类任务,损失函数为 hinge loss 或者 logloss

    • 对于排序任务,损失函数为 pairwise personalized ranking loss 或者 contrastive max-margin loss

  9. NFM 并未采用常规的 八、NFM - 图43 正则化,而是采用 dropoutBatch Normalization

    • 为了防止 feature embedding 出现 co-adapt 并过拟合 ,NFMBi-Interaction 层的输出执行 dropout 。即:在 Bi-Interaction 层之后接入一个 Dropout 层,随机丢弃 八、NFM - 图44 比例的神经元。

      由于不包含任何隐层的 NFM 就是 FM 模型,因此 dropout 也可以认为是 FM 模型新的正则化方式。

      • 在测试阶段 dropout 要被移除。
      • 理论上,我们也可以在后续的隐层中,每个隐层的输出执行 dropout
    • 为防止过拟合,NFM 也对 Bi-Interaction 层和后续层的输出执行 Batch Normalization

8.2 实验

  1. 数据集:

    • Frappe 数据集:给出了不同上下文时用户的 app 使用日志记录,一共包含 96203app

      除了 userID, appID 之外,每条日志还包含8个上下文特征:天气、城市、daytime(如:早晨、上午、下午) 等。

      采用 one-hot 编码之后,特征有 5382 维;label = 1 表示用户使用了 app

    • MovieLens 数据集:GroupLens 发布的最新 MovieLens 数据集的完整版,包含 17045 个用户在 23743item 上的 49657 类标签。

      userID,movieID,tag 进行 one-hot 编码之后,特征有 90445 维; label = 1 表示用户给 movie 贴了 tag

    由于这两个数据集只包含正类(即:label = 1),因此需要通过采样来生成负类,负类数量和正类数量的比例为 2:1

    • 对于 Frappe 数据集,对每条记录,随机采样每个用户在上下文中未使用的其它两个 app
    • 对于 MovieLens 数据集,对每个用户每个电影的每个 tag,随机分配给该电影其它两个该用户尚未分配的 tag

    八、NFM - 图45

    对于每个数据集拆分为训练集(70%)、验证集(20%)、测试集(10%)。

  2. 评估标准:验证集或者测试集的均方根误差 RMSE

    注意:由于论文采用回归模型来预测,因此预测结果可能大于 +1(正类的 label)护着小于 -1(负类的 label)。因此如果预测结果超过 +1 则截断为 +1、低于 -1 则截断为 -1

  3. 模型比较 baseline

    • LibFMFM 的官方实现。
    • HOFM:基于 tensorflow 实现的高阶 FM
    • Wide&DeepWide&Deep模型,其中deep part 包含三层隐层,每层维度分别为 1024,512,256
    • DeepCrossDeepCross 模型,其中包含 5层残差网络,每层维度为 512,512,256,128,64
  4. 超参数配置:

    • 优化目标:平方误差。

    • 学习率:所有模型的学习率通过超参数搜索得到,搜索范围 [0.005,0.01,0.02,0.05]

    • 正则化:

      • 线性模型 LibFM,HOFM 使用 八、NFM - 图46 正则化,正则化系数搜索范围 [1e-6,5e-6,1e-5,...,1e-1]

      • 神经网络模型 Wide&Deep,DeepCross,NFM 执行 dropout,遗忘比例搜索范围 [0,0.1,0.2,...,0.9]

        实验发现 dropoutWide&Deep,NFM 中工作良好,但是在 DeepCross 工作较差。

      • 所有模型都采用早停策略 early stopping

    • 优化策略:libFM 使用常规SGD 优化,其它模型使用 mini-batch Adagrad 优化。

      其中 Frappe 数据集的 Batch Size = 128MovieLens 数据集的 Batch Size = 4096

      Batch Size 的选择要综合考虑训练时间和收敛速度。更大的 Batch Size 使得每个 epoch 的训练时间更短,但是需要更多的 epoch 才能收敛。

    • embedding size 默认为 4 。

8.2.1 Bi-Interaction 层

  1. 首先研究 dropout 对于 FM 的作用。当 NFM 隐层数量为 0 时就退化为 FM 模型,记作NFM-0

    下图给出了不同数据集上,FM 执行 八、NFM - 图47 正则化和 dropout 正则化的效果。横坐标为不同的遗忘比例 或者 正则化系数。另外 LR 的验证集误差作为 baseline

    结论:

    • LR 效果最差,说明特征交叉非常重要。
    • 八、NFM - 图48dropout 都能缓解过拟合,但是 dropout 效果更好。这意味着 dropout 也能成为 linear latent-factor 模型缓解过拟合的方法。

    八、NFM - 图49

    从上图观察到:每个数据集 dropout ratio = 0.3 时效果最好,因此遗忘比率设定为 0.3 。

    为进一步观察 dropout 效果,论文对 NFM-0 绘制每个epoch 的训练误差和验证误差。相比较于没有dropoutdropout = 0),采用 dropout 后(dropout=0.3)的训练误差较高但是验证误差更低。

    这进一步说明了 dropout 能够针对 FM 模型有效缓解过拟合。

    八、NFM - 图50

  2. 然后研究 BatchNormalization 对于 FM 的作用。下图给出 NFM-0BI Interaction 层的输出执行 BN 和不执行 BN 时,每个 epoch 的训练误差和验证误差。其中 dropout = 0.3,学习率为 0.02

    采用了 BN 之后:

    • 训练误差更快的收敛,且收敛到更低的水平

    • 验证误差稍微改进,但是改进幅度没有训练误差改进幅度大

    • 学习过程更加不稳定,如:蓝色线的波动更大。这是由于 dropoutBN 一起使用的原因。

      由于 dropout 随机丢弃神经元,这导致 BN 的输入不断的随机被改变。

    八、NFM - 图51

8.2.2 隐层

  1. NFM 的隐层在捕获特征的高阶交互方面起着关键作用。

  2. 首先评估激活函数的影响。模型采用一层隐层,隐层维度和 embedding 维度相同。下图给出了不同激活函数、不同 dropout 的效果。其中 LibFM,NFM-0 作为 baseline

    结论:非线性激活函数的使用至关重要,能大幅度提升模型效果。这说明使用非线性激活函数来学习高阶特征交互是非常有必要的。

    八、NFM - 图52

  3. 然后评估隐层的深度的效果。每个隐层都采用 ReLU 激活函数,维度为 embedding 维度相同。

    结论:堆叠更多的隐层,模型性能不会进一步提高。只有一层隐层的 NFM 效果最好。

    论文还探索了其它隐层结构:如塔形(隐层维度递减)、残差单元,结果模型的表现仍然没有提高。猜测的原因是: BI Interaction 层已经编码了丰富的二阶特征交互。在此基础上,简单的非线性函数足以捕获更高阶的特征交互。

    为证明这一点,论文将 BI Interaction 层替换为拼接层,这导致网络结构和 Wide&Deep 相同)。此时通过简单的增加隐层数量来逐步提高性能,但是最好的性能仍然不如 NFM-1 。这说明底层使用更有价值的信息能够有效减轻高层的学习负担,结果使得不一定需要较深的网络就能取得很好的效果。

    八、NFM - 图53

8.2.3 预训练

  1. 参数初始化能够极大的影响DNN 的收敛和性能,因为基于梯度的优化算法只能为 DNN 提供局部最优解。如:使用 FM 学习的 embedding 向量来初始化模型能够显著提升 Wide&DeepDeepCross 模型的收敛速度和模型性能。

    八、NFM - 图54

    下图给出预训练的 NFM-1 和非预训练的 NFM-1 在每个 epoch 的训练误差和验证误差。

    • 预训练的 NFM-1 的模型训练很快收敛,仅仅 5个epoch 就能达到随机初始化NFM-1 的40个 epoch (启用 BN )的效果
    • 预训练并不能改善 NFM 的验证误差,且随机初始化效果更好。

    这证明NFM 的鲁棒性:对于参数初始化不敏感。相比较于预训练对 Wide&Deep/DeepCross 产生的巨大影响,NFM 更容易训练和优化。这主要归功于 BI Interaction pooling 操作的有效性。

    八、NFM - 图55

8.2.4 模型比较

  1. 下图给出不同的 embedding size ,不同模型的表现(测试误差)。其中:

    • Wide&Deep,Deepcross 使用 FM 预训练。
    • NFM 使用 ReLU 激活函数,Bi Interaction 层的 dropout = 0.5,隐层的 dropout 通过超参数搜索。

    八、NFM - 图56

  2. 下表给出了所有模型在两个数据集上的效果(测试误差)以及模型大小。

    结论:

    • 在这两个数据集上,NFM 始终以最少的参数(除 FM 之外)获得最佳性能,这说明了 NFM 针对稀疏数据建模高阶特征交互和非线性特征交互的有效性和合理性。

    • HOFM 相对于 FM 略有改善,这说明 FM 仅建模二阶特征交互的局限性,以及建模高阶特征交互的有效性。

    • HOFMNFM 之间的巨大差异,反映了以非线性方式构建高阶特征交互的价值。因为 HOFM 是通过线性建模高阶特征交互,但是效果比 NFM 差距较大,参数反而比 NFM 翻倍。

    • DeepCross 是这些模型中深度最深的(包含10层),但是相对较差的性能表明:更深的网络并不一定总是更好的。

      论文认为这是由于优化困难和过拟合。

    八、NFM - 图57