1. 简介
- MMoE(Multi-gate Mixture of Experts)由Google发表在KDD 2018会议上。在推荐系统领域,我们不仅要推荐用户感兴趣的东西,并且要尽可能促进购买。所以我们需要同时要优化CTR和CVR模型,阿里巴巴提出ESMM模型给出了一个解决方案,同时优化pCTR和pCTCVR。但是ESMM是一个典型的Shared Bottom Model,两个模型共享一部分参数。多任务学习存在一个明显的问题是,当两个子任务差别非常大的时候效果不太好。因此Google在MoE模型的基础上提出MMoE模型,能够同时捕捉子任务之间的相关性和差异性。
2. MMoE模型结构
2.1 Shared-Bottom model
- 常用的多任务学习框架,如下图所示。两个子任务之间共享一个Shared Bottom网络(),每个子任务分别对应一个tower网络,假设为;那么第子任务的输出为:。
- Share Bottom model代码实现:https://github.com/shenweichen/DeepCTR/blob/master/deepctr/models/multitask/sharedbottom.py
2.2 One-gate MoE model
- One-gate MoE模型,使用单个Gate组合MoE模型输出的结果。MoE由多个专家(expert)网络组成,每一个expert网络可以认为是一个前馈神经网络。Gate网络计算得到在每个expert上的概率值,最后通过加权得到的输出,输入到每个子任务的tower网络中。假设总共有个expert网络,每个expert网络的输出为,对于第个expert网络,Gate网络输出的概率值为,则每个tower网络的输出为:
- 其中Gate也是一个子网络,生成在Expert网络上的概率分布:
2.3 Mult-gate MoE model (MMoE)
-
MMoE在One-gate MoE模型基础上进行改进,对每个子任务都引入一个Gate网络,以此来捕获不同子任务之间的差异性。 Expert网络对于子任务之间共享,用于学习子任务之间的相关性。最终每个子任务tower网络的输出为:
3. MMoE模型理解
- 下图中代表batch size大小,代表DNN隐层大小,代表专家网络的数量;
- MMoE tensorflow代码实现:https://github.com/shenweichen/DeepCTR/blob/master/deepctr/models/multitask/mmoe.py
MMoE模型理解.png
参考资料
- 【MMoE论文】Modeling Task Relationships in Multi-task Learning with
Multi-gate Mixture-of-Experts https://dl.acm.org/doi/pdf/10.1145/3219819.3220007 - 详解谷歌之多任务学习模型MMoE(KDD 2018) https://zhuanlan.zhihu.com/p/55752344
网友评论