大规模语言模型人类反馈对齐--近端策略优化PPO

近端策略优化算法 (Proximal Policy Optimization,PPO) 即属于 AC 框架下的算法, 在采样策略梯度算法训练 方法的同时, 重复利用历史采样的数据进行网络参数更新, 提升了策略梯度方法的学习效率。实际计算时, 需 要从环境中采样很多轨迹 τ ,然后按照上述策略梯度公式 (或者添加各种可能优化) 对策略函数参数 θ 进行更新。 但是由于 τ 是从概率分布 pθ(τ) 中采样得到, 一旦策略函数参数 θ 更新, 那么概率分布 pθ(τ) 就会发生变化, 因 而之前采样过的轨迹便不能再次利用。所以策略梯度方法需要在不断地与环境交互中学习而不能利用历史数据。 因而这种方法的训练效率低下。

策略梯度方法中, 负责与环境交互的演员与负责学习的演员相同, 这种训练方法被称为同策略 (On-Policy) 训练方法。相反, 异策略 (Off-Policy) 训练方法则将这两个演员分离, 固定一个演员与环境交互而不更新它, 而 将交互得到的轨迹交由另外一个负责学习的演员训练。异策略的优势是可以重复利用历史数据, 从而提升训练 效率。近端策略优化就是策略梯度的异策略版本。由于异策略的实现依赖于重要性采样 (Importance Sampling), 下面将首先介绍重要性采样的基本概念,在此基础上介绍近端策略优化算法以及相关变种。

PPO 重要的突破就是在于对新旧新旧策略器参数进行了约束, 希望新的策略网络和旧策略网络的越接近越 好。近端策略优化的意思就是: 新策略网络要利用到旧策略网络采样的数据进行学习, 不希望这两个策略相差 特别大,否则就会学偏。

重要性采样

假设随机变量 x 服从概率分布 p,如果需要计算函数 f(x) 的期望, 那么可以从分布 p 中采样得到若干数据xi,然后使用如下公式进行近似计算:

如果 N 足够大,那么上式的结果将无限趋近于真实的期望。

如果无法从分布 p 中采样, 只能从分布 q 中采样 xi ,由于是从另外一个分布中采样得到的 xi ,就不能直接 使用上面公式计算 Ex∼p[f(x)],因为此时 x 服从分布 q。需要对 Ex∼p[f(x)] 加以变换, 具体来说, PPO 算法利 用重要性采样的思想, 在不知道策略路径的概率 p 的情况下, 通过模拟一个近似的 q 分布, 只要 p 同 q 分布不 差的太远,通过多轮迭代可以快速参数收敛。这个重要性采样思想如下面公式所示:

从 q 中每采样一个 xi 并计算 f(xi ),都需要乘上一个重要性权重来修正这两个分布的差异, 因此这种方法 被称为重要性采样。这样就可以实现从分布 q 中采样, 但计算当 x 服从分布 p 时 f(x) 的期望。其中 q 可以是任 何一个分布。

但重要性采样依然存在一个问题。我们用 q 代替了 p 来采样 x ,但是两个随机变量的分布, 即使均值 mean 一样, 也不代表方差 variance 一样, 因此, 如果 p(x) 比 q(x) 的数值很大, 就会造成方差很大。理论上来说, 如果采样次数很多, p 和 q 得到的期望会是一样的。然而在实践中受制于采样次数有限, 分布 q 不能够和 p 差距太大,否则结果可能会差别很大。

重要性采样中分布 q 和 p 差距过大可能引起的问题

如上图所示, 对于 q 右侧概率大而左侧概率小, p 则反之, 从 q 中采样就会经常采样得到较多右侧数据点, 而较少有左侧的数据点。但由于重要性采样, 右侧会赋予较低的权重, 左侧赋予极高的权重, 因此计算得到的 f(x) 期望仍然是负的。但是, 由于 q 左侧概率很低, 如果采样次数不足没有采样到左侧的数据点, 那么所得到的 期望就是正的,与预期差别非常大。因此,在实践中会约束这两个分布,使之尽可能减小差异。

近端策略优化

通过将重要性采样运用到策略函数更新, 可以把同策略换成异策略。假设负责学习的智能体策略为 πθ ,负 责采样的智能体策略为 π。计算策略梯度 ∇Rθ = Er∼pe(τ ) [Rτ ∇ log pθ (τ )],但由于异策略, 不能从 pθ (τ ) 中采样 τ ,而只能从 p 中采样,因此需要添加重要性权重修正结果:

注意此策略梯度只更新 πθ ,而 πθ' 并不更新, 这样才能够不断地从 πθ' 中采样轨迹, 从而使得 πθ 可以多次 更新。在此基础上,将已知的优化也纳入考虑,首先利用优势函数 A(st, at)带入策略梯度公式,可以得到:

其中 (st , at ) 是 t 时刻 = 的状态-动作对并且 τ = (s1 , a1 ), (s2 , a2 ), ... 。运用重要性采样计算策略梯度:

此时优势函数从 Aθ (st , at ) 变成 Aθ'(st , at ),因为此时是利用 πθ' 采样。然后, 可以拆解 pθ (st , at ) 和 pθ'(st , at ) 得 到:

假定状态只和环境有关, 而与具体策略无关, 即 pθ (st) ≈ pθ'(st )。一个很直接的原因是这部分难以计算。而pθ (st ,at ) 和 pθ' (st ,at ) 则易于计算。因此可以进一步将策略梯度公式写成:

从上述式子的梯度形式反推原来的目标函数,可以得到如下公式:

其中, Jθ'(θ)表示需要优化的目标函数, θ'代表使用 πθ'与环境交互, θ 代表要优化的参数。注意到当上式 对 θ 求梯度的时候, pθ'(at |st ) 和 Aθ'(st , at ) 都是常数,因而只需要求解 pθ (at |st ) 的梯度。

重要性采样的一个重要的稳定性保证是分布 p 和分布 q 不能差别太多, 上面提到如果采样次数不够多, 就可 能会有很大的差别, 为了不让 p 和 q 差异过大, 即pθ (τ )和pθ‘(τ ),PPO 的解法是在里面加入一个约束项 βKL(θ, θ\), KL 散度简单来说就是衡量二者有多相似,我们希望这两个分布越像越好。

需要注意的是, 这里并不是要保证 θ 和 θ’的参数的空间距离保持相似, 否则可以直接使用 L2 范数来约束。但是, 这里是要保证 pθ (at |st ) 和 pθ' (at |st ) 的表现相似, 即要保证的是动作概率的相似。这两者的差别在于, 即 使参数相似,其输出的动作也可能大相径庭。

算法的具体步骤如下:

  • 第一步:初始化 Policy 的参数 θ0 ;

  • ​ 第二步:在每次迭代中, 首先使用 θ'与环境互动, 得到一堆 (at , st ) 数据对, 计算优势函数, 这里可以理 解成奖励。

ps:欢迎扫码关注公众号^_^.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vc++全版本组件大全 VC++运行时(Visual C++ Runtime)是VC++开发环境中用于支持C和C++程序运行的基础库集合。这些库包含了执行C/C++程序所必需的基本函数和数据结构,例如内存管理、字符串操作、输入输出处理、异常处理等。VC++运行时库分为静态库和动态库两种形式,以适应不同类型的项目需求。 静态链接库 vs 动态链接库 静态链接库(Static Linking Libraries):在编译时,静态库的代码会被直接嵌入到最终生成的可执行文件中。这意味着每个使用静态库的程序都会包含库代码的一个副本,导致最终程序的体积较大,但不需要外部库文件支持即可独立运行。在VC++中,静态链接库的例子有LIBC.lib(用于单线程程序)和LIBCMT.lib(用于多线程程序)。 动态链接库(Dynamic Link Libraries):与静态链接相反,动态库的代码并不直接加入到应用程序中,而是在程序运行时被加载。这使得多个程序可以共享同一份库代码,节省了系统资源。VC++的动态运行时库主要通过msvcrt.dll(或其变体,如MSVCRTD.dll用于调试版本)实现,与之配套的导入库(Import Library)如CRTDLL.lib用于链接阶段。 运行时库的版本 VC++运行时库随着Visual Studio版本的更新而发展,每个版本都可能引入新的特性和优化,同时保持向后兼容性。例如,有VC++ 2005、2008、2010直至2019等多个版本的运行时库,每个版本都对应着特定的开发环境和Windows操作系统。 重要性 VC++运行时对于确保程序正确运行至关重要。当程序在没有安装相应运行时库的计算机上执行时,可能会遇到因缺失DLL文件(如MSVCP*.dll, VCRUNTIME*.dll等)而导致的错误。因此,开发完成后,通常需要分发相应的VC++ Redistributable Packages给最终用户安装,以确保程序能够在目标系统上顺利运行。 安装与部署 安装VC++运行时库通常是通过Microsoft提供的Redistributable Packages完成的,这是一个简单的过程,用户只需运行安装程序即可自动安装所需组件。对于开发者而言,了解和管理不同版本的运行时库对于确保应用程序的广泛兼容性和可靠性是必要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值