文章目录
Introduction
FNN、DeepFM、xDeepFM这类浅层网络对交叉特征建模,从而达到较好的推荐结果,但一些研究表明,前馈网络在捕获交互特征方面效率低下。
为了解决上述问题,论文提出了一种MaskBlock结构作为基本单元,设计MaskNet的网络,提出了串行MaskBlock和并行MaskBlock网络结构,在3个公开数据集上,MaskNet都表现最好,说明MaskBlock可以显著提升DNN挖掘复杂交互特征的能力。
MaskBlock结构,由3个部分组成,分别为instance-guided mask,layer normalization,feed forward layer。这种结构把标准的DNN扩展为包含可加可乘的交互特征结构。
其中instance-guided mask方法,在DNN中的特征嵌入层和前馈层同时使用element-wise product,提取全局上下文信息,动态地融入到特征嵌入层和前馈层,突出重要的特征。
Model
Embedding Layer
embedding layer和我们常规的相似,分别对sparse feature和dense feature进行基础的处理。
sparse feature:直接进行embedding转成k维特征
e
i
=
W
e
x
i
(1)
e_i=W_ex_i \tag{1}
ei=Wexi(1)
dense feature:通过乘一个k维向量转成特征
e
j
=
V
j
x
j
(2)
e_j=V_jx_j \tag{2}
ej=Vjxj(2)
将每个特征concat操作,获得一个f*k维的特征向量,f为特征数量:
V
e
m
b
=
c
o
n
c
a
t
(
e
1
,
e
2
,
…
,
e
i
,
…
,
e
f
)
(3)
V_{emb}=concat(e_1,e_2,\dots,e_i,\dots,e_f) \tag{3}
Vemb=concat(e1,e2,…,ei,…,ef)(3)
Instance-Guided Mask
Instance-Guided Mask,充分利用了输入样本得到的全局上下文信息,对特征层和前馈层中重要的包含信息的特征进行强化,在DNN中引入了乘法操作,使得模型更加有效的捕捉到复杂的交互特征。
Aggregation Layer:一个wider layer,有效的从input instance中提取全局上下文信息
Projection Layer:把维度降到和embedding layer或hidden layer的维度
上面两层实际上是FC层
V
m
a
s
k
=
W
d
2
(
W
d
1
V
e
m
b
+
β
d
1
)
+
β
d
2
(4)
V_{mask}=W_{d2}(W_{d1}V_{emb}+\beta_{d1})+\beta_{d2} \tag{4}
Vmask=Wd2(Wd1Vemb+βd1)+βd2(4)
其中,
V
e
m
b
∈
R
m
=
f
∗
k
V_{emb}\in R^{m=f*k}
Vemb∈Rm=f∗k,
W
d
1
∈
R
t
∗
m
W_{d1}\in R^{t*m}
Wd1∈Rt∗m,
W
d
2
∈
R
z
∗
t
W_{d2}\in R^{z*t}
Wd2∈Rz∗t。 t 和 z 分别是两层网络的神经元数量,Projection Layer的维度要等于embedding层或hidden层,所以 t >= z,这里设置一个超参数 r = t / z 来控制两层网络神经元的数量,后续会对 r 不同取值做验证
使用element-wise product来融合全局上下文信息
V
m
a
s
k
e
d
E
M
B
=
V
m
a
s
k
⊙
V
e
m
b
(5)
V_{maskedEMB}=V_{mask}\odot V_{emb} \tag{5}
VmaskedEMB=Vmask⊙Vemb(5)
V
m
a
s
k
e
d
H
I
D
=
V
m
a
s
k
⊙
V
h
i
d
d
e
n
(6)
V_{maskedHID}=V_{mask}\odot V_{hidden} \tag{6}
VmaskedHID=Vmask⊙Vhidden(6)
这个逐元素乘积操作类似Hadamard Product,向量对应位置元素相乘:
V
i
⊙
V
j
=
[
V
i
1
⋅
V
j
1
,
V
i
2
⋅
V
j
2
,
⋯
,
V
i
u
⋅
V
j
u
]
(7)
V_i \odot V_j=[V_{i1}\cdot V_{j1},V_{i2}\cdot V_{j2}, \cdots,V_{iu}\cdot V_{ju}] \tag{7}
Vi⊙Vj=[Vi1⋅Vj1,Vi2⋅Vj2,⋯,Viu⋅Vju](7)
instance-guided mask可以被看作为一种特殊的bit-wise attention或者是gate结构。
V
m
a
s
k
V_{mask}
Vmask 可以直接看作为每一个bit的权重,可以加强重要的特征,减弱噪声对模型的影响。
instance-guided mask优点:
1.将逐元素乘积运算引入到DNN中,能够更有效地获取复杂的特征交互
2.强化重要特征,减弱噪声
MaskBlock
由instance-guided mask、layer normalization、hidden layer组成
layer normalization:进行z-score标准化
h
=
g
⊙
N
(
x
)
+
b
(8)
h = g \odot N(x)+b \tag{8}
h=g⊙N(x)+b(8)
其中,
N
(
x
)
=
x
−
μ
δ
N(x)=\frac{x-\mu}{\delta}
N(x)=δx−μ,
μ
=
1
H
∑
i
=
1
H
x
i
\mu=\frac{1}{H} \sum_{i=1}^{H} x_i
μ=H1∑i=1Hxi,
δ
=
1
H
∑
i
=
1
H
(
x
i
−
μ
)
2
\delta=\sqrt{\frac{1}{H}\sum_{i=1}^{H}{(x_i-\mu)^2}}
δ=H1∑i=1H(xi−μ)2
其中,
h
h
h 是layer normalization层的输出,
⊙
\odot
⊙ 是主元素乘法操作,
μ
\mu
μ 和
δ
\delta
δ 分别是输入数据的均值和标准差,
b
b
b 和
g
g
g 是同
H
H
H 维度相同的参数。
for embedding layer:
相当于把每个特征当作一个layer进行layer normalization,之后concat
L
N
_
E
M
B
(
V
e
m
b
)
=
c
o
n
c
a
t
(
L
N
(
e
1
)
,
L
N
(
e
2
)
,
⋯
,
L
N
(
e
i
)
,
⋯
,
L
N
(
e
f
)
)
(9)
LN\_EMB(V_{emb})=concat(LN(e_1),LN(e_2),\cdots,LN(e_i),\cdots,LN(e_f)) \tag{9}
LN_EMB(Vemb)=concat(LN(e1),LN(e2),⋯,LN(ei),⋯,LN(ef))(9)
for hidden layer:
L
N
_
H
I
N
(
V
h
i
d
d
e
n
)
=
R
e
L
U
(
L
N
(
W
i
X
)
)
(10)
LN\_HIN(V_{hidden})=ReLU(LN(W_iX)) \tag{10}
LN_HIN(Vhidden)=ReLU(LN(WiX))(10)
MaskBlock on Feature Embedding:
V
m
a
s
k
e
d
E
M
B
=
V
m
a
s
k
⊙
L
N
_
E
M
B
(
V
e
m
b
)
(11)
V_{maskedEMB}=V_{mask}\odot LN\_EMB(V_{emb}) \tag{11}
VmaskedEMB=Vmask⊙LN_EMB(Vemb)(11)
V
o
u
t
p
u
t
=
L
N
_
H
I
D
(
W
i
V
m
a
s
k
e
d
E
M
B
)
=
R
e
L
U
(
L
N
(
W
i
(
V
m
a
s
k
⊙
L
N
_
E
M
B
(
V
e
m
b
)
)
)
)
(12)
\begin{aligned}V_{output} &= LN\_HID(W_iV_{maskedEMB}) \\ &=ReLU(LN(W_i(V_{mask}\odot LN\_EMB(V_{emb})))) \end{aligned} \tag{12}
Voutput=LN_HID(WiVmaskedEMB)=ReLU(LN(Wi(Vmask⊙LN_EMB(Vemb))))(12)
MaskBlock on MaskBlock:
V
m
a
s
k
e
d
H
I
D
=
V
m
a
s
k
⊙
V
o
u
t
p
u
t
p
(13)
V_{maskedHID}=V_{mask}\odot V_{output}^{p} \tag{13}
VmaskedHID=Vmask⊙Voutputp(13)
V
o
u
t
p
u
t
=
L
N
_
H
I
D
(
W
i
V
m
a
s
k
e
d
H
I
D
)
=
R
e
L
U
(
L
N
(
W
i
(
V
m
a
s
k
⊙
V
o
u
t
p
u
t
p
)
)
)
(14)
\begin{aligned} V_{output} &= LN\_HID(W_iV_{maskedHID}) \\ &=ReLU(LN(W_i(V_{mask}\odot V_{output}^{p}))) \end{aligned} \tag{14}
Voutput=LN_HID(WiVmaskedHID)=ReLU(LN(Wi(Vmask⊙Voutputp)))(14)
MaskNet
Serial MaskNet结构类似RNN,能够对交互信息不断强化,最后一个MaskBlock模块的输出作为Prediction Layer的输入进行计算
Parallel MaskNet则是将多个MaskBlock并行,相当于多个expert提取交互信息,再将所有的输出进行concat,经过hidden layer
Prediction Layer
y
^
=
δ
(
w
0
+
∑
i
=
1
n
w
i
x
i
)
(15)
\hat{y}=\delta(w_0+\sum_{i=1}^{n}{w_ix_i}) \tag{15}
y^=δ(w0+i=1∑nwixi)(15)
loss function: logloss
L
=
−
1
N
∑
i
=
1
N
y
i
log
(
y
^
i
)
+
(
1
−
y
i
)
log
(
1
−
y
^
i
)
(16)
L=-\frac{1}{N}\sum_{i=1}^{N}{y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i)} \tag{16}
L=−N1i=1∑Nyilog(y^i)+(1−yi)log(1−y^i)(16)
L
=
L
+
λ
∣
∣
Θ
∣
∣
(17)
\frak{L}=L+\lambda||\Theta|| \tag{17}
L=L+λ∣∣Θ∣∣(17)
Experiment
在三个公开数据集上的表现:
两种MaskNet网络在不同数据集上面各有优势,但整体都要比其他模型更好
论文中也做了移除MaskBlock结构中的某个部分,进行验证:
结果说明:使用MaskBlock完整结构的效果最好,单元中每个部分对于提取交互特征都由正向收益
几个超参的调优
embedding size:
SerMaskNet:50左右最佳
ParaMaskNet:30左右最佳 -----------整体变化不大
block num:
SerMaskNet:block num=5时最优
ParaMaskNet:block num越大越好 ==> 多个MaskBlock会提高模型性能,但时间成本会增加
reduction ratio(r):
不同的r对于指标影响不大
Reference
论文地址:https://arxiv.org/abs/2102.07619