查看原文
其他

【源头活水】机器学习:多任务学习之MMOE模型

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

作者:知乎—也门

地址:https://zhuanlan.zhihu.com/p/346635793

地址https://www.kdd.org/kdd2018/accepted-papers/view/modeling-task-relationships-in-multi-task-learning-with-multi-gate-mixture-


研究动机

研究MMOE的动机在于刻画了多任务机器学习中多目标之间相关性对loss的影响,同时也提出了一种新的MTL架构,可以利用gate函数和Moe Layer多层Expert去缓解多目标相关性低导致的准确率问题。

多任务模型通过学习不同任务的联系和差异,可提高每个任务的学习效率和质量。多任务学习的的框架广泛采用shared-bottom的结构,不同任务间共用底部的隐层。这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响。也有一些其他结构,比如两个任务的参数不共用,但是通过对不同任务的参数增加L2范数的限制;也有一些对每个任务分别学习一套隐层然后学习所有隐层的组合。

和shared-bottom结构相比,这些模型对增加了针对任务的特定参数,在任务差异会影响公共参数的情况下对最终效果有提升。缺点就是模型增加了参数量所以需要更大的数据量来训练模型,而且模型更复杂并不利于在真实生产环境中实际部署使用。


MMoE概述

关于共享隐层方面,MMoE和一般多任务学习模型的区别:

  • 一般多任务学习模型:接近输入层的隐层作为一个整体被共享;

  • MMoE:将共享的底层表示层分为多个expert层(可以将它看作三维的Tensor,即类似一个Shared Bottom但纬度为3),同时设置了gate网络,使得不同的任务可以多样化的使用共享层;

  • Gate网络作用:每个任务的gating networks通过最终输出权重不同实现对experts的选择性利用。不同任务的gating networks可以学习到不同的组合experts的模式,因此模型考虑到了捕捉到任务的相关性和区别。

如图,a)是最原始的多任务学习模型,也就是base,b)是加入单门(one gate)的MoE layer的多任务学习模型,c)是文章提出的模型。可以看出,c)本质上是将base的shared bottom换成了MoE layer,并对每个任务都加gate网络。


Shared-bottom Multi-task Model & MoE layer

如上图所示,左边是原始模型,右边是MoE layer。

原始模型:

共享隐层的输出结果是  ,输入到各自的tower网络(子网络)  ,最后每个任务k得到一个输出 

MoE layer:

隐层是三个expert子网组成,各自的输出  ,第i个expert的输出会传入gate,也就是g(x)维度与expert个数相同的softmax,g(x)i是它输出的第i个logits, ,gate对expert的输出进行组合,得到输出结果  MMoE

MMoE实际上就是原始模型+多个门的MoE layer,模型结构如下所示:

对每个任务k,输出为:

其中 是可更新的参数矩阵。n是expert的个数,d是特征x维度。


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存