技术领域
[0001] 本申请涉及深度学习技术领域,特别涉及一种基于大语言模型的自动奖励函数设计系统及方法。
相关背景技术
[0002] 开放世界生存游戏作为一种虚拟环境,为面向复杂任务和开放环境的智能体的强化学习算法训练提供了理想平台,此类虚拟环境的决策空间具有较高的自由度,且许多任务的完成需要大量复杂的步骤,导致强化学习算法所需的奖励信号较为稀疏,使强化学习算法效率极度低下或无法学习。
[0003] 相关技术中,提出一种更密集奖励信号的奖励函数扩展方案,例如奖励塑形、自模仿学习、好奇心驱动等,通过借助人类先验知识,结合环境稀疏奖励信号和辅助的密集奖励信号提高智能体的学习效率。
[0004] 然而,相关技术中,密集奖励信号所需人类先验知识要求大量人工设计,无法在高自由度的开放世界环境中应用,且奖励函数通常针对较简单的任务进行设计,难以适配开放世界生存游戏的复杂任务要求,导致智能体强化学习训练的高效性下降且成功率不足,亟待解决。
具体实施方式
[0024] 下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
[0025] 下面参考附图描述本申请实施例的基于大语言模型的自动奖励函数设计系统及方法。针对上述背景技术中提到的相关技术中,密集奖励信号所需人类先验知识要求大量人工设计,无法在高自由度的开放世界环境中应用,且奖励函数通常针对较简单的任务进行设计,难以适配开放世界生存游戏的复杂任务要求,导致智能体强化学习训练的高效性下降且成功率不足的问题,本申请提供了一种基于大语言模型的自动奖励函数设计系统,可以基于大语言模型的代码生成和推理能力设计适配于不同任务的奖励函数,检查奖励函数以根据检查结果进行修正,并通过智能体与环境交互的反馈结果优化奖励函数,以满足智能体的深度学习训练对密集奖励信号的需求,实现适应于开放世界和复杂任务的智能体训练。由此,解决了相关技术中,密集奖励信号所需人类先验知识要求大量人工设计,无法在高自由度的开放世界环境中应用,且奖励函数通常针对较简单的任务进行设计,难以适配开放世界生存游戏的复杂任务要求,导致智能体强化学习训练的高效性下降且成功率不足等问题。
[0026] 具体而言,图1为本申请实施例所提供的一种基于大语言模型的自动奖励函数设计系统的结构示意图。
[0027] 如图1所示,该基于大语言模型的自动奖励函数设计系统10包括应用于预设大语言模型的奖励设计器100、奖励检查器200和交互轨迹分析器300。
[0028] 需要说明的是,预设大语言模型可由本领域技术人员根据实际情况进行设置,在此不作具体限定。
[0029] 具体地,奖励设计器100,用于在满足预设开放条件的虚拟环境中,基于智能体的至少一个目标任务设计对应的奖励函数,或者,根据奖励检查器200的修改意见和交互轨迹分析器300的优化意见更新奖励函数。
[0030] 需要说明的是,预设开放条件可由本领域技术人员根据实际情况进行设置,在此不作具体限定。
[0031] 可以理解的是,在本申请的实施例中,满足预设开放条件的虚拟环境可为决策空间具有较高自由度的虚拟环境,能够为研究构建面向复杂任务和开放环境的智能体强化学习算法提供理想平台,例如开放世界生存游戏等虚拟环境。在满足预设开放条件的虚拟环境中,可以智能体的目标任务设计该任务对应的奖励函数,目标任务可为智能体所需实现的功能,针对不同任务设计对应的奖励函数用于智能体的深度学习训练。
[0032] 具体而言,奖励设计器100能够基于预设大语言模型,在满足预设开放条件的虚拟环境中针对任意目标任务设计对应的符合密集信号需求的奖励函数,通过自然语言形式提供虚拟环境的相关信息、目标任务的描述和奖励函数格式作为输入,由奖励设计器100编写对应的奖励函数的代码逻辑,以用于完成该目标任务的智能体的深度学习训练,并根据其逻辑输出可执行程序代码。
[0033] 在另一方面,在后续改进奖励函数时,奖励设计器100可以接受奖励检查器200提供的自然语言形式的修改意见,或交互轨迹分析器300基于智能体实际训练数据提供的优化意见,以更新奖励函数,实现奖励函数的优化。
[0034] 在实际执行过程中,奖励设计器100设计的奖励函数可以使用预定义的观察格式作为输入。例如,在《我的世界》游戏中,其输入包括当前步骤和先前步骤中可见范围内每种方块类型的最近距离、相邻步骤之间的库存变化、生命值以及智能体的位置,上述参数可以提供有关代理当前和历史状态的信息,在各种情况下协助奖励功能。
[0035] 因长程任务需要跨多个步骤传输信息,可以为奖励设计器100赋予多步记忆机制,作为一个空字典提供给奖励设计器100,从而使设计得到的奖励函数将必要的数据保存到内存中以供以后的步骤使用。例如,在《我的世界》游戏环境中探索树任务的实际奖励函数中,我们观察到代理在每一步记录到树的距离,从而鼓励比上一步更接近树,其中,步可解读为最小操作单位。
[0036] 为控制奖励函数的输出范围,奖励设计器100需对设计得到的奖励函数施加特定的尺度约束。奖励设计器100的输出由两个子函数组成:密集子函数dense,表示任务完成过程中密集的中间信号;稀疏子函数sparse,表示对实现最终目标的奖励或严重惩罚(如死亡)。其中,密集子函数的取值被限制为{‑0.1,0,0.1},稀疏子函数的取值被限制为{‑1,0,1},以确保任务重要节点的较大奖励信号。最终奖励为:
[0037] R=sgn(sparse)*1+sgn(dense)*0.1
[0038] 其中,sgn为符号函数。
[0039] 可选地,在本申请的一个实施例中,奖励设计器100包括:生成单元,用于根据至少一个目标任务生成奖励函数的注释信息;添加单元,用于将注释信息添加至代码信息。
[0040] 在实际执行过程中,为使预设大语言模型的输出更准确且符合要求,生成单元要求预设大语言模型描述其设计思路,将上述思路被作为奖励函数的注释信息,例如考虑潜在的失败原因以及奖励函数的设计细节;由添加单元写在代码的开头,即将注释信息添加至代码信息。
[0041] 在具体的代码实现中,预设大语言模型能够生成必要的注释(例如,“检查上一步中的熔岩是否在视野中”),以使奖励设计器100在奖励函数初始化时参考文本形式的思路,还可以辅助后续的奖励检查器200评估代码的合理性,并帮助奖励设计器100在更新奖励函数时更为清晰地了解当前奖励函数应当达成的设计目标。
[0042] 奖励检查器200,用于判断奖励设计器100设计的奖励函数的代码信息是否满足预设验证要求,并在代码信息不满足预设验证要求的情况下,根据代码信息生成检查意见,直至奖励函数满足预设验证要求或达到预设迭代阈值。
[0043] 需要说明的是,预设验证要求和预设迭代阈值可由本领域技术人员根据实际情况进行设置,在此不作具体限定。
[0044] 可以理解的是,在本申请的实施例中,因预设大语言模型输出的代码信息可能存在语法、逻辑等错误,故可以基于预设大语言,使用奖励检查器200验证奖励设计器100编写的函数是否存在语法错误、是否符合其逻辑以及是否满足格式要求,即代码信息是否满足预设验证要求,并在不满足预设验证要求的情况下将反馈意见以自然语言形式反馈给奖励设计器100,直到奖励函数代码通过其验证或检查次数达到预设迭代阈值。
[0045] 在实际执行过程中,因奖励设计器100编写的奖励函数可能存在对参数格式和数据类型的理解错误(语法错误)、未能考虑游戏特定信息或对任务的误解(语义错误)等情况,故需要检查奖励函数中的潜在语法错误,并评估奖励函数的实现质量,以进一步消除语义错误。通过检查当前的代码实现是否符合其注释中所列明的思路、是否满足奖励函数设计要求以及是否考虑了实际所处虚拟环境信息,判断奖励设计器100设计的奖励函数的代码信息是否满足预设验证要求。如果检查不通过,则代码信息不满足预设验证要求,奖励检查器200生成检查意见,并发送至奖励设计器100,以据此修改奖励函数,重新提交检查,直至奖励函数满足预设验证要求或达到预设迭代阈值,例如预设迭代阈值可设定为上述过程执行不超过3次。
[0046] 可选地,在本申请的一个实施例中,系统10还包括:训练模块,用于利用满足预设验证要求的奖励函数对智能体进行训练,直至满足预设训练停止条件,得到奖励函数的训练集。
[0047] 需要说明的是,预设训练停止条件可由本领域技术人员根据实际情况进行设置,在此不作具体限定。
[0048] 可以理解的是,在本申请的实施例中,可以获取奖励检查器200输出的满足预设验证要求的奖励函数对智能体进行深度学习训练,直至满足预设训练停止条件,得到奖励函数的训练集用于奖励函数的进一步优化。
[0049] 可选地,在本申请的一个实施例中,训练模块包括:检测单元,用于检测奖励函数是否存在至少一个错误信号;更正单元,用于在检测到存在至少一个错误信号的情况下,基于至少一个错误信号更正奖励函数,以利用更正后的奖励函数训练智能体。
[0050] 在实际执行过程中,若奖励函数在环境执行过程中出现错误,则判定奖励函数存在至少一个错误信号,将错误的栈回溯反馈至奖励设计器100进行修改,其中,错误可能包括对输入参数的误解、列表索引超出范围、字典中未初始化的键以及其他仅在代码的实际执行期间的错误等,将更正后的奖励函数重新通过奖励检查器200检查后,再次进行智能体的深度学习训练。
[0051] 交互轨迹分析器300,用于获取满足预设验证要求的奖励函数的训练集,在训练集中提取至少一个交互轨迹的失败经验,基于失败经验生成优化意见,直至智能体满足预设迭代条件。
[0052] 需要说明的是,预设迭代条件可由本领域技术人员根据实际情况进行设置,在此不作具体限定。
[0053] 可以理解的是,在本申请的实施例中,因预设大语言模型存在对环境了解不足或奖励函数设计有误等问题,可以通过交互轨迹分析器300,基于所训练的智能体在环境中失败的交互轨迹,交互轨迹分析器300使用预设大语言模型对可能的失败原因进行分析,并提出针对性设计修正建议,得到优化经验,从而持续获取智能体的训练数据,实现奖励函数的更新迭代,直至智能体满足预设迭代条件,完成深度学习训练。
[0054] 在实际执行过程中,因奖励设计器100通过理解环境信息和任务指令生成密集奖励函数,此类零样本做法依赖于预设大语言模型对其可能面临的问题的想象,难以保证设计奖励的有效性和全面性。例如,在《我的世界》游戏环境中,奖励函数设计过程中通常不会考虑智能体落入熔岩而死亡的情况并施加对应远离熔岩的奖励。因此,为了根据实际交互的经验对设计的密集奖励函数进行改进,可以通过交互轨迹分析器300总结智能体与环境之间交互的历史信息,以指导奖励的修改。
[0055] 具体而言,当前训练的智能体与环境交互并获得K条交互轨迹,预设大语言模型分析交互轨迹中每个失败轨迹的最后连续L帧的观察纪录作为失败经验,以自动推断智能体可能的失败原因。在分析失败原因的基础上,交互轨迹分析器300提出在下一轮奖励函数修订中需要考虑的要点作为优化意见,以供奖励设计器100进行参考。交互轨迹分析器300和奖励设计器100将对轨迹数据的分析和对奖励函数的改进解耦,交互轨迹分析器300无需了解奖励函数的细节,奖励设计器100无需处理复杂的轨迹数据,从而使系统各部分专注于各自目标,降低了奖励函数改进的困难。举例而言,如下算法1所示,为自动奖励函数设计和改进算法的伪代码,可实现上述实施例所述的奖励函数的设计和改进:
[0056]
[0057]
[0058] 下面以一个具体实施例对本申请实施例的工作内容进行详细阐述。如图2所示,为本申请一个实施例的自动化奖励函数设计的逻辑框架示意图。
[0059] 其中,在开放世界生存游戏的虚拟环境中,可以首先确认智能体的目标任务,将目标任务发送至奖励设计器100,例如输入“任务:在地下寻找钻石矿”的指令至预设大预言模型,修改奖励内容以实现奖励函数的设计,例如输入“增加靠近熔岩的惩罚”的指令至预设大预言模型,得到奖励函数的实际代码。
[0060] 由奖励检查器200对代码内容进行检查,若出现语义错误则将语义错误对应的修改意见发送至奖励设计器100进行奖励函数的更新,直至奖励函数的代码符合预设验证要求或奖励检查器200的验证达到预设迭代次数。
[0061] 通过奖励检查器200的奖励函数用于进行智能体的深度学习训练,与虚拟环境实现观察空间和行动空间的交互,得到智能体的交互轨迹;交互轨迹分析器300对交互轨迹中的失败轨迹进行失败原因总结,例如失败原因为“智能体因落入熔岩而死亡”,得到奖励函数的优化意见,并发送至奖励设计器100进行奖励函数的更新,直至智能体完成深度学习训练,达到预设迭代要求,得到高效成功完成目标任务的智能体。
[0062] 根据本申请实施例提出的基于大语言模型的自动奖励函数设计系统,可以基于大语言模型的代码生成和推理能力设计适配于不同任务的奖励函数,检查奖励函数以根据检查结果进行修正,并通过智能体与环境交互的反馈结果优化奖励函数,以满足智能体的深度学习训练对密集奖励信号的需求,实现适应于开放世界和复杂任务的智能体训练。由此,解决了相关技术中,密集奖励信号所需人类先验知识要求大量人工设计,无法在高自由度的开放世界环境中应用,且奖励函数通常针对较简单的任务进行设计,难以适配开放世界生存游戏的复杂任务要求,导致智能体强化学习训练的高效性下降且成功率不足等问题。
[0063] 其次参照附图描述根据本申请实施例提出的基于大语言模型的自动奖励函数设计方法。
[0064] 图3是本申请实施例的基于大语言模型的自动奖励函数设计方法的流程图,包括以下步骤:
[0065] 在步骤S101中,在满足预设开放条件的虚拟环境中,获取智能体的至少一个目标任务。
[0066] 在步骤S102中,基于预设大语言模型设计至少一个目标任务对应的奖励函数,并判断奖励函数的代码信息是否满足预设验证要求。
[0067] 在步骤S103中,在代码信息满足预设验证要求的情况下,利用满足预设验证要求的奖励函数训练智能体,直至满足预设训练停止条件,得到智能体的训练集。
[0068] 在步骤S104中,在训练集中提取至少一个交互轨迹的失败经验,基于失败经验,利用预设大语言模型生成奖励函数的优化意见。
[0069] 在步骤S105中,根据优化意见更新奖励函数,直至智能体满足预设迭代条件。
[0070] 可选地,在本申请的一个实施例中,在奖励函数的代码信息是否满足预设验证要求之后,还包括:在代码信息不满足预设验证要求的情况下,基于预设大语言模型生成代码信息的检查意见,并根据检查意见修改代码信息;重新检查修改后的代码信息是否满足预设验证要求,直至代码信息满足预设验证要求或达到预设迭代阈值。
[0071] 可选地,在本申请的一个实施例中,利用满足预设验证要求的奖励函数训练智能体,包括:检测奖励函数是否存在至少一个错误信号;在检测到存在至少一个错误信号的情况下,由预设大语言模型,基于至少一个错误信号更正奖励函数,以利用更正后的奖励函数训练智能体。
[0072] 可选地,在本申请的一个实施例中,基于预设大语言模型设计至少一个目标任务对应的奖励函数,包括:基于预设大语言模型,根据至少一个目标任务生成奖励函数的注释信息;将注释信息添加至代码信息。
[0073] 需要说明的是,前述对基于大语言模型的自动奖励函数设计系统实施例的解释说明也适用于该实施例的基于大语言模型的自动奖励函数设计方法,此处不再赘述。
[0074] 根据本申请实施例提出的基于大语言模型的自动奖励函数设计方法,可以基于大语言模型的代码生成和推理能力设计适配于不同任务的奖励函数,检查奖励函数以根据检查结果进行修正,并通过智能体与环境交互的反馈结果优化奖励函数,以满足智能体的深度学习训练对密集奖励信号的需求,实现适应于开放世界和复杂任务的智能体训练。由此,解决了相关技术中,密集奖励信号所需人类先验知识要求大量人工设计,无法在高自由度的开放世界环境中应用,且奖励函数通常针对较简单的任务进行设计,难以适配开放世界生存游戏的复杂任务要求,导致智能体强化学习训练的高效性下降且成功率不足等问题。
[0075] 图4为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0076] 存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算机程序。
[0077] 处理器402执行程序时实现上述实施例中提供的基于大语言模型的自动奖励函数设计方法。
[0078] 进一步地,电子设备还包括:
[0079] 通信接口403,用于存储器401和处理器402之间的通信。
[0080] 存储器401,用于存放可在处理器402上运行的计算机程序。
[0081] 存储器401可能包含高速RAM存储器,也可能还包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。
[0082] 如果存储器401、处理器402和通信接口403独立实现,则通信接口403、存储器401和处理器402可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0083] 可选地,在具体实现上,如果存储器401、处理器402及通信接口403,集成在一块芯片上实现,则存储器401、处理器402及通信接口403可以通过内部接口完成相互间的通信。
[0084] 处理器402可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
[0085] 本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的基于大语言模型的自动奖励函数设计方法。
[0086] 本实施例还提供一种计算机程序,计算机程序被执行时实现如上的基于大语言模型的自动奖励函数设计方法。
[0087] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0088] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0089] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0090] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0091] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0092] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0093] 此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0094] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。