【论文笔记】SKILL0: In-Context Agentic Reinforcement Learning for Skill Internalization
加粗样式
一句话总结
这篇文章把 skill 当做 LLM 学习「骑自行车」时的辅助轮,提出了SKILL0这个训练方法:训练时,借用课程学习的思想,逐步的从训练上下文中减少「辅助轮」——即减少注入Skill的数量,每阶段只保留当前还有用的技能,直到模型表现对齐与有Skill时的水平。
什么叫"当前还有用":当前 policy 有它和没它表现不一样好,才算有用。
方法总述
训练目标:让 LLM 学会在没有外部注入时也会使用Skill,即把技能从「提示词里」搬到「模型参数里」。
训练数据:从环境中 rollout 得到的轨迹数据,每条轨迹包含 (state, action, reward):
- state = 任务指令 + 历史交互 + 技能说明(训练时注入)
- action = LLM 生成的文本(推理过程 + 工具调用)
- reward = 任务是否完成(0/1)+ 压缩效率奖励
训练过程:基于 Qwen2.5-VL,GRPO 式,有以下特异点。
- 注入技能:训练时在提示词里提供Skill(注意!这里有些不同,这篇文章是用 vision encoder 编码Skill说明书 ,而不是直接用文字)
- 课程学习:分 N 个阶段,第一阶段所有的Skill都能看到,第二阶段撤掉一些简单的Skill,第三阶段继续撤掉一些中等的Skill,以此类推。
- 怎么决定撤掉谁?:每阶段,评估每个技能的「鸡肋水平」(有它没它表现差不多,算鸡肋Skill),只保留还有用的在上下文里,接近「鸡肋」的作为训练目标。
测试时:不注入Skill,仅输入任务。
关键细节
1. 为什么要要用VL模型用图像编码Skill内容?
其实这篇工作不仅仅是把Skill用图像编码了,连全部的交互历史也是先转化成长图,再用VL模型的encoder编码的——这也是作者借鉴的论文 AgentOCR的做法。
我猜想,这可能是这个组(或者这个同学)原来的topic——就是借用AgentOCR 的思路处理Skill的加载,希望又省Token,理解又好。
2. 图片注入跟纯文字的Skill0 注入比如何?——作者没说
纯文字注入Skill时,比较基线如↓:
❤ 无Skill vs 有Skill无训练
❤ vs 有Skill且训练
❤ vs 有Skill且逐步去掉「辅助轮」的训练=Skill0
但是加入VL-encoder之后,基线数量就爆炸了
我这里把作者实验表中的实验组和上面的对比链条关联了一下
| 结果表上名字 | 对应实验基线 |
|---|---|
| AgentOCR | 纯OCR注入 + 有Skill无训练 |
| SkillRL† | 文本注入 + 有Skill且训练 |
| zero-shot | 不注入Skill(术语乱用,其实应该是 zero-skill) |
| few-shot | 注入Skill(注入方式看 * † ) + 有Skill无训练 |
上表是下图Table1中 Cover到的几组实验组。
另外注意,表上带 * 的就是Skill用VL encoder注入S的,†就是 Skill用文字注入的。
实验结果可以看下图。

比较结果的话, SkillRL† 这个 训练和测试都注入明文Skill的方式结果最好——也就是说,训练全程都是在优化模型对Skill的理解和执行。作者的方法Skill0 在直接结果上还是有差距,
而且这个gap大到让人仍然想知道:如果是文字注入的话,会不会GAP小一点——不过我确实没找到。
3. 课程学习的影响有多大?
要验证课程学习的效果,一般Ablation会随机打乱课程顺序,全部同时训练,两种思路来进行对比验证。
在说明这个问题前,得先说说作者具体做法上,只有“课程学习”的思路,但并不能算是课程学习——这也是Table1 也就是前面的实验结果表中,存在GRPO这一组的原因。
作者会设定每个阶段,模型在训练的过程中能看到的Skill的数量。
※ 如果是正常的课程学习,先训简单的任务,再训简单+中等难度的任务……
※ 作者这里是,一阶段训练的时候,模型能看到所有Skill的内容,二阶段训练的时候,看不到简单的Skill(但还是那些训练样本,一阶段训过),三阶段的时候,看不到难的Skill。
这也就是说,这个【学习Skill】的过程,其实是跟GRPO逻辑一样的——希望模型能自发的找到想要的答案,不管内部是基于什么逻辑。所以作者在效果层才比较了不用Skill,纯用GRPO训练的效果(实际上在一些任务上也是Best)
虽然这个【课程】有点离谱,但是分阶段训练本身对训练的意义还是有的。具体看下图
下图中表3的最下面一行,就是【完全不筛选Skill,随机训练】的结果,看起来应该是还不如直接GRPO。

上图中的柱线对比,就是 几种方法训练后,模型使用Skill和不使用Skill的效果对比。因为作者希望的是把Skill吞到模型肚子里,所以自然还是看中不适用Skill的效果。不过,如果带入实践视角——那其实左边那根柱子足够高就好了。
评价与感想
-
AgentOCR 倒是个很好的思路😂 ,不知道是不是个参数利用程度更高的方法(AgentOCR原文没有这么说)
-
Skill真的应该学进去吗?
从实践的角度看,大部分Skill训练到模型里反而是个不好的思路。因为实际生产中Skill的细节总是在变化,更需要的是从生产数据中不断学习和优化Skill(当然也包括重构)
但有一些已经高度通用的Skill——比如,如何用Agent视角开发项目,什么是可取的思维,什么不是,这些还是要融到LLM的参数空间里,以求润物细无声吧。 -
就训练而言,课程学习肯定是值得利用的,但作者这个训练方法?
作者的实验也再一次验证了课程学习对LLM训练的效果(之前也有几篇做这个),只不过已经用Skill了,不考虑蒸馏一下吗?为什么非得挤模型能不能实现呢?
更多推荐




所有评论(0)