代码:
https://jyopari.github.io/posts/seal拟人比喻:
学生把备考的东西,以自己的方式记成笔记精华,更有利于他的理解和记忆。
背景:
Self-improving:
本文:
输入外界知识,LLM将其整理为笔记(self-edit);拿笔记做训练数据做SFT,SFT后的模型(临时用,不更新到最终模型里)用外界知识的QA进行评判打分;作错题的笔记,直接扔弃;作对题的笔记,将<其外界知识,笔记>输入到模型进行reward为正的RL训练,更新模型。
算法:
C是外界知识,
是该知识对应的QA。
损失函数:
reward, 做对了题就是1,做错了就是0:
经过近似,loss:
说白了就是"SFT on good self-edits"
这里的外层loop相当于teacher, 内层loop相当于student。在本文两者是同一模型;也可分开为2个模型。
实验:
1. 知识内化
实验结果:
Train on Passage: 直接使用原始的外部知识来SFT训练模型;不使用任何合成数据。(结果表明,效果提升非常小)
Train on Passage+Synthetic: 使用原始外部知识+本模型合成的self-edit数据,共同SFT训练模型;除了不进行RL训练,其他设置和SEAL组相同。(结果表明,这组效果提升较大,但加上RL训练的SEAL能更好些)
Train on Passage+GPT-4.1 Synthetic: 使用原始外部知识+GPT4.1生成的self-edit数据,共同SFT训练模型;(结果表明,效果提升较大,但SEAL虽然用的小模型来合成self-edit数据,因为有RL训练,效果更好)
2. ARC推理和泛化能力benchmark
self-edit的内容,就是:1. 调用tools做数据增强;2.SFT优化的参数;
存在的问题:
灾难性遗忘。容易记住新的忘了旧的。