Skip to content

强化学习

本文全面介绍大语言模型对齐中的强化学习(Reinforcement Learning, RL)技术,从基础概念到RLHF、PPO、DPO、GRPO等核心算法。

强化学习概述

强化学习概念

  • 定义:强化学习是机器通过与环境交互来实现目标的一种计算方法。机器在环境中做出动作决策,环境根据动作发生改变并反馈奖励和新的状态。机器的目标是最大化在多轮交互过程中获得的累积奖励的期望。

  • 智能体(Agent):强化学习用智能体这个概念来表示做决策的机器。Agent感知环境状态,做出动作决策,环境反馈奖励和新的状态。这种交互是迭代进行的。Agent可以由简单的深度网络实现,也可以由LLM实现,也就是LLM-based agent。包含以下关键要素:

    • 感知:智能体感知环境的状态,如围棋棋盘、无人车周围环境、机器狗的视觉和力觉信号。
    • 决策:智能体根据当前状态计算出达到目标需要采取的动作,如围棋落子、无人车的方向盘角度和刹车油门力度、机器狗的腿的角速度。
    • 奖励:环境根据状态和动作产生奖励信号,衡量动作的好坏,如围棋胜负、无人车行驶的安全性和平稳性、机器狗是否前进且未摔倒。
  • 训练流程:每一轮交互中,Agent首先感知环境所处的状态(state),然后决策出本轮的动作(action),并应用到环境中。环境产生即时奖励(reward)并产生状态转移,Agent根据奖励修改其决策策略。循环直到达到终止状态,得到一个策略,该策略能根据环境状态和奖励,自主做出比较好的决策。

强化学习环境

  • 动态环境:环境是一个动态的随机过程,会随着某些因素的变化而不断演变。环境的未来状态由当前状态和智能体的动作共同决定。
  • 状态转移:环境的下一刻状态的概率分布由当前状态和智能体的动作决定。每一轮状态转移都伴随着智能体动作的随机性和环境状态转移的随机性。

强化学习目标

  • 累积奖励:智能体和环境交互过程中获得的奖励信号可以累加,形成累计奖励。目标是最大化多轮交互过程中累积奖励的期望,并将其定义为价值。
  • 价值计算:价值的计算需要对交互过程中每一轮智能体采取动作的概率分布和环境状态转移的概率分布做积分运算。

强化学习数据

  • 数据分布:强化学习中的数据是在智能体与环境交互过程中得到的。智能体的策略不同,与环境交互产生的数据分布也不同。
  • 占用度量(Occupancy Measure):占用度量衡量在一个智能体决策与一个动态环境的交互过程中,采样到一个具体的状态动作对的概率分布。占用度量的性质是,给定两个策略及其与一个动态环境交互得到的两个占用度量,当且仅当这两个占用度量相同时,这两个策略相同。

对比有监督训练

对于一般的有监督学习任务,我们的目标是找到一个最优的模型函数,使其在训练数据集上最小化一个给定的损失函数。在训练数据独立同分布的假设下,这个优化目标表示最小化模型在整个数据分布上的泛化误差。

相比之下,强化学习任务的最终优化目标是最大化智能体策略在和动态环境交互过程中的价值。策略的价值可以等价转换成奖励函数在策略的占用度量上的期望。

有监督学习与强化学习的区别

维度有监督学习强化学习
优化方法直接通过优化模型对于数据特征的输出来优化目标通过改变策略来调整智能体和环境交互数据的分布
训练目标寻找一个模型,使其在给定数据分布下得到的损失函数的期望最小寻找一个智能体策略,使其在与动态环境交互的过程中产生最优的数据分布
训练周期数据是静态的,一次性训练数据可以不断产生,持续训练
数据需要标注数据集不依赖标注数据集
损失函数准确的,可以直接计算从环境或奖励模型获取,不一定准确

马尔可夫决策过程(MDP)

强化学习首先要把一个问题抽象为一个MDP问题,包含以下元素:

  1. 智能体(Agent):学习和决策的核心主体。
  2. 状态空间(States, S):系统所有可能状态的集合。
  3. 动作空间(Actions, A):在每个状态下可以采取的所有可能动作的集合。
  4. 状态转移概率(Transition Probability, P):给定当前状态 s 和动作 a,转移到下一状态 s 的概率,记为 P(s|s,a)
  5. 奖励函数(Reward Function, R/r):在状态 s 下采取动作 a 后,转移到状态 s 所获得的即时奖励。
  6. 累积奖励(Cumulative reward,G):在 t 时刻采取行动 a 在未来能获得的奖励,考虑衰减的奖励:
Gt=k=0nγkRt+k
  1. 折扣因子(Discount Factor, γ:用于控制未来奖励的重要性,取值范围为 [0,1]
  2. 策略(Policy,π:在状态 s 采取动作 a 的概率,即 π(a|s)=p(At=a|St=s)

Bellman方程

状态价值函数

在一个状态下的value值,也就是一个状态的期望回报,用 v 表示。v 包含了即时奖励和未来奖励。

Vπ(s)=Eπ[Gt|St=s]=aπ(a|s)srp(s,r|s,a)[r+γVπ(s)]

整个式子的核心是:状态s的价值 = 所有可能动作的概率 × (该动作下所有可能转移的概率 × (即时奖励 + 折扣后的下一个状态价值))的总和

状态动作价值函数

Q函数衡量"在某个状态下做某个动作的好坏"。

Qπ(s,a)=Eπ[Gt|St=s,At=a]=srp(s,r|s,a)[r+γVπ(s)]

状态价值函数和状态-动作价值函数两者之间的关系

Vπ(s)=aAπ(a|s)Qπ(s,a)

贝尔曼最优方程

强化学习的目标通常是找到一个最优策略,使得智能体从初始状态出发能获得最多的期望回报。

V(s)=maxaAsrp(s,r|s,a)[r+γV(s)]Q(s,a)=srp(s,r|s,a)[r+γmaxaAQ(s,a)]

动态规划

动态规划(Dynamic Programming, DP)的基本思想是:将复杂问题分解为若干子问题,先求解子问题,并保存它们的解,在需要时直接利用,从而避免重复计算,最终得到整体问题的解。

策略迭代算法

策略迭代(Policy Iteration)是策略评估和策略提升不断循环交替,直至最后得到最优策略的过程:

  1. 策略评估:通过迭代法不断更新当前策略下的状态价值函数,直到state value的前后差值小于一个阈值
  2. 策略优化:基于更新后的 Vπ 更新策略

价值迭代算法

只进行一轮的策略评估,然后直接根据更新后的价值进行策略评估。利用贝尔曼最优方程:

Vk+1(s)=maxaAsrp(s,r|s,a)[r+γVk(s)]

蒙特卡洛方法

蒙特卡洛方法(Monte Carlo, MC)是一种Model-free的方法,不利用模型的动态特性,而是通过采样来估计价值函数。

存在的问题

  • 每次更新需要等到一个episode结束,只适合Episodic Task
  • 当episode很长或者数量很多时,效率低

时序差分

时序差分(Temporal Difference, TD)是一种用来估计一个策略的价值函数的方法,它结合了蒙特卡洛和动态规划算法的思想。可以在一边生成episode的过程中,一边用生成好的样本进行估算,不需要完整的episode。

Sarsa

与之类似的,在策略优化时需要用到的动作价值函数 q(s,a) 也可以使用TD进行更新。

Q-learning

Q-learning是基于贝尔曼最优方程直接估计 Q,是离线策略(off-policy)算法。

DQN

DQN(Deep Q-Network)利用函数来估计预测给定状态下的V和Q,维护一个回放缓冲区(Replay Buffer),使用目标网络稳定训练。

Policy Gradient策略梯度

Policy Gradient是policy-based方法,直接对策略进行优化。

Actor-Critic

Actor-Critic算法学习一个Q函数,结合了value-based和policy-based方法的优点,其中actor代表策略模型,critic表示价值函数。

TRPO

TRPO(Trust Region Policy Optimization,信赖域策略优化)在更新时找到一块信任区域,在这个区域上更新策略就能够保证策略安全更新。

PPO

PPO(Proximal Policy Optimization,近端策略优化)直接对策略更新的幅度进行限制,有两种形式:PPO-penalty和PPO-clip。

RLHF

RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)的定义首先由《Deep Reinforcement Learning from Human Preferences》提出,解决了强化学习中奖励函数怎么设计的问题。

RLHF-PPO

RLHF-PPO包含四个模型:Actor Model、Critic Model、Reward Model、Reference Model。

GRPO

GRPO(Group Relative Policy Optimization,组相对策略优化)是一种类似于PPO的强化学习算法,核心思想是通过限制策略更新的幅度,确保新策略与旧策略的差异不会过大。

DPO

DPO(Direct Preference Optimization,直接偏好优化)消除了奖励模型,直接使用人类标注的偏好数据,通过数学推理将原始的偏好对齐优化目标简化。