Auto MC-Reward:针对 Minecraft 的大型语言模型自动密集奖励设计
https://yangxue0827.github.io/auto_mc-reward.html
-
摘要
-
传统强化学习依赖稀疏奖励,使用二进制指示任务完成或失败,其效率在minecraft中表现低,提升效率困难、有挑战。为解决这个问题,这篇文章基于LLM自动设计密集奖励函数强化学习效率
-
过程(对照图1)
-
奖励设计者先通过使用预定义的观察输入编写可执行 Python 函数来设计奖励函数
-
奖励评判者负责验证代码,检查代码是否自洽,是否没有语法和语义错误
-
轨迹分析者根据收集的轨迹总结可能的故障原因并提供细化建议
-
下一轮,奖励设计师将根据反馈进一步细化和迭代密集奖励功能
-
-
Agent在 Minecraft 中的复杂任务中的成功率和学习效率有了显着提高
-
Introduction
-
Minecraft:一款模拟游戏,使研究高效强化学习的环境
-
奖励的极度稀疏性和决策空间的巨大复杂性给强化学习方法带来了重大挑战
-
当前研究提出的各种密集奖励信号实现特定稀疏奖励任务的高效学习,在复杂且长期的任务中的适用性不足
-
LLM 可以帮助 RL 代理模拟人类的实践总结能力
-
基于智能体的历史行动轨迹和成功失败信号,LLM可以自动设计和细化相应的辅助奖励,有效克服Mincraft中奖励稀疏的挑战
-
-
因而,本文设计Auto MC-Reward
-
LLM根据环境和任务的基本描述来设计与任务相关的密集奖励函数,称为奖励设计者
-
奖励函数用于在自我验证后训练智能体,即奖励品评判者
-
还提出了一个基于LLM的轨迹分析者来分析和总结从训练有素的代理收集的轨迹,并自动帮助奖励设计者改进奖励功能
-
为解决LLM理解中潜在的偏见或疏忽
-
-
-
Auto MC-Reward 仅利用原始信息就实现了很高的钻石获取成功率(36.5%)
相关工作
-
其他方法主要缺点:无法适应Minecraft的稀疏性和复杂性,黑盒程度大
方法
-
Overview
-
智能体与环境的不断交互,迭代出合适的密集奖励函数,进行特定任务的强化学习训练,使模型更好地完成任务
-
Reward Designer:奖励设计者
-
Reward Critic:奖励评判者
-
Trajectory Analyzer:轨迹分析者
-
图1案例
-
i) 轨迹分析者发现智能体在失败的轨迹中死于熔岩,然后给出遇到熔岩时的惩罚建议;
-
ii) 奖励设计者采纳建议并更新奖励函数;
-
iii) 修改后的奖励函数通过了奖励评判者的审核,智能体通过左转避开了熔岩。
-
-
-
Reward Designer 奖励设计者
-
输入:任务描述、游戏信息和奖励函数要求作为输入
-
输出:可执行代码形式的奖励函数
-
输出奖励函数要求:当前步骤和先前步骤中可见范围内每种块类型的最近距离、相邻步骤之间的库存变化、生命值以及过去每个步骤中代理的位置为输入
-
-
在更新奖励函数时,还提供代理与游戏环境交互时的性能分析
-
design
-
多步记忆机制:奖励函数将必要的数据保存到记忆中,供后续使用。在探索树任务实际奖励函数使用中,Agent每一步记录到树的距离,使当前步比前一步更接近树
-
思维链:要求LLM先描述设计思想,例如考虑潜在的失败原因以及奖励函数设计的细节作为注释写在代码开头;同时在代码中,每隔几行写注释
-
规模限制:奖励函数施加了特定的规模约束。LLM 生成两个子函数:密集和稀疏。稀疏表示实现最终目标的奖励或重罚(如死亡),而密集表示任务完成过程中密集的中间信号
-
预设数值,只允许 LLM 确定正性或负性,将稀疏限制为 {1, 0, -1},将密集限制为 {0.1, 0, -0.1}。然后加在一起以获得最终奖励
-
R = sgn(sparse)*1+sgn(dense)*0.1
-
sgn表示符号函数:为了将奖励保持在合理的范围内,让LLM能够专注于奖励函数中需要考虑的各种场景,而不是调整奖励值之类的琐碎任务。
-
-
-
-
Reward Critic 奖励评判者
-
LLM很难直接产生完整的奖励函数,可能存在:参数格式和数据类型的理解错误(语法错误)、未能考虑游戏特定信息或对任务的误解(语义错误)。为解决上述问题,设计奖励评判者。
-
任务:检查语法错误;检查奖励函数质量,进一步消除语义错误
-
检查问题:
-
是否符合自己的想法
-
是否满足奖励函数设计要求
-
是否考虑了游戏信息
-
若审核不通过,评判者会提出批评,奖励设计者根据标准修改奖励函数,重新提交审核。过程最多重复3次。
-
-
运行时错误会反馈给奖励设计者修改
-
-
Trajectory Analyzer 轨迹分析者
-
总结训练后的智能体与环境交互的历史信息,并用它来指导奖励函数的修改
-
奖励设计者和轨迹分析者的分工允许独立操作数据分析和奖励功能更新
-
轨迹分析者不需要了解奖励函数的细节,奖励设计者也不需要处理复杂的轨迹数据。
-
运行逻辑
-
当前训练的模型用于与环境交互并获得K条轨迹。
-
然后,截断这些轨迹并使用LLM总结每个失败轨迹的最后连续L帧的观察结果,自动推断其可能的失败原因
-
在分析失败原因的基础上,要求LLM轨迹分析器提出奖励设计者在下一轮奖励函数修订中需要考虑的要点。例如,不考虑惩罚的失败场景、密集奖励和稀疏奖励的错位导致智能体的行为偏离最终目标
-
-
重写鼓励探索的代码,避免来回
-
添加熔岩惩罚以避免掉入熔岩
-
添加俯仰约束,避免不断抬头躲避熔岩。
-
实验
性能比较实验和消融实验,MineDojo环境
-
任务:
-
探索地下11层矿石,步骤限制60000
-
平原生物群系上接近树,步骤限制2000
-
接近平原生物群落中的特定动物(例如牛、羊),步骤限制2000
-
获得钻石
-
-
实现细节
-
轨迹分析器的输入提示的组成部分包括任务描述、游戏信息、统计指标和失败轨迹信息
-
奖励设计者和奖励评论家的输入提示组成部分包括任务描述、游戏信息、输入参数、奖励功能要求和格式
-
LLM =GPT-4 ,temperature= 0.3。
-
基础指令:
-
有关奖励设计器的奖励函数的初始化、更新和处理执行错误的说明,奖励评论家的审查函数以及轨迹分析器的轨迹分析的说明
-
-
任务描述:初始条件、成功标准和任务流程
-
游戏信息:游戏版本、方块名称、视野、动作空间和测量单位
-
有关失败轨迹的统计指标和信息:成功率、行动序列、奖励序列、最终库存和 K = 10 失败轨迹的附近块。轨迹超过 L = 32 步,会被截断为最后 32 步
-
输入参数:当前步骤和先前步骤中可见范围内每种块类型的最近距离、相邻步骤之间的库存变化、生命值以及过去每个步骤中代理的位置
-
奖励函数需求和格式:要求设计者编写一个稠密函数和一个稀疏函数,并且只考虑两个函数返回值的符号,而不考虑其大小
-
模仿学习细节:
-
使用模仿学习训练一些基础模型
-
为RL模型提供基础游戏功能
-
对比RL模型性能
-
-
RL训练细节
-
近端策略优化(PPO)算法和广义优势估计(GAE)训练强化学习模型
-
γ = 0.99 λ = 0.95 total_frames = 256000
-
-
-
-
-
实验结果
-
Auto MC-Reward 探索钻石成功率45.2,熔岩逃逸成功率70%,接近数成功率73.4%,接近牛成功率56.3%
-
-
消融实验
-
奖励设计者:若无,无法正常探索钻石
-
奖励评判者:提高任务成功率
-
轨迹分析者:提高任务成功率
-
结论
-
Auto MCReward 的能力经过实验验证,证明了 Minecraft 中复杂任务的成功率和学习效率的显着提升。
-
Auto MC-Reward 通过其自动化的密集奖励函数设计,为实现复杂任务中更有效的学习做出了贡献