今天的博客主要参考了2018年KDD会议上的paper《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》,提出了一种针对multi-task的通用处理架构。
话不多说,直接上图:
图中有a,b,c三种网络结构,其中网络a就是传统的multi-task结构,即两个不同的任务共享底层的特征表征Embedding部分网络结构信息,网络上层针对不同的应用使用不同的网络参数进行训练优化;b是单gate的multi-task网络结构,其中的expert 0,expert 1和expert 2其实都是神经网络单元(比方说多层的全连接网络等,这个和具体任务相关),所有的任务共享这部分网络参数;c是就是本篇文章提出的multi-task的网络结构,其中gate的数量和最终的目标数量是一致的,输出的内容是一个和expert个数一致的归一化向量,即针对不同的任务会有不同的expert权重配比。
那么问题就来了,既然已经有了图a中的网络(之前看到过的很多paper里都是这样用的),为什么要提出多gate的新网络结构呢?是因为作者发现当目标任务之间的相关性比较高的时候图a中的网络训练之后的效果是不错的;但是当目标任务之间的相关性下降的时候,图a中网络结构的效果下降的非常厉害。这就是说明了对目标任务关系之间的合理建模将对最终multi-task模型产生直接其较大的影响。
其实c中模型结构的计算公式是非常简单的:
y
k
=
h
k
(
f
k
(
x
)
)
y_k=h^k(f^k(x))
yk=hk(fk(x)) 其中
h
k
h^k
hk是图中的Tower部分完网络参数
f
k
(
x
)
=
∑
i
=
1
n
g
k
(
x
)
i
f
i
(
x
)
f^k(x)=\sum_{i=1}^n g^k(x)_if_i(x)
fk(x)=∑i=1ngk(x)ifi(x)
其中
g
k
(
x
)
=
s
o
f
t
m
a
x
(
W
g
k
x
)
g^k(x)=softmax(W_{gk}x)
gk(x)=softmax(Wgkx)
g
k
g^k
gk就是图中的gate,
f
i
f_i
fi就是
e
x
p
e
r
t
i
expert_i
experti
到这里,其实整个模型已经介绍完了,下面就来讲一下作者做的一系列对比实验。
首先可能大家比较好奇的是,既然这篇paper说提出的模型在不相关的任务上也能有比较好的效果,其实如何知道2个不同的目标任务之间的相关性呢?(虽然业务上相似的任务会比业务上不相似的任务具有更好的相关性,但这只是一个定性的概念,如何定量的衡量显然是一个不小的困难)。这里作者采用了一种比较巧的方法,即自己构造了两批回归问题场景下使用的数据,既然是自己构造的,那么任务之间的相关性就可以随意指定了,构造过程如下:
(1) 假设目标任务的输入特征维度为d,首先随机生成2个正交单位向量
u
1
u_1
u1和
u
2
u_2
u2,保证
u
1
T
u
2
=
0
u_1^T u_2=0
u1Tu2=0,
∣
∣
u
1
∣
∣
2
=
1
||u_1||_2=1
∣∣u1∣∣2=1,
∣
∣
u
2
∣
∣
1
=
1
||u_2||_1=1
∣∣u2∣∣1=1;
(2) 用户输入一个常量值
c
c
c和目标任务之间的相关性
−
1
<
=
p
<
=
1
-1<=p<=1
−1<=p<=1,生成2个权重向量
w
1
w_1
w1和
w
2
w_2
w2,
w
1
=
c
u
1
w_1=cu_1
w1=cu1,
w
2
=
c
(
p
u
1
+
(
1
−
p
2
)
u
2
)
w_2=c(pu_1+\sqrt{(1-p^2)u_2})
w2=c(pu1+(1−p2)u2);
(3) 随机生成d维向量x,其每一维度值都按照分布
N
(
0
,
1
)
N(0,1)
N(0,1)产生;
(4) 生成2个回归任务的y值
y
1
=
w
1
T
x
+
∑
i
=
1
m
s
i
n
(
α
i
w
1
T
x
+
β
i
)
+
γ
1
y_1=w_1^Tx+\sum_{i=1}^msin(\alpha_iw_1^Tx+\beta_i)+\gamma_1
y1=w1Tx+∑i=1msin(αiw1Tx+βi)+γ1
y
2
=
w
2
T
x
+
∑
i
=
1
m
s
i
n
(
α
i
w
2
T
x
+
β
i
)
+
γ
2
y_2=w_2^Tx+\sum_{i=1}^msin(\alpha_iw_2^Tx+\beta_i)+\gamma_2
y2=w2Tx+∑i=1msin(αiw2Tx+βi)+γ2
其中
α
i
,
β
i
和
m
\alpha_i,\beta_i和m
αi,βi和m是用户给定的参数,
γ
1
\gamma_1
γ1和
γ
2
\gamma_2
γ2是加入的噪声变量,从分布
N
(
0
,
0.01
)
N(0,0.01)
N(0,0.01)产生。
重复步骤(1)-(4)产生足够的样本数据,最终通过不同相关性任务下的对比实验,得到以下结果:
图中的MMOE就是本篇提出的多gate模型,OMoE是单gate模型,shared-Bottom就是共享底层特征表示的模型。
从图中可以看出越是相关性低的任务,MMOE模型领先的优势越明显。
同时为了探索不同结构对训练过程收敛速度的影响,作者通过大量的对比实验得到了以下的结果图像:
横轴代表了训练过程中能够到达最低的误差值,纵轴代表了百分比,即有百分之多少的实验能够收敛到这个误差值。可以看出在大部分的实验中MMOE相比于其他两种结构能更高概率收敛到这个误差值,进一步说明了这种多gate结构在multi-task任务中的合理性。