3MN: Three Meta Networks for Multi-Scenario and Multi-Task Learning in Online Advertising Recommender Systems
背景
推荐领域的多场景多任务学习:维护单模型即可节省资源也可节省人力;各个场景的数据共享,理论上面学习是更加充分的
问题&挑战
- 怎么学习复杂的多任务、多场景之间的关系MSMT(Multi-Scenario Multi-Task Learning),即(场景-场景、场景-任务、任务-任务之间的相互关系)
- 单个模型如何解决多个场景多个任务的不同数据分布问题(例如,来自不同媒体的用户不同,点击广告的意愿也不同;即使用户来自同一媒体,他们也点击广告的意愿通常会与他们下载应用程序的意愿不同)
- 不同场景下的样本分布严重不均,来自主流媒体的样本通常比小规模媒体要多得多,样本充足的场景怎么帮助哪些相关但是样本少的场景
解决方案
Three Meta Networks-based solution (3MN)
提出的三个场景自适应组件解决了挑战1,极大地提升了多任务的性能。第二个挑战由场景任务自适应主干网络及分类器解决,主干网络利用场景任务信息抽取分场景的任务特有、任务共享特征,场景自适应分类器利用这些特征提升分场景的多任务预测性能。第三个挑战由场景自适应embedding层解决,以一个自动的方式来选择不同场景下的Embedding维度。
点评:这篇文章是把元网络用到了极致,底层、中间层、顶层都注入了场景知识,实现场景的自适应匹配
方案详情
Scenario-Adaptive Embedding Layer
step1:Unified Embedding Dimensions.
以往的每个特征在Embedding层都映射到一个固定维度的特征向量上面,这里为了场景自适应匹配维度,设计了根据场景来选择合适的维度。
具体就是预先设置一组维度列表
{
α
1
,
α
2
,
.
.
.
,
α
a
}
\{\alpha_1, \alpha_2, ..., \alpha_a\}
{α1,α2,...,αa},长度为
∣
α
∣
|\alpha|
∣α∣,对于每个输入的特征,产生
∣
α
∣
|\alpha|
∣α∣个embedding向量
x
i
=
E
m
b
e
d
d
i
n
g
i
(
x
)
i
∈
{
1
,
2
,
.
.
.
,
∣
α
∣
}
\mathbf x_i = \mathrm {Embedding}_i(\mathbf x) \ \ \ \ i \in \{1,2, ..., |\alpha|\}
xi=Embeddingi(x) i∈{1,2,...,∣α∣}
然后使用一个形状转换层将形状转为统一的尺寸
x
i
~
=
x
i
W
i
+
b
i
i
∈
{
1
,
2
,
.
.
.
,
∣
α
∣
}
\widetilde {\mathbf x_i} = \mathbf x_i \mathbf W_i + \mathbf b_i \ \ \ \ i \in \{ 1,2,..., |\alpha| \}
xi
=xiWi+bi i∈{1,2,...,∣α∣}
然后使用BatchNorm对这
∣
α
∣
|\alpha|
∣α∣个向量进行处理,避免出现由形状转换引起的极端数值变化
x
i
‾
=
B
a
t
c
h
N
o
r
m
(
x
i
~
)
\overline {\mathbf x_i} = \mathrm {BatchNorm} ( \widetilde {\mathbf x_i} )
xi=BatchNorm(xi
)
step2:Scenario-Adaptive Embedding Dimension Selection
然后将
∣
α
∣
|\alpha|
∣α∣个向量进行加权求和得到特征最终的embedding向量
x
s
a
e
m
b
=
∑
i
=
1
∣
α
∣
p
i
‾
x
i
‾
\mathbf x_{sa_emb} = \sum_{i=1}^{|\alpha|} \overline {\mathbf {p_i}} \overline {\mathbf {x_i}}
xsaemb=∑i=1∣α∣pixi
这里的权重
p
i
‾
\overline {\mathbf {p_i}}
pi是由元网络得到的,而元网络的输入是场景特征,因此能做到场景自适应的选择不同Embedding维度。
W
1
,
b
1
,
W
2
,
b
2
=
M
e
t
a
N
e
t
e
m
b
(
x
s
c
e
n
e
)
\mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{emb}} (\mathbf x_{scene})
W1,b1,W2,b2=MetaNetemb(xscene)
p = f 1 ( σ ( W 2 T ( σ ( W 1 T E m b e d d i n g ( x s e l e c t e d ) ) + b 1 ) + b 2 ) ) \mathbf p = f_1(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \mathbf x_{selected})) + b_1) + \mathbf b_2)) p=f1(σ(W2T(σ(W1TEmbedding(xselected))+b1)+b2))
其中 x s e l e c t e d \mathbf x_{selected} xselected是用户及item的一些频次统计特征,也就是基于user、item、scene三者来选择不同维度的Embedding
p
∈
R
∣
α
∣
∗
n
f
i
e
l
d
\mathbf p\in R^{|\alpha| * n^{field}}
p∈R∣α∣∗nfield,先reshape成
R
n
f
i
e
l
d
∗
∣
α
∣
R^{n^{field}*|\alpha| }
Rnfield∗∣α∣,然后经过softmax后再拆分成
α
\alpha
α
p
1
‾
,
p
2
‾
,
.
.
.
,
p
∣
α
∣
‾
=
S
p
l
i
t
(
S
o
f
t
m
a
x
(
R
e
s
h
a
p
e
(
p
)
)
)
\overline {\mathbf {p_1}},\overline {\mathbf {p_2}},...,\overline {\mathbf {p_{|\alpha|}}} = \mathrm {Split} (\mathrm { Softmax}( \mathrm {Reshape ( \mathbf p)} ))
p1,p2,...,p∣α∣=Split(Softmax(Reshape(p)))
Scenario&Task-Adaptive Backbone Network
类似于PLE的结构,有任务特有和任务共享的专家
Shared and Specific Experts.
首先BN处理下
x
b
n
=
B
a
t
c
h
N
o
r
m
(
x
s
a
e
m
b
)
\mathbf x_{bn} = \mathrm {BatchNorm} (\mathbf x_{sa_emb})
xbn=BatchNorm(xsaemb)
然后任务特有的专家和任务共享的专家
e
i
,
j
=
T
a
s
h
S
p
e
c
E
x
p
e
r
t
i
(
x
b
n
)
\mathbf e_{i,j} = \mathrm {TashSpecExpert_i}(\mathbf x_{bn})
ei,j=TashSpecExperti(xbn)
s
k
=
T
a
s
h
S
h
a
r
e
E
x
p
e
r
t
k
(
x
b
n
)
\mathbf s_{k} = \mathrm {TashShareExpert_k}(\mathbf x_{bn})
sk=TashShareExpertk(xbn)
Scenario&Task-Adaptive Expert Selection
对专家进行加权融合
x
t
i
~
=
p
t
i
~
X
t
i
\widetilde {\mathbf x_{t_i}} = \widetilde{ \mathbf p_{t_i}} \mathbf X_{t_i}
xti
=pti
Xti
这里的专家即
X
t
i
=
[
e
i
,
1
T
,
e
i
,
2
T
,
.
.
.
,
e
i
,
n
n
i
T
,
s
1
T
,
s
2
T
,
.
.
.
,
s
n
s
e
T
]
\mathbf X_{t_i} = [ \mathbf e_{i,1}^T, \mathbf e_{i,2}^T, ..., \mathbf e_{i,n^{n_i}}^T, \mathbf s_1^T, \mathbf s_2^T, ..., \mathbf s_{n^{se}}^T]
Xti=[ei,1T,ei,2T,...,ei,nniT,s1T,s2T,...,snseT]
各个专家的权重 p t i ~ \widetilde{ \mathbf p_{t_i}} pti 是场景自适应的,也是由元网络得到的,元网络的输入是场景信息和任务信息
p
t
i
=
f
2
(
σ
(
W
2
T
(
σ
(
W
1
T
E
m
b
e
d
d
i
n
g
(
x
b
n
)
)
+
b
1
)
+
b
2
)
)
\mathbf p_{t_i} = f_2(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \mathbf x_{bn})) + b_1) + \mathbf b_2))
pti=f2(σ(W2T(σ(W1TEmbedding(xbn))+b1)+b2))
W
1
,
b
1
,
W
2
,
b
2
=
M
e
t
a
N
e
t
b
a
c
k
b
o
n
e
(
[
x
s
c
e
n
e
∣
∣
x
t
a
s
k
]
)
\mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{backbone}} ([\mathbf x_{scene} \ || \ \mathbf x_{task}])
W1,b1,W2,b2=MetaNetbackbone([xscene ∣∣ xtask])
p t i ‾ = S o f t m a x ( p t i ) \overline {\mathbf p_{t_i}} = \mathrm {Softmax}(\mathbf p_{t_i}) pti=Softmax(pti)
Scenario&Task-Adaptive Classifiers
得到专家的加权输出后,再通过各自任务的tower层,得到最终任务的输出
o
t
i
=
f
3
(
σ
(
W
2
T
(
σ
(
W
1
T
E
m
b
e
d
d
i
n
g
(
x
t
i
~
)
)
+
b
1
)
+
b
2
)
)
\mathbf o_{t_i} = f_3(\sigma ( \mathbf W_2^T( \sigma(\mathbf W^T_1 \mathrm {Embedding}( \widetilde {\mathbf x_{t_i}})) + b_1) + \mathbf b_2))
oti=f3(σ(W2T(σ(W1TEmbedding(xti
))+b1)+b2))
W
1
,
b
1
,
W
2
,
b
2
=
M
e
t
a
N
e
t
c
l
a
s
s
i
f
y
(
[
x
s
c
e
n
e
∣
∣
x
t
a
s
k
]
)
\mathbf W_1, \mathbf b_1, \mathbf W_2, \mathbf b_2 = \mathrm {MetaNet_{classify}} ([\mathbf x_{scene} \ || \ \mathbf x_{task}])
W1,b1,W2,b2=MetaNetclassify([xscene ∣∣ xtask])
MSMT Meta Networks
详解 meta 网络也有三个组件, meta embedding layer, meta backbone network, and meta fully-connected layers
meta embedding layer
x
e
m
b
=
E
m
b
e
d
d
i
n
g
(
[
x
s
c
e
n
e
∣
∣
x
t
a
s
k
]
)
\mathbf x_{emb} = \mathrm {Embedding} ([\mathbf x_{scene} \ || \ \mathbf x_{task}])
xemb=Embedding([xscene ∣∣ xtask])
meta backbone network
x m e t a = L a y e r N o r m ( D r o p o u t ( M H ( x e m b ) ) ) + x e m b \mathbf x_{meta} = \mathrm {LayerNorm} ( \mathrm {Dropout} ( \mathrm {MH} (\mathbf x_{emb}) ) ) + \mathbf x_{emb} xmeta=LayerNorm(Dropout(MH(xemb)))+xemb
x m e t a ‾ = M L P ( x m e t a ) \overline {\mathbf x_{meta}} = \mathrm {MLP} (\mathbf x_{meta}) xmeta=MLP(xmeta)
meta fully-connected layers 得到最终的权重
W
i
,
b
i
=
W
i
m
e
t
a
x
m
e
t
a
‾
+
b
i
m
e
t
a
i
∈
{
1
,
2
}
\mathbf W_i, \mathbf b_i = \mathbf W_i^{meta} \overline {\mathbf x_{meta}} + \mathbf b_i^{meta} \ \ \ i \in \{1,2\}
Wi,bi=Wimetaxmeta+bimeta i∈{1,2}
其中
W
i
m
e
t
a
\mathbf W_i^{meta}
Wimeta和
b
i
m
e
t
a
\mathbf b_i^{meta}
bimeta是元网络FCN的参数
这里产出的
W
i
,
b
i
\mathbf W_i, \mathbf b_i
Wi,bi就是上面用到的权重
实验&消融分析
数据集
实验效果
各个组件消融分析
专家选择权重的可视化
不同embedding尺寸选择权重的可视化
SA embedding layer加在base模型上的效果增益