赞
踩
常见的监督学习包括:
首先,介绍什么是多任务学习,例如之前文章提到的微信视频场景,同时包含多个学习目标(task):是否转发、是否点赞、是否关注等。
以往的做法可能会对不同的task分别建立对应的模型,但这样会导致几个问题
那么,多任务学习就是为了解决这些问题,建立一个模型,同时对不同的task进行学习。
另外,多任务学习还有一个优点:
经常存在某个task的样本数量比较少的情况,导致模型的学习难度较高。多任务学习过程中多个task的样本数据是共享的,一定程度上减缓这个问题。
原生的MTL框架,也是最简单的,如下图:

但是,原生的MTL模型存在以下几个问题:
然而,以上几个的问题的本质都是由于底层网络参数的共享。
其实可以从这两个角度理解,
1、底层共享的参数容易偏向于某个task,或者说偏向于某个task的全局(局部)最优方向,如果task之间差异很大,那么不同task的模型参数的全局(局部)最优方向也会不同,那么其他task的效果肯定会大打折扣;
2、不同task的梯度冲突,存在参数撕扯,比如两个task的梯度是正负相反,那最终的梯度可能被抵消为0,导致共享参数更新缓慢。
《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》
首先,上面我们提到Shared-bottom模型的效果受不同task之间的相关性影响,这篇论文就证明了这个结论:
大体的思路是控制两个回归task的label(y1、y2)的相关性为p,生成一批输入数据x;
然后使用Shared-bottom模型来拟合,对比不同p之下的效果;
对比不同p之下的情况:两个task的相关性越小,模型的效果越差。


上图c就很清晰的描述了MMoE的结构:


总结:

《Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations》
MMoE在弱相关性task中表现地相对比较稳定,但由于底层的Expert仍然是共享的(虽然引入Gate来让task选择Expert),所以还是会存在**“跷跷板”**的情况:一个task的效果提升,会伴随着另一个task的效果降低。
腾讯在2020的论文中,就对MMoE进行改进,提出了CGC(Customized Gate Control)、PLE(Progressive Layered Extraction)
其实,从结构上来看,CGC可以认为是单层的PLE,而PLE就是多层的CGC。

从上面的结构图,容易看出跟MMoE的差别就在于:除了共享的Expert之外,还加入了每个task自己的Specific Expert

上面也提到,PLE其实可以认为是多层的CGC:
按照PLE的思路,其实MMoE也是衍生出多层的MMoE,如下图的结构:

torch版本的代码实现:GitHub
tensorflow1.x版本的代码实现:GitHub
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。