混合专家模型(,简称),或译为多专家模型,是一种机器学习技术,通过门控(gating)模型将单一任务空间划分为多个子任务,再由多个专家网络(子模型)分别处理特定的子任务,最终得到整体的预测结果。混合专家模型与集成学习有相似之处,它们都应用多个子模型来处理问题。但它们的区别在于,混合专家模型中的每个专家都是针对不同的数据子空间进行训练的,以适应不同类型的输入数据;而集成学习一般而言则是使用多种模型对整个数据空间进行训练。MoE也被称为委员会机器(committee machines)。
基本理论
MoE模型始终包含以下组件,但其实现和组合方式因求解问题而异:一组专家函数 f_1, \ldots, f_n 接收相同的输入 x 并产生各自的输出 f_1(x), \ldots, f_n(x);一个加权函数(亦称门控函数)w 根据输入 x 输出权重向量 (w(x)_1, \ldots, w(x)_n),这些权重通常非负。模型的整体输出通常为 f(x) = \sum_i w(x)_i f_i(x)。专家和门控函数均通过最小化某个损失函数(通常经由梯度下降法)进行联合训练。
在门控函数的选择上,最常用的是softmax函数。在硬性MoE(hard MoE)中,只选择得分最高的专家,即 f(x) = f_{\arg\max_i w_i(x)}(x),这可以加速训练和推理。
层次混合专家模型
层次混合专家模型(hierarchical mixtures of experts)是包含多个层次的混合专家模型。与使用单一门控模型的普通混合专家模型相比,层次混合专家模型中的门控模型呈类似决策树的多层结构,以适应更为复杂与灵活的应用场景。
深度学习中的MoE
进入深度学习时代后,MoE被用于运行超大规模模型,作为一种实现条件计算(conditional computation)的简便方法:仅使用模型的某些部分,根据输入选择激活哪些部分。
稀疏门控MoE层
2017年,Google Brain的研究人员提出了稀疏门控MoE层,使用前馈神经网络作为专家,采用线性-softmax门控,并通过仅对top-k个专家的输出进行加权求和来实现稀疏性(而非全部专家的加权和)。门控函数定义为 w(x) = \mathrm{softmax}(\mathrm{top}_k(Wx + \mathrm{noise}))。典型的k值为1或2,其中k=1的版本被称为Switch Transformer。该模块发表于Transformer架构论文发表前数月,随后两者被结合为多模态架构MultiModel。
负载均衡
原始MoE容易出现负载不均的问题:某些专家被频繁调用,而另一些则很少被使用。Switch Transformer通过引入一个辅助损失函数 n\sum_{i=1}^n f_i P_i 来鼓励专家被均等选择,其中f_i是选择专家i的token比例,P_i是专家i上的权重比例。
深度求索(DeepSeek)的研究人员设计了共享专家(shared experts)和路由专家(routed experts)相结合的MoE变体:共享专家始终被查询以学习通用能力,路由专家则可能不被查询以学习边缘能力。他们还提出了免辅助损失的负载均衡策略,通过为每个专家添加可调节的偏置项来实现均衡。
路由策略
路由是决定如何将token分配给专家的核心机制,通常分为三类:专家选择token、token选择专家(即原始的稀疏门控MoE)、以及全局匹配。在推理过程中,若token选择专家,可能出现某些专家被分配过多token而超出最大批处理量,从而不得不丢弃部分token的情况。由于Transformer架构中的残差连接,被丢弃的token的向量表示将直接穿过前馈层而不做改变,因此token丢弃不一定是严重问题。
在Transformer模型中的应用
MoE层广泛应用于超大规模Transformer模型中,通常用于替代Transformer块中的前馈层(因为随着模型增大,前馈层的参数占比可达90%)。重要的大规模MoE语言模型包括:Google的GShard和GLaM(1.2万亿参数)、Mistral AI的Mixtral 8x7B(46.7B参数,8专家,稀疏度2)以及Databricks的DBRX(132B参数,16专家,稀疏度4)。
参考文献
评论 (0)