Alignment PPO 是指在强化学习领域中,将 PPO(Proximal Policy Optimization)算法应用于大语言模型(LLM)的对齐问题。这里的“对齐”指的是使机器学习模型的行为与人类的价值观和偏好保持一致。以下是关于 Alignment PPO 的一些关键点:

  1. PPO 算法简介

    PPO 是一种策略梯度方法,旨在通过限制新策略和旧策略之间的差异来稳定训练过程。它通过引入一个称为“近端策略优化”的技巧来避免过大的策略更新,从而减少了训练过程中的不稳定性和样本复杂性。

  2. PPO 算法原理

    PPO 的核心思想是在每次更新时限制新策略和旧策略之间的差异。这通常通过引入一个比率 r(θ) 来实现,该比率是新策略和旧策略在给定状态下采取某个动作的概率之比。PPO 通过两种方式来限制这个比率:Clipping 和 Surrogate Loss。

  3. PPO 在对齐中的应用

    在大语言模型的对齐中,PPO 可以被用来训练模型,使其生成的文本与人类的偏好一致。通过强化学习,模型可以通过与环境的交互学习到哪些行为是可取的,哪些是不可取的,从而调整其行为以更好地符合人类的价值观。

  4. PPO 算法的挑战

    尽管 PPO 在对齐大语言模型方面有潜力,但它也有一些挑战,比如训练不太稳定和效率低。此外,PPO 算法的性能高度依赖于学习率、KL散度阈值、批量大小、更新步数等超参数的选择。

  5. PPO 与其他对齐技术

    除了 PPO,还有其他技术如 DPO(Direct Preference Optimization)被用于大模型的对齐。DPO 直接构造偏好数据集对齐原来的模型,与 PPO 的主要区别在于它不需要单独训练一个奖励模型。

  6. PPO 的改进和优化

    为了提升 PPO 算法在对齐任务中的效果,研究者们提出了一些关键点,包括使用大的批大小、优势归一化以及对 reference model 使用指数移动平均进行更新。

综上所述,Alignment PPO 是将 PPO 算法应用于大语言模型对齐的一种方法,它通过强化学习框架来调整模型行为,使其与人类的偏好和价值观保持一致。尽管存在一些挑战,但 PPO 在这一领域的应用前景广阔。

近端策略优化算法(Proximal Policy Optimization,PPO)由Schulman等人在2017年提出,是一种在大语言模型(LLMs)的强化学习微调阶段广泛应用的演员-评论家(actor-critic)强化学习算法(Ouyang等人,2022)。它通过最大化以下代理目标来优化大语言模型:

  • 符号含义

    • $\pi_{\theta}$:当前策略模型,用于生成在给定状态(这里指问题$q$和之前的输出$o_{<t}$)下采取的行动(即输出$o_{t}$)的概率分布。随着训练进行,模型不断更新$\theta$参数,以改进策略。
    • $\pi_{\theta_{old}}$:旧策略模型,它是在当前策略模型更新之前的版本。在训练过程中,通过与旧策略模型对比,能控制策略更新的幅度,避免更新过快导致模型性能不稳定。
    • $q$:从问题数据集中采样得到的问题。在大语言模型的应用场景中,$q$可以是用户提出的各种问题,如数学问题、文本生成任务描述等。
    • $o$:根据旧策略模型$\pi_{\theta_{old}}$对问题$q$生成的输出。$o_{t}$表示输出序列中的第$t$个元素,$o_{<t}$表示在$t$时刻之前的输出序列。
    • $\varepsilon$:剪裁超参数,用于稳定训练过程。它限制了策略更新的步长,防止策略变化过大。当$\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)}$的值超出$[1 - \varepsilon, 1 + \varepsilon]$范围时,就会对其进行剪裁,确保策略更新在合理范围内。
    • $A_{t}$:优势值,通过广义优势估计(Generalized Advantage Estimation,GAE)计算得到(Schulman等人,2015)。优势值用于衡量采取某个行动相对于平均行动的优势程度,它综合考虑了当前奖励和未来奖励的期望。如果$A_{t}>0$,说明当前行动比平均水平好,模型会倾向于增加该行动的概率;反之,如果$A_{t}<0$,则会降低该行动的概率。
    • 计算过程

    • 首先,从问题数据集$P(Q)$中采样问题$q$,并根据旧策略模型$\pi_{\theta_{old}}(O | q)$生成相应的输出$o$。

    • 对于输出序列中的每个元素$o_{t}$,计算$\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)} A_{t}$和$\text{clip}\left(\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)}, 1 - \varepsilon, 1 + \varepsilon\right) A_{t}$。
    • 取这两个值中的较小值,再对整个输出序列$o$的所有$t$时刻的这些最小值进行平均,得到目标函数$\mathcal{J}{PPO}(\theta)$的值。模型训练的目标就是最大化这个目标函数,通过不断调整当前策略模型$\pi$的参数$\theta$,使得生成的输出在给定问题下能获得更高的累积奖励 。