Token导航 LogoToken导航

AI 资讯 · 科技行者

循环模型与专家组合如何节省参数

更新 2026-11-02科技行者正文 5939字阅读约 19分钟1 张图片


2015 年前后,深度学习圈子里流行一种说法:模型越大越好,参数越多越聪明。可是没过几年,大家就撞上了一堵墙。

训练一个万亿参数的模型,光是存储和搬运这些参数的开销就足以让大部分团队望而却步。于是业界分裂成了两条路。一条路是稀疏混合专家模型,简称 MoE

**MoE(Mixture of Experts,混合专家模型)**:把一个大网络拆成很多个小的"专家"子网络,每次只激活其中几个来处理输入,这样参数总量可以很大,但每次实际计算量很小。

这条路的代表是 DeepSeek 和 Kimi 这些大模型,它们在每一层堆几百个专家,每个 token 只挑两三个来用。参数堆得巨大,但计算量压得很低。

另一条路叫循环模型,思路完全相反。不堆参数,而是把同一组层反复用好几遍,让模型多算几步来换取更强的能力。

这两条路看起来风马牛不相及,一个在"存"上做文章,一个在"算"上做文章。但本文的作者们盯着这两条路看了很久,突然意识到一件事:这两条路其实是互补的,而且互补得恰到好处。

**循环模型(Looped Transformer)**:不堆叠更多层,而是把同一个层块反复计算多次,用计算量换取更强的建模能力,代表工作是 Universal Transformer 和近年的 Huginn。

问题来了,没人试过把这两条路好好拼在一起。拼起来容易,但拼得巧妙很难。这篇论文要回答的问题就是:一个混合专家模型如果要做成循环结构,专家应该怎么摆?每一层放几个专家?循环几次?哪些参数该共享,哪些不该共享?

这不是一个容易拍脑袋回答的问题,因为稍微调整一下比例,结果可能天差地别。

专家为什么用得这么少

要理解这篇论文想解决什么麻烦,得先搞懂稀疏 MoE 的一个天生缺陷。

一个 MoE 层里如果堆了 64 个专家,但每次只从里面挑 2 个来算,那意味着每一次路由决策,这个 token 只看到了 64 个专家里的 2 个,剩下 62 个压根没机会露面。专家越多,每个专家被用到的频率就越低。这就像一个巨大的图书馆,藏书上万册,但你每次借书只能借两本,久而久之,大部分书可能永远没人翻开。

论文作者们做了一个关键的观察。循环模型天生就能缓解这个问题。因为每一次循环,都是一次新的路由决策,同一层的专家池子可以在不同的循环轮次里被重新挑选一遍。这就相当于,你还是只能借两本书,但图书馆允许你今天借两本、明天再去借两本、后天还能再借两本,几轮下来,你翻阅过的书目数量自然就上去了。

论文里给出的数字很直观,一个 token 在不循环的情况下只能接触 16 个专家,循环 8 次之后能接触到 36 个,几乎翻了一倍还多。

这个发现让作者们意识到,循环和稀疏专家不是两个孤立的技巧,而是可以彼此放大效果的组合拳。于是他们设计了一套方法,叫做 Foil。

Foil 怎么把专家"拍扁"

Foil 的第一个核心动作叫"flatten the experts",翻译过来就是把专家层拍扁。

具体怎么拍扁?假设原本的循环模块有 8 层,每层 8 个专家,循环 2 次。Foil 的做法是,把层数砍半变成 4 层,但每层的专家数翻倍变成 16 个,同时循环次数也翻倍变成 4 次。这样一轮操作下来,模型存储的专家总参数没变,每个 token 实际调用的专家次数也没变,但是每一次路由决策可选的专家池子从 8 个变成了 16 个。

**Flatten(拍扁)**:把循环模块里的层数减少、每层的专家数量增加、循环次数相应增加,在保持总参数和计算量不变的前提下,扩大每次路由决策的候选专家池。

为什么这个操作会有用?论文给出一个很形象的解释,拍扁之后,模型的"等效专家数"会以乘法的方式增长。原本是 8 层 乘 8 个专家 乘 2 次循环,等于 128 个等效专家;拍扁三次之后变成 64 乘 1 乘 16,等效专家数暴涨到 1024。这个数字不是说真的多出了专家,而是说如果把这个循环模型完全展开成一个不循环的巨大模型,它相当于拥有了这么多个专家。

这里有个类比特别贴切。想象一家餐厅,后厨只有 8 个厨师,但是餐厅决定把晚餐时段拆分成 8 轮点菜,每轮点菜时顾客都可以从这 8 个厨师里重新挑 2 个来给自己做菜。如果不拆分轮次,直接把晚餐压缩成 2 轮,顾客选择厨师的机会就少了很多,很可能某几个厨师的招牌菜你一整晚都尝不到。Foil 做的事情就是把点菜的轮次拆得更细,让每一次选择都有更丰富的厨师可挑,而后厨总共还是这 8 个人,没多雇一个。

实验数据证实了这个设计的有效性。在训练 200 亿 token 之后,三种不同程度拍扁的 Foil 模型,损失全部低于没有拍扁的基线模型。训练到 1000 亿 token 时,拍扁程度越深,损失越低,拍得最彻底的 Foil-1 比基线低了 0.012 nat,下游任务的准确率也持平或略有提升。

但光拍扁专家还不够,论文作者发现了一个隐藏的代价。

拍扁丢掉的东西要补回来

拍扁专家层的时候,有一个副作用容易被忽略,层数变少了,意味着原本挂在那些层上的注意力参数也跟着被砍掉了。

打个比方,原来 8 层模型,每层都有自己独立的一套注意力参数,一共 8 套。拍扁成 1 层之后循环 16 次,如果还是老规矩共享注意力,那就只剩 1 套注意力参数被反复使用 16 遍。专家的参数总量没变,但注意力的参数硬生生缩水了。

论文管这种会丢失注意力参数的拍扁模型叫 proto-Foil,作为对照组。

**proto-Foil(原型 Foil)**:拍扁了专家层,但依然像传统循环模型一样,所有循环轮次共享同一套注意力参数,这是本文用来做对比实验的基线版本。

作者们的解决方案是把注意力也"解绑",让每一轮循环都拥有自己专属的一套注意力参数,不再共享。这个操作不会增加任何计算量,纯粹是把原本会被拍扁操作丢掉的参数预算,重新用来给每一轮循环配一套独立的注意力权重。这就是 Foil 名字里"untie the attention"的含义。

**Untie Attention(解绑注意力)**:让循环的每一轮都拥有自己独立的注意力参数,而不是像传统循环模型那样所有轮次共享同一套注意力,专家和路由器依然保持共享。

这里也有个很贴切的生活场景。想象一个老师要给同一批学生讲四遍同一份教案。如果老师每一遍讲课都原封不动照搬同一个语气、同一套板书逻辑,那四遍下来学生获得的信息增量其实有限,因为处理信息的方式是完全一样的,只是内容过了四遍。但如果老师每一轮都用不同的讲解角度和侧重点去讲同一份教案,哪怕教案本身没变,学生每一轮听到的东西都会不一样,理解会更立体。解绑注意力做的就是这件事,专家好比教案内容不变,但注意力好比讲解方式,每一轮循环都给它一次重新组织信息的机会。

实验结果印证了这个设计的分量。在四种不同拍扁程度的模型里,解绑注意力的版本全部跑赢了共享注意力的对照组,而且拍得越扁,差距越大。训练到 1000 亿 token 时,拍得最彻底的那一对模型之间,损失差了 0.049 nat,这在语言模型的训练损失尺度上已经是相当显著的差距了。下游任务上,解绑注意力的模型在准确率上平均领先 3.3 个百分点。

如果没有解绑这一步会怎样?论文里给出了明确的反例,共享注意力的 proto-Foil 系列,拍扁一次之后损失确实下降了,但再往下拍扁,损失反而开始回升,也就是说,拍扁带来的收益在共享注意力的约束下很快就被另一个代价吃掉了,而解绑注意力之后,这个代价被消除,拍扁的收益可以持续释放到底。

负载均衡不等于专家健康

接下来论文做了一系列细致的消融实验,试图搞清楚这套设计到底为什么有效,其中一个发现挑战了业界长期以来的常识。

长期以来,判断一个 MoE 模型里专家利用得好不好,大家用的标准指标叫负载均衡,意思是每个专家被调用的频率是不是足够平均。但这篇论文指出,负载均衡这个指标其实会骗人。

**负载均衡(Load Balance)**:衡量 MoE 模型里各个专家被调用频率是否均匀的指标,均匀程度用 Jain 公平性指数衡量,数值越接近 1 表示负载越平均。

论文发现一个很反直觉的现象,拍扁程度越深的 Foil 模型,负载均衡的数值反而越低,专家的调用频率越来越不均匀。按照传统标准,这应该是个坏信号,说明路由决策开始偏心了,某些专家被过度青睐,另一些被冷落。

但同时,拍扁程度越深的模型,损失反而越低,模型表现反而越好。负载不均匀,但模型更聪明了。

这是怎么回事?作者引入了另一个指标来解释这个矛盾,叫路由置信度,用一个叫 MMR 的数值来衡量。

**MMR(Median Margin Ratio,中位数边际比率)**:衡量路由器做选择时有多笃定的指标,用排名第一的专家概率除以排名中位数的专家概率,数值越大说明路由器越有主见,不是在随便挑。

拍扁程度越深的模型,MMR 数值越高,说明路由器挑专家挑得越来越果断,而不是犹豫不决地在一堆专家里随便抓两个。论文用这个发现重新解读了负载不均匀这件事,负载不均匀未必是坏事,它可能恰恰反映了路由器学会了分辨好坏,知道哪些专家更适合当前这个 token,而不是不管三七二十一平均分配任务。

为了验证这个推论,作者还设计了一个"遮蔽实验"。他们把流量最少的那 10% 专家直接屏蔽掉,看损失会不会明显上升,再拿同样流量规模的随机专家组合做对照。结果是,八个模型里有七个,被屏蔽的低流量专家组,损失上升的幅度比随机挑的专家组更大。这说明那些看似"冷门"的专家,其实并不是可有可无的摆设,它们只是没那么常被用到,但一旦被用到,往往承担着特定的、重要的功能。

这里可以类比一个急诊室场景。医院里有一位专攻罕见病的专家医生,平时门诊量很少,大部分时间坐冷板凳。如果用"接诊频率"这个单一指标去评判这位医生的价值,接诊量低,医院可能会觉得这个岗位可有可无,想要裁撤。但如果真把这位专家调走,等到那个罕见病患者真正出现的时候,医院就没人能看了。接诊频率低不等于没用,恰恰相反,有时候正说明这是一个需要精准匹配才会被激活的专长。专家 MoE 系统里那些低流量专家,很可能就是这种角色。

宽而稀疏的层,循环收益衰减得更慢

论文还做了一组对照实验,专门研究"层应该设计得宽一点还是窄一点"这个问题,所谓宽,指的是每层专家数量多、但层数少;窄则相反,层数多但每层专家少。

实验发现,越宽越稀疏的层,从增加循环次数里获得的收益衰减得越慢。换句话说,如果一层塞了很多专家但每次只激活两个,这种高度稀疏的设计配合多轮循环效果特别好,循环八轮下来依然能持续获得明显的损失下降,而层数多、每层专家少的设计,循环带来的边际收益很快就不明显了。

更进一步,作者发现"加宽每层的专家数"和"增加循环轮数"这两个操作会互相放大对方的效果。把每层专家数翻倍,在循环两轮的情况下只能带来 0.038 nat 的提升,但如果循环次数增加到八轮,同样翻倍专家数带来的提升能到 0.049 nat。反过来也成立,循环轮数增加带来的收益,在专家层更宽的配置下也更可观。

这组实验给出的设计建议很明确,一个稀疏的循环 MoE 模型,应该尽量往"每层专家多、循环次数多"这个方向去设计,而不是简单地堆层数。

路由置信度有个"顶峰"信号

最后一个值得细讲的发现,关于路由置信度 MMR 随着循环轮次变化的曲线形状。

论文观察到,很多模型的 MMR 曲线不是一路上涨到底的,而是先涨到一个峰值,然后开始回落。比如拍得最彻底的 proto-Foil-1 和 Foil-1,都呈现出先升后降的模式。而损失表现最好的 Foil-2,它的 MMR 曲线没有出现这个回落的峰值,是一路走高走到最后一轮。

作者把这个现象总结成一条实用的判断依据,一旦某个模型的路由置信度在某一轮循环达到峰值之后开始下滑,这往往意味着继续加深拍扁或者继续增加循环轮数,带来的收益已经所剩无几。Foil-1 出现了峰值回落,它的最终损失确实比没有峰值回落的 Foil-2 要高一点,两者差了大约 0.002 nat,统计上相当于三个标准误差。

这个发现相当于给设计者提供了一把尺子。不需要穷举所有的拍扁配置去试验,只要观察训练过程中路由置信度曲线有没有出现"先涨后跌"的拐点,就能大致判断当前的循环深度或拍扁程度是不是已经接近收益饱和的那个点了。

这篇论文也坦诚地列出了几个局限。他们没有设置一个参数和计算量完全对等的非循环对照模型,因为那样做会牵涉到专家激活比例的变化,混淆了变量。除了一次种子重复实验外,大部分结果只跑了一个随机种子,训练步数之间也不是完全独立的,所以误差估计偏乐观。所有实验都只在一个固定的模型宽度上做的,没有验证更大规模下结论是否依然成立。消融实验里用的是共享注意力的版本,而不是解绑注意力的完整 Foil,所以这些消融结论的具体数值在真正的 Foil 上可能会有出入。

写在后面

读这篇论文时,最让我意外的不是 Foil 本身的设计,其实"拍扁加循环"这个思路一旦讲清楚,并不算特别复杂,真正让我多想了一会儿的,是负载均衡这个指标被质疑的那部分。

过去很多年,业界默认负载越均匀越好,各种辅助损失函数都在拼命把专家使用率拉平。这篇论文用实验证明,拉平这件事本身不是目的,专家被合理地差异化使用,可能才是更接近"智能"的状态。这让我想起另一个完全不相关的领域,人力资源管理里也有类似的争议,一个团队如果强行把每个人的工时和任务量拉得一模一样,看起来公平,但未必是团队效率最高的状态,有些人就是该多担重要任务,有些人就是该少插手,差异化分配往往比平均分配更出活。

论文里那个"遮蔽实验"的设计也挺巧妙的,用随机对照组去验证冷门专家到底是不是真的没用,这个思路本身比直接看流量数字要扎实得多。它提醒我,很多时候一个指标看起来低,不代表这个东西价值低,可能只是它被触发的场景本身就稀少。

这篇论文留下的一个开放问题是,这套拍扁加解绑注意力的思路,在更大规模的模型上是否依然成立。目前的实验都停留在五亿参数级别,而现实世界里真正需要省参数、抠计算量的,恰恰是那些千亿甚至万亿参数的庞然大物。如果把 Foil 这套设计搬到那个尺度上,拍扁出来的专家池子会不会因为维度过大反而稀释了路由的辨别力?这是一个值得继续追问下去的问题。

Q&A

Q1:Foil 是什么?

A:Foil 是一种改进循环混合专家模型的设计方法,它通过拍扁专家层,减少层数同时增加每层专家数和循环次数,并给每一轮循环配上独立的注意力参数,在不增加参数和计算量的前提下显著降低模型训练损失。

Q2:拍扁专家层会不会损失模型性能?

A:不会,反而会提升性能。论文实验显示,拍扁程度越深的 Foil 模型,在 1000 亿 token 训练后损失越低,最彻底的拍扁版本比基线低 0.012 nat,下游任务准确率也持平或更好。

Q3:负载不均衡是不是意味着 MoE 模型出了问题?

A:不一定。论文发现拍扁后的模型负载均衡度下降但整体表现更好,同时路由置信度指标 MMR 上升,说明路由器学会了更果断地挑选合适专家,负载不均匀可能反映的是健康的专家分化而非故障。

文章标签大模型

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。