技术领域
[0001] 本公开总体说来涉及人工智能算法技术领域,尤其涉及自然语言处理技术领域,更具体地,涉及一种基于大语言模型的强化学习奖励函数生成方法及装置。
相关背景技术
[0002] 在相关领域中,强化学习算法是机器学习算法的重要组成部分,其一般用于为智能体提供行动策略。强化学习系统通常由强化学习环境和强化学习算法等部分构成。在强化学习系统中,奖励函数是强化学习算法的核心。奖励函数直接体现了强化学习任务的目的,从而指导智能体在强化学习环境中探索和试错。具体地,通过奖励值的大小来鼓励或惩罚智能体的行为,从而通过与强化学习环境的交互来使智能体学到符合任务需要的行动策略。
[0003] 目前,强化学习算法的奖励函数代码的生成主要依赖人工设计,这个过程也被称为奖励工程。具体地,算法设计相关人员根据强化学习任务的不同需求,来设计相应的奖励函数代码,并且通过人工调试来反复改进代码,直到获得可用的奖励函数代码。然而,这种人工设计的奖励函数代码不仅在设计过程上复杂、繁琐且耗时,而且人工设计的奖励函数代码在大部分情况下无法很好地反映任务目的。
[0004] 因此,为了解决上述问题,需要一种改进的强化学习算法。
具体实施方式
[0029] 提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,本领域已知的特征的描述可被省略。
[0030] 现将详细参照本公开的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本公开。
[0031] 在相关技术中,如上所述地,目前在奖励函数的生成方面仍然依赖于人工设计。为了实现非人工设计奖励函数的目的,近期被提出的一些技术方案可直接将大语言模型(以下可简称LLM或大模型)作为奖励函数。上述这种方法直接将大模型作为强化学习算法训练过程中奖励值的生成器,对于智能体每次做出的动作,使用大模型来评估该动作的结果是否符合强化学习任务的目标,并输出该动作所获得的奖励值。在强化学习算法训练的整个过程中,大模型必须在每次强化学习算法与环境交互后都要输出奖励值,从而代替奖励函数代码。
[0032] 上述这些现有方案存在如下缺点:
[0033] (1)在采用奖励工程方法来生成强化学习算法的情况下,需要大量的人工设计工作,效率较低,并且在很大程度上依赖设计人员的经验。
[0034] (2)在采用将大模型直接作为奖励函数的方法来生成强化学习算法的情况下,由于在强化学习算法的训练过程中每次迭代都需要等待大模型提供奖励,而大模型的处理速度很慢,这会导致训练过程的耗时非常长。
[0035] 为了解决相关技术中的上述问题,本公开提出了一种基于大语言模型的强化学习奖励函数生成方法及装置,本公开并不将大语言模型直接作为奖励函数,而是利用大语言模型代替算法设计人员来生成奖励函数的代码,并且在强化学习的训练过程中,大语言模型不参与评估奖励。通过这样的技术方案,不但能够减少设计奖励函数的工作量,而且能够避免每次大语言模型直接作为奖励值导致的训练缓慢问题。
[0036] 进一步地,本公开提出了一种基于大语言模型的强化学习奖励函数代码的生成方法及装置,通过利用大语言模型自动生成强化学习奖励函数代码,并针对生成的奖励函数代码应用“生成‑评估‑反馈”和正逆向生成的训练机制,有效降低了与强化学习任务相关的奖励函数生成的工作量和复杂性。本公开能够有效克服传统人工奖励工程设计的缺陷,使奖励工程的设计自动化,在需要快速地实现大量强化学习任务的设计的场景下具有更大的优势。
[0037] 下面参照图1至图4详细描述根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法及装置。
[0038] 图1是示出根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法100的流程图。
[0039] 参照图1,根据本公开的实施例,在步骤S101,获取原始任务描述数据、强化学习环境代码数据和提示词调用模板数据。
[0040] 在本公开中,提示词调用模板用于调用将被输入到用于生成奖励函数的预设大语言模型的提示词。
[0041] 例如,提示词调用模板数据可包括初始化提示词模板、代码总结提示词模板、奖励函数生成提示词模板、逆向生成提示词模板、反馈提示词模板和结果排序提示词模板中的至少一种,但本公开不限于此。
[0042] 在本公开中,关于任务描述数据,其可以是描述包括各种自然语言处理任务的数据,例如,文本形式的数据,被转换为文本形式的图像或视频数据等,且在本公开中不进行具体限制。
[0043] 根据本公开的实施例,在步骤S102,将原始任务描述数据、强化学习环境代码数据、初始化提示词模板和代码总结提示词模板输入到预设大语言模型,得到第一环境变量输出结果。
[0044] 根据本公开的实施例,通过将各种输入参数输入到LLM而输出环境参数,来确认用于强化学习的环境中的环境参数是否存在遗漏,从而确保环境参数的完备。
[0045] 根据本公开的实施例,在步骤S103,响应于第一环境变量输出结果满足第一预设条件,将与预设大语言模型对应的温度参数和奖励函数生成提示词模板输入到预设大语言模型,生成第一奖励函数。
[0046] 作为示例,步骤S103可进一步包括:响应于第一环境变量输出结果满足第一预设条件,执行如下S1031和S1032:
[0047] 在S1031,第1个迭代周期中,将与预设大语言模型对应的n个温度参数和奖励函数生成提示词模板输入到预设大语言模型,生成n组初始奖励函数。
[0048] 在S1032,在第2至第jmax个迭代周期中的每个迭代周期中,执行以下处理:将n个温度参数、奖励函数生成提示词模板以及在上一个迭代周期中生成的n组奖励函数和相应的改进建议数据输入到预设大语言模型,生成与当前迭代周期对应的n组奖励函数,并且将与第jmax个迭代周期对应的奖励函数作为第一奖励函数。
[0049] 这里,n为大于等于1的整数,并且jmax为大于等于2的整数,其表示迭代周期的上限值。
[0050] 此外,在本公开中,n个温度参数与当前迭代周期中生成的n组奖励函数是一一对应的关系。
[0051] 根据本公开的实施例,通过利用大语言模型代替算法设计人员来生成奖励函数的代码且在强化学习的训练过程中大语言模型不参与评估奖励,不仅实现了奖励函数生成的自动化,而且减少与奖励函数设计相关的工作量,且提升训练速度和效率。
[0052] 根据本公开的实施例,在当前迭代周期中生成与当前迭代周期对应的n组奖励函数之后,还可执行以下步骤S31和S32(即,在第1至第jmax个迭代周期中的每个迭代周期中可进一步执行以下处理):
[0053] 在S31,将在当前迭代周期中生成的n组奖励函数和逆向生成提示词模板输入到预设大语言模型,生成n组复原任务描述数据。
[0054] 在S32,确定n组复原任务描述数据与原始任务描述数据的相似性,并且将与具有最低相似度值的若干组复原任务描述数据对应的奖励函数作为第三奖励函数。
[0055] 根据本公开的实施例,通过逆向复原任务描述数据的相关操作,为后续执行将被判断为无效奖励函数去除的操作提供参考依据(即,使得复原任务描述与原始任务描述之间的相似程度最低的第三奖励函数)。
[0056] 作为示例,在S32中确定n组复原任务描述数据与原始任务描述数据的相似性的步骤可包括:将结果排序提示词、n组复原任务描述数据和原始任务描述数据输入到预设大语言模型,生成n组相似度值。
[0057] 根据本公开的实施例,将与复原任务描述相关的参数输入到LLM中,实现了利用LLM生成相似度的目的,但是本公开不限于此,也可采用其他算法或模型来计算上述相似度值。
[0058] 根据本公开的实施例,在步骤S104,将第一奖励函数输入到与强化学习环境代码数据对应的强化学习环境中进行训练,得到第二奖励函数,并且将第二奖励函数中与相应的任务成功率均值的最大值对应的奖励函数作为最终的奖励函数。
[0059] 这里,第二奖励函数是将第一奖励函数中的不满足第二预设条件的奖励函数删除之后得到的奖励函数。例如,第二预设条件可包括对第一奖励函数中的每个奖励函数进行训练后得到的结果不符合预设要求的情形所对应的条件。
[0060] 作为示例,步骤S104中的生成第二奖励函数的步骤可进一步包括:在第2至第jmax个迭代周期中的每个迭代周期中,执行以下处理S1041至S1043:
[0061] 在S1041,在与当前迭代周期对应的训练过程中,每经过预定义训练次数统计一次与第一奖励函数对应的任务成功率和针对每个奖励项的奖励值,得到任务成功率序列和奖励值序列。
[0062] 在S1042,基于与每个第一奖励函数对应的任务成功率序列,计算每个第一奖励函数对应的每个任务成功率均值,并且将与每个任务成功率均值中的最大值对应的奖励函数作为当前迭代周期的最佳奖励函数。
[0063] 在S1043,将所有迭代周期的所有最佳奖励函数作为第二奖励函数。
[0064] 根据本公开的实施例,通过采用“生成‑评估‑反馈”和正逆向生成的机制来利用LLM得到第二奖励函数,大大降低了为强化学习任务设计奖励函数的工作量和复杂性。
[0065] 根据本公开的实施例,在当前迭代周期中通过将与当前迭代周期对应的n组奖励函数送入强化学习环境中进行训练得到相应的任务成功率序列和奖励值序列之后,还可执行以下步骤S41和S42(即,在第1至第jmax个迭代周期中的每个迭代周期中可进一步执行以下处理):
[0066] 在S41,基于与在当前迭代周期中生成的n组奖励函数对应的奖励值序列,得到n组奖励得分均值。
[0067] 在S42,响应于与n组奖励得分均值中的最小值对应的奖励函数与第三奖励函数相同,执行以下处理S421至S423:在S421,将与最小值对应的奖励函数从第一奖励函数中删除;在S422,将与被删除的奖励函数对应的温度参数删除;在S423,将n的值更新为减少了与被删除的奖励函数对应数量的值。
[0068] 根据本公开的实施例,通过将满足上述S42中的条件的奖励函数作为无效奖励函数而去除,有效减少下一个迭代周期中与奖励函数相关的计算的工作量,从而有效提升算法执行效率。
[0069] 此外,根据本公开的实施例,在当前迭代周期中通过将与当前迭代周期对应的n组奖励函数送入强化学习环境中进行训练得到相应的任务成功率序列和奖励值序列之后,还可执行以下步骤(即,在第1至第jmax个迭代周期中的每个迭代周期中可进一步执行以下处理):将反馈提示词模板以及在当前迭代周期中生成的n组奖励函数和相应的任务成功率序列输入到预设大语言模型,生成相应的改进建议数据。
[0070] 根据本公开的实施例,通过基于与奖励函数对应的任务成功率和每个奖励项的奖励值来提供改进建议,能够被用于反馈到下一个迭代周期的正向生成相关操作,以用于对下一次生成的奖励函数进行改进,从而有利于使得最终生成的奖励函数满足预定期望需求。
[0071] 根据本公开的实施例,通过采用上述强化学习奖励函数生成方法100,在相关提示词的驱动下,利用大语言模型迭代式地生成、评估、反馈和改进强化学习奖励函数,在迭代过程中通过正向生成函数代码、逆向复原任务描述的操作,使得实现自动化生成奖励函数,有效提高了强化学习任务开发的工作效率。
[0072] 以下,参照图2描述根据本公开的基于大语言模型的强化学习奖励函数生成方法的示例。图2是示出根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法的示例的流程图。
[0073] 在该示例中,通过利用LLM生成奖励函数,然后对包括所生成的奖励函数的强化学习模型进行训练,进而完成“打开柜子”的技能策略的学习,最终目的是生成用于强化学习的有效奖励函数。
[0074] 具体地,如图2所示,基于大语言模型的强化学习奖励函数生成方法的示例可包括初始化操作、函数生成操作、函数评估操作和反馈操作四个部分。这里,函数生成操作、函数评估操作和反馈操作这三个部分可顺序地形成一个“生成‑评估‑反馈”迭代周期。
[0075] 作为示例,初始化操作可包括步骤S201至S204,函数生成操作可包括步骤S205至S207,函数评估操作可包括步骤S208和S209,反馈操作可包括步骤S210和S211。
[0076] 下面参照图2对上述每个步骤进行详细阐述。
[0077] 在步骤S201,将初始化提示词Promptinit、原始任务描述M和强化学习环境的源代码Cenv输入预定的LLM,使LLM进入工作状态。
[0078] 这里,初始化提示词Promptinit包含对LLM角色的指定,强化学习环境的源代码包含奖励函数中所需要的所有环境变量,并且原始任务描述的形式是自然语言形式。
[0079] 在本公开中,关于以下所有的提示词的举例内容都采用斜体表达,并且位于符号“[]”中的内容表示可以根据已经执行的处理中的数据变化而被自动调用的部分。
[0080] 作为初始化提示词的一个示例,初始化提示词Promptinit可为:
[0081] “现在,你是一位机器学习算法工程师。你的工作是编写强化学习算法的奖励函数代码。你编写的奖励函数要与[强化学习环境]相符,要帮助智能体学习[强化学习任务]的策略。你编写的奖励函数应该使用[强化学习环境]的源代码中的[环境变量],不要创造不存在的环境变量。”
[0082] 作为原始任务描述的一个示例,原始任务描述M可为:
[0083] “你要解决的[强化学习任务]是:将柜子的柜门打开。”
[0084] 作为环境源代码的一个示例,环境源代码Cenv(包含有环境变量)的一部分可为:
[0085] “[强化学习环境]的源代码如下:
[0086]
[0087]
[0088] ……(此处省略了剩余代码内容)”。
[0089] 在步骤S202,输入代码总结提示词Promptcheck,要求LLM对强化学习环境的源代码Cenv进行代码总结,并且要求LLM指出Cenv中包含的所有环境变量。
[0090] 作为代码总结提示词的一个示例,代码总结提示词Promptcheck可为:
[0091] “请对[强化学习环境]的源代码进行总结,以语言方式描述这段代码的用途,请列出代码中与环境相关的所有[环境变量]。”
[0092] 在步骤S203,判断是否列出了所有环节变量。
[0093] 通过以上操作,与不提供环境描述给LLM验证或者仅使用自然语言形式描述的环境的其他方法相比,通过要求LLM对强化学习环境的源代码进行总结和确认LLM没有遗漏环境变量,本公开的方法不但能够提高LLM理解环境的能力,还能够用于确保LLM没有遗漏任何一个环境变量。
[0094] 在步骤S203之后,还可执行用于创建温度参数的步骤S204,在步骤S204为LLM创建随机的n个不同的温度参数{ti∣i∈n}。
[0095] 这里,应注意,n的值越大,产生符合需要的n个奖励函数代码的可能性越高,相应地需要的计算时间越长。以下可以将n的取值假设为8来进行举例说明,例如,从[0,1]中取随机的8个不同的值作为温度参数。
[0096] 这里,还应注意,步骤S204执行的操作的顺序不是必须在S203之后,而是可在S203之前执行S204的操作,例如,可在步骤S101、S102的执行之前或之后来执行S204的操作。
[0097] 以下,假设当前迭代周期为:j(1≤j≤jmax),上述函数生成操作可按照正向生成、逆向生成、结果排序的顺序依次执行。
[0098] 在步骤S205,执行正向生成步骤。具体地,该步骤包含n次操作:每次操作顺序地从{ti∣i∈n}中取出一个ti,将LLM的温度参数设置为ti,将奖励函数代码生成提示词Promptgen和第j‑1次迭代周期时生成的奖励函数代码 和改进建议 输入LLM,由LLM生成n组奖励函数代码{Ci∣i∈n}。当j为1时不需要输入奖励函数代码和改进建议。
[0099] 例如,如果假设n为8,则可在每个迭代周期中生分别与8个温度参数对应的8组奖励函数代码。
[0100] 作为奖励函数代码生成提示词的一个示例,如果当前迭代周期是1,则奖励函数代码生成提示词Promptgen可为:
[0101] “请根据上述的[强化学习环境]的源代码,以python语言形式生成一份符合[强化学习任务]的强化学习[奖励函数代码]。在[奖励函数代码]中要合理划分[奖励项],奖励项可能存在多个。”
[0102] 作为奖励函数代码生成提示词的另一示例,如果当前迭代周期不是1,则奖励函数代码生成提示词Promptgen可为:
[0103] “请根据上述的[强化学习环境]的源代码,根据[改进建议],修改[奖励函数代码],以python语言形式生成一份符合[强化学习任务]的强化学习[奖励函数代码]。对[奖励函数代码]中的[奖励项]做出必要的调整。”
[0104] 在步骤S206,执行逆向生成步骤。具体地,该步骤包括:将生成的n组奖励函数代码{Ci∣i∈n}送回LLM,给定逆向生成提示词Promptrvs,由LLM生成对应的n组复原任务描述[0105] 作为逆向生成提示词的一个示例,逆向生成提示词Promptrvs可为:
[0106] “对以上的[奖励函数代码],以语言方式总结出这段[代码描述的强化学习任务],[奖励函数代码]用到的[环境变量]与[强化学习环境]的源代码中的意义一致。不要输出与本任务无关的内容。”
[0107] 在步骤S207,执行结果排序步骤。具体地,该步骤包括:将原始任务描述M与所有的复原任务描述 送入LLM,给定排序提示词Promptrank,由LLM比较 中的每个 与M的相似程度,并确定其中相似程度最低的 所对应的Ci,标记为Cmiss。
[0108] 作为排序提示词的一个示例,排序提示词Promptrank可为:
[0109] “比较以上的8份[代码描述的强化学习任务],找出他们中与[强化学习任务]最接近的一份,输出其序号。”
[0110] 通过包括上述正向生成和逆向生成的过程,与仅设置正向的从原始任务描述生成奖励函数代码的过程相比,有利于后续通过去除无效奖励函数而提升代码运行效率的处理。
[0111] 在步骤S208,对生成结果(即,n组奖励函数代码)进行训练评估。具体地,该步骤包括:依次将候选奖励函数代码{Ci∣i∈n}中的每个Ci送入到强化学习环境中完成训练。在训练过程中,每300轮次(epoch)记录一次任务成功率 和每个奖励项的奖励值 以这种方式每个候选奖励函数代码Ci记录K次(下面的举例中以K取10为例进行说明)相应的任务成
功率和奖励值。
[0112] 由此,得到每个候选奖励函数代码的相应任务成功率的序列和奖励项值序列
[0113] 此外,可进一步得到候选奖励函数代码Ci对应的任务成功率均值为 并且将任务成功率均值 中的最大值 对应的候选奖励函数代码Ci作为第j次迭代周期的最
佳奖励函数代码
[0114] 作为任务成功率序列和奖励项的奖励值序列的一个示例,任务成功率序列可为:[’0.00’,’0.78’,’1.45’,’3.18’,’3.95’,’4.25’,’5.66’,’6.80’,’7.55’,’8.57’],并且与一个奖励项对应的奖励值序列可为:[’0.05’,’0.28’,’0.31’,’0.39’,’0.32’,’0.37’,’
0.37’,’0.37’,’0.37’,’0.36’]。
[0115] 在步骤S209,执行剔除无效代码的步骤,具体包括:对于候选奖励函数代码{Ci∣i∈n}中奖励得分均值最低的候选奖励函数代码Cmin(可以是一组或多组),如果Cmin与Cmiss相同,则将候选奖励函数代码Cmin确认为无效代码,并且将候选奖励函数代码Cmin从{Ci∣i∈n}中剔除,将其对应的ti从{ti∣i∈n}中剔除,且n的数量也相应地减少其对应的组数。
[0116] 通过设置上述以奖励得分均值最低和复原任务描述与原始任务描述的相似度最低作为剔除的依据的候选奖励函数代码的剔除机制,与包括该剔除机制且每次迭代周期中n的数量保持不变的方法相比,可以有效降低每个迭代周期的计算量。
[0117] 在步骤S210,判断当前是否达到最大迭代周期jmsx。如果当前达到最大迭代周期jmax,则所有迭代过程结束,并且从所有的候选奖励函数代码 中选择奖励得分均值最大的一组奖励函数,作为最终的奖励函数代码Cbest。
[0118] 在步骤S211,如果当前尚未达到最大迭代周期jmax,则执行反馈改进建议的步骤,具体包括:将候选奖励函数代码{Ci∣i∈n}和对应的 送入LLM,给定反馈提示词Promptfbk,得到自然语言描述的改进建议文本
[0119] 作为反馈提示词的一个示例,反馈提示词Promptfbk可为:
[0120] “你使用[奖励函数代码]训练得到了[强化学习任务]的策略,并且记录了训练过程中得到的[任务成功率的序列],以及[奖励函数代码]中每个奖励项的值。
[0121] [任务成功率的序列]为:[’0.00’,’0.78’,’1.45’,’3.18’,’3.95’,’4.25’,’5.66’,’6.80’,’7.55’,’8.57’]
[0122] [奖励项值序列]为:[’0.05’,’0.28’,’0.31’,’0.39’,’0.32’,’0.37’,’0.37’,’0.37’,’0.37’,0.36’]
[0123] 请分析这份[任务成功率的序列]和[奖励项值序列],并提供语言形式描述的[改进建议],以便更好地解决[强化学习任务]。在分析[任务成功率的序列]和[奖励项值序列]时,应注意以下方面:
[0124] (1)如果任务成功率全部小于0.1,那么应该建议重新理解[强化学习任务]并且重新设计整个奖励函数;
[0125] (2)如果某个[奖励项]的值持续震荡,那么应该建议删除这个奖励项,或者建议重新编写一个新的奖励项;
[0126] (3)如果某个[奖励项]的值大于其他[奖励项]的值超过10倍以上,那么应该建议为其设置或调整合适的系数,使其数值范围与其他[奖励项]保持一致。
[0127] 下面请输出[改进建议]。”
[0128] 这里,在反馈提示词的示例中,反馈提示词Promptfbk中的“任务成功率的序列”的数值和“奖励项值序列”的数值来自于步骤S208的相关示例,即,“[任务成功率的序列]”和“[奖励项值序列]”可直接调用步骤S208中得到的两者对应的数值,而无需另外输入。
[0129] 在步骤S311之后,返回步骤S205,执行下一个迭代周期的处理。
[0130] 这里,应注意,上述关于图2的各个步骤的描述仅仅是示例性的,而根据本公开的方法中的步骤不限于此。
[0131] 图3是示出根据本公开的实施例的基于大语言模型的强化学习奖励函数生成装置300的结构框图。
[0132] 参照图3,根据本公开的实施例的基于大语言模型的强化学习奖励函数生成装置300可包括数据获取模块310、变量验证模块320和函数生成模块330。
[0133] 根据本公开的实施例,数据获取模块310被配置为:获取原始任务描述数据、强化学习环境代码数据和提示词调用模板数据。
[0134] 在本公开中,提示词调用模板用于调用将被输入到用于生成奖励函数的预设大语言模型的提示词。
[0135] 例如,提示词调用模板数据可包括初始化提示词模板、代码总结提示词模板、奖励函数生成提示词模板、逆向生成提示词模板、反馈提示词模板、结果排序提示词模板,但本公开不限于此。
[0136] 根据本公开的实施例,变量验证模块320被配置为:将原始任务描述数据、强化学习环境代码数据、初始化提示词模板和代码总结提示词模板输入到预设大语言模型,得到第一环境变量输出结果。
[0137] 根据本公开的实施例,函数生成模块330被配置为:响应于第一环境变量输出结果满足第一预设条件,将与预设大语言模型对应的温度参数和奖励函数生成提示词模板输入到预设大语言模型,生成第一奖励函数;并且将第一奖励函数输入到与环境代码数据对应的强化学习环境中进行训练,得到第二奖励函数,并且将第二奖励函数中与相应的任务成功率均值的最大值对应的奖励函数作为最终的奖励函数。
[0138] 这里,第二奖励函数是将第一奖励函数中的不满足第二预设条件的奖励函数删除之后得到的奖励函数。例如,第二预设条件可包括对第一奖励函数中的每个奖励函数进行训练后得到的结果不符合预设要求的情形所对应的条件。
[0139] 作为示例,函数生成模块330还可被配置为:在第1至第jmax个迭代周期中的每个迭代周期中,进一步执行以下处理:将在当前迭代周期中生成的n组奖励函数和逆向生成提示词模板输入到预设大语言模型,生成n组复原任务描述数据;确定n组复原任务描述数据与原始任务描述数据的相似性,并且将与具有最低相似度值的若干组复原任务描述数据对应的奖励函数作为第三奖励函数。
[0140] 进一步地,作为示例,函数生成模块330确定n组复原任务描述数据与原始任务描述数据的相似性的操作可包括:将结果排序提示词、n组复原任务描述数据和原始任务描述数据输入到预设大语言模型,生成n组相似度值。
[0141] 根据本公开的实施例,函数生成模块330响应于第一环境变量输出结果满足第一预设条件,将与预设大语言模型对应的温度参数和奖励函数生成提示词模板输入到预设大语言模型,生成第一奖励函数的操作可包括操作3311)和3312):
[0142] 在操作3311),响应于第一环境变量输出结果满足第一预设条件,在第1个迭代周期中,将与预设大语言模型对应的n个温度参数和奖励函数生成提示词模板输入到预设大语言模型,生成n组初始奖励函数。
[0143] 在操作3312),在第2至第jmax个迭代周期中的每个迭代周期中,执行以下处理:将n个温度参数、奖励函数生成提示词模板以及在上一个迭代周期中生成的n组奖励函数和相应的改进建议数据输入到预设大语言模型,生成与当前迭代周期对应的n组奖励函数,并且将与第jmax个迭代周期对应的奖励函数作为第一奖励函数。
[0144] 这里,n为大于等于1的整数,jmax为大于等于2的整数。
[0145] 在本公开中,n个温度参数与当前迭代周期中生成的n组奖励函数是一一对应的关系。
[0146] 根据本公开的实施例,函数生成模块330将第一奖励函数输入到与强化学习环境代码数据对应的强化学习环境中进行训练,得到第二奖励函数的操作可包括:在第2至第jmax个迭代周期中的每个迭代周期中,执行以下处理3321)至3323):
[0147] 在3321),在与当前迭代周期对应的训练过程中,每经过预定义训练次数统计一次与第一奖励函数对应的任务成功率和针对每个奖励项的奖励值,得到任务成功率序列和奖励值序列。
[0148] 在3322),基于与每个第一奖励函数对应的任务成功率序列,计算每个第一奖励函数对应的每个任务成功率均值,并且将与每个任务成功率均值中的最大值对应的奖励函数作为当前迭代周期的最佳奖励函数。
[0149] 在3323),将所有迭代周期的所有最佳奖励函数作为第二奖励函数。
[0150] 作为示例,函数生成模块330还可被配置为:在第1至第jmax个迭代周期中的每个迭代周期中,进一步执行以下处理:基于与在当前迭代周期中生成的n组奖励函数对应的奖励值序列,得到n组奖励得分均值;响应于与n组奖励得分均值中的最小值对应的奖励函数与第三奖励函数相同,执行以下处理:将与最小值对应的奖励函数从第一奖励函数中删除,将与被删除的奖励函数对应的温度参数删除,并且将n的值更新为减少了与被删除的奖励函数对应数量的值。
[0151] 此外,作为示例,函数生成模块330还可被配置为:在第1至第jmax个迭代周期中的每个迭代周期中,进一步执行以下处理:将反馈提示词模板以及在当前迭代周期中生成的n组奖励函数和相应的任务成功率序列输入到预设大语言模型,生成相应的改进建议数据。
[0152] 应注意,关于上述各个结构框所执行的操作可与参照图1描述的相关内容类似,这里不再赘述。
[0153] 图4是示出根据本公开的实施例的计算机设备400的框图。
[0154] 参照图4,根据本公开的实施例的计算机设备400可包括可处理器410和存储器420。处理器410可包括(但不限于)中央处理器(CPU)、数字信号处理器(DSP)、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、微处理器、专用集成电路(ASIC)等。存储器420可存储将由处理器410执行的计算机可执行指令。存储器420包括高速随机存取存储器和/或非易失性计算机可读存储介质。当处理器410执行存储器420中存储的计算机可执行指令时,可实现如上所述的基于大语言模型的强化学习奖励函数生成方法。
[0155] 根据本公开的实施例的评测方法可被编写为计算机程序/指令以形成计算机程序产品并被存储在计算机可读存储介质上。当所述计算机程序/指令被处理器执行时,可实现如上所述的基于大语言模型的强化学习奖励函数生成方法。当所述计算机可读存储介质中的指令由电子设备/服务器的处理器执行时,使得电子设备/服务器能够执行如上所述的基于大语言模型的强化学习奖励函数生成方法。计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD‑ROM、CD‑R、CD+R、CD‑RW、CD+RW、DVD‑ROM、DVD‑R、DVD+R、DVD‑RW、DVD+RW、DVD‑RAM、BD‑ROM、BD‑R、BD‑R LTH、BD‑RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
[0156] 根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法及装置,实现了基于大语言模型的强化学习奖励函数代码生成,从而降低了强化学习算法的设计难度。例如,在本公开中,通过大语言模型本身具有的知识来完成强化学习奖励函数的设计以代替人工设计,可以有效降低算法设计人员的工作量,减少对算法设计人员经验的依赖,有效提高算法设计效率。
[0157] 另一方面,根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法及装置,通过使得奖励函数的生成自动化,有效提高了强化学习任务开发的工作效率。例如,在本公开中,与直接将大语言模型作为强化学习奖励值的生成器的常规方法相比,通过在生成奖励函数代码之后大语言模型不再参与强化学习任务的训练过程,大语言模型的运行速度不会影响到强化学习的训练过程,因此与直接将大语言模型作为强化学习奖励值的生成器的常规方法相比,根据本公开的实施例的奖励函数生成方法的训练速度更快且效率更高。
[0158] 另一方面,根据本公开的实施例的基于大语言模型的强化学习奖励函数生成方法及装置,能够有效克服传统人工奖励工程设计的缺陷,使奖励工程的设计自动化,在需要快速地实现大量强化学习任务的设计的场景下具有更大的优势。
[0159] 虽然已公开和描述了本公开的一些实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同方案限定其范围的本公开的构思和精神的情况下,可以对这些实施例进行修改和变型。