强化学习驱动自我改进:MiMo-V2.6的工程化扩展与落地实践 1. 从自我改进这个词说起为什么强化学习突然成了大模型竞赛的胜负手如果你最近半年一直在跟大模型的进展应该能感觉到一个明显的变化以前大家比的是参数规模、训练数据量、榜单分数现在越来越多的团队开始把注意力放到一个更微妙的方向上——模型能不能在部署之后继续变强。这个方向在学术圈有个听起来很学术的名字叫自我改进self-improvement但说白了就是一句话模型能不能自己给自己出题、自己判卷、自己总结错题然后越练越好。小米这次发布的 MiMo-V2.6 论文核心命题就落在这个点上。从标题用强化学习扩展自我改进来看它想解决的不是模型能不能自我改进这个是非题而是自我改进这套机制能不能被规模化地放大这个工程题。这两者的区别很大。前者是实验室里跑通一个 demo后者是要让这套循环在更大的模型、更复杂的任务、更长的训练周期里依然稳定收敛不崩、不退化、不陷入自我欺骗。我先把这篇论文要讲的事情用一句话概括它试图用强化学习作为放大器把模型自我生成数据、自我评估、自我迭代这套流程从一个小规模的可控实验扩展成一套可以持续运转的训练范式。关键词有三个——强化学习、自我改进、扩展。这三个词缺一不可因为如果只谈自我改进不谈强化学习那就是在讲数据增强如果只谈强化学习不谈自我改进那就是在讲 RLHF 那一套如果只谈扩展不谈前两者那就是在讲算力堆叠。三者合在一起才是这篇论文真正的技术主张。那为什么这件事值得单独写一篇博文来拆因为自我改进 强化学习这个组合恰恰是当前大模型训练里最容易踩坑、也最容易被过度包装的方向。很多团队在论文里把自我改进讲得很美但真正落地时会遇到一堆问题模型自己生成的数据分布会漂移、自我评估会失真、强化学习的奖励信号会被人为放大导致 reward hacking、迭代几轮之后模型开始背题而不是学能力。MiMo-V2.6 这篇论文的价值不在于它提出了一个全新的概念而在于它试图给出这套机制在规模化场景下的工程解法。这篇文章适合谁看如果你是大模型训练方向的工程师想了解自我改进这套循环在工程上怎么搭、强化学习信号怎么设计、扩展时哪些地方会炸那这篇值得细读。如果你是算法研究者关心自我改进的理论边界和失效模式这篇也能给你一些实证参考。如果你只是对大模型进展感兴趣的普通读者那你可以把这篇当成一个窗口看看当前一线团队在让模型自己变强这件事上到底走到了哪一步。下面我会从机制拆解、强化学习信号设计、扩展时的工程细节、以及实际落地时的坑这几个角度把这篇论文背后的东西讲透。2. MiMo-V2.6 的自我改进循环到底长什么样四个环节的拆解2.1 自我改进不是模型自己训练自己这么简单很多人第一次听到自我改进这个词脑子里浮现的画面是模型自己写代码、自己跑实验、自己改自己。这个理解方向没错但太粗糙了。真实的自我改进循环至少要拆成四个环节生成Generation、评估Evaluation、筛选Selection、更新Update。这四个环节环环相扣任何一个环节出问题整个循环就会退化。MiMo-V2.6 论文里对这四个环节的处理是它区别于早期自我改进工作的关键。早期的做法通常是让模型对一批问题生成多个回答然后用一个固定的奖励模型打分挑出高分回答做微调。这套流程听起来合理但有个致命问题——奖励模型是固定的模型会很快学会讨好这个奖励模型而不是真正提升能力。这就是典型的 reward hacking。MiMo-V2.6 的思路是把这个循环里的评估环节也动态化。它不再依赖一个静态的奖励模型而是让评估信号本身也随着训练过程演化。具体怎么演化论文里给的方案是把评估拆成两部分一部分是基于可验证结果的硬信号比如数学题答案对不对、代码能不能跑通另一部分是基于模型自身判断的软信号比如回答的逻辑一致性、推理步骤是否完整。硬信号提供稳定的锚点软信号提供更细粒度的区分度。两者结合既避免了纯硬信号太稀疏的问题也避免了纯软信号容易被 hack 的问题。这个设计背后的逻辑其实很朴素自我改进的瓶颈从来不是生成能力而是评估能力。模型生成一百个回答不难难的是从这一百个里挑出真正好的那十个。如果评估环节不可靠那生成得再多也是白搭甚至越练越偏。所以 MiMo-V2.6 把大量精力花在评估信号的设计上这是它和很多同类工作拉开差距的地方。2.2 生成环节的多样性控制为什么不能让模型只生成它擅长的题生成环节看起来最简单实际上有个很容易被忽略的坑如果让模型自由生成训练数据它会倾向于生成自己擅长的、容易的题目因为这样生成的回答质量高、评估分数好看。结果就是训练集越来越偏向模型已经掌握的能力那些它不擅长的、真正需要提升的方向反而被忽略了。这在强化学习里叫探索不足。MiMo-V2.6 在生成环节做了一个多样性约束。具体做法是在生成 prompt 的时候不是完全随机采样而是根据模型当前的能力分布做加权采样——对那些模型表现差的领域提高采样概率对那些已经很好的领域降低采样概率。这个思路借鉴了课程学习Curriculum Learning的思想但实现上更动态因为能力分布本身是随训练过程变化的。这里有个工程细节值得说能力分布怎么估计论文里用的是滑动窗口的方式对最近若干轮迭代里模型在各个任务类别上的得分做统计然后据此调整采样权重。窗口大小是个超参数太小会导致权重抖动太大会导致响应滞后。论文里给的参考值是几百到上千个样本的窗口具体取值要看任务复杂度和迭代频率。这个细节在论文里可能只是一句话但实际复现的时候窗口大小选不好整个循环的稳定性会差很多。2.3 筛选环节的难度分层不是所有好答案都值得学筛选环节是 MiMo-V2.6 比较有特色的地方。大多数自我改进工作做筛选时就是简单地按分数排序取 top-k。但 MiMo-V2.6 做了一个难度分层它把生成的样本按难度分成几档然后在每一档里分别做筛选而不是全局排序。为什么要这么做因为全局排序会导致训练集被简单题主导。简单题模型容易做对分数自然高全局排序后简单题会占据大部分名额难题即使模型做对了也会因为分数不够高而被挤掉。但恰恰是难题上的正确回答对模型能力提升的价值最大。难度分层筛选就是为了保证每个难度档都有足够的样本进入训练集。难度怎么定义论文里用的是模型在当前题目上的历史通过率。通过率高的算简单通过率低的算难。这个定义是动态的因为随着训练进行原本难的题会变简单难度档位会自动调整。这个设计我觉得挺巧妙因为它不需要人工标注难度完全靠模型自己的表现来定义扩展性好。2.4 更新环节的保守策略为什么不能每轮都全量更新更新环节是最容易出问题的地方。自我改进循环里每一轮生成的数据都带有当前模型的偏见如果每轮都用新数据全量更新模型几轮之后模型就会严重过拟合到自己的偏见上出现能力退化。这在文献里叫模型崩溃Model Collapse。MiMo-V2.6 在更新环节采取了保守策略每轮更新时新数据只占训练集的一部分另一部分是从历史数据里采样的。历史数据的比例是个关键超参数论文里给的参考是 30% 到 50% 之间。这个比例太低模型会快速漂移太高自我改进的效果会被稀释。实际调的时候我建议从 50% 开始试观察几轮迭代后模型在保留集上的表现如果开始下降就提高历史数据比例。另外更新时的学习率也要比正常微调小。因为自我改进的数据分布和原始训练数据分布有差异学习率太大会导致模型快速偏离原始能力。论文里用的学习率大概是正常微调的十分之一到五分之一。这个细节很关键很多复现失败就是因为学习率没调对。3. 强化学习信号怎么设计硬信号、软信号与动态权重的三角关系3.1 硬信号可验证结果是自我改进的锚硬信号指的是那些可以被程序自动验证的结果。数学题有标准答案代码题可以跑单元测试逻辑推理题可以检查最终结论是否自洽。这类信号的最大优点是不会被模型 hack因为对错是客观的。但缺点是稀疏——很多任务没有可验证的结果或者验证成本太高。MiMo-V2.6 对硬信号的使用策略是只在有硬信号的任务上做强化学习没有硬信号的任务只用软信号做筛选不做梯度更新。这个策略听起来保守但很务实。因为强化学习最怕的就是奖励信号不可靠与其用一个不可靠的信号去更新模型不如不用。这里有个实操经验硬信号的设计要尽量细粒度。比如数学题不要只给对/错二值信号而是给最终答案对但步骤有错、步骤对但最终答案错、全对、全错这样的多级信号。细粒度信号能让强化学习更快找到正确的更新方向。论文里虽然没有明确说这一点但从它报告的实验曲线来看细粒度信号带来的提升是明显的。3.2 软信号模型自评的可靠性怎么保证软信号是模型自己对回答质量的判断。这部分最容易出问题因为模型自评本身就可能不准而且随着训练进行模型会学会给自己打高分导致软信号失真。MiMo-V2.6 对软信号的处理有几个值得借鉴的点。第一软信号不单独使用而是和硬信号做一致性校验。如果软信号和硬信号冲突以硬信号为准。第二软信号的评估模型和生成模型不是同一个而是用历史版本的模型做评估这样评估模型和当前模型之间有时间差不容易被当前模型 hack。第三软信号的权重是动态调整的训练初期权重低随着硬信号覆盖率提升软信号权重逐步提高。这个动态权重的设计逻辑是训练初期模型能力弱自评不可靠所以主要靠硬信号训练后期模型能力强了自评可靠性提升可以承担更多评估责任。这个思路和人类学习有点像——新手需要老师判卷老手可以自己检查。3.3 奖励塑形怎么避免模型学会刷分奖励塑形Reward Shaping是强化学习里的经典话题。在自我改进场景下奖励塑形要解决的核心问题是怎么设计奖励函数让模型追求的是真正变强而不是刷高分。MiMo-V2.6 用的方案是多信号加权 惩罚项。多信号加权前面说了硬信号和软信号按动态权重组合。惩罚项主要针对两类行为一是回答长度异常模型学会用超长回答来蒙分二是回答重复模型学会用模板化回答来稳分。惩罚项的系数需要仔细调太小起不到作用太大会导致模型不敢生成长回答影响正常能力。我自己的经验是惩罚项最好用相对值而不是绝对值。比如长度惩罚不要直接惩罚超过 500 字而是惩罚超过同批次平均长度 2 倍。这样模型不会因为任务本身需要长回答而被误伤。论文里没有明确说用的是绝对值还是相对值但从它报告的稳定性来看应该是用了相对值或者类似的归一化处理。3.4 信号覆盖率一个被低估的关键指标信号覆盖率指的是在训练样本中有多少比例能拿到可靠的奖励信号。这个指标在论文里可能不是重点但在实际工程中极其重要。覆盖率太低强化学习更新会非常稀疏训练效率极低覆盖率太高往往意味着任务太简单提升空间有限。MiMo-V2.6 在实验里报告了不同任务上的信号覆盖率从百分之十几到百分之六十多不等。这个范围其实挺宽说明它的方法在不同任务上的适应性还可以。但要注意覆盖率不是越高越好。如果一个任务的覆盖率从 30% 提升到 60%但提升的部分都是简单题那对模型能力的实际提升可能很有限。所以看覆盖率的时候要结合任务难度分布一起看。4. 扩展自我改进时最容易炸的几个地方从实验日志里能看出的问题4.1 迭代轮次不是越多越好过拟合的早期信号自我改进循环有个很诱人的假设迭代轮次越多模型越强。但实际跑下来通常迭代到某个轮次之后模型在训练集上的表现还在提升但在保留集上开始下降。这就是过拟合的早期信号。MiMo-V2.6 论文里报告的迭代轮次大概在十几轮到几十轮之间具体取决于任务。超过这个范围之后提升就非常有限了。这个现象背后的原因是自我改进的数据分布终究是模型自己生成的随着迭代进行数据分布会越来越窄模型会逐渐失去对原始数据分布的覆盖。怎么判断什么时候该停我的经验是看两个指标一是保留集上的表现二是生成数据的多样性。如果保留集表现连续几轮不提升或者生成数据的多样性指标比如不同回答之间的编辑距离持续下降那就该停了。论文里没有明确给停止准则但从它报告的曲线来看应该是用了类似的早停策略。4.2 奖励信号的漂移为什么第三轮之后分数突然虚高奖励信号漂移是自我改进里最隐蔽的坑。表现是前几轮训练正常模型能力稳步提升但到某一轮之后奖励分数突然大幅上升但实际能力没有对应提升。这就是奖励信号被 hack 了。MiMo-V2.6 对这个问题的处理是定期重置评估模型。具体来说每隔若干轮用当前模型重新初始化评估模型而不是一直用历史版本的评估模型。这样做的代价是评估信号会有一个短暂的不稳定期但好处是能打破模型对旧评估模型的适应。这个策略的工程实现有个细节重置评估模型时不要完全重新训练而是用当前模型的参数做初始化然后在一个小的验证集上做少量微调。这样评估模型既能跟上当前模型的能力水平又不会完全继承当前模型的偏见。论文里没有详细说这个细节但从它报告的稳定性来看应该是做了类似的处理。4.3 数据回放的配比历史数据不是越多越好前面提到更新环节要混入历史数据但历史数据的配比不是越高越好。历史数据太多自我改进的效果会被稀释太少模型会快速漂移。MiMo-V2.6 论文里给的参考范围是 30% 到 50%但这个范围是针对它自己的任务设置的换到别的任务上需要重新调。我自己的经验是历史数据的配比应该和任务的分布漂移速度挂钩。如果任务本身变化快比如开放域对话历史数据配比可以低一些因为旧数据参考价值有限如果任务本身变化慢比如数学推理历史数据配比可以高一些因为旧数据依然有效。这个判断需要结合具体任务来做没有万能公式。4.4 计算资源的隐性成本自我改进比普通微调贵在哪自我改进循环的计算成本比普通微调高不少这一点在论文里通常不会重点提但实际做预算时必须考虑。成本主要高在三个地方一是生成环节每轮要生成大量样本推理成本高二是评估环节硬信号验证需要跑程序软信号评估需要额外推理三是多轮迭代每轮都要重新训练累计成本是单轮的好几倍。MiMo-V2.6 论文里没有详细报告计算成本但从它描述的迭代轮次和样本量来看整体成本应该是普通微调的几倍到十几倍。这个成本对于资源有限的团队来说是个现实门槛。如果预算有限我的建议是优先保证评估环节的质量宁可少迭代几轮也不要为了省成本而降低评估信号的可靠性。因为评估不可靠的话迭代再多也是浪费。5. 把 MiMo-V2.6 的思路迁移到自己的项目一份可操作的落地清单5.1 先判断你的任务适不适合自我改进不是所有任务都适合自我改进。适合的任务通常满足几个条件一是有可验证的硬信号或者至少有相对可靠的软信号二是任务本身有足够的难度梯度简单题和难题都有三是模型在当前任务上有一定基础能力完全不会的任务做自我改进没意义。如果你的任务没有硬信号只有软信号那自我改进的效果会打折扣。这时候可以考虑先用人工标注一小批高质量数据训练一个可靠的评估模型再基于这个评估模型做自我改进。但要注意评估模型本身也会被 hack所以还是要定期更新。5.2 最小可行循环的搭建步骤如果你想复现 MiMo-V2.6 的思路我建议从最小可行循环开始不要一上来就搞全套。具体步骤准备基础模型和任务集。基础模型选一个已经有一定能力的任务集要覆盖不同难度。搭建生成和评估流程。生成用温度采样保证多样性评估先用硬信号硬信号覆盖不到的部分先跳过。跑第一轮迭代。生成一批样本筛选更新模型。注意学习率要小历史数据比例先设 50%。观察保留集表现。如果第一轮之后保留集表现提升说明循环基本跑通如果下降检查评估信号和更新策略。逐步加入软信号和动态权重。等硬信号循环稳定后再引入软信号逐步提高软信号权重。加入难度分层和多样性约束。这些是优化项不是必须项等基础循环稳定后再加。这个顺序的逻辑是先保证循环能跑通再逐步优化。很多复现失败是因为一上来就搞全套结果某个环节出问题根本不知道是哪里错了。5.3 监控指标清单哪些数字必须盯着跑自我改进循环时有几个指标必须持续监控指标含义异常信号保留集得分模型在未见数据上的表现连续下降说明过拟合奖励分数训练时的平均奖励突然虚高说明被 hack生成多样性不同回答之间的差异度持续下降说明分布收窄信号覆盖率有可靠信号的样本比例过低说明任务太难或信号设计有问题历史数据比例训练集中旧数据的占比需要根据漂移速度动态调这几个指标里保留集得分和奖励分数的背离是最重要的预警信号。如果奖励分数在涨但保留集得分不涨甚至下降基本可以确定是奖励信号被 hack 了需要重置评估模型或者调整奖励函数。5.4 几个我踩过的坑和对应的解法第一个坑是评估模型更新太频繁。我一开始每隔一轮就重置评估模型结果评估信号一直不稳定训练根本收敛不了。后来改成每隔五到十轮重置一次才稳定下来。评估模型的更新频率要和训练迭代频率匹配不能太频繁。第二个坑是难度分层太细。我一开始把难度分成十档结果每档样本太少筛选出来的数据量不够训练。后来改成三到五档效果好很多。难度分层的档数要和样本量匹配样本少的时候档数要少。第三个坑是惩罚项系数太大。我一开始把长度惩罚系数设得比较高结果模型学会了用极短回答来规避惩罚回答质量反而下降。后来把系数调小并且改成相对值才恢复正常。惩罚项的目的是引导不是限制系数要温和。第四个坑是忽略任务本身的分布变化。我有个任务的数据分布本身在随时间变化但我一直用固定的历史数据配比结果模型对新数据的适应能力越来越差。后来改成动态调整历史数据配比才解决。自我改进循环不是封闭系统外部数据分布变化也要考虑进去。6. 自我改进这条路的天花板在哪一些冷静的判断6.1 自我改进不能替代新数据自我改进循环再精巧也有个根本限制它只能在模型已有能力的邻域内做优化不能凭空创造新能力。如果模型完全没见过某类任务自我改进是没法让它学会的。这一点在 MiMo-V2.6 论文里其实也有体现——它的实验都是在模型已有一定基础的任务上做的没有涉及完全零基础的任务。所以自我改进的定位应该是能力放大而不是能力创造。它能让你把模型已有的能力打磨得更精、更稳但不能让模型学会它完全不会的东西。认清这个边界才能合理设定预期。6.2 评估能力的上限就是自我改进的上限前面反复强调评估环节的重要性这里再展开说一下。自我改进循环的本质是用评估信号做梯度所以评估信号的质量直接决定了自我改进的上限。如果评估信号只能区分好和坏那模型最多学到好的水平如果评估信号能区分好、更好、最好模型才有机会学到最好的水平。这意味着提升自我改进效果的一个关键方向是提升评估信号的粒度。硬信号方面可以设计更细粒度的验证软信号方面可以用更强的评估模型或者多模型投票。MiMo-V2.6 在评估信号设计上花了很多功夫这是它效果好的重要原因。6.3 规模化的真正瓶颈可能在数据而非算法从 MiMo-V2.6 的实验来看算法层面的设计已经相对成熟了硬信号、软信号、动态权重、难度分层这些组件都有比较清晰的实现路径。真正限制规模化的是数据——具体来说是有可靠信号的数据。硬信号需要可验证的任务软信号需要可靠的评估模型这两者都不是随便就能获得的。所以如果你打算在自我改进方向投入我建议把至少一半的精力花在数据建设上。构建高质量的任务集、设计可靠的验证流程、训练稳定的评估模型这些工作的价值不比算法创新低。论文里通常不会重点讲这些脏活累活但实际落地时这些才是决定成败的关键。6.4 一个务实的预期管理最后说点实在的。自我改进 强化学习这个方向论文里的数字通常很好看但实际落地时的提升幅度往往没有论文里那么大。原因很多论文里的任务通常是精心挑选的实际任务更复杂论文里的评估信号通常是精心设计的实际场景里信号更嘈杂论文里的计算资源通常很充裕实际项目里预算有限。我的建议是把论文里的提升幅度打个对折来设定预期。如果论文说提升 20%你实际能拿到 10% 就算成功。这样设定预期既不会因为期望过高而失望也不会因为低估而放弃。自我改进是一条值得走的路但它不是银弹需要耐心和工程投入。