控制策略不再只靠梯度训练:让大模型反复改写程序,四个任务十次搜索全部在留出回合上进步
导语
EliteTable 用一张固定容量的高分程序表引导大模型提出、改写和重组控制策略代码,在六个 Gymnasium 控制任务的六十次搜索中,四个任务的十次搜索在留出回合上全部进步,但 Acrobot-v1 的留出中位变化为负。
正文
控制策略的改进可以发生在程序搜索过程中,而不只是训练神经网络权重。EliteTable 让大模型反复提出、改写和重组策略源码,每一代把得分最高的程序留在表里,再让新候选与它们竞争。 此前的程序搜索系统各自保留不同的东西:FunSearch 用岛屿式数据库维持多个种群,ShinkaEvolve 结合父代采样、代码新颖性拒绝和模型选择,Evolution of Heuristics 同时演化启发式描述与可执行实现。 在六个 Gymnasium 控制任务上各跑十次独立初始化的搜索,每次十代、每代五十个候选槽;第一代到第十代,新评估候选的得分中位数在全部六个任务上升,被选中获胜者的搜索得分中位数在五个任务上升,CartPole-v1 的获胜者在第一代就已到搜索得分上限。
搜索中选出的获胜者,其收益在部分任务上能转移到没参与选择的新回合。 搜索得分上升本身不能说明泛化,因为获胜者只按搜索回合的得分挑选,可能只是适应了选择面板。 每个搜索的第一代和最后一代获胜者在同一组 100 个留出回合种子上配对评估,这组种子与搜索面板不重叠;MountainCar-v0、LunarLander-v3、BipedalWalker-v3、CarRacing-v3 四个任务的十次搜索端点全部改善,CartPole-v1 停在上限,Acrobot-v1 十次中有六次下降且配对变化中位数为负。
候选的生成、校验和修复构成一条流水线,让大模型写出的策略代码能真正跑起来。 大模型直接生成的代码常有语法或运行错误,需要先检查再执行。 候选先按接口规范、源码编辑合法性和 Python 语法(用抽象语法树解析)检查,并做基于语法树结构而非文本的重复检测;校验或执行失败会把诊断信息送回修复循环,每个候选槽最多修五次,超时按失败处理;三万候选槽中 29959 个(99.9%)进入评估,41 个被丢弃,日志含 38289 次模型调用,其中 8287 次是修复调用。
接下来
报告面向做程序搜索、强化学习或智能体控制的读者。演示范围是六个 Gymnasium 控制任务、每任务十次独立初始化搜索、每次十代、每代五十个候选槽、精英表容量十,留出评估用 100 个与搜索面板不重叠的回合种子。作者提出的下一步是预算匹配地与其他程序搜索算法比较,包括一个与历史无关的生成基线,然后做完整搜索的消融和跨语言模型的比较,并用更长预算、新回合面板和其他任务族检验观察的边界。
作者说明,观察到的改进还不能具体归因于复用、编辑、重组、保留或修复中的哪一项,需要消融和与其他系统的比较。每环境十次搜索只刻画固定回合面板下的变异,不能确立跨回合分布、语言模型、提示或搜索配置的稳健性;任务广为人知,模型训练时可能见过描述或解法。基于时间的截止在不同硬件上可能产生不同结果,托管提供方的差异也会改变模型输出和搜索轨迹。Acrobot-v1 搜索得分上升而留出配对变化中位数为负,原因待查;留出评估只覆盖每代被选中的获胜者,不描述整个精英群体。BipedalWalker-v3 和 CarRacing-v3 有改善但未达到报告目标,测试预算不能确定更多代是否最终解决这些任务。
