九、AFM
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 模型
AFM
模型和NFM
模型一脉相承,其底层架构基本一致。给定经过
one-hot
编码之后的输入向量 ,其中特征 表示第 个特征不存在。则AFM
的预测结果为:- 类似
FM
,AFM
的第一项为全局偏置,第二项为一阶特征。 - 与
FM
不同,AFM
的第三项 对交叉特征进行建模,它是一个多层前馈神经网络,包含embedding
层、Pair-wise Interaction
成对交叉层、Attention-based Pooling
层、输出层。如下图所示(仅仅包含 )。
- 类似
embedding
层将每个feature
映射到一个dense vector representation
,即特征 映射到向量 。一旦得到
embedding
向量,则输入 就可以表示为:由于输入 的稀疏性, 只需要保存非零的特征。
注意:这里使用输入特征 来调整
embedding
向量,而不是简单的从embedding table
中查找。这样做的好处是可以统一处理实值特征real valued feature
。和
NFM
的Bi-Interaction
层不同,AFM
的Pair-wise Interaction
层将 个向量扩充为 个交叉向量,每个交叉向量是两个embedding
向量的逐元素积。 为 中非零元素数量。假设输入 的非零元素下标为 ,对应的
embedding
为 ,则Pair-wise Interaction
层的输出为:其中 表示逐元素乘积, 表示成对下标集合。
与之相比,
NFM
的Bi-Interaction
层输出为:一旦得到
Pair-wise Interaction
层的 个交叉向量,则可以通过一个sum pooling
层来得到一个池化向量:它刚好就是
Bi Interaction
层的输出 。因此Pair-wise Interaction层
+sum pooling 层
=Bi Interaction 层
。Attention-based Pooling
层:与Bi Interaction pooling
操作不同,Attention-based Pooling
操作采用了attention
机制:其中 是交叉特征 的
attention score
,可以理解为交叉特征 的权重。学习 的一个方法是直接作为模型参数来学习,但这种方法有个严重的缺点:对于从未在训练集中出现过的交叉特征,其
attentioin score
无法训练。为解决该问题,论文使用一个
attention network
来训练 。attention network
的输入为 个交叉特征向量,输出为 。其中 都是模型参数, 为
attention network
的隐向量维度,称作attention factor
。输出层用于输出预测得分:
最终模型为:
模型的参数为: 。
- 当移除
attention network
时,AFM
模型退化为NFM-0
模型,即标准的FM
模型。 - 和
NFM
相比,AFM
模型缺少隐层来提取高阶特征交互。
- 当移除
NFM
可以执行不同类型的任务,包括回归、分类、排序ranking
。对于回归任务,损失函数为平方误差:
对于分类任务,损失函数为
hinge loss
或者logloss
。对于排序任务,损失函数为
pairwise personalized ranking loss
或者contrastive max-margin loss
。
为缓解过拟合,
AFM
采用 正则化和dropout
正则化。Pair-wise Interaction
层的输出执行dropout
。attention network
层的权重执行 正则化:
论文并未对
attention network
层的输出执行dropout
,因为实验发现:在Pair-wise Interaction
层和attention network
层都采用dropout
会导致模型性能下降。
9.2 实验
数据集:
Frappe
数据集:给出了不同上下文时用户的app
使用日志记录,一共包含96203
个app
。除了
userID, appID
之外,每条日志还包含8个上下文特征:天气、城市、daytime
(如:早晨、上午、下午) 等。采用
one-hot
编码之后,特征有 5382 维;label = 1
表示用户使用了app
。MovieLens
数据集:GroupLens
发布的最新MovieLens
数据集的完整版,包含17045
个用户在23743
个item
上的49657
类标签。将
userID,movieID,tag
进行one-hot
编码之后,特征有90445
维;label = 1
表示用户给movie
贴了tag
。
由于这两个数据集只包含正类(即:
label = 1
),因此需要通过采样来生成负类,负类数量和正类数量的比例为2:1
。- 对于
Frappe
数据集,对每条记录,随机采样每个用户在上下文中未使用的其它两个app
。 - 对于
MovieLens
数据集,对每个用户每个电影的每个tag
,随机分配给该电影其它两个该用户尚未分配的tag
。
对于每个数据集拆分为训练集(70%)、验证集(20%)、测试集(10%)。
评估标准:验证集或者测试集的均方根误差
RMSE
。注意:由于论文采用回归模型来预测,因此预测结果可能大于
+1
(正类的label
)护着小于-1
(负类的label
)。因此如果预测结果超过+1
则截断为+1
、低于-1
则截断为-1
。模型比较
baseline
:LibFM
:FM
的官方实现(基于 C++),采用SGD
学习器。HOFM
:基于tensorflow
实现的高阶FM
,这里设置为3阶。因为MovieLens
数据集只有三个特征:User,Item,Tag
。Wide&Deep
:Wide&Deep
模型,其中deep part
包含三层隐层,每层维度分别为1024,512,256
;wide
部分和FM
的线性部分相同。DeepCross
:DeepCross
模型,其中包含 5层残差网络,每层维度为512,512,256,128,64
。
超参数配置:
优化目标:平方误差。
//学习率:所有模型的学习率通过超参数搜索得到,搜索范围
[0.005,0.01,0.02,0.05]
正则化:
线性模型
LibFM,HOFM
使用 正则化,正则化系数搜索范围[1e-6,5e-6,1e-5,...,1e-1]
。神经网络模型
Wide&Deep,DeepCross,NFM
执行dropout
,遗忘比例搜索范围[0,0.1,0.2,...,0.9]
。实验发现
dropout
在Wide&Deep,NFM
中工作良好,但是在DeepCross
工作较差。所有模型都采用早停策略
early stopping
。
优化策略:
libFM
使用常规SGD
优化,其它模型使用mini-batch Adagrad
优化。其中
Frappe
数据集的Batch Size = 128
,MovieLens
数据集的Batch Size = 4096
。Batch Size
的选择要综合考虑训练时间和收敛速度。更大的Batch Size
使得每个epoch
的训练时间更短,但是需要更多的epoch
才能收敛。embedding size
默认为 256。attention factor
默认为 256。
9.2.1 超参数探索
首先考察
dropout
超参数。设置 从而使得attention network
没有正则化。另外移除
attention network
使得网络退化为FM
模型来做比较。libFM
作为baseline
。结论:
选择合适的
dropout
值,AFM
和FM
都能够得到显著的提升。这证明了在Pair-wise Interaction
层执行dropout
的有效性。我们的
FM
模型比libFM
效果更好,有两个原因:libFM
采用SGD
来优化,学习率是固定的。我们的FM
是通过Adagrade
来优化,采用自适应学习率因此优化效果更好。LibFM
采用 正则化来缓解过拟合,而我们的FM
采用dropout
。后者缓解过拟合的效果更好。
AFM
的效果比FM
和libFM
好得多,即使是当dropout = 0
时(即:未采取任何正则化)AFM
的效果仍然很好。这充分证明了attention network
的效果。
然后考察 正则化系数。当选择合适的
dropout
参数之后,我们考察对attention network
执行 正则化的效果。结论:当 时,模型效果得到改善。这证明了
attention network
正则化的效果,能进一步改善模型的泛化能力。同时说明了:仅仅Pair-wise Interaction
层执行dropout
对于缓解过拟合是不够的。注意:
FM
和LibFM
均没有attention network
,因此它们在图上都是直线。
9.2.2 attention network
首先考察
attention factor
的影响。下图给出
attention network
不同的隐向量维度(attention factor
)下,模型的性能。其中每种隐向量维度都各自独立的选择了最合适的 。结论:
AFM
对于attention factor
的变化比较稳定。极端情况下,即使attention factor =1
,此时 退化为一个向量、attention network
退化为一个广义线性模型,AFM
的效果仍然很好。这证明了
AFM
设计的合理性:通过attention network
来评估特征的representation vector
之间交互的重要性。然后评估
AFM
和FM
在每个epoch
的训练误差和测试误差。 可以看到:AFM
收敛速度比FM
收敛速度更快。- 对于
Frappe
,AFM
训练误差、测试误差都比FM
下降很多,说明AFM
对于已知数据、未知数据都拟合较好。 - 对于
MovieLens
,尽管AFM
训练误差更大,但是它的测试误差更小,说明了AFM
泛化能力更强。
- 对于
最后可以通过
attention score
来解释每个交叉特征的重要性。首先固定所有的 (即:每个交叉特征都是同等重要的),训练模型
A
。该模型等价于FM
模型,在下表中记作FM
。然后在模型
A
的基础上,固定所有的embedding
向量,仅训练attention network
,得到模型B
。该模型在下表中记作FM + A
(A
指的是Attention
) 。在这一步发现模型
B
比模型A
提升了大约 3%,这也证明了attention network
的有效性。最后用模型
B
预测从测试集中随机挑选的 3 个正样本,观察attention score
。
下表中,表格中每一项表示的是
attention sore x interaction score
。其中attention score
总和为1,interaction score
由 来决定。从表中可知:
FM
模型中,不同交叉特征的重要性都是相同的。AFM
模型中,Iter-Tag
交叉特征更为重要。
9.2.3 模型比较
下表给出了所有模型在两个数据集上的效果(测试误差)以及模型大小。其中
embedding = 256
,M
表示百万。结论:
AFM
参数最少,同时效果最好。这证明了AFM
模型的有效性,尽管它是一个浅层模型,但是其性能优于深层模型。HOFM
相对于FM
略有改善,这说明FM
仅建模二阶特征交互的局限性,以及建模高阶特征交互的有效性。HOFM
和NFM
之间的巨大差异,反映了以非线性方式构建高阶特征交互的价值。因为HOFM
是通过线性建模高阶特征交互,但是效果比NFM
差距较大,参数反而比NFM
翻倍。DeepCross
模型效果最差。论文发现dropout
在DeepCross
上效果很差,原因可能是Batch Normalization
的影响。由于
DeepCross
是最深的模型,但是相对较差的性能表明:更深的网络并不一定总是更好的。论文认为这是由于优化困难和过拟合。