九、AFM

  1. FM 将所有二阶交叉特征都认为是同等重要的,事实上并非如此。有一些二阶交叉特征是没有价值的,可能会引入噪声并且降低模型性能。

    论文 《Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks》 提出了 Attentional Factorization Machine:AFM 模型,该模型通过 attention 机制来自动学习每个二阶交叉特征的重要性。

    Wide&Deep 以及 DeepCross 等模型相比,AFM 结构简单、参数更少、效果更好。同时 AFM 具有很好的可解释性:通过注意力权重可以知道哪些交叉特征对于预测贡献较大。

9.1 模型

  1. AFM 模型和 NFM 模型一脉相承,其底层架构基本一致。

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

    九、AFM - 图4

    • 类似 FMAFM 的第一项为全局偏置,第二项为一阶特征。
    • FM 不同,AFM 的第三项 九、AFM - 图5 对交叉特征进行建模,它是一个多层前馈神经网络,包含 embedding层、Pair-wise Interaction 成对交叉层、Attention-based Pooling 层、输出层。如下图所示(仅仅包含 九、AFM - 图6 )。

    九、AFM - 图7

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

    一旦得到 embedding 向量,则输入 九、AFM - 图10 就可以表示为:

    九、AFM - 图11

    由于输入 九、AFM - 图12 的稀疏性,九、AFM - 图13 只需要保存非零的特征。

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

  3. NFMBi-Interaction 层不同,AFMPair-wise Interaction 层将 九、AFM - 图15 个向量扩充为 九、AFM - 图16 个交叉向量,每个交叉向量是两个 embedding 向量的逐元素积。九、AFM - 图17九、AFM - 图18 中非零元素数量。

    假设输入 九、AFM - 图19 的非零元素下标为 九、AFM - 图20,对应的 embedding九、AFM - 图21 ,则 Pair-wise Interaction 层的输出为:

    九、AFM - 图22

    其中 九、AFM - 图23 表示逐元素乘积,九、AFM - 图24 表示成对下标集合。

    与之相比,NFMBi-Interaction 层输出为:

    九、AFM - 图25

  4. 一旦得到Pair-wise Interaction 层的 九、AFM - 图26 个交叉向量,则可以通过一个 sum pooling 层来得到一个池化向量:

    九、AFM - 图27

    它刚好就是 Bi Interaction 层的输出 。因此 Pair-wise Interaction层 + sum pooling 层 = Bi Interaction 层

  5. Attention-based Pooling 层:与 Bi Interaction pooling 操作不同,Attention-based Pooling 操作采用了 attention 机制:

    九、AFM - 图28

    其中 九、AFM - 图29 是交叉特征 九、AFM - 图30attention score ,可以理解为交叉特征 九、AFM - 图31 的权重。

    学习 九、AFM - 图32 的一个方法是直接作为模型参数来学习,但这种方法有个严重的缺点:对于从未在训练集中出现过的交叉特征,其 attentioin score 无法训练。

    为解决该问题,论文使用一个 attention network 来训练 九、AFM - 图33attention network 的输入为 九、AFM - 图34 个交叉特征向量,输出为 九、AFM - 图35

    九、AFM - 图36

    其中 九、AFM - 图37 都是模型参数,九、AFM - 图38attention network 的隐向量维度,称作 attention factor

  6. 输出层用于输出预测得分:

    九、AFM - 图39

  7. 最终模型为:

    九、AFM - 图40

    模型的参数为:九、AFM - 图41

    • 当移除 attention network 时,AFM 模型退化为 NFM-0 模型,即标准的 FM 模型。
    • NFM 相比,AFM 模型缺少隐层来提取高阶特征交互。
  8. NFM 可以执行不同类型的任务,包括回归、分类、排序 ranking

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

      九、AFM - 图42

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

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

  9. 为缓解过拟合,AFM 采用 九、AFM - 图43 正则化和 dropout 正则化。

    • Pair-wise Interaction 层的输出执行 dropout

    • attention network 层的权重执行 九、AFM - 图44 正则化:

      九、AFM - 图45

    论文并未对 attention network 层的输出执行 dropout,因为实验发现:在 Pair-wise Interaction 层和 attention network 层都采用 dropout 会导致模型性能下降。

9.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

    九、AFM - 图46

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

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

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

  3. 模型比较 baseline

    • LibFMFM 的官方实现(基于 C++),采用 SGD 学习器。
    • HOFM:基于 tensorflow 实现的高阶 FM ,这里设置为3阶。因为 MovieLens 数据集只有三个特征:User,Item,Tag
    • Wide&DeepWide&Deep模型,其中deep part 包含三层隐层,每层维度分别为 1024,512,256wide 部分和 FM 的线性部分相同。
    • DeepCrossDeepCross 模型,其中包含 5层残差网络,每层维度为 512,512,256,128,64
  4. 超参数配置:

    • 优化目标:平方误差。

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

    • 正则化:

      • 线性模型 LibFM,HOFM 使用 九、AFM - 图47 正则化,正则化系数搜索范围 [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 默认为 256。

    • attention factor 默认为 256。

9.2.1 超参数探索

  1. 首先考察 dropout 超参数。设置 九、AFM - 图48 从而使得 attention network 没有正则化。

    另外移除 attention network 使得网络退化为 FM 模型来做比较。libFM 作为 baseline

    结论:

    • 选择合适的 dropout 值,AFMFM 都能够得到显著的提升。这证明了在 Pair-wise Interaction 层执行 dropout 的有效性。

    • 我们的 FM 模型比 libFM 效果更好,有两个原因:

      • libFM 采用SGD 来优化,学习率是固定的。我们的 FM 是通过 Adagrade 来优化,采用自适应学习率因此优化效果更好。
      • LibFM 采用 九、AFM - 图49 正则化来缓解过拟合,而我们的 FM 采用 dropout。后者缓解过拟合的效果更好。
    • AFM 的效果比 FMlibFM 好得多,即使是当 dropout = 0 时(即:未采取任何正则化)AFM 的效果仍然很好。这充分证明了 attention network 的效果。

    九、AFM - 图50

  2. 然后考察 九、AFM - 图51 正则化系数。当选择合适的 dropout 参数之后,我们考察对 attention network 执行 九、AFM - 图52 正则化的效果。

    结论:当 九、AFM - 图53 时,模型效果得到改善。这证明了 attention network 正则化的效果,能进一步改善模型的泛化能力。同时说明了:仅仅 Pair-wise Interaction 层执行 dropout 对于缓解过拟合是不够的。

    注意:FMLibFM 均没有 attention network ,因此它们在图上都是直线。

    九、AFM - 图54

9.2.2 attention network

  1. 首先考察 attention factor 的影响。

    下图给出 attention network 不同的隐向量维度(attention factor )下,模型的性能。其中每种隐向量维度都各自独立的选择了最合适的 九、AFM - 图55

    结论:AFM 对于 attention factor 的变化比较稳定。极端情况下,即使 attention factor =1,此时 九、AFM - 图56 退化为一个向量、 attention network 退化为一个广义线性模型,AFM 的效果仍然很好。

    这证明了 AFM 设计的合理性:通过 attention network 来评估特征的representation vector 之间交互的重要性。

    九、AFM - 图57

  2. 然后评估 AFMFM 在每个 epoch 的训练误差和测试误差。 可以看到:AFM 收敛速度比 FM 收敛速度更快。

    • 对于FrappeAFM 训练误差、测试误差都比 FM 下降很多,说明 AFM 对于已知数据、未知数据都拟合较好。
    • 对于 MovieLens,尽管 AFM 训练误差更大,但是它的测试误差更小,说明了 AFM 泛化能力更强。

    九、AFM - 图58

  3. 最后可以通过 attention score 来解释每个交叉特征的重要性。

    • 首先固定所有的 九、AFM - 图59 (即:每个交叉特征都是同等重要的),训练模型 A 。该模型等价于 FM 模型,在下表中记作 FM

    • 然后在模型 A 的基础上,固定所有的 embedding 向量,仅训练 attention network,得到模型 B。该模型在下表中记作 FM + AA 指的是 Attention ) 。

      在这一步发现模型 B 比模型 A 提升了大约 3%,这也证明了 attention network 的有效性。

    • 最后用模型 B 预测从测试集中随机挑选的 3 个正样本,观察 attention score

    下表中,表格中每一项表示的是 attention sore x interaction score 。其中 attention score 总和为1, interaction score九、AFM - 图60 来决定。

    从表中可知:

    • FM 模型中,不同交叉特征的重要性都是相同的。
    • AFM 模型中,Iter-Tag 交叉特征更为重要。

    九、AFM - 图61

9.2.3 模型比较

  1. 下表给出了所有模型在两个数据集上的效果(测试误差)以及模型大小。其中 embedding = 256M 表示百万。

    结论:

    • AFM 参数最少,同时效果最好。这证明了 AFM 模型的有效性,尽管它是一个浅层模型,但是其性能优于深层模型。

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

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

    • DeepCross 模型效果最差。论文发现 dropoutDeepCross 上效果很差,原因可能是 Batch Normalization 的影响。

      由于 DeepCross 是最深的模型,但是相对较差的性能表明:更深的网络并不一定总是更好的。论文认为这是由于优化困难和过拟合。

    九、AFM - 图62