MMOE多任务模型
18年KDD google 原文链接:Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
论文中提出了一个Multi-gate Mixture-of-Experts(MMoE)的多任务学习结构,学习任务之间的关系与特定任务功能,自动分配参数捕获共享任务信息或特定任务信息,避免了明显增加参数的缺点。
MMOE这篇论文,更像是一个多任务的一个框架,提供了一个简单又具有一定可解释性的多任务解决思路。多任务训练在推荐系统、计算广告任务中很常见,因为经常会分多目标、多行业、多领域的进行预估,不同目标之前既存在一定的联系又存在一定的独立性。例如,推荐系统中,我们既希望提高用户的点击率,同时也希望提高视频的播放时长,视频点赞等。 这些目标的达成并非是简单的相辅相成,更多的可能是相互竞争的关系,具有跷跷板现象,一个任务目标效果更好后,可能另一个目标的效果会有所下降,故需要多任务一起结合训练。要是我们只让模型学习点击率,那么经过训练的模型推荐结果很可能导致标题党和封面党大行其道,而如果一味的追求高点赞,也可能就忽略了一些相对冷门的或新的佳作。同时,多任务模型相比如每个单个任务建模来说,减低了模型的维护成本。
模型结构
base模型结构对比
Shared-Bottom model
基于共享底层模块的多任务结构,类似于图像领域的迁移学习思想,一些底层的基础特征可能是通用的,故可以共享,上游的具体任务独立建塔学习。
优点:共享底层模块,可以减少模型的参数,降低学习成本。若不同任务之间很相似,可以有较为不错的效果。
缺点:不同任务之间可能存在较大的差异,硬性共享容易产生较大的冲突,相互影响。限制了模型表达的能力,多个任务各自有不同的数据分布,而相同的特征输入会极大地削弱模型的多任务输出表达而在某种程度上降低了多目标模型的泛化能力。
MoE model
与Shared-Bottom model结构相比,MoE将Shared-Bottom层替换成多个独立的Expert模型,其实就是多个独立的MLP模块,每个Expert模块可以认为是专注于学习特定领域的知识,其次引入一个门控机制,根据输入的不同,动态调整各个Expert对象的权重,根据权重加权求和,再接各个任务独立的Tower进行输出。
优点:将shared层划分为多个独立的Expert层,降低了多个任务之间的冲突影响,同时引入门控机制,动态调整输出。
缺点:不同任务之间共享一个门机制
MMOE model
相比于MOE结构,引入多个门控机制,每个任务单独对应一个门控,这样既可以根据不同输入进行动态调整输出,也可以根据不同的任务进行动态调整权重,进一步降低不同任务之间的冲突。
其中 k k k代表第 k k k个任务,第 i i i个Expert网络的运算记为 f i ( x ) f_i(x) fi(x), g k ( x ) i g^k(x)_i gk(x)i表示第 k k k个任务的门控对应的第 i i i个Expert的权重。
Gate操作 g k ( x ) g^k(x) gk(x)是一个 n n n元的softmax值, n n n是Expert的个数。