一、MoE简介
MMoE是在MoE的基础之上,引入多任务而来,关于MoE的相关解读,可以参考我的另一篇博客:【论文阅读】Adaptive Mixtures of Local Experts
二、MMoE简介
关于MMoE的论文阅读在我的另一篇博客中已经讲到,具体可以参考:【推荐算法论文阅读】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
MMoE的模型结构如下图(c)所示:
MMoE的创新之处在于跳出了Shared Bottom那种将整个隐藏层一股脑的共享的思维定式,而是将共享层有意识的(按照数据领域之类的)划分成了多个Expert,并引入了gate机制,得以个性化组合使用共享层。
MoE共享层将大的Shared Bottom网络拆分成了多个小的Expert网络(如图所示,拆成了三个,并且保持参数个数不变)。我们把第i个Expert网络的运算记为 f i ( x ) f_i(x) fi(x),然后Gate操作记为 g ( x ) g(x) g(x),他是一个n元的softmax值(n是Expert的个数,有几个Expert,就有几元),之后就是常见的每个Expert输出的加权求和,假设MoE的输出为y,那么可以表示为:
y k = h k ( f k ( x ) ) y_{k}=h^{k}\left(f^{k}(x)\right) yk=hk(fk(x))
k是多任务中task的个数。
如果只是这样的话,要完成多任务还得像Shared Bottom那样再外接不同的输出层,这样一搞似乎这个MoE层对多任务来说就没什么用了,因为它无法根据不同的任务来调整各个Expert的组合权重。所以论文的作者搞了多个Gate,每个任务使用自己独立的Gate,这样便从根源上,实现了网络参数会因为输入以及任务的不同都产生影响。于是,我们将上面MoE输出稍微改一下,用 g k ( x ) g^k(x) g