首页 > 其他分享 >Multi-gate Mixture-of-Experts(MMoE)

Multi-gate Mixture-of-Experts(MMoE)

时间:2023-06-14 18:36:47浏览次数:30  
标签:Multi Mixture 模型 网络 Experts gate MoE


1. 概述

在工业界经常会面对多个学习目标的场景,如在推荐系统中,除了要给用户推荐刚兴趣的物品之外,一些细化的指标,包括点击率,转化率,浏览时长等等,都会作为评判推荐系统效果好坏的重要指标,不同的是在不同的场景下对不同指标的要求不一样而已。在面对这种多任务的场景,最简单最直接的方法是针对每一个任务训练一个模型,显而易见,这种方式带来了巨大的成本开销,包括了计算成本和存储成本。多任务学习(Multi-task Learning)便由此而生,在多任务学习中,希望通过一个模型可以同时学习多个目标。然而在多任务学习中,多个任务之间通常存在着或是彼此联系或是巨大差异的现象,这就导致了多任务模型常常效果不佳。Google于2018年提出了Multi-gate Mixture-of-Experts(MMoE)模型[1]来对任务之间相互关系建模。

2. 算法原理

MMoE模型并不是凭空产出的,是在前人的工作上做了很多改进。多任务学习经过多年的发展,历史上也出现了很多多任务学习的模型。

2.1. Shared-Bottom模型

在多任务学习模型当中,最常见的一种模型就是shared-bottom模型,shared-bottom模型的结构如下图所示:

Multi-gate Mixture-of-Experts(MMoE)_深度学习

在shared-bottom模型中,每个任务都共享底部的网络,如上图中的Shared Bottom部分,然后在上层再根据任务的不同划分出多个tower network来分别学习不同的目标,如上图中的TowerA和Tower B。假设当前有Multi-gate Mixture-of-Experts(MMoE)_推荐系统_02个任务,输入特征通过shared-bottom网络后可以由函数Multi-gate Mixture-of-Experts(MMoE)_多任务_03表示,每一个tower网络的输出为函数Multi-gate Mixture-of-Experts(MMoE)_推荐系统_04,其中Multi-gate Mixture-of-Experts(MMoE)_深度学习_05,则shared-bottom模型可以表示为:

Multi-gate Mixture-of-Experts(MMoE)_机器学习_06

2.2. Multi-gate Mixture-of-Experts(MMoE)模型

从MMoE的名称来看,可以看到主要包括两个部分,分别为:Multi-gate(多门控网络)和Mixture-of-Experts(混合专家)。

2.2.1. Mixture-of-Experts(MoE)模型

MoE模型可以表示为

Multi-gate Mixture-of-Experts(MMoE)_建模_07

其中Multi-gate Mixture-of-Experts(MMoE)_机器学习_08Multi-gate Mixture-of-Experts(MMoE)_深度学习_09表示的是Multi-gate Mixture-of-Experts(MMoE)_机器学习_10的第Multi-gate Mixture-of-Experts(MMoE)_多任务_11个输出值,代表的是选择专家Multi-gate Mixture-of-Experts(MMoE)_深度学习_12的概率值。Multi-gate Mixture-of-Experts(MMoE)_多任务_13是第Multi-gate Mixture-of-Experts(MMoE)_多任务_11个专家网络的值。MoE可以看作是基于多个独立模型的集成方法Ensemble,通过Ensemble的知识可知,通过Ensemble能够提高模型的性能。

也有将MoE作为一个独立的层[2],将多个MoE结构堆叠在另一个网络中,一个MoE层的输出作为下一层MoE层的输入,其输出作为另一个下一层的输入,其具体过程如下图所示:

Multi-gate Mixture-of-Experts(MMoE)_机器学习_15

2.2.2. One-gate Mixture-of-Experts(OMoE)模型

在shared-bottom模型中,无法实现对多个任务之间关系的建模,结合shared-bottom和MoE,便有了One-gate Mixture-of-Experts模型,其具体过程如下图所示:

Multi-gate Mixture-of-Experts(MMoE)_深度学习_16


假设当前有Multi-gate Mixture-of-Experts(MMoE)_推荐系统_02个任务,与Shared-Bottom模型一样,输入特征通过多个专家网络后可以由函数Multi-gate Mixture-of-Experts(MMoE)_多任务_13表示,假设当前有Multi-gate Mixture-of-Experts(MMoE)_深度学习_19个专家网络,即Multi-gate Mixture-of-Experts(MMoE)_深度学习_20,每一个任务对应的tower网络的输出为函数Multi-gate Mixture-of-Experts(MMoE)_推荐系统_04,其中Multi-gate Mixture-of-Experts(MMoE)_深度学习_05,则OMoE模型可以表示为:

Multi-gate Mixture-of-Experts(MMoE)_推荐系统_23

2.2.3. Multi-gate Mixture-of-Experts(MMoE)模型

Multi-gate Mixture-of-Experts是One-gate Mixture-of-Experts的升级版本,借鉴门控网络的思想,将OMoE模型中的One-gate升级为Multi-gate,针对不同的任务有自己独立的门控网络,每个任务的gating networks通过最终输出权重不同实现对专家的选择。不同任务的门控网络可以学习到对专家的不同组合,因此模型能够考虑到了任务之间的相关性和区别。其具体过程如下图所示:

Multi-gate Mixture-of-Experts(MMoE)_建模_24

同样,假设当前有Multi-gate Mixture-of-Experts(MMoE)_推荐系统_02个任务,输入特征通过多个专家网络后可以由函数Multi-gate Mixture-of-Experts(MMoE)_多任务_13表示,假设当前有Multi-gate Mixture-of-Experts(MMoE)_深度学习_19个专家网络,即Multi-gate Mixture-of-Experts(MMoE)_深度学习_20,每一个任务对应的tower网络的输出为函数Multi-gate Mixture-of-Experts(MMoE)_推荐系统_04,其中Multi-gate Mixture-of-Experts(MMoE)_深度学习_05,则MMoE模型可以表示为:

Multi-gate Mixture-of-Experts(MMoE)_推荐系统_31

其中,Multi-gate Mixture-of-Experts(MMoE)_深度学习_32为门控网络,可以由一个最简单的网络表示:

Multi-gate Mixture-of-Experts(MMoE)_深度学习_33

其中,Multi-gate Mixture-of-Experts(MMoE)_机器学习_34Multi-gate Mixture-of-Experts(MMoE)_深度学习_19表示专家的个数,Multi-gate Mixture-of-Experts(MMoE)_深度学习_36表示的是特征的维度。

3.总结

通过结合门控网络和混合专家组成的MMoE模型,从实验的结论上来看,能够利用同一个模型对多个任务同时建模,同时能够对多个任务之间的联系和区别建模。

参考文献

[1] Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1930-1939.

[2] Shazeer, Noam, et al. “Outrageously large neural networks: The sparsely-gated mixture-of-experts layer.” arXiv preprint arXiv:1701.06538 (2017).


标签:Multi,Mixture,模型,网络,Experts,gate,MoE
From: https://blog.51cto.com/u_16161414/6479835

相关文章

  • 2021百度之星- 复赛 Add or Multiply 1 第二类斯特林数计数
    AddorMultiply1本质上这个题目中乘法和加法没有任何区别因为加法乘法均满足交换律不妨考虑乘法最后分成了k块每块内部没有顺序但是块之间有顺序有顺序共有m个乘法操作这样的方案数是\(s(m,k)k!\)这个时候要求k-1个空隙必须有加法但是开头和结尾可以有也可以没有这个......
  • Netflix如何通过重构视频Gatekeeper提升内容运营效率?
    Gatekeeper是Netflix的视频内容评估管理平台,可以展示视频剧集的metadata,如合同信息、字幕、标题、内容分级等。但此前,运营人员无法通过Gatekeeper实时更新剧集信息,本文将介绍新的gatekeeper架构,以及因此获得的收益。 文/ DrewKoszewnik译/Johnhttps://medium.com/netflix-t......
  • 【841】shapely合并多个Polygon/MultiPolygon
    参考:Convertinglistofpolygonstomultipolygonusingshapely?MultiPolygon->Polygonlistlist(multiPoly.geoms)Polygonlist->MultiPolygonshapely.geometry.MultiPolygon([poly1,poly2,poly3,poly4,poly5]) ......
  • 将MultipartFile对象转换成File对象
    将MultipartFile对象转换成File对象//将MultipartFile对象转换成File对象privateFileconvertToFile(MultipartFilemultipartFile)throwsIOException{//获取文件名StringfileName=Objects.requireNonNull(multipartFile.getOriginalFilename......
  • go :Multiple-value strconv.Atoi() (int, error) in single-value context
    代码devicePositionType:=strconv.Atoi(info[0]["device_position_type"].(string))报错Multiple-valuestrconv.Atoi()(int,error)insingle-valuecontext这是因为返回的数据有两个参数,代码里只定义了一个,所以代码里需要再加上一个参数,这个参数一般会定义为errdevicePositi......
  • Spring Cloud Gateway简单使用
    文章目录一、简介1、功能特点:2、术语解释3、网关技术二、快速开始1、创建Springboot工程2、启动引导类开启注册中心Eureka客户端发现3、配置文件`appliation.yml`4、编写路由规则三、路由配置(转发)(predicates)1、Query属性2、Header3、Method4、RemoteAddr5、Host6、Cookie7、B......
  • 五月学习之Ansible delegate
    1、Ansibledelegate1.1、什么是Task委派简单来说,就是本来需要在当前被控制端主机执行的操作,被委派给其他主机执行1.2、TASK委派场景实践场景说明1、为172.16.1.7服务器添加一条hosts记录:1.1.1.1qingchen.com2、同时要把这个hosts记录写一份至172.16.1.5节点3、除此任务之......
  • C# Delegate 委托
    什么是委托?可以把委托看成是用来执行方法(函数)的一个“指针”通俗的说就是:通过委托,我们可以把方法当成参数传递。示例  举个例子:“设想,如果我们写了一个厨师做菜的方法,里面有拿菜、切菜、配菜、炒菜四个步骤,但编写此方法代码的人想让配菜这个环节让调用方法的人来实现,换句......
  • SpringCloud第二部分(Gateway、Douker)
    统一网关Gateway为什么需要网关​ API网关作用就是把各个服务对外提供的API汇聚起来,让外界看起来是一个统一的接口。同时也可在网关中提供额外的功能。分布式服务架构、微服务架构与API网关:​ 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测......
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统
    介绍Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个机器的多个进程中,依靠网络通信。想到这,就在想是不是可以使用此模块来实现一个简单的作业调度系统。实现Job首先创建一个Job类,为......