引言
本篇文章介绍的是Attentional Factorization Machines(AFM)。AFM开创性地将注意力机制引入到因子分解机(Factorization Machines)中,可视为FM和NFM的延续之作,这两个模型在前面博客中已经进行了介绍,有兴趣的读者可以点击蓝色链接进行深入了解。
简单回顾一下,FM使用两个隐向量的内积来表示一对特征组合的权重,增强了模型的泛化性;NFM为了弥补FM中特征交叉阶数有限的缺点,引入深度神经网络(DNNs)构建交叉特征,并提出了一种新的特征交叉操作。
概括来说,NFM基于因子分解机的框架,在单纯的特征交叉方面已经做到了力所能及的最大限度。 而AFM解决的是特征交叉过程中的一个痛点,哪些特征是重要的?哪些特征是不重要的?这个问题FM和NFM都回答不了。解决的方法在今天看来也很简单,但是在当时是巨大的飞跃:通过引入注意力机制,对特征组合赋予注意力权重的方式,就可以让重要的特征发挥更显赫的作用。
Attentional Factorization Machines
上图是AFM的网络结构图。Embedding Layer层的作用是把高维的稀疏编码转换为低维的稠密向量。Pair-wise Interaction Layer引入了基于特征对的特征交叉操作,而Attention-based Pooling则为特征交叉提供注意力机制的权重预测,用公式表达如下:
f
A
t
t
(
f
P
I
(
X
)
)
=
∑
(
i
,
j
)
∈
R
x
a
i
j
(
v
i
⊙
v
j
)
x
i
x
j
f_{Att}(f_{PI}(X)) = \sum_{(i,j)∈R_x}a_{ij}(v_i⊙v_j)x_ix_j
fAtt(fPI(X))=(i,j)∈Rx∑aij(vi⊙vj)xixj
其中
⊙
⊙
⊙ 是点对点乘积(element-wise product)。注意力权重
a
i
j
a_{ij}
aij的计算过程如下:
a
i
j
′
=
h
T
R
e
L
U
(
W
(
v
i
⊙
v
j
)
x
i
x
j
+
b
)
a
i
j
=
e
x
p
(
a
i
j
′
)
∑
(
i
,
j
)
∈
R
x
e
x
p
(
a
i
j
′
)
a_{ij}^{'}=h^TReLU(W(v_i⊙v_j)x_ix_j+b)\\ a_{ij} = \frac{exp(a_{ij}^{'})}{\sum_{(i,j)∈R_x}exp(a_{ij}^{'})}
aij′=hTReLU(W(vi⊙vj)xixj+b)aij=∑(i,j)∈Rxexp(aij′)exp(aij′)
最终AFM的输出表示为:
y
A
F
M
(
x
)
=
w
0
+
∑
i
=
1
n
w
i
x
i
+
p
T
∑
i
=
1
n
∑
j
=
i
+
1
n
a
i
j
(
v
i
⊙
v
j
)
x
i
x
j
y_{AFM}(x) = w_0 + \sum_{i=1}^nw_ix_i+p^T\sum_{i=1}^n\sum_{j=i+1}^na_{ij}(v_i⊙v_j)x_ix_j
yAFM(x)=w0+i=1∑nwixi+pTi=1∑nj=i+1∑naij(vi⊙vj)xixj
AFM模型优化使用的是均方误差损失:
L
r
=
∑
x
∈
T
(
y
A
F
M
(
x
)
−
y
(
x
)
)
2
+
λ
∣
∣
W
∣
∣
2
L_r=\sum_{x∈T}(y_{AFM}(x)-y(x))^2+λ||W||^2
Lr=x∈T∑(yAFM(x)−y(x))2+λ∣∣W∣∣2
总结
AFM创新性地引入了注意力机制,改善了因子分解机的特征交叉过程。