语言代理在需要长序列低层动作的环境中往往难以有效行动和学习。代码化抽象通过让模型调用可复用的技能来提升生产力,具体实现是让代码处理重复的局部决策,而语言模型负责决定使用哪些技能以及如何组合它们。
抽象并非完美,超出技能能力的情形仍需回退到原始的低层动作。基于这一生产力与灵活性之间的权衡,我们系统地研究了代码化动作抽象对语言代理的性能、推理成本和学习效率的影响。
实验在 NetHack——一个具有长时程挑战的游戏环境——中进行,使用我们自行构建的 CodeHack 库。该库提供了一系列带有自然语言描述的代码技能。我们比较了仅使用原始动作的代理、仅使用语义技能的代理以及技能与原始动作结合的混合代理。
评估在零样本提示、监督微调和强化学习三种设置下展开。零样本实验表明,与仅使用原始动作相比,使用技能可以将游戏进度提升近三倍,同时每回合的推理成本下降约 86%。将技能与原始动作结合仍能保留大部分收益,并提供回退到低层动作的通道。
在强化学习阶段,基于技能的代理学习速度显著加快,在相同的训练预算下平均地下层级提升约 7.2 倍。结果显示,提供技能库能够提升性能、效率和学习速度,而保留原始动作则在技能库不足时提供必要的灵活性。
我们已开源 CodeHack 以及相应的训练和评估代码。
点评