MMOE: Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
0. 论文摘要
Neural-based multi-task learning has been successfully used in many real-world large-scale applications such as recommendation systems. For example, in movie recommendations, beyond providing users movies which they tend to purchase and watch, the system might also optimize for users liking the movies afterwards. With multi-task learning, we aim to build a single model that learns these multiple goals and tasks simultaneously. However, the prediction quality of commonly used multi-task models is often sensitive to the relationships between tasks. It is therefore important to study the modeling tradeoffs between task-specific objectives and inter-task relationships. In this work, we propose a novel multi-task learning approach, Multi-gate Mixture-of-Experts (MMoE), which explicitly learns to model task relationships from data. We adapt the Mixture-of-Experts (MoE) structure to multi-task learning by sharing the expert submodels across all tasks, while also having a gating network trained to optimize each task. To validate our approach on data with different levels of task relatedness, we first apply it to a synthetic dataset where we control the task relatedness. We show that the proposed approach performs better than baseline methods when the tasks are less related. We also show that the MMoE structure results in an additional trainability benefit, depending on different levels of randomness in the training data and model initialization. Furthermore, we demonstrate the performance improvements by MMoE on real tasks including a binary classification benchmark, and a large-scale content recommendation system at Google.
1. 创新点
在 MOE 的基础上,提出针对单个任务建模的 gating network,通过 gating network 去单独优化各子任务;
-
提出MMOE网络,可以显式建模任务相关性;
-
gating network 可以自动调整参数在建模共享信息和指定任务信息;
-
通过实验验证 MMOE 相较于shared-bottom 多任务模型,更容易训练,模型也更鲁棒 ;
理论创新点主要就是在 MOE 的基础上,将单 gating net 评估各子任务权重换成通过引入多个 gating net 学习各 Expert net 相关性组合权重,同时后接对应各子任务的 Tower net 学习得到各子任务输出。
2. 引入重排原因
MMOE引入的原因是现有的多任务模型,其训练效果主要受两方面影响:
- 任务相关性,如ESMM对ctr,cvr建模,两者任务的相关性很多,cvr样本本身也是ctr的样本自己,这种高相关性任务使用shared-bottom结构,效果是是很好的,但是对于建模如ctr与观看时长这种相关性较弱的多任务,学习效果往往不能超越单任务模型建模;
- 现有的克服相关性多任务建模方式往往采用通过加层等方式实现,时空复杂度较高,模型增加了参数量所以需要更大的数据量来训练模型,而且模型更复杂并不利于在真实生产环境中实际部署使用。
上述第2中方法是Hard parameter sharing方法,将排序模型的底层的全连接层进行共享,学习共同的模式,上层用一些特定的全连接层学习任务特定的模式。这种方法非常经典,但是效果还是不错的,美团、知乎在18年分享的文章美团“猜你喜欢”深度学习排序模型实践、知乎推荐页Ranking经验分享使用的都是这种方法。
这种方法最大的优势是Task越多,单任务更加不可能过拟合,劣势是底层强制shared layers难以学得适用于所有任务的表达。尤其是两个任务很不相关的时候。
当两个任务相关性没有那么好时(例如,推荐系统排序中的点击率和互动率,点击率和停留时长等),Hard parameter sharing 的模式就不是那么适用了,会损害到一些效果。对应的,Soft parameter sharing的方式可能更加适合。
论文作者指出是MMOE在相关性任务较差的多任务,表现相较于传统的 shared-bottom 多任务网络(如ESMM)更好;
3. 现有方案
多任务模型通过学习不同任务的联系和差异,可提高每个任务的学习效率和质量。
目前现有方案可主要分为两种:
- Multi-task learning in DNNs:多任务学习的的框架广泛采用 shared-bottom 的结构,不同任务间共用底部的隐层。这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响。也有一些其他结构,比如两个任务的参数不共用,但是通过对不同任务的参数增加 L2 范数的限制;也有一些对每个任务分别学习一套隐层然后学习所有隐层的组合。和 shared-bottom 结构相比,这些模型对增加了针对任务的特定参数,在任务差异会影响公共参数的情况下对最终效果有提升。缺点就是模型增加了参数量所以需要更大的数据量来训练模型,而且模型更复杂并不利于在真实生产环境中实际部署使用。
- Ensemble of Subnets & Mixture of Experts:即 MOE 模型,将 mixture-of-experts 引入DNN,MoE layer基于层输入选择专家子网络,相较于 MMOE 差别主要在只使用了一个 Expert net 输出各 Expert 的输出权重,同时少了针对各子任务建模的Tower net;
关于共享隐层方面,MMoE和一般多任务学习模型的区别:
- 一般多任务学习模型:接近输入层的隐层作为一个整体被共享
- **MMoE:**将共享的底层表示层分为多个expert,同时设置了gate,使得不同的任务可以多样化的使用共享层
4. MMOE
MMoE模型的结构(下图 c)基于广泛使用的Shared-Bottom结构(下图 a)和 MoE 结构,其中图(b)是图©的一种特殊情况,下面依次介绍。
如图,**a)**是最原始的多任务学习模型,也就是base,**b)**是加入单门(one gate)的MoE layer的多任务学习模型,**c)**是文章提出的MMOE模型。
可以看出,c)本质上是将base的shared bottom换成了MoE layer,并对每个任务都加gate
- Shared-Bottom Multi-task Model
如上图 a 所示,shared-bottom网络(表示为函数 f )位于底部,多个任务共用这一层。往上,K 个子任务分别对应一个 tower network(表示为
h
k
\left.h^{k}\right.
hk ),每个子任务的输出为:
y
k
=
h
k
(
f
(
x
)
)
y_{k}=h^{k}(f(x))
yk=hk(f(x))
- Mixture-of-Experts
MoE模型可以形式化表示为:
y
=
∑
i
=
1
n
g
(
x
)
i
f
i
(
x
)
,
y=\sum_{i=1}^{n} g(x)_{i} f_{i}(x),
y=i=1∑ng(x)ifi(x),
其中
∑
i
=
1
n
g
(
x
)
i
=
1
\sum_{i=1}^{n} g(x)_{i}=1
∑i=1ng(x)i=1,
f
i
,
f_{i},
fi,
i
=
1
,
⋯
,
n
i=1, \cdots, n
i=1,⋯,n 是 n 个 expert network(expert network 可认为是一个神经网络)。
g 是组合 experts 结果的 gating network,具体来说 g 产生 n 个 experts 上的概率分布,最终的输出是所有experts的带权加和。显然,MoE可看做基于多个独立模型的集成方法。
注:这里注意 MoE 并不对应上图中的 b 部分,上图b 是 One-gate MoE model;
注:MOE 网络来源于 MOE Layer,而 MOE Laye 最早提出是用来做多模型集成的,通过引入 gating 网络,将多个模型输出引入到MOE layer,然后 stack 到 DNN 中;
- 所提模型 Multi-gate Mixture-of-Experts
文章提出的模型(简称MMoE)目的就是相对于 shared-bottom 结构不明显增加模型参数的要求下捕捉任务的不同。其核心思想是将 shared-bottom 网络中的函数 f 替换成 MoE 层,如上图 c 所示,形式化表达为:
y
k
=
h
k
(
f
k
(
x
)
)
y_{k}=h^{k}\left(f^{k}(x)\right)
yk=hk(fk(x))
f k ( x ) = ∑ i = 1 n g k ( x ) i f i ( x ) f^{k}(x)=\sum_{i=1}^{n} g^{k}(x)_{i} f_{i}(x) fk(x)=i=1∑ngk(x)ifi(x)
其中 g k ( x ) = softmax ( W g k x ) g^{k}(x)=\operatorname{softmax}\left(W_{g k} x\right) gk(x)=softmax(Wgkx),输入就是 input feature,输出是所有 experts 上的权重。
注:gating net 输入为gating net的原始 feature,而非
-
一方面,因为 gating networks 通常是轻量级的,而且 expert networks 是所有任务共用,所以相对于论文中提到的一些 baseline 方法在计算量和参数量上具有优势。
-
另一方面,相对于所有任务共用一个门控网络(One-gate MoE model,如上图 b),这里MMoE(上图 c)中每个任务使用单独的 gating networks,每个任务的 gating networks 通过最终输出权重不同实现对 experts 的选择性利用,不同任务的 gating networks 可以学习到不同的组合 experts 的模式,因此模型考虑到了捕捉到任务的相关性和区别。
注:要注意区分单 gating net 的 OMOE 与 MOE 的区别!!!
MOE 是直接使用多个 Expert net 的线性加权和作为子任务输出 y k = h k ( f ( x ) ) y_{k}=h^{k}(f(x)) yk=hk(f(x)),权重通过一个 gating net 学习;
而 MMOE 则是通过多个 gating net 学习多组 Expert net 的输出权重,然后又套接入各子任务的 Tower net,这里多个 gating net 相当于依据各子任务随机学习到多组 Expert net 的相关性组合,后接的 Tower net 进一步提升了子任务的建模效果;
5. 总结
该论文结构非常简单,理论创新点主要就是在 MOE 的基础上,将单 gating net 评估各子任务权重换成通过引入多个 gating net 学习各 Expert net 相关性组合权重,同时后接对应各子任务的 Tower net 学习得到各子任务输出:
y
k
=
h
k
(
f
k
(
x
)
)
y_{k}=h^{k}\left(f^{k}(x)\right)
yk=hk(fk(x))
f k ( x ) = ∑ i = 1 n g k ( x ) i f i ( x ) f^{k}(x)=\sum_{i=1}^{n} g^{k}(x)_{i} f_{i}(x) fk(x)=i=1∑ngk(x)ifi(x)
其中 g k ( x ) = softmax ( W g k x ) g^{k}(x)=\operatorname{softmax}\left(W_{g k} x\right) gk(x)=softmax(Wgkx),输入就是 input feature,输出是所有 experts 上的权重。
多 gating net 可以学习到多 Expert net 的相关性组合,而 Tower net 进一步提升子任务建模能力;
- 人工构造数据集
在真实数据集中我们无法改变任务之间的相关性,所以不太方便进行研究任务相关性对多任务模型的影响。轮文中人工构建了两个回归任务的数据集,然后通过两个任务的标签的Pearson相关系数来作为任务相关性的度量。在工业界中通过人工构造的数据集来验证自己的假设是个有意思的做法。
- 模型的可训练性
模型的可训练性,就是模型对于超参数和初始化是否足够鲁棒。作者在人工合成数据集上进行了实验,观察不同随机种子和模型初始化方法对loss的影响。这里简单介绍下两个现象:第一,Shared-Bottom models的效果方差要明显大于基于MoE的方法,说明Shared-Bottom模型有很多偏差的局部最小点;第二,如果任务相关度非常高,则OMoE和MMoE的效果近似,但是如果任务相关度很低,则OMoE的效果相对于MMoE明显下降,说明MMoE中的multi-gate的结构对于任务差异带来的冲突有一定的缓解作用。
整体来看,这篇文章是对多任务学习的一个扩展,通过门控网络的机制来平衡多任务的做法在真实业务场景中具有借鉴意义。
6. 参考文献
[1] Personalized Re-ranking for Recommendation
[2] 详解谷歌之多任务学习模型MMoE(KDD 2018)
[3] YouTube作者论文简介
[4] MMOE Keras 实现版本