奖励函数是用于确定应用动作后每个新生成状态质量的函数,通常表示为 r_t = r(s_t, a_t) 。与强化学习中奖励工程的复杂性相似,制定奖励可能较为复杂,需要适应特定任务的领域知识或偏好。在某些框架中,为保持通用性,直接将奖励定义为在与给定训练样本分开的预留集上的任务性能,但奖励的确切定义取决于任务特定的指标。
例如在自我反思框架中,评估者会根据不同人物使用不同的奖励函数(决策任务使用 LLM 和基于规则的启发式奖励)。而在 PromptAgent 方法中,奖励函数由基本模型在留出集上的表现决定,当路径长度达到深度限制时达到终止状态,还应用了早停方法,具体的最小阈值和最大阈值有相应的计算方式。
最后,应用动作$$a_{t}$$后每个新生成状态$$s_{t}$$的质量由奖励函数$$r_{t}=r(s_{t},a_{t})$$确定。与强化学习(RL)中奖励工程的复杂性相似,制定奖励可能会很复杂,以适应特定于任务的领域知识或偏好。在各种任务中不失我们框架的通用性,我们直接将奖励定义为在与给定的训练样本分开的预留集上的任务性能。然而,奖励的确切定义将取决于稍后描述的任务特定的指标。
自我反思是一个通过语言反馈来强化基于语言的智能体的框架。根据[Shinn et al.(2023)(opens in a new tab)](https://arxiv.org/pdf/2303.11366.pdf),“自我反思是一种‘口头’强化的新范例,它将策略参数化为智能体的记忆编码与LLM的参数选择配对。”在高层次上,自我反思将来自环境的反馈(自由形式的语言或者标量)转换为语言反馈,也被称作self-reflection,为下一轮中LLM智能体提供上下文。这有助于智能体快速有效地从之前的错误中学习,进而提升许多高级任务的性能。如上图所示,自我反思由三个不同的模型组成:参与者(Actor):根据状态观测量生成文本和动作。参与者在环境中采取行动并接受观察结果,从而形成轨迹。[链式思考(CoT)(opens in a new tab)](https://www.promptingguide.ai/techniques/cot)和[ReAct(opens in a new tab)](https://www.promptingguide.ai/techniques/react)被用作参与者模型。此外,还添加了记忆组件为智能体提供额外的上下文信息。评估者(Evaluator):对参与者的输出进行评价。具体来说,它将生成的轨迹(也被称作短期记忆)作为输入并输出奖励分数。根据人物的不同,使用不同的奖励函数(决策任务使用LLM和基于规则的启发式奖励)。自我反思(Self-Reflection):生成语言强化线索来帮助参与者实现自我完善。这个角色由大语言模型承担,能够为未来的试验提供宝贵的反馈。自我反思模型利用奖励信号、当前轨迹和其持久记忆生成具体且相关的反馈,并存储在记忆组件中。智能体利用这些经验(存储在长期记忆中)来快速改进决策。
PromptAgent(我们的方法)。PromptAgent在提示空间内执行MCTS规划,需要终止状态条件和奖励函数。当路径长度达到深度限制时,就会达到终止状态。奖励函数由基本模型在留出集上的表现决定。为了计算效率,为了避免不必要的探索,我们还在深度大于2后应用了一种早停方法:如果状态的奖励小于最小阈值或大于最大阈值,我们则达到一个早停状态。具体而言,最小阈值是其父节点和根节点的奖励的平均值,而最大阈值是所有当前节点的最大值,这鼓励更短的路径。我们现在进一步说明算法1的细节。