code
让RL用少量样本数据就能学好
我们开发了一种名为LINVIT的算法,该算法将LLM的指导作为基于值的RL中的正则化因子,从而显著减少了学习所需的数据量,特别是在理想策略与LLM提供的策略之间的差异较小时,这表明初始策略接近最优,减少了对进一步探索的需求。此外,我们提出了一种实用的算法SLINVIT,它简化了值函数的构建,并通过使用子目标来降低搜索复杂度。
LINVIT:Language-INtegrated Value Iteration 语言集成值迭代
由LLMs驱动的智能体在探索不同策略方面的能力有限,常常倾向于重复已有的策略。这一局限在LLMs未专门适应的复杂决策场景中尤为明显,导致它们在仅依靠自身能力对环境反馈进行推理时,难以有效地优化策略
将LLMs用作正则化器,而不是直接将其用于决策。
算法全过程
以下是**Algorithm 1: Language-INtegrated Value Iteration (LINVIT)**的详细解释和流程说明:
算法输入
- 目标精度 ϵ:算法需要达到的精度要求。
- 目标概率 δ:算法需要满足的概率保证。
- 奖励函数 b0 和 b0,KL:用于计算值函数的奖励和正则化项。
算法流程
1. 外层循环(for t = 0, ..., T)
- 算法通过T次迭代逐步优化策略。
- 每次迭代t包括以下步骤:
2. 模型和不确定性估计
- 步骤2:构建模型估计器Pht和不确定性量化器uht。
- 模型估计器Pht(s′∣s,a)用于估计状态转移概率:
Pht(s′∣s,a)=nht(s,a)nht(s,a,s′)如果nht(s,a)>0,
否则Pht(s′∣s,a)≜S1。
- 不确定性量化器uht(s,a)用于衡量状态-动作对(s,a)的不确定性:
uht(s,a)≜max{2H,nht(s,a)log(4HTS2A/δ)}。
3. 计算乐观和悲观值函数
- 步骤3:计算乐观值函数Vht和悲观值函数Vht。
- 乐观值函数Vht通过以下公式计算:
Qht(s,a)=clip(rh(s,a)+∑s′Pht(s′∣s,a)Vh+1t(s′)+uht(s,a)),
Vht(s)=maxπ∈ΔA{∑aπ(a∣s)Qht(s,a)−λKL(π(⋅∣s)∥πhLLM(⋅∣s))}.
- 悲观值函数Vht通过以下公式计算:
Qht(s,a)=clip(rh(s,a)+∑s′Pht(s′∣s,a)Vh+1t(s′)−uht(s,a)),
Vht(s)=maxπ∈ΔA{∑aπ(a∣s)Qht(s,a)−λKL(π(⋅∣s)∥πhLLM(⋅∣s))}.
4. 计算探索策略
- 步骤4:计算探索策略πt。
- 探索策略πht(⋅∣s)通过以下公式生成:
πht(⋅∣s)=H1⋅1{a=*argmaxQht(s,a)−Qht(s,a)}+HH−1⋅πˉht(⋅∣s),
其中πˉht(⋅∣s)是在正则化MDP中的最优策略。
5. 内层循环(for h = 1, ..., H)
- 步骤5-8:在每个时间步h中执行以下操作:
- 步骤6:根据探索策略πht(⋅∣s)采样动作aht。
- 步骤7:执行动作aht,并观察环境返回的下一状态sh+1t。
- 这个过程重复H次,直到完成一个完整的回合。
6. 返回最终策略
- 步骤10:返回最终策略π^,它是所有迭代策略{πˉt}t=1T的均匀混合。
- 最终策略π^的计算方式为:
π^=T1∑t=1Tπˉt.
算法的作用和关键点
-
模型和不确定性估计:
- 通过收集的数据估计状态转移模型和不确定性,为后续值函数计算提供基础。
-
乐观和悲观值函数:
- 乐观值函数鼓励探索不确定性高的区域,悲观值函数避免过度探索。
- 通过KL散度将LLM的策略作为正则化项引入,确保RL策略不会偏离LLM策略太远。
-
探索策略生成:
- 利用乐观和悲观值函数的差异生成探索策略,平衡探索与利用。
-
数据收集与策略优化:
-
最终策略:
总结
- LINVIT算法通过结合LLM的策略先验和环境反馈,显著提高了RL的样本效率。
- 乐观值函数和悲观值函数在探索与利用之间找到平衡,而KL散度确保RL策略不会偏离LLM策略太远。
- 最终策略是所有迭代策略的均匀混合,能够在复杂决策任务中取得更好的表现。
method
KL散度取值范围是0到正无穷
1. KL散度是计算什么的?
KL散度(Kullback-Leibler Divergence)是一种用于衡量两个概率分布之间差异的度量。假设有两个概率分布P和Q,KL散度的计算公式为:
KL(P∥Q)=∑xP(x)logQ(x)P(x).
在本文中,KL散度用于衡量**当前策略π(⋅∣s)与LLM提供的策略πLLM(⋅∣s)**之间的差异。具体来说:
KL(π(⋅∣s)∥πLLM(⋅∣s))=∑aπ(a∣s)logπLLM(a∣s)π(a∣s).
- 如果π和πLLM非常相似,KL散度接近于零。
- 如果π和πLLM差异较大,KL散度会增大。
2. 正则化项是什么意思?
正则化项(Regularization Term)是在优化问题中引入的一个附加项,用于对模型的复杂性或行为进行约束。正则化的目的是防止模型过拟合或偏离某种期望的行为。
在本文中,KL散度被用作正则化项,目的是将LLM的策略πLLM作为先验知识引入RL算法中,从而约束RL策略π的行为,使其不会偏离LLM提供的策略太远。
3. 简单例子
假设我们有一个简单的任务:在一个迷宫中找到出口。LLM提供了一个策略πLLM,建议智能体在大多数情况下向右走。RL算法需要学习一个策略π,但为了避免智能体完全忽略LLM的建议,我们在目标函数中引入KL散度作为正则化项:
目标函数=累积奖励−λ⋅KL(π∥πLLM).
- 如果RL策略π完全遵循LLM的策略πLLM,KL散度为0,正则化项不起作用。
- 如果RL策略π偏离LLM的策略πLLM,KL散度会增加,从而惩罚这种偏离。
通过这种方式,RL算法在最大化累积奖励的同时,也会尽量遵循LLM提供的策略。
4. 为什么减去正则化项即可起到作用?
减去正则化项的作用是通过优化目标函数来平衡两个目标:
- 最大化累积奖励:RL算法的核心目标是找到能够最大化累积奖励的策略。
- 最小化KL散度:通过减去KL散度,RL算法被鼓励选择与LLM策略πLLM接近的策略。
具体来说:
- 当RL策略π与LLM策略πLLM差异较大时,KL散度会增加,目标函数的值会减小,从而惩罚这种偏离。
- 当RL策略π与LLM策略πLLM接近时,KL散度会减小,目标函数的值会增大,从而鼓励RL策略利用LLM提供的先验知识。
通过这种方式,正则化项起到了以下作用:
- 提高样本效率:当LLM的策略接近最优策略时,RL算法可以更快地收敛到最优解,而不需要从头开始学习。
- 平衡探索与利用:正则化项确保RL策略不会完全偏离LLM提供的策略,从而在探索和利用之间取得平衡。
- 增强鲁棒性:即使LLM的策略不是最优的,RL算法仍然可以通过环境反馈找到最优策略,因为正则化项只是一个软约束。
5. 总结
- KL散度用于衡量当前策略与LLM策略之间的差异。
- 正则化项通过减去KL散度,将LLM的策略作为先验知识引入RL算法中,从而约束RL策略的行为。
- 减去正则化项的作用是平衡最大化累积奖励和最小化策略差异,从而提高样本效率、平衡探索与利用,并增强算法的鲁棒性。