新浪财经 股票

给AI配一个"军师",比直接训练它更有效

市场资讯 10.12 20:52

(来源:科技行者)

2026年的语言模型圈子里,有一件事挺矛盾的。

最强的模型都锁在API后面,你只能发请求、收回复,没法动它内部一根毫毛。Gemini、Claude这些顶级模型,谁都没法把它们的权重拿出来微调。可偏偏在实际使用中,这些模型总会在具体任务里栽跟头:订机票时猜乘客ID猜错了,该问用户的信息没问,该用的工具没用对。你干着急,却动不了它。

**这篇论文想解决的问题是:能不能找一个小模型,站在旁边给大模型当参谋,用自然语言提醒它"接下来该怎么做",然后训练这个小参谋,而不是去碰那个锁死的大模型。**

这个思路本身不新鲜。此前已经有"顾问模型"(Advisor Models)的工作证明,用强化学习训练一个小模型给冻结的执行者提供建议是可行的,奖励信号来自任务完成情况。但这篇论文发现了一个更微妙的问题:当你试图用"事后复盘"来改进这个顾问模型时,复盘给出的建议未必真的有用,甚至可能悄悄把顾问教坏了。

这正是AdviSD(Advisor Self-Distillation,顾问自蒸馏)这篇论文想讲清楚的事。

执行者:被雇来干活、但没法改造的那个大模型,论文里特指Gemini、Claude这类通过API调用的冻结模型。

顾问:观察执行者的交互过程、给出建议或选择不建议的小模型,本文用Qwen3-8B担任,是唯一被训练的部分。

一个订机票的故事,暴露了问题所在

论文开篇讲了一个场景,特别适合拿来说清楚核心矛盾。

假设有个执行者,搜索航班的能力很强,不用人提醒也能搜得又快又准,但订票的时候经常瞎猜乘客的身份证号或护照号这类标识符,猜错了订票就失败。

现在订票失败了,复盘的时候,一个"反思模块"(后文详细说这是什么)跳出来提了两条建议:第一,订票前应该先查一下乘客信息,拿到准确的标识符再订;第二,搜索航班时的建议应该写得更详细一点。

这两条建议听起来都挺对的,都是合理的"复盘意见"。但对这个特定的执行者来说,它们的价值完全不一样。

第一条建议是真正对症下药的,它解决了实际发生的错误。第二条建议呢,执行者本来搜索航班就搜得挺好,这条建议只是把执行者已经会的东西又啰嗦地讲了一遍,不仅没用,甚至可能有害。

问题在于,顾问模型的参数是共享的。如果你让顾问去学习模仿这第二条"正确但没用"的建议,它的参数会被这次学习悄悄改变,而这种改变可能会影响顾问在其他场景下给出的建议,包括那些真正重要的场景。

就像公司给员工做培训,你安排了十节课,其中八节都是"正确的废话",讲的是员工早就掌握的东西。员工去听了,确实没学错什么,每节课单独看都没毛病。可培训总时长是有限的,员工的注意力和记忆容量也是有限的,如果不把那八节没用的课挡在门外,真正该补的那两节关键课就被稀释了,员工脑子里留下的印象,"正确但没用"的内容反而占了大头。

如果不设计一种机制去区分哪些复盘建议真正有用,哪些只是正确的废话,那么随着训练反复进行,这种"稀释效应"会越来越严重,因为执行者在容易出错的场景会越来越少犯错(顾问教好了),而那些顾问管不了的、执行者本来就表现平平的场景会持续产生"正确但没用"的复盘建议,这些建议在总训练信号里占的比重会越来越大。

顾问模型怎么"开口说话"

在讲怎么解决这个问题之前,得先说清楚这套系统是怎么运作的。

每次执行者要给出下一步回应之前(无论是回复用户、调用工具,还是读完工具结果后的下一步),顾问模型都会先看一眼当前情况,然后决定要不要说话。如果开口,它会给出一段自然语言建议;如果不想说,它会输出一个特殊标记,表示"这次我不插嘴"。

执行者系统*:这里特指被顾问建议、本身参数不可修改的那个大模型,建议会被临时插入到发给它的请求里,但不会进入它永久的对话历史,相当于每次都是"新鲜"地提醒一次,不留痕迹。

这个设计本身就有一个细节值得琢磨:建议不是永久写入执行者的记忆的,而是每次临时附加的。这样做的好处是,顾问可以根据情况灵活调整建议,不用担心之前说错的话一直挂在那里影响后续判断。

训练这个顾问模型,论文用了两条腿走路。一条是常规的强化学习,用任务完成后的奖励信号(比如订票成功没有、任务通过检查没有)来调整顾问的行为倾向,这部分用的是GRPO算法。

GRPO(Group Relative Policy Optimization,组相对策略优化):一种强化学习算法,通过比较同一组任务的多次尝试结果,计算出每次尝试相对于组内平均水平的"优势值",用这个优势值来指导模型更新。简单说就是"好的比平均好多少,就多奖励多少"。

但只靠奖励信号不够精细。一整个交互下来可能有十几个决策点,最后只给一个总分,根本不知道是哪一步出了问题。这就是为什么需要第二条腿:从具体的失败案例里提取更细粒度的反馈,再有选择地用这些反馈去教顾问。

反思模块:谁来提出"复盘意见"

论文里专门设了一个外部的"反思模块",它的工作是看完整个交互过程(包括执行者做了什么、工具返回了什么、最后任务通不通过),然后指出顾问在哪几个决策点上可能犯了错,并给出具体的修改建议。

反思模块*:论文中用Gemini 3.7 Flash担任,作用是分析已完成的交互记录,标记出可能需要改进的建议决策点,并提出具体的修正方案,这个模块只在训练阶段起作用,部署后完全不需要它。

有一点需要特别说明的是,反思模块看的是"后来发生的事情",但它提的建议必须符合"当时能看到的信息"。也就是说,反思模块知道后面发生了什么,但它不能用这种"上帝视角"去篡改早期决策的合理性,它只能说:"在那个时间点,根据当时已知的信息,建议应该是这样说才对。"

这就好比复盘一场足球比赛,裁判在第30分钟判罚有争议,复盘小组知道最后比分是2比1,但他们评价那个判罚时,只能依据第30分钟那一刻看到的画面,不能用最终比分去倒推"当时应该怎么判",否则复盘就失去了意义,变成了事后诸葛亮式的马后炮。

反思模块每个失败的交互最多能标记5个决策点(这是论文设的上限),标记出来之后,这些决策点就成了候选的训练素材。但重点来了,不是所有候选都会被拿去训练,接下来要讲的,就是AdviSD真正的创新所在:怎么从这些候选里挑出真正有用的那部分。

怎么判断一条复盘建议有没有用

这是整篇论文最巧妙的地方。

论文的做法是,让更新前的顾问模型(也就是训练这一步开始之前的那个版本)去给同一个执行者回复打两次分。

具体来说,执行者已经做出了某个回复(比如调用了某个工具、给用户回了某句话),这个回复是在"有顾问建议"的情况下产生的,已经是既定事实,没法改变了。但现在,论文让顾问模型分别站在两个"假设立场"上去给这个已发生的回复打分:第一种立场是假设当时确实给出了那条建议,第二种立场是假设当时什么都没说。

两次打分用的是同一个顾问、同一段已经发生的执行者回复,唯一不同的是上下文里有没有那条建议文字。如果有建议和没建议两种情况下,顾问对这段回复的预测概率差别很大,说明这条建议"存在感很强",顾问觉得它对解释这个回复很重要;如果差别很小,说明这条建议可有可无,顾问觉得有没有它都差不多。

论文把这个差值的绝对值作为选择信号,差值越大,这个决策点就越值得被纳入训练。

打一个比方可能更容易理解。假设你是老师,批改两份作文,一份是学生照着你给的范文框架写的,另一份是学生完全自己发挥写的,结果两份写得几乎一模一样。这说明什么?说明你给的那个范文框架对这个学生而言根本没起作用,他本来就会这么写。但如果有没有范文框架写出来的东西天差地别,那这个框架显然是真正塑造了结果的关键因素。

AdviSD做的事情本质上就是这种比较:看"给了建议"和"没给建议"这两种假设下,顾问预测执行者行为的差异有多大。差异大,说明这条建议在顾问自己的认知里是"起作用的",值得学;差异小,说明顾问觉得这条建议"说了跟没说一样",这时候再去学它反而可能带来干扰。

论文里有个细节特别诚实,这个判断用的只是顾问自己的预测,不是真实测量出来的"这条建议到底有没有改变执行者的实际表现"。顾问的判断可能是错的。但论文的论证是,这种基于预测差异的信号,总比"不加区分,什么都学"要好。

这里还牵涉到一个技术细节:怎么设定"差异多大才算大"这个门槛。论文的做法是用"donor advice"(借来的建议)做校准。

Donor advice(供体建议):训练开始前,用其他任务的建议文本替换当前任务里原本给出的建议,再重新计算一次预测差异,这个替换后的建议和当前任务无关,纯粹是噪声,用来估计"随便换一条不相关的建议会造成多大的预测波动",以此确定一个合理的筛选门槛。

简单说,先用一堆"乱凑的建议"看看能造成多大的预测扰动,这个扰动水平就是噪声基线,真正要被选中进入训练的建议,差异得明显超过这个基线才算数。这个门槛在每次训练开始前就确定下来,训练过程中不再变动。

从"原地不说话"到"被漏掉的提醒",一个特殊情况

还有一类情况需要单独处理:顾问原本选择了不说话(输出),但反思模块认为这里本该给出建议。

这种情况下,没法用前面讲的打分法,因为没有"给了建议"和"没给建议"两种版本可以比较,反正顾问当时就是什么都没说,两种情境其实是同一种情境,预测差异天然是零。

论文的处理方式是,只要反思模块标记了这类"该说而没说"的决策点,就直接放行,绕过数值门槛,让它进入训练。

这个设计选择在后续实验里被验证是有价值的,实验显示去掉这个特殊通道后,两个基准测试的表现都下降了0.6到1.7个百分点,说明"原本不该沉默却沉默了"这种错误,确实是顾问模型里值得专门照顾的一类问题。

为什么"选择性地学"会比"全盘接收"更好:一套数学论证

这篇论文不只是提了一个工程技巧,还花了相当大的篇幅从理论上论证"为什么挑着学会更好"。这部分内容比较抽象,我尽量用大白话讲清楚核心逻辑。

论文构造了一个简化模型:假设顾问只需要在"建议1"和"建议2"之间二选一,用一个参数(可以理解成"顾问有多偏好建议1")来控制选择概率。场景分成两种,一种叫"敏感场景",在这种场景下,用建议1确实比用建议2效果好;另一种叫"不敏感场景",不管用哪个建议,执行者的表现都一样,根本没差别。

关键的假设是,哪怕在"不敏感场景"里两种建议效果真的一样,复盘出来的"老师"(也就是反思模块给出的理想目标)也可能存在偏好,而且这个偏好可能比"敏感场景"里的老师更弱。

举个具体数字的例子,论文给了这样一组设定:不敏感场景的老师给出的偏好是五五开(完全中立),敏感场景的老师给出的偏好是八比二(明显偏向建议1)。如果顾问现在已经学会偏向建议1的概率超过一半了,那么从不敏感场景学习只会把这个偏好往五五开方向拉回去。因为参数是共享的,这个"拉回去"的效果会同时影响到敏感场景,也会让顾问在敏感场景里也变得不那么坚定地推荐建议1,但建议1在敏感场景里明明是更好的选择。

论文证明了一个结论:随着顾问越训越好,敏感场景里的失败会越来越少见(因为顾问已经学会了正确做法),但不敏感场景里的失败率是不变的(因为不管给什么建议结果都一样,所以这类失败天然是随机出现、消除不掉的)。结果就是,训练进行得越久,不敏感场景提供的复盘样本在总训练信号里占的比例就越来越高,而这类样本恰恰是偏好更弱、甚至中立的。

论文把这个终极平衡点用数学方式求解了出来,发现只要把"不敏感场景"的复盘样本保留比例调低(相对于"敏感场景"的样本),这个终极平衡点就会往更好的方向移动,顾问最终能达到的性能上限也会提高。论文还给了一个具体的数字例子:在等比例保留两类复盘样本的情况下,顾问最终达到的成功率是55.8%;如果把不敏感场景的保留比例降到四分之一,成功率能提高到59.2%;如果理论上把这个比例压到趋近于零,成功率能到62%。

这个数学论证最重要的价值,是它给AdviSD的实际设计提供了理论支撑:有选择地少学一些"复盘建议",确实可能带来更好的最终效果,而不是简单的"信息损失"。但论文也很坦诚地指出了这个理论的局限,这个简化模型假设老师的偏好是固定不变的,现实中反思模块给出的反馈会随着训练动态变化,理论结果不能直接套用到真实训练过程里,它提供的是一种解释框架,而不是精确预测。

教学环节:怎么把筛选出来的建议变成训练信号

筛选完之后,真正的"教学"环节开始了。

对于每个被选中的决策点,系统会把相关的执行证据、检查结果、任务得分、反思模块的反馈,打包成一段"提示信息",加在原始上下文前面,交给"老师"(也就是更新前的顾问模型快照)。老师在这个加料后的上下文里,重新生成一遍它对这个决策点的预测分布。

学生(也就是正在被训练的顾问模型)则只能看到原始上下文,看不到这些额外的复盘信息,它需要学着让自己的预测分布去逼近老师的预测分布,这个过程在深度学习里有个专门的名字。

自蒸馏(Self-Distillation):让同一个模型的两个版本(一个带额外信息的"老师"版本,一个不带额外信息的"学生"版本)之间互相学习,学生试图模仿老师在看到额外信息后给出的预测,目的是把额外信息里蕴含的知识,内化到学生的参数里,这样学生以后即使看不到这些额外信息,也能表现得像看过一样。

这里有个精巧的闭环设计:训练的时候,老师能看到"复盘得出的教训",学生看不到;但部署的时候,没有反思模块、没有复盘信息,顾问只能靠训练时内化的东西独立做出判断。自蒸馏的作用,就是把训练阶段"开天眼"状态下学到的东西,压缩进部署阶段"闭着眼"也能用的参数里。

这个过程计算损失的方式也有讲究:先算单个决策点里每个词的损失,取平均得到这个决策点的损失;再把一个交互过程里所有被选中决策点的损失取平均,得到这次交互的损失;最后把一批交互里所有交互的损失再取平均。没有被选中参与训练的交互,自蒸馏损失直接算作零,但它依然正常参与GRPO那部分的奖励学习。

实验怎么验证这一切

理论讲完了,关键要看实际效果。论文选了两个执行者:Gemini 3.7 Flash和Claude Sonnet 4.6,顾问模型统一用Qwen3-8B,在两个基准测试上训练和评估。

BFCL-v3*:Berkeley Function Calling Leaderboard第三版,一个专门考察大模型工具调用能力的基准测试,细分成四个类别,包括正常情况、工具缺失、参数缺失、长上下文这几种挑战场景。

EnvScaler:一个通过程序化合成方式构建的工具交互环境基准,提供分数在0到1之间的任务评分。

实验结果是这样的:在BFCL-v3上,AdviSD比只用GRPO的版本高出4.2到6.4个百分点;在EnvScaler上,高出3.9到5.1分。考虑到这两个基准测试的难度本身不低,这个提升幅度相当可观。

特别值得一提的是,提升幅度在BFCL那些"更难"的子类别(工具缺失、参数缺失、长上下文)里更明显,而在最基础的子类别里提升相对温和。这个现象挺有意思,它暗示AdviSD这种针对性的纠错机制,恰恰在执行者本来就容易出问题的复杂场景里发挥了最大价值,这也从侧面印证了论文一开始的猜想:不是所有建议都一样重要,真正有价值的建议,往往出现在执行者自己拿不准的时候。

| 方法 | BFCL-v3平均(Gemini) | BFCL-v3平均(Claude) | EnvScaler(Gemini) | EnvScaler(Claude) |

| 无顾问 | 57.8 | 54.9 | 75.7 | 77.4 |

| GRPO(只有奖励学习) | 61.4 | 58.9 | 79.7 | 80.7 |

| SDPO | 57.8 | 55.8 | 76.0 | 78.9 |

| DistIL | 58.5 | 57.3 | 76.1 | 78.9 |

| **AdviSD** | **67.8** | **63.1** | **84.8** | **84.6** |

论文还做了一组对照实验,专门用来检验"挑选哪些建议"这个机制本身到底值不值钱,而不仅仅是"少学一点东西就是好"。

这里设了一个"数量匹配的随机对照组":它在每个交互里保留和AdviSD门槛筛选出来数量相同的建议,但具体保留哪些是随机选的,不管建议的预测差异大小。结果显示,这个随机对照组虽然也比"全盘学习"稍微好一点,但明显不如AdviSD的精准筛选,两者之间差了2.5到4.9个百分点。

还有一个"反转门槛"的对照组,专门保留那些预测差异小的建议,这个版本的表现比什么都不筛选还要更差,两个基准测试上都跌破了GRPO基线。

这组对照实验的意义在于,它证明了"挑对象"这件事本身是有信息量的,不是简单的"学得少就学得精",真正起作用的是"学对的东西"。

| 配置 | BFCL-v3(Gemini) | BFCL-v3(Claude) |

| GRPO基线 | 61.4 | 58.9 |

| 全盘接收不筛选 | 62.7 | 59.7 |

| 反转门槛(专挑差异小的) | 61.1 | 58.3 |

| 数量匹配随机选择 | 62.9 | 60.6 |

| **AdviSD(正常筛选)** | **67.8** | **63.1** |

训出来的顾问能不能举一反三

一个顾问模型如果只能在训练过的那个任务、那个执行者身上管用,价值就打了折扣。论文专门测试了泛化能力。

在没有用新数据重新训练的情况下,论文把BFCL-v3上训出来的顾问拿去另外四个完全没见过的基准测试上考察,包括ACEBench(测多步骤和多轮对话场景)、ToolHop(测多跳工具调用)、τ?-bench(测带用户模拟器的对话代理)、RoTBench(测工具使用的鲁棒性)。

结果显示,AdviSD在跨任务迁移上依然领先,相比不用顾问的基准,平均提升2.7到3.6个百分点,而GRPO训出来的顾问在跨任务迁移上提升幅度不到1个百分点。更引人注意的是,论文用BFCL优化出来的GEPA提示词(这是一种专门优化执行者自身指令的方法,不涉及额外顾问),在这些外部基准上反而全面低于不加任何干预的基础表现,说明针对单一任务精心打磨的提示词,很容易变成"水土不服"的脆弱方案。

除了跨任务,论文还测试了跨版本和跨厂商的迁移。拿Gemini 3.7 Flash训出来的顾问,不重新训练,直接套用到Gemini 3.5 Flash上(同厂商不同版本),也测试了直接套用到Claude Sonnet 4.6上(不同厂商)。结果是所有方向上AdviSD都比GRPO高出约2到3个百分点,跨厂商方向上稳定领先3.1个百分点。

这说明AdviSD学到的"怎么给建议"这套能力,并不完全绑定在某个特定模型的具体怪癖上,而是提炼出了相对通用的判断方式,当然,迁移过去的表现仍然比不上专门针对目标执行者训练出来的版本,这点论文也诚实承认了。

写在后面

读完这篇论文,最触动我的不是技术细节本身,而是它提出问题的方式。

大部分工程类论文的套路是"我们发现了一个新方法,效果更好",但AdviSD的核心贡献其实是一个反直觉的观察:更多的监督信号不一定是好事,如果监督信号里混杂着大量"正确但无关紧要"的内容,反而会稀释真正重要的那部分,让模型学得更慢、学得更差。

这个观察其实超出了语言模型训练的范畴,几乎是任何需要"从反馈中学习"的系统都会遇到的共性问题。给员工的360度评估反馈太多会让人抓不住重点,产品团队收集的用户反馈太泛也会让迭代方向变得模糊。AdviSD提供的思路是:与其追求反馈数量的最大化,不如先问一句,这条反馈如果换个假设情境,结果会不会明显不同,如果不会,它可能就是噪声。

还有一点值得单独拿出来说,论文里那个用"数量匹配的随机对照组"去验证筛选机制本身价值的做法,体现了一种挺难得的学术诚实。很多论文提出一个改进方法,证明比基线好就结束了,但不会费心去排除"仅仅是因为学习信号变少了才变好"这种混淆因素。AdviSD专门设计实验去区分"少学"和"学对"这两件事,这种严谨本身比结果数字更值得点赞。

论文还留了一个没解决透的问题,顾问模型自己判断"这条建议有没有用",用的是它自己对执行者行为的预测,而这个预测本身可能是错的。如果顾问模型本身对执行者的理解就有偏差,这套筛选机制会不会把错误的判断也系统性地放大?论文没有给出令人完全信服的答案,这大概也是后续研究值得深挖的方向。

一个小参谋能不能真正摸清大将军的脾气,还是永远隔着一层猜测,这个问题留给了后来者。

Q&A

Q1:AdviSD是什么?

A:AdviSD是一种训练小型顾问模型的方法,让顾问通过自然语言建议去引导被冻结参数、无法直接修改的大型执行者模型(如Gemini、Claude),从而在不触碰执行者权重的情况下改善任务表现。

Q2:AdviSD和直接用GRPO训练顾问模型有什么区别?

A:GRPO只依靠任务最终奖励来训练顾问,AdviSD在此基础上加入了有选择性的自蒸馏机制,通过比较顾问在"给建议"和"不给建议"两种假设下对同一个执行者回复的预测差异,挑出真正有用的复盘建议进行针对性学习,实验显示这样做比单纯用GRPO高出4到6个百分点。

Q3:AdviSD训练出的顾问模型能不能换个执行者或换个任务使用?

A:可以在一定程度上迁移。论文测试显示,训练好的顾问在完全没见过的新任务上平均提升2.7到3.6个百分点,在跨模型版本和跨厂商迁移时也比GRPO基线高出约2到3个百分点,但效果不如针对目标执行者专门训练的版本。

加载中...