Detecting Beneficial Feature Interactions for Recommender Systems (AAAI’21)
这篇的motivation和method都更自然一些,就是有的地方写的不太清楚。
Motivation
DeepFM等一系列模型注重于挖掘高阶特征,但是这些模型只管挖不管筛。对于一个样本有
J
J
J 个特征,二阶组合特征就有
J
(
J
?
1
)
/
2
J(J-1)/2
J(J?1)/2 个,大量的特征组合自然也有大量无用特征,会降低模型质量和速度,所以怎么合理对特征组合进行剪枝,是本文所研究的问题。这篇文章只考虑二阶特征组合。
同样地,这篇文章以特征作为节点建立Graph,把识别重要特征交互任务看作图上的 Link Prediction 任务,然后把 CTR 任务看作图分类任务。
所以从大的角度上看,这篇可以看作在Fi-GNN的基础上剪枝邻接矩阵。
Method:
L
0
L_0
L0?-SIGN
每个节点有两套embedding
v
i
e
v_{i}^{e}
vie? 和
u
i
{u}_{i}
ui?,分别用于L0模块和SIGN模块。SIGN模块的作用类似于DCN、DeepFM中的特征交互模块,L0模块的作用则是为SIGN模块剪枝。
L
0
L_0
L0? Edge Prediction Model
最简单的Edge Prediction方案就是MF,这里用一个MLP的模型
f
e
p
f_{e p}
fep? 来识别节点
i
i
i 和节点 $ j$ 之间是否存在边:
f
e
p
(
v
i
e
,
v
j
e
)
=
W
2
e
Re
?
L
U
(
W
1
e
(
v
i
e
⊙
v
j
e
)
+
b
1
e
)
+
b
2
e
:
R
2
×
b
→
Z
2
f_{e p}\left(v_{i}^{e}, v_{j}^{e}\right) = W_{2}^{e} \operatorname{Re} L U\left(W_{1}^{e}\left(v_{i}^{e} \odot v_{j}^{e}\right)+b_{1}^{e}\right)+b_{2}^{e}: \mathbb{R}^{2 \times b} \rightarrow \mathbb{Z}_{2}
fep?(vie?,vje?)=W2e?ReLU(W1e?(vie?⊙vje?)+b1e?)+b2e?:R2×b→Z2?
v
i
e
v_{i}^{e}
vie? 和
v
j
e
v_{j}^{e}
vje? 是节点 i, j 的
b
b
b维的embedding,
f
e
p
(
v
i
e
,
v
j
e
)
f_{ep}(v_{i}^{e}, v_{j}^{e})
fep?(vie?,vje?) 的输出
e
i
j
′
∈
{
0
,
1
}
e_{i j}^{\prime} \in \{0,1\}
eij′?∈{0,1}。训练中再对
f
e
p
f_{ep}
fep? 加上
L
0
L_0
L0? 正则化,促使更加稀疏。
SIGN(Statistical Interaction Graph neural Network)
在
e
i
j
′
=
1
e_{i j}^{\prime}=1
eij′?=1 时,计算特征节点
i
i
i 和特征节点
j
j
j 的边权重(建模特征交互)
z
i
j
=
h
(
u
i
,
u
j
)
:
R
2
×
d
→
R
d
\boldsymbol{z}_{i j} = h\left(\boldsymbol{u}_{i}, \boldsymbol{u}_{j}\right): \mathbb{R}^{2 \times d} \rightarrow \mathbb{R}^{d}
zij?=h(ui?,uj?):R2×d→Rd ,
u
i
,
u
j
\boldsymbol{u}_{i}, \boldsymbol{u}_{j}
ui?,uj? 就是节点 i, j 的
d
d
d维的embedding 。那
e
i
j
′
=
0
e_{i j}^{\prime}=0
eij′?=0的就表示被剪枝掉了,不用建模特征 i 和特征 j 的交互,所以任意两个特征的交互表征可以表示为:
s
i
j
=
e
i
j
′
z
i
j
\boldsymbol{s}_{i j}=e_{i j}^{\prime} \boldsymbol{z}_{i j}
sij?=eij′?zij?
这样看是不是很像在Fi-GNN剪枝。
然后用一个线性聚合函数
ψ
:
v
i
′
=
ψ
(
?
i
)
\psi: \boldsymbol{v}_{i}^{\prime}=\psi\left(\varsigma_{i}\right)
ψ:vi′?=ψ(?i?) 聚合邻居节点,更新节点表征。
然后用一个线性加权函数
g
:
R
d
→
R
g: \mathbb{R}^{d} \rightarrow \mathbb{R}
g:Rd→R 将节点的表征向量转换成数值。
然后用一个线性聚合函数
?
\phi
? 聚合图上所有节点的数值,得到最终输出:
f
L
S
(
G
;
w
,
θ
)
=
?
(
{
g
(
φ
(
{
f
e
p
(
v
i
e
,
v
j
e
)
h
(
u
i
,
u
j
)
}
j
∈
X
)
)
}
i
∈
X
)
f_{L S}(G ; w, \theta)=\phi\left(\left\{g\left(\varphi\left(\left\{f_{e p}\left(v_{i}^{e}, v_{j}^{e}\right) h\left(u_{i}, u_{j}\right)\right\}_{j \in X}\right)\right)\right\}_{i \in X}\right)
fLS?(G;w,θ)=?({g(φ({fep?(vie?,vje?)h(ui?,uj?)}j∈X?))}i∈X?) loss由三部分组成:
R
(
θ
,
ω
)
=
1
N
∑
n
=
1
N
(
L
(
F
L
S
(
G
n
;
ω
,
θ
)
,
y
n
)
+
λ
1
∑
i
,
j
∈
X
n
(
π
n
)
i
j
+
λ
2
∥
z
n
∥
2
)
θ
?
,
ω
?
=
arg
?
min
?
θ
,
ω
R
(
θ
,
ω
)
,
\begin{aligned} \mathcal{R}(\boldsymbol{\theta}, \boldsymbol{\omega})=& \frac{1}{N} \sum_{n=1}^{N}\left(\mathcal{L}\left(F_{L S}\left(G_{n} ; \boldsymbol{\omega}, \boldsymbol{\theta}\right), y_{n}\right)\right.\\ &\left.+\lambda_{1} \sum_{i, j \in X_{n}}\left(\pi_{n}\right)_{i j}+\lambda_{2}\left\|\boldsymbol{z}_{n}\right\|_{2}\right) \\ \boldsymbol{\theta}^{*}, \boldsymbol{\omega}^{*} &=\underset{\boldsymbol{\theta}, \boldsymbol{\omega}}{\arg \min } \mathcal{R}(\boldsymbol{\theta}, \boldsymbol{\omega}), \end{aligned}
R(θ,ω)=θ?,ω??N1?n=1∑N?(L(FLS?(Gn?;ω,θ),yn?)+λ1?i,j∈Xn?∑?(πn?)ij?+λ2?∥zn?∥2????=θ,ωargmin?R(θ,ω),?
分别是模型预估偏差损失、对图的L0正则项和 和对模型参数的L2 正则项。
思考
这篇文章的优点是motivation更合理一些,比如下图,Gmail和Workday、Morning的组合就很有道理。
缺点是由于文章做的是二阶特征,GNN的意思就很淡,更没有Deep GNN的事,所以文章标题里是Detecting Beneficial Feature Interactions。
|