MoE-GRPO:视觉语言模型中基于强化学习的混合专家路由优化
核心结论前置:MoE-GRPO 将传统 MoE 的确定性 Top-K 路由改造为可学习的强化学习策略,通过 Group Relative Policy Optimization(GRPO)同时优化"生成什么 token"和"走哪条专家路径",在保持稀疏推理效率的前提下,显著缓解专家过拟合并诱导任务级专家特化。
1. 背景与问题定义
1.1. 从密集模型到稀疏专家
1.1.1.1 计算瓶颈与 MoE 的兴起
我们先把镜头拉回到 Transformer scaling law 的核心矛盾:模型容量越大,性能越好,但每个 token 都要 touch 全部参数,训练和推理成本随参数量线性爆炸。混合专家模型(Mixture-of-Experts, MoE)给出的解题思路是------把一个大网络拆成多个小专家,让每个 token 只激活其中一小部分。
想象一个大型分拣中心:以前每个包裹都要经过所有流水线(密集模型),现在包裹进来后,智能分拣系统只把它送到最合适的两条流水线上处理(MoE)。总产能上去了,单个包裹的能耗却下来了。
对于已有经验者,这本质上是一种条件计算(conditional computation) :给定输入 token 的隐状态 hhh,门控网络 ggg 输出一个概率分布,决定激活哪些专家。总参数量 NtotalN_{total}Ntotal 可以很大,但计算量只与 NactiveN_{active}Nactive 相关。
数据形态
输入 Token
门控网络
激活专家子集
聚合输出
下一层
B, N, D
图注 :图 1-1 展示 MoE 层的极简数据流。黄色节点代表原始输入 token;蓝色门控网络负责路由决策;绿色节点执行实际的专家前向计算;紫色节点为聚合后的输出。灰色虚线框标注了贯穿全文的张量形状约定:Batch size BBB,序列长度 NNN,隐层维度 DDD。
认知检查点:MoE 的核心价值不是"参数多",而是"参数多但算得少"------通过稀疏激活实现容量与效率的解耦。
1.1.1.2 Top-K 路由的"贪心陷阱"
现在我们已经了解了 MoE 的基本分拣逻辑,接下来看看传统路由是怎么工作的。绝大多数工业级 MoE(如 DeepSeek、InternVL 系列)采用确定性 Top-K 路由 :门控网络输出分数后,直接取概率最高的 KKK 个专家。听起来很合理对吧?但这其实是一个贪心局部决策。
想象那个分拣中心:系统永远只把包裹送给历史评分最高的两位老员工,哪怕今天这批包裹是全新的品类,也不给新员工试错机会。久而久之,老员工累垮(过拟合),新员工闲置(负载失衡),整个中心的潜力被锁死。
从强化学习的视角看,Top-K 是一种**纯利用(exploitation)无探索(exploration)**的策略。门控网络一旦在预训练阶段收敛到某几个专家的高分,后续微调就很难再跳出这个局部最优。更麻烦的是,视觉语言模型(VLM)要同时处理图像 patch 和文本 token,不同模态对专家能力的需求本就不同,硬性的 Top-K 更容易导致"一刀切"式的专家分配。
退化路径
低分丢弃
输入 Token
门控打分
专家 A
专家 B
加权聚合
专家 C 到 N
输出
专家固化
负载失衡
图注:图 1-2 展示 Top-K 路由的退化风险。红色虚线分支标注了常见错误路径:低分专家被系统性丢弃后,走向"专家固化"与"负载失衡"的退化状态。实线表示标准数据流,虚线表示被抑制的探索路径。
1.2. 强化学习进入路由决策
1.2.1.1 GRPO 在多模态中的成功
在继续之前,我们先快速回顾 Group Relative Policy Optimization(GRPO)------这是 DeepSeek 团队提出的一个高效 RL 算法,最近已被成功扩展到视觉语言模型(如 Video-R1)。与传统 PPO 需要额外训练一个价值网络不同,GRPO 的核心思想是:对同一个问题采样一组输出(group),用组内相对表现来估计优势函数,省去价值模型。
对于已有经验者,GRPO 的吸引力在于它天然适合**可验证奖励(verifiable reward)**的场景:多模态任务中,答案正确与否往往可以直接判定(如多选题的选项匹配、VQA 的精确答案匹配)。这种二元奖励虽然稀疏,但 GRPO 通过组内对比把它转化成了密集的策略梯度信号。
想象一个考场:老师不再给每个学生单独打分,而是把 8 份答卷摊在桌上,直接看哪几份答得好、哪几份答得差,好的加分、差的扣分。GRPO 把这个思路搬到了 token 生成层面。
核心结论:GRPO 通过组内相对奖励消除了对价值网络的依赖,特别适合答案可验证的视觉语言任务。
1.2.1.2 为什么路由需要 RL?
现在抛出关键问题:如果不用 RL,会发生什么?
当前所有 MoE 微调方法(无论是确定性微调 Det-FT,还是加噪声的随机微调 Stoch-FT)都有一个共同盲区------它们只优化模型输出,不优化选择路径。就像训练赛车手时只看他最终圈速,却不分析他走的赛车线。如果赛车线本身可以学习,为什么只调油门不调方向盘?
MoE-GRPO 的核心洞察是:专家选择本身就是一个序列决策过程 。每一层、每一个 token 选哪个专家,都会影响最终的输出质量。因此,门控网络不应该只是一个静态分类器,而应该是一个可学习的策略(policy),通过探索-反馈循环来寻找最优专家组合。
步骤三:生成
步骤二:交互
步骤一:编码
图像文本
视觉编码器
特征序列
MoE 层序列
路由决策
答案 Token
B, N, D\] → \[B, N, D
B, N, V
图注 :图 1-3 展示 VLM 中 MoE 层所处的时空位置。橙色节点"路由决策"是本文的改造焦点。灰色虚线标注了数据形态变化:特征序列经过 MoE 层后维度保持不变,最终映射到词表维度 VVV。
2. MoE-GRPO 核心机制
2.1. 双目标优化框架
2.1.1.1 Token-GRPO:输出层面的策略优化
我们先从熟悉的部分开始。Token-GRPO 本质上就是标准 GRPO,只不过它发生在 MoE 框架内。给定输入 xxx(图像+问题),旧策略 πold\pi_{old}πold 采样 GGG 组专家路径 {Ei}i=1G\{E^i\}{i=1}^G{Ei}i=1G 和对应输出 {yi}i=1G\{y^i\}{i=1}^G{yi}i=1G。奖励函数 RRR 根据答案正确性给出二元反馈(正确为 1,错误为 0)。
组内相对优势计算如下:
A^i=Ri−mean({Rj})std({Rj}) \hat{A}^i = \frac{R^i - \text{mean}(\{R^j\})}{\text{std}(\{R^j\})} A^i=std({Rj})Ri−mean({Rj})
公式互译:如果把上式画成图,会是一个天平------左边托盘放当前样本的奖励,右边托盘放整组奖励的均值,砝码的偏离程度就是优势值。
Token-GRPO 的损失函数鼓励模型提高高奖励输出的概率,压低低奖励输出的概率:
LToken-GRPO=1G∑i=1G1∣yi∣∑t=1∣yi∣{min(πθ(yti∣x,y<ti;Ei)πold(yti∣x,y<ti;Ei)A^i,clip(⋯ ))} \mathcal{L}{\text{Token-GRPO}} = \frac{1}{G} \sum{i=1}^G \frac{1}{|y^i|} \sum_{t=1}^{|y^i|} \left\{ \min\left( \frac{\pi_\theta(y_t^i|x,y_{<t}^i;E^i)}{\pi_{old}(y_t^i|x,y_{<t}^i;E^i)} \hat{A}^i, \text{clip}(\cdots) \right) \right\} LToken-GRPO=G1i=1∑G∣yi∣1t=1∑∣yi∣{min(πold(yti∣x,y<ti;Ei)πθ(yti∣x,y<ti;Ei)A^i,clip(⋯))}
公式互译:这个公式如果翻译成图,画出来会是一条"概率缩放管道"------旧策略的概率作为输入管径,优势值作为压力阀门,裁剪函数作为安全限压阀,最终流出的梯度信号驱动 token 策略更新。
对于首次接触者,可以这样理解:模型生成了 8 个答案,3 个对 5 个错。Token-GRPO 的作用就是让那 3 个对的答案在将来更容易被生成,5 个错的更不容易被生成,而且调整幅度由"比平均水平好多少/差多少"决定。
数据形态
问题+图像
路径 1
路径 2
路径 G
答案 1
答案 2
答案 G
奖励 1
奖励 2
奖励 G
组内归一化
优势信号
更新策略
G 个 rollout
奖励标量
图注:图 2-1 展示 Token-GRPO 的简化概念图。蓝色节点代表采样的不同专家路径,绿色节点为生成的答案,紫色节点为对应奖励,橙色节点执行组内相对归一化,红色节点输出最终优势信号。如图所示,整个流程从多路径采样开始,到策略更新结束。
认知检查点:Token-GRPO 只关心"最终答案对不对",并不显式指导中间层应该选哪些专家------这正是 Gate-GRPO 要填补的空白。
2.1.1.2 Gate-GRPO:路由层面的密集监督
现在我们已经了解了 Token-GRPO 只优化输出端,接下来看看 MoE-GRPO 的真正创新点:Gate-GRPO。如果 Token-GRPO 是在考场门口统计谁考得好,那么 Gate-GRPO 就是在考场内安装摄像头,记录每个学生每道题选了什么解题思路,并根据最终成绩反过来评价这些思路的好坏。
具体而言,Gate-GRPO 将门控网络 glg^lgl 视为一个策略网络,它在第 lll 层为第 ttt 个 token 选择专家集合 Et,liE_{t,l}^iEt,li。由于最终奖励 RiR^iRi 是稀疏的,我们把它通过组内相对优势 A^i\hat{A}^iA^i 传播回每一层、每一个 token 的路由决策:
LGate-GRPO=1G∑i=1G1L∑l=1L1N∑t=1Nloggl(Et,li∣ht,l)⋅A^i \mathcal{L}{\text{Gate-GRPO}} = \frac{1}{G} \sum{i=1}^G \frac{1}{L} \sum_{l=1}^L \frac{1}{N} \sum_{t=1}^N \log g^l(E_{t,l}^i | h_{t,l}) \cdot \hat{A}^i LGate-GRPO=G1i=1∑GL1l=1∑LN1t=1∑Nloggl(Et,li∣ht,l)⋅A^i
公式互译:这个公式如果翻译成图,会是一棵倒长的树------根节点是最终答案的奖励,树干是组内相对优势,树枝延伸到每一层、每一个 token 的门控决策点,树叶的明暗程度表示该决策被强化或抑制的幅度。
对于已有经验者,这相当于把稀疏的终端奖励**密集化(densify)**到路由路径上。注意这里没有使用参考模型的 KL 散度约束,因为 MoE-GRPO 的路由策略是从头训练的,不存在需要保持对齐的预训练路由策略。
选专家 A
选专家 B
选专家 K
优势回传
梯度流
实线 = 数据流
点线 = 梯度回传
输入序列
门控网络层 l
专家计算
专家计算
专家计算
层输出
后续层叠
最终奖励
图注:图 2-2 展示 Gate-GRPO 的因果链图。实线表示数据流(自上而下),点线表示梯度/反向传播(自下而上)。红色关键节点"最终奖励"通过点线将优势信号回传给蓝色门控网络,形成闭环优化。如图所示,门控网络的每一次决策都会收到来自终端奖励的延迟反馈。
很多人误以为 Gate-GRPO 需要为每一层单独设计奖励函数。实际上并非如此------它复用了 Token-GRPO 的同一组组内相对优势 A^i\hat{A}^iA^i,只是将这一标量信号广播到所有层的路由对数概率上。这种设计既简洁又高效,避免了多目标优化的复杂度爆炸。
2.2. 模态感知路由引导
2.2.1.1 视觉-文本专家分布差异
在继续深入之前,我们先问一个问题:如果让路由器自由探索,会发生什么?
在视觉语言模型中,输入序列是异质的:图像 patch 经过视觉编码器后变成视觉 token,文本 prompt 和答案则是文本 token。实验观察表明,某些专家天然更擅长处理视觉特征,另一些则对文本语义更敏感。如果路由器不加区分地全局探索,它会在视觉 token 的位置浪费大量算力去尝试文本型专家,反之亦然。
想象那个分拣中心突然同时处理生鲜包裹和电子产品。如果不告诉系统"生鲜走冷链线、电子走防静电线",系统会盲目地把生鲜往防静电线里塞,白白浪费试错成本。
MoE-GRPO 引入的**模态感知路由引导(Modality-Aware Router Guidance)**正是为了解决这个问题。它通过统计每个专家在不同模态上的历史激活频率,计算出每个专家的"视觉感知度"和"文本感知度"。
高分
高分
低分
因果链
模态差异
裁剪引导
稳定训练
视觉 Token
文本 Token
门控网络
无关专家
视觉专家
文本专家
聚合输出
路由决策
裁剪底部
图注:图 2-3 展示模态感知引导的因果链图。黄色输入节点按模态分流,蓝色门控网络根据模态特性差异化打分,绿色专家节点按专长激活,红色关键节点执行裁剪操作。虚线子图展示了"模态差异 → 裁剪引导 → 稳定训练"的因果推导关系。
核心结论:模态感知引导不是硬性地规定"视觉 token 只能走视觉专家",而是降低低相关性专家的采样概率,保留探索弹性。
2.2.1.2 裁剪低激活专家的数学原理
具体实现上,模态感知引导采用了一种轻量的"底部裁剪"策略:对于当前输入的模态类型(视觉或文本),找出历史上激活频率最低的 25% 专家,在采样阶段将它们的 logits 置为负无穷(或等价地,将概率置零)。
用公式表达,设模态 m∈{vision,text}m \in \{vision, text\}m∈{vision,text},专家 kkk 在该模态上的历史激活频率为 fkmf_k^mfkm。定义裁剪掩码:
Mkm={1if fkm>percentile({fjm},0.25)0otherwise M_k^m = \begin{cases} 1 & \text{if } f_k^m > \text{percentile}(\{f_j^m\}, 0.25) \\ 0 & \text{otherwise} \end{cases} Mkm={10if fkm>percentile({fjm},0.25)otherwise
公式互译:这个公式如果翻译成图,会是一把带缺口的筛子------筛网的眼孔大小由历史激活频率决定,频率最低的 25% 眼孔被直接封死,只允许上方 75% 的专家参与当前模态的竞争。
修正后的门控分数为:
g~l(ht,l)=softmax(linear(ht,l)+logMm) \tilde{g}^l(h_{t,l}) = \text{softmax}(\text{linear}(h_{t,l}) + \log M^m) g~l(ht,l)=softmax(linear(ht,l)+logMm)
公式互译:这个公式如果翻译成图,会是在 softmax 温控炉前加了一道闸门------logits 流在进炉之前先通过模态掩码闸门,被判定为"无关"的专家直接被挡在门外,剩下的才进入温度归一化流程。
对于首次接触者,这相当于给分拣中心装了一个"品类提示牌":当检测到当前包裹是生鲜时,系统直接把非冷链的流水线从选项列表里划掉,但不指定必须走哪条冷链线------最终选哪条仍然由强化学习探索决定。
决策分支
屏蔽
屏蔽
全空间探索
原始 Logits
模态掩码
候选专家 1
候选专家 2
候选专家 K
底部专家
底部专家
Softmax 归一
有引导
无引导
图注:图 2-4 展示决策分支图。左侧蓝色节点为原始 logits,橙色节点为模态掩码操作,绿色节点为保留的候选专家,红色节点为被裁剪的低激活专家,紫色节点为最终归一化。灰色子图展示了"有引导"与"无引导"两种设计抉择的后果对比。如图所示,引入模态掩码后搜索空间显著收窄,训练稳定性提升。
3. 架构与实现
3.1. 三层架构总览
3.1.1.1 输入编码层
现在我们已经了解了 MoE-GRPO 的优化目标,接下来看看这些模块在系统中是如何组织的。MoE-GRPO 的完整架构可以划分为三层:输入编码层、专家计算层、输出生成层。
输入编码层负责把异质的多模态输入转化为统一的 token 序列。对于图像,视觉编码器(如 ViT)将输入 ximgx_{img}ximg 转换为视觉 token 序列 Hvision∈RB×Nv×DH_{vision} \in \mathbb{R}^{B \times N_v \times D}Hvision∈RB×Nv×D;对于文本,词嵌入层将输入 xtextx_{text}xtext 映射为文本 token 序列 Htext∈RB×Nt×DH_{text} \in \mathbb{R}^{B \times N_t \times D}Htext∈RB×Nt×D。两者拼接后得到混合序列 H∈RB×N×DH \in \mathbb{R}^{B \times N \times D}H∈RB×N×D,其中 N=Nv+NtN = N_v + N_tN=Nv+Nt。
想象一个翻译官团队:图像编码器负责把"图像语言"翻译成内部通用语,文本编码器负责把"自然语言"翻译成同一种内部通用语,这样后续的专家们只需要懂一种语言就能处理两种来源的信息。
数据形态
图像输入
文本输入
视觉编码器
词嵌入层
混合序列
下一层
图像: [B, Nv, D]
文本: [B, Nt, D]
混合: [B, N, D]
图注:图 3-1 展示输入编码层的简化概念图。黄色节点为原始输入,蓝色节点为模态专属编码器,紫色节点为拼接后的混合序列。灰色虚线框标注了各阶段的数据形态变化。如图所示,异质输入在编码层被转化为同构的隐状态序列。
3.1.1.2 专家计算层
专家计算层是 MoE-GRPO 的核心战场。每一层包含 NNN 个专家(FFN)和一个门控网络。在 MoE-GRPO 的训练阶段,门控网络采用**多项式采样(multinomial sampling)**而非确定性 Top-K,从而为探索留出空间。
设第 lll 层的输入为 Hl∈RB×N×DH_l \in \mathbb{R}^{B \times N \times D}Hl∈RB×N×D。门控网络为每个 token 计算分数后,采样 KKK 个专家(训练时随机,推理时恢复 Top-K)。每个被选中的专家对输入做非线性变换,最终按门控权重聚合:
Hl+1=Hl+∑k∈Kt,lgkl(ht,l)⋅FFNkl(ht,l) H_{l+1} = H_l + \sum_{k \in \mathcal{K}{t,l}} g{k}^l(h_{t,l}) \cdot \text{FFN}k^l(h{t,l}) Hl+1=Hl+k∈Kt,l∑gkl(ht,l)⋅FFNkl(ht,l)
公式互译 :这个公式如果翻译成图,会是一个并联的液压系统------主油路(残差连接 HlH_lHl)直接 bypass,支油路把流体分流到 KKK 个并行的液压缸(FFN 专家),每个液压缸的活塞推力由门控阀门控制,最后汇总到主油路继续向前。
对于已有经验者,这里的残差连接保证了即使门控网络初始化不佳,信息也能通过 shortcut 流动,避免训练初期梯度消失。门控权重 gklg_k^lgkl 在训练时是采样概率,在前向传播时作为加权系数。
完整细节
权重 g1
权重 g2
权重 gK
残差
隐状态 Hl
门控采样
专家 1
专家 2
专家 K
加权聚合
Hl 加 1
下一层
N 个专家池
模态掩码
负载均衡损失
图注:图 3-2 展示专家计算层的完整细节图。黄色输入节点经蓝色门控网络分流到绿色专家节点,残差连接用实线标注,加权聚合后输出到紫色下一层节点。灰色子图展示了完整实现中的辅助机制:专家池、模态掩码、负载均衡损失。如图所示,残差连接保证了信息通路的冗余安全。
认知检查点:训练时采样、推理时 Top-K 的"双模态"设计,是 MoE-GRPO 保持探索能力与推理效率平衡的关键。
3.1.1.3 输出生成层
输出生成层将最后一层 MoE 的隐状态映射到词表空间。标准语言模型头(LM Head)执行线性投影 O=HLWlmT∈RB×N×VO = H_L W_{lm}^T \in \mathbb{R}^{B \times N \times V}O=HLWlmT∈RB×N×V,其中 VVV 为词表大小。对于多模态理解任务,通常只需要模型生成答案序列,因此损失计算和奖励评估集中在答案部分的 token 上。
在 MoE-GRPO 框架下,输出生成层不仅是 token 的产地,更是奖励信号的源头 。答案正确与否决定了 RiR^iRi,进而决定了整组 rollout 的优势分布,最终通过 Token-GRPO 和 Gate-GRPO 两条管道反向影响模型参数。
数据形态
最终隐状态
LM 投影
词表分布
答案采样
奖励判定
B, N, D
B, N, V
标量 R
图注:图 3-3 展示输出生成层的极简流程。紫色隐状态经绿色投影头转化为橙色词表分布,红色关键节点执行答案正确性判定。灰色虚线标注了从张量到标量奖励的形态坍缩过程。如图所示,整个系统的优化目标最终收敛于这个红色节点的二元判定。
3.2. 训练流程与数据流
3.2.1.1 Rollout 阶段:采样专家路径
第一步,我们需要生成用于组内对比的 rollout。给定一批输入 xxx,旧策略 πold\pi_{old}πold 和旧门控 goldg_{old}gold 协同工作,采样 GGG 条专家路径和对应的输出序列。
这里的关键细节是:语言生成用贪心解码,专家选择用多项式采样。为什么这样设计?因为我们要探索的是"走哪条专家路径能答对",而不是"答案本身要有多花哨"。如果语言生成也随机采样,组内差异会被答案多样性淹没,导致奖励信号噪声过大。
用伪代码描述 rollout 阶段:
function Rollout(x, G, g_old, pi_old):
E_group = empty list # 对应图 3-4
Y_group = empty list
R_group = empty list
for i from 1 to G do:
E_seq = empty list # 存储每层专家选择,对应图 3-4 蓝色路径节点
y = empty sequence
h = Encode(x) # [B, N, D],对应图 3-1
for l from 1 to L do: # 逐层前向,对应图 3-4 纵向拓扑
E_l = empty list # 第 l 层选择
for t from 1 to N do: # 逐 token 路由
scores = g_old^l(h[t]) # [N_experts]
mask = ModalityMask(t, vision) # 裁剪底部 25%,对应图 2-4
probs = softmax(scores + log(mask))
experts = multinomial_sample(probs, K) # 采样 K 个专家
E_l.append(experts) # 记录路径
# 专家前向与聚合,对应图 3-2
out = 0
for k in experts do:
out += probs[k] * FFN_k^l(h[t]) # [D]
h[t] = h[t] + out # 残差更新
end
E_seq.append(E_l) # 此时 E_seq 记录完整层路径
end
# 语言生成(贪心),对应图 3-3
y = GreedyDecode(pi_old, h)
r = RewardFunction(y, ground_truth) # 二元奖励,对应图 3-3 红色节点
E_group.append(E_seq) # [L, N, K],对应图 3-4 路径维度
Y_group.append(y) # [N_answer]
R_group.append(r) # 标量
end
return E_group, Y_group, R_group # 图 3-4 右侧输出
end
执行快照:
- 第 6 行
h = Encode(x)后:h = [B, N, D] - 第 14 行
scores = g_old^l(h[t])后:scores = [N_experts] - 第 22 行聚合后:
out = [D],h[t] = [D] - 第 28 行循环结束后:
E_seq形状为[L, N, K](层 × token × 专家数) - 第 33 行返回后:
E_group含G个元素,每个元素形状[L, N, K]
时空维度
输入 x
路径 1
路径 2
路径 G
专家序列 1
专家序列 2
专家序列 G
答案 1
答案 2
答案 G
奖励组
优势计算
层 l 到层 L
Token 1 到 N
图注 :图 3-4 展示 Rollout 阶段的完整细节图。黄色输入节点分化为多条蓝色专家路径,每条路径经过绿色专家序列后生成紫色答案,最终汇入橙色奖励组,红色节点执行优势计算。灰色子图标注了专家路径在层(纵向)和 token(横向)两个时空维度上的展开。如图所示,MoE-GRPO 的核心数据膨胀发生在这个阶段:单条输入复制为 GGG 条并行路径。
3.2.1.2 优势估计与策略更新
第二步,我们基于组内奖励计算优势,并执行策略更新。这一步是 MoE-GRPO 的"判卷与讲评"环节。
优势计算非常简洁:
A^i=Ri−μRσR,μR=1G∑j=1GRj,σR=1G∑j=1G(Rj−μR)2 \hat{A}^i = \frac{R^i - \mu_R}{\sigma_R}, \quad \mu_R = \frac{1}{G}\sum_{j=1}^G R^j, \quad \sigma_R = \sqrt{\frac{1}{G}\sum_{j=1}^G (R^j - \mu_R)^2} A^i=σRRi−μR,μR=G1j=1∑GRj,σR=G1j=1∑G(Rj−μR)2
公式互译:这个公式如果翻译成图,会是一个标准化车间------原始奖励先进入均值减法工位(去除组内基准),再进入标准差除法工位(统一量纲),最终产出零均值、单位方差的优势产品。
策略更新时,Token-GRPO 优化语言策略,Gate-GRPO 优化路由策略。两者共享同一组优势值 A^i\hat{A}^iA^i,但作用于不同的概率分布:
function Update(E_group, Y_group, R_group, pi_theta, g_theta):
# 对应图 3-4 红色节点后的流程
mu = mean(R_group) # 组内均值
sigma = std(R_group) # 组内标准差
A = [(r - mu) / sigma for r in R_group] # [G],对应图 2-1 橙色节点
loss_token = 0
loss_gate = 0
for i from 1 to G do:
# Token-GRPO,对应图 2-1 流程
for t from 1 to |Y_group[i]| do:
ratio = pi_theta(y_t | x, y_<t; E_group[i]) / pi_old(y_t | x, y_<t; E_group[i])
clipped = clip(ratio, 1 - epsilon, 1 + epsilon)
loss_token += min(ratio * A[i], clipped * A[i]) # 对应图 2-1 紫色到红色
end
# Gate-GRPO,对应图 2-2 流程
for l from 1 to L do:
for t from 1 to N do:
experts = E_group[i][l][t] # [K],对应图 3-4 绿色节点
log_prob = sum([log(g_theta^l(k | h_{t,l})) for k in experts])
loss_gate += log_prob * A[i] # 对应图 2-2 点线回传
end
end
end
loss_total = (loss_token + loss_gate) / G # 对应公式 6
theta = OptimizerStep(theta, -grad(loss_total)) # 参数更新
return theta
end
执行快照:
- 第 4 行后:
A = [G],每个元素为标准化后的优势值 - 第 11 行内循环后:
ratio为标量,loss_token累积 token 级损失 - 第 18 行内循环后:
log_prob为选中专家的对数概率之和,形状标量 - 第 23 行后:
loss_total为联合损失标量,反向传播时同时影响 LM Head 和门控网络
核心结论:Token-GRPO 与 Gate-GRPO 不是两个独立训练阶段,而是同一个批次内的联合优化------它们共享 rollout 数据和优势估计,但梯度分别流向语言头和门控网络。
4. 实验与验证
4.1. 基准测试表现
4.1.1.1 图像理解任务
现在我们已经了解了 MoE-GRPO 的完整训练流程,接下来看看它在实际任务中的表现。研究团队以 InternVL3.5-1B 为骨干,将其改造为 MoE 架构:每层共 N=8N=8N=8 个专家,激活 K=2K=2K=2 个,总参数量 2.9B,激活参数量仅 1.3B。
在图像理解基准上,MoE-GRPO 与三种基线对比:
- Det-FT:确定性 Top-K 微调(传统做法)
- Stoch-FT-Multi:训练时多项式采样,但无 RL 优化
- Stoch-FT-Noise:训练时给门控分数加高斯噪声
实验结果显示,单纯引入随机性(Stoch-FT 系列)并不能稳定提升性能,因为它们没有显式优化路由策略。而 MoE-GRPO 通过 RL 直接优化专家组合,在 MME、MMBench、MMStar 等基准上全面领先,平均准确率比 Det-FT 高 2.0%。
想象那个分拣中心终于引入了绩效考核:不仅看最终包裹是否准时送达,还看分拣路径是否最优。以前靠老师傅经验(Det-FT)或随机试错(Stoch-FT)都做不到系统性提升,现在有了数据驱动的反馈循环,整体效率自然上去。
瓶颈热力
平均 54.0
平均 54.3
平均 56.0
InternVL 基座
Det FT
Stoch FT
MoE GRPO
图像基准
性能排序
Det FT: 专家固化
Stoch FT: 探索无方向
MoE GRPO: 策略最优
图注:图 4-1 展示图像理解任务的演化路径图。蓝色节点为共同基座,绿色节点为三种训练方案,紫色节点为评测基准。灰色子图以热力图形式标注了各方案的瓶颈性质:Det-FT 为红色瓶颈(固化),Stoch-FT 为黄色瓶颈(盲目),MoE-GRPO 为绿色通畅(策略驱动)。如图所示,从 naive 实现到工业级方案的每一步都解决了明确的痛点。
认知检查点:MoE-GRPO 的优势不是来自"随机性"本身,而是来自"奖励驱动的定向探索"------随机采样只是手段,组内相对优势才是导航仪。
4.1.1.2 视频理解任务
视频理解对模型的时序推理能力要求更高,也更考验专家路径的稳定性。在 MVBench 和 LongVideoBench 上,MoE-GRPO 同样保持领先,尤其在需要细粒度时序定位的任务上,优势更明显。
这验证了 MoE-GRPO 的一个深层假设:复杂任务需要更动态的专家组合。视频帧序列中,"动作识别"和"物体追踪"可能在不同时间步需要不同类型的专家处理,确定性路由难以适应这种动态需求,而策略优化可以学会"什么时候该切专家"。
状态演变
T1
T2
T3
T3
视频帧序列
时序编码器
动作专家
追踪专家
答案生成
正确判定
T1: 动作激活高
T2: 追踪激活高
T3: 混合激活
图注:图 4-2 展示视频任务中的状态演变图。黄色输入经蓝色编码器后动态路由到不同绿色专家,紫色节点生成答案。灰色子图用双箭头展示了同一批专家在不同时间步(T1/T2/T3)的激活状态变化。如图所示,MoE-GRPO 在视频场景下展现出时序自适应的专家切换能力。
4.2. 路由策略分析
4.2.1.1 专家多样性量化
实验数据给出了一个令人印象深刻的数字:在 2K 长度的视觉语言 token 序列上,Det-FT 的路由分布熵仅为 1.05,而 MoE-GRPO 达到 1.82。熵值翻倍意味着什么?意味着模型不再"逮着一只羊薅羊毛",而是真正利用了总体的模型容量。
从负载均衡角度看,Det-FT 的激活分布呈现严重的"赢者通吃"------少数专家承担了绝大部分计算,其余专家处于半闲置状态。MoE-GRPO 的激活图则像一块调色板,8 个专家各有其亮起的时刻。
想象一个乐团:Det-FT 就像整场音乐会只有两位乐手在演奏,其他乐手坐在台下领工资。MoE-GRPO 则让每一位乐手都在合适的乐章登台,整体音响层次自然更丰富。
对比视图
Token 序列
专家 1
专家 2
专家 3
专家 4
专家 5
专家 6
专家 7
专家 8
均匀分布
K
MoE GRPO: 熵 1.82
Det FT: 熵 1.05
图注:图 4-3 展示专家多样性的对比视图。左侧绿色节点群表示 MoE-GRPO 下各专家均有激活,汇聚为均匀分布;右侧紫色节点群表示 Det-FT 的偏斜分布。灰色子图以对比形式标注了两种模式的熵值差异。如图所示,MoE-GRPO 的简化概念图呈现出更均衡的激活模式。
4.2.1.2 任务级专家特化
多样性只是表象,更深层的问题是:专家有没有学会"分工"?
研究团队分析了 MVBench 的 20 个任务类别,计算了不同任务之间专家激活分布的 Jensen-Shannon 散度(JSD)。Det-FT 的任务间 JSD 仅为 0.06,意味着不同任务调用的专家组合几乎雷同;而 MoE-GRPO 的 JSD 达到 0.20,提升了三倍以上。
这说明 MoE-GRPO 不仅让更多专家参与进来,还让它们各自负责不同的子任务。例如,"动作识别"任务倾向于激活擅长时序建模的专家组合,而"物体计数"任务则偏好空间关系型专家。即使底层视觉特征相似,高层路由策略也能根据任务语义做出差异化决策。
任务二:物体计数
任务一:动作识别
知识图谱
任务语义
专家功能
路由策略
输入视频
时序专家
动作专家
答案 A
输入图像
空间专家
数量专家
答案 B
JSD 0.20
图注:图 4-4 展示任务级专家特化的知识图谱。上方两个子图分别展示不同任务激活不同专家组合(绿色节点),下方灰色知识图谱揭示了"任务语义 → 专家功能 → 路由策略"的映射关系。如图所示,MoE-GRPO 在任务语义空间与专家功能空间之间建立了可学习的映射。
认知检查点:高 JSD 不是人为规定的,而是 RL 奖励信号自然诱导的结果------模型发现"用不同专家处理不同任务"更容易答对,于是策略网络自动学会了这种特化。
5. 演化与决策
5.1. 从 Naive 到工业级
5.1.1.1 方案 A:纯随机探索
现在我们已经了解了 MoE-GRPO 的最终形态,接下来看看它是如何从最简单的 naive 实现一步步演化而来的。理解这个演化路径,对在实际系统中做技术选型至关重要。
方案 A:纯随机探索。最直觉的做法是------训练时完全随机选专家,不依赖门控分数。这确实解决了探索问题,但代价是灾难性的:模型在前向传播时使用了与输入语义毫不相干的专家,梯度信号被噪声淹没,训练根本不收敛。
想象分拣中心彻底取消智能系统,改为掷骰子决定包裹去向。探索是充分了,但绝大部分包裹被送错流水线,客户投诉率(损失函数)居高不下,系统无法从错误中学习有效规律。
错误路径
输入
随机采样
任意专家
输出
不收敛
梯度噪声
语义错配
图注:图 5-1 展示纯随机探索方案的错误路径图。黄色输入经蓝色随机采样后流向绿色专家,最终汇入红色退化结果。灰色子图用红色虚线标注了导致失败的两条错误路径:梯度噪声与语义错配。如图所示,没有引导的随机探索会迅速退化为不可学习状态。
5.1.1.2 方案 B:Top-K 微调
方案 B:Top-K 微调(Det-FT)。这是工业界最主流的做法,用预训练好的门控网络做确定性路由,只微调专家参数和语言头。它收敛稳定,但陷入我们之前反复提到的"贪心陷阱"------专家固化、负载失衡、泛化受限。
想象分拣中心保留了老系统,但只允许老员工在原有路线上微调操作手法,不给新员工任何机会,也不允许尝试新路线。短期看效率稳定,长期看系统僵化。
瓶颈热力
高分
高分
粗线
粗线
输入
Top K 打分
专家 A
专家 B
输出
收敛但固化
探索缺失
过拟合风险
图注:图 5-2 展示 Top-K 微调方案的瓶颈热力图。蓝色门控节点只打开通往少数绿色专家的通路,橙色节点表示收敛但固化的结果。灰色子图用红色粗线标注了该方案的两个性能瓶颈:探索缺失与过拟合风险。如图所示,粗线代表瓶颈路径,其粗细反映了问题严重程度。
5.1.1.3 方案 C:MoE-GRPO
方案 C:MoE-GRPO。它在方案 B 的基础上引入了三个关键改进:
- 多项式采样:用概率采样替代确定性裁剪,保留探索弹性;
- 组内相对优势:用可验证奖励驱动路由策略学习;
- 模态感知引导:通过裁剪底部 25% 无关专家,缩小搜索空间。
这三者构成了从 naive 到工业级的完整阶梯:没有 1,则无法探索;没有 2,则探索无方向;没有 3,则训练不稳定、收敛慢。
采样
采样
优势回传
演化路径
解决噪声
解决固化
方案 A: 纯随机
方案 B: Top K
方案 C: 策略优化
输入
门控网络
模态掩码
专家组合
专家组合
答案生成
奖励反馈
图注:图 5-3 展示从 naive 到工业级的演化路径图。主流程为黄色输入经蓝色门控、橙色掩码、绿色专家到紫色输出,灰色节点为奖励反馈并形成闭环。下方灰色子图以阶梯形式展示了三种方案的演化关系,每一步都标注了"解决了什么问题"。如图所示,MoE-GRPO 是前两种方案缺陷的系统性修补。
核心结论:演化路径不是简单的功能叠加,而是"问题驱动"的递进------每一步都针对前一步的致命缺陷引入最小必要改动。
5.2. 关键设计抉择
5.2.1.1 模态引导 vs 自由探索
在实际落地 MoE-GRPO 时,第一个需要做的决策是:要不要加模态感知引导?
自由探索 (不加引导)保留了最大的策略空间,理论上能找到全局最优路由。但在视觉语言模型的早期训练阶段,路由空间是天文数字(NLN^LNL 量级),自由探索会导致收敛极慢,且容易陷入"把所有 token 都送给同一个万金油专家"的局部最优。
模态引导(裁剪底部 25%)通过先验知识(视觉 token 大概率不需要文本型专家)压缩搜索空间,让 RL 代理把注意力集中在有意义的组合上。实验表明,这不仅能加速收敛,还能提升最终策略的质量------因为被剪掉的那 25% 专家在统计上确实对当前模态贡献甚微。
想象你在一个超级图书馆找书:自由探索相当于从第一排书架开始一本本翻,模态引导相当于先告诉你"社科类在 3 楼、理工类在 5 楼"------你仍然需要在楼层内自行探索,但至少不会浪费时间在错误的楼层。
后果对比
分支 B:自由探索
分支 A:模态引导
掩码裁剪
全局 softmax
门控输出
候选专家
采样选择
稳定收敛
门控输出
全部专家
采样选择
收敛缓慢
决策点
训练时间: 1x
训练时间: 3x
图注:图 5-4 展示模态引导与自由探索的决策分支图。上方两个子图分别展示两种选择的后果链,下方灰色子图对比了训练时间的相对倍数。如图所示,模态引导分支以绿色标注(稳定收敛),自由探索分支以红色标注(收敛缓慢),决策者需要在搜索空间完整性与训练效率之间做权衡。
5.2.1.2 联合优化 vs 分阶段训练
第二个关键抉择是:Token-GRPO 和 Gate-GRPO 是同时训练,还是分阶段训练?
分阶段训练(先 Token 后 Gate,或反之)实现简单,两个阶段各自独立调试。但这样做的问题在于两个目标存在耦合:语言头生成质量依赖于专家路径提供的特征,而路由策略的学习又依赖于语言头能否给出准确的奖励信号。分阶段训练会造成"鸡生蛋、蛋生鸡"的错位。
联合优化 (同时更新)虽然实现复杂(需要小心平衡两个损失的梯度尺度),但它允许两个组件在训练过程中互相适应。实验团队发现,联合优化的最终性能显著优于分阶段基线,且收敛速度更快------因为正确的路由决策和正确的 token 生成是协同演化的。
接口对接
分阶段
联合优化
联合损失
语言头梯度
门控网梯度
同步收敛
阶段一损失
语言头收敛
阶段二损失
门控网收敛
耦合风险
损失平衡
梯度裁剪
图注:图 5-5 展示联合优化与分阶段训练的接口对接图。上方左侧子图展示联合优化中橙色损失节点同时向两个绿色模块输出梯度,右侧子图展示分阶段的串行依赖。下方灰色子图标注了联合优化需要额外处理的接口问题:损失平衡与梯度裁剪。如图所示,联合优化虽然实现复杂,但避免了分阶段的误差累积。
6. 系统全景与知识图谱
6.1. 总体结构图
现在我们已经走完了从背景到实验、从模块到决策的全部环节,最后把视野拉到最高层,看看 MoE-GRPO 作为一个系统的完整样貌。
协同设计
参数回流
参数回流
虚线依赖
多模态输入
编码层
MoE 计算层
输出层
奖励计算
策略更新
参考策略
Token 策略
Gate 策略
共享优势
图注:图 6-1 展示 MoE-GRPO 的总体结构图。黄色输入节点流入蓝色编码层,经绿色 MoE 计算层到紫色输出层,橙色节点计算奖励,红色关键节点执行策略更新,并通过点线回流到绿色与紫色模块。灰色参考策略节点以虚线连接到更新节点,表示 KL 散度约束的缺失(MoE-GRPO 无需参考模型)。下方灰色子图展示了 Token 策略、Gate 策略与共享优势三者之间的协同设计关系。如图所示,整个系统形成了一个从输入到奖励再到参数更新的完整闭环。
6.2. 知识图谱
概念层
组内相对
模态引导
稀疏激活
门控网络
专家池
Top K 局限
RL 优化
MoE GRPO
任务特化
条件计算
策略梯度
可验证奖励
图注:图 6-2 展示 MoE-GRPO 的知识图谱。黄色根节点"稀疏激活"分化为蓝色门控网络与绿色专家池两个核心概念;蓝色节点进一步揭示 Top-K 局限,进而导向橙色 RL 优化,最终汇入红色 MoE-GRPO 节点,并输出到灰色任务特化。下方灰色概念层标注了三个底层理论支柱:条件计算、策略梯度、可验证奖励。如图所示,整个知识网络从 MoE 基础概念出发,经过问题识别,最终收敛到解决方案与特化效果。
7. 总结与闭环
7.1. 这在实际使用中意味着什么
到这里,我们已经完整走完了 MoE-GRPO 的技术脉络。现在回到最实际的问题:如果你的团队正在训练一个视觉语言 MoE 模型,这套方法论能带来什么改变?
第一,训练阶段 :你需要为每个样本生成 GGG 条 rollout(论文中使用 G=8G=8G=8),这意味着训练显存和计算量相比标准微调会有显著增加。但这是"花训练时间买推理质量"------推理阶段仍然只激活 KKK 个专家,计算量与 Det-FT 完全一致。
第二,超参调试 :学习率建议设置在 1e−61e-61e−6 量级(比常规 SFT 更保守),因为门控网络的策略更新对步长敏感。模态裁剪的阈值(底部 25%)是一个稳健选择,但在专家数 NNN 很大时可以适当放宽。
第三,监控指标 :除了常规的验证集准确率,建议同时监控路由熵 和任务间 JSD。如果熵在下降而 JSD 停滞,说明模型正在固化而非特化,需要检查奖励信号或增大采样温度。
闭环设计
训练投入
路由熵上升
任务 JSD 上升
推理效率不变
泛化性能提升
部署收益
监控熵值
调整温度
优化奖励
图注:图 7-1 展示从训练投入到部署收益的闭环设计图。橙色投入节点分流到两个绿色指标节点,共同汇入紫色效率节点,最终到达红色性能节点与灰色收益节点。下方灰色子图展示了工程落地时的三个监控-反馈闭环。如图所示,MoE-GRPO 的工业价值在于"训练时多算,推理时不多算,最终答得更准"。
认知检查点:MoE-GRPO 不是让 MoE 变得更"重",而是让同样的稀疏算力产生更"聪明"的路由决策------训练阶段的额外开销买的是专家组合的优化,而非参数量的膨胀。
附录:一致性巡检与图码索引
| 图 ID | 类型 | 对应正文 | 对应伪代码 |
|---|---|---|---|
| 图 1-1 | 简化概念图 | 1.1.1.1 MoE 基础数据流 | --- |
| 图 1-2 | 错误路径图 | 1.1.1.2 Top-K 退化风险 | --- |
| 图 1-3 | 时空维度图 | 1.2.1.2 VLM 中 MoE 位置 | --- |
| 图 2-1 | 简化概念图 | 2.1.1.1 Token-GRPO 流程 | Rollout 函数整体 |
| 图 2-2 | 因果链图 | 2.1.1.2 Gate-GRPO 原理 | Update 函数 Gate 部分 |
| 图 2-3 | 因果链图 | 2.2.1.1 模态感知动机 | Rollout 函数第 15 行 |
| 图 2-4 | 决策分支图 | 2.2.1.2 裁剪原理 | Rollout 函数第 14-16 行 |
| 图 3-1 | 简化概念图 | 3.1.1.1 输入编码层 | Rollout 第 6 行 |
| 图 3-2 | 完整细节图 | 3.1.1.2 专家计算层 | Rollout 第 17-23 行 |
| 图 3-3 | 简化概念图 | 3.1.1.3 输出生成层 | Rollout 第 27-30 行 |
| 图 3-4 | 完整细节图 | 3.2.1.1 Rollout 阶段 | Rollout 函数整体 |
| 图 4-1 | 演化路径图 | 4.1.1.1 图像基准对比 | --- |
| 图 4-2 | 状态演变图 | 4.1.1.2 视频时序自适应 | --- |
| 图 4-3 | 对比视图 | 4.2.1.1 专家多样性 | --- |
| 图 4-4 | 知识图谱 | 4.2.1.2 任务级特化 | --- |
| 图 5-1 | 错误路径图 | 5.1.1.1 纯随机探索 | --- |
| 图 5-2 | 瓶颈热力图 | 5.1.1.2 Top-K 微调 | --- |
| 图 5-3 | 演化路径图 | 5.1.1.3 MoE-GRPO 方案 | --- |
| 图 5-4 | 决策分支图 | 5.2.1.1 模态引导抉择 | --- |
| 图 5-5 | 接口对接图 | 5.2.1.2 联合优化抉择 | Update 函数整体 |
| 图 6-1 | 总体结构图 | 6.1 系统全景 | Rollout + Update |
| 图 6-2 | 知识图谱 | 6.2 概念网络 | --- |
| 图 7-1 | 闭环设计图 | 7.1 实际部署 | --- |
颜色语义一致性:
- 黄色(#FFF9C4):输入/原始数据节点
- 蓝色(#BBDEFB):结构/网络层节点
- 绿色(#C8E6C9):运算/专家/执行节点
- 紫色(#E1BEE7):结果/输出节点
- 橙色(#FFCC80):流程/控制/归一化节点
- 红色(#EF9A9A):关键/奖励/更新节点
- 灰色(#F5F5F5):辅助/上下文/标注节点
- 红色虚线(stroke-dasharray: 5 5):常见错误路径或退化情况
- 点线(stroke-dasharray: 3 3):梯度/反向传播/参数回流
- 粗线(stroke-width:3px):瓶颈路径
线型语义一致性:
- 实线箭头:数据流
- 虚线箭头:控制流/依赖/反馈
- 点线箭头:梯度/反向传播
- 粗线箭头:瓶颈路径或高负载通道