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

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

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

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

      九、AFM - 图2

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

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

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

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

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

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

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

      九、AFM - 图11

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

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

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

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

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

      九、AFM - 图14

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

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

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

      九、AFM - 图18

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

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

    7. 最终模型为:

      九、AFM - 图20

      模型的参数为: 。

      • 当移除 attention network 时,AFM 模型退化为 NFM-0 模型,即标准的 FM 模型。
      • NFM 相比,AFM 模型缺少隐层来提取高阶特征交互。
      • 对于回归任务,损失函数为平方误差:

        九、AFM - 图21

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

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

    9.2 实验

    1. 数据集:

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

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

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

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

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

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

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

      对于每个数据集拆分为训练集(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 - 图22 正则化,正则化系数搜索范围 [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 才能收敛。

      • attention factor 默认为 256。

    9.2.1 超参数探索

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

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

      结论:

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

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

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

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

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

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

    9.2.2 attention network

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

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

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

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

      九、AFM - 图27

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

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

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

      • 首先固定所有的 九、AFM - 图28 (即:每个交叉特征都是同等重要的),训练模型 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 由 来决定。

      从表中可知:

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

      九、AFM - 图29

    9.2.3 模型比较

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

      结论:

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

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

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