强化学习
基础概念
什么是强化学习?
强化学习(Reinforcement Learning, RL) 是机器学习的一个分支,目标是让 智能体(agent) 通过与 环境(environment) 的交互来学习最优的 行为策略(policy),从而最大化某个 累积回报(cumulative reward)。
其 核心思想是通过试错和反馈的机制,找到在每个情境下的最优决策。
强化学习的 优化目标 是 通过选择策略来最大化累积奖励。具体来说,智能体的目标是寻找一个最优策略 ,使得它在各个状态下的累积回报最大。形式上,可以用 价值函数(Value Function)或 动作价值函数(Q 函数)来表示。

强化学习的要素
在强化学习中,我们通常将问题描述为一个 马尔可夫决策过程(Markov Decision Process, MDP),它包含以下几个关键元素:
-
状态(State, S):智能体所处的环境状态,可能是游戏画面的一帧,也可能是机器人观测到的传感器数据。
-
动作(Action, A):智能体在给定状态下可以执行的一系列操作。
-
状态转移(Transition Dynamics, P):从当前状态 采取动作 后,会以一定的概率转移到下一个状态 。
-
奖励(Reward, R):智能体在每个时刻(或每次转移)获得的即时回报,反映了该动作在此状态下的好坏。
-
折扣因子(Discount Factor, ):用于平衡当前奖励和未来奖励的重要性,数值通常在 之间。
-
轨迹(Trajectory):在强化学习中,智能体从环境的初始状态开始,与环境交互直至到达终止状态所经历的一系列状态、动作以及相应的奖励就构成了一条完整的 "轨迹"。形式上可以表示为:
其中, 表示回合(Episode)结束的时间步。在某些不定长的任务中, 可能是一个随机值。轨迹可以帮助我们理解智能体如何从起始状态一步步演化到最终状态,并获取相应的奖励序列。
-
经验(Experience):智能体可与环境交互多次,进行多次实验,形成多个轨迹。多个轨迹的集合被称为经验。即:
-
回报(Return):强化学习的目标是学习一个好的策略,智能体按照这样的策略和环境交互,让累积奖励达到最大。这个累积奖励就是回报。通常指从某一个时间步 开始,对未来所有奖励的加总,常用符号 表示(有时也用 表示)。其定义为:
通常现在的奖励和将来的奖励权重是不同的,比如今天奖励 1 万元和 50 年后奖励 1 万元,两者的价值大概率 不同。因此会加上折扣因子 。若存在折扣因子,则回报可以写为:
其中 用于平衡当前奖励和未来奖励的重要性。如果没有折扣(),那么回报就是从时间步 开始直到回合结束所获得的总奖励。在有了回报概念后,我们知道,强化学习的目标是最大化期望回报。
- 价值函数(Value Function):价值函数衡量的是 "期望回报"。具体分为状态价值函数和动作价值函数。
-
状态价值函数 表示在状态 下,后续按照策略 行动所能获得的 期望回报:
-
动作价值函数 表示在状态 下执行动作 ,并在之后按照策略 行动所能获得的 期望回报:
-
用来 评价在某个状态下的策略表现好坏。 用来 评价在某个状态-动作对下的策略表现好坏。价值的估计至关重要,下文还会讨论。
-
优势函数(Advantage Function):优势函数度量的是,在给定状态 下,执行某个动作 比起在该状态的平均水平(即状态价值)好多少 或差多少。它的常见形式是:
- 如果 ,说明在状态 下执行动作 要比该状态的平均策略价值要好。
- 如果 ,则说明这个动作比 "平均" 水平要差。
-
探索(Exploration)和学习(Learning):强化学习一般分为两个阶段。第一个是 探索阶段,智能体先按照某些 策略 和环境进行交互,形成经验。第二个是 学习阶段,智能体按照某些算法,从经验中学习,进而优化自己的 策略。
-
行为策略(Behavior Policy)和目标策略(Target Policy):行为策略 是智能体在环境交互时实际执行的策略。目标策略 是智能体最终想要学到的策略,通常记为 。两个策略相同就是 on-policy,否则就是 off-policy,这点我们在下文中会详细探讨。
价值函数和贝尔曼方程
在强化学习中,价值函数(Value Function)用来衡量在某个状态(或状态-动作对)下,按照某一策略 行动所能获得的期望回报;而 贝尔曼方程(Bellman Equation) 则刻画了该价值函数所必须满足的“递归一致性”关系。
简而言之,价值函数 是目标,贝尔曼方程 是描述这个目标如何在相邻时间步之间相互关联的关键公式。
1. 二者的关系
价值函数的定义
-
状态价值函数: 即“在状态 s 下持续按照策略 行动所能获得的期望回报”。
-
动作价值函数: 即“在状态 s 下先执行动作 a,然后继续按照策略 行动所能获得的期望回报”。
贝尔曼方程的自洽性(递归性) 价值函数可以通过对下一步状态(或动作)的价值进行加权求期望而“自我定义”:
-
对状态价值 来说,状态 s 的价值是“执行任一动作后的即时奖励 + 折扣后下一状态价值”的期望:
-
对动作价值 来说,则是“该状态动作得到的即时奖励 + 折扣后下一状态的动作价值”的期望:
这些方程说明了:当前状态(或状态-动作)价值 可以通过“下一步的价值”来计算出来,从而使价值函数具备可以迭代求解的性质。
2. 为什么需要了解贝尔曼方程
(1)动态规划与强化学习的理论基础 贝尔曼方程是强化学习算法的核心理论根基,揭示了价值函数能够被分解并通过递归方式计算的原理。几乎所有的基于价值的强化学习方法(Q-Learning、SARSA 等)都源于对贝尔曼方程的近似求解或逼近。
(2)求解或逼近价值函数
- 在有完备环境模型、可枚举状态下,可以用 价值迭代(Value Iteration)或策略迭代(Policy Iteration) 对贝尔曼方程进行数值求解,找到最优价值函数和最优策略。
- 在无完备模型、无法枚举的复杂环境中,可以采用蒙特卡洛、时序差分(TD Learning)以及基于神经网络的近似方法(如 DQN)对贝尔曼方程进行抽样估计和逼近。
(3)理解算法更新规则
很多强化学习算法中的“更新公式”,本质上都可以视作对贝尔曼方程进行 采样 或 梯度 逼近。例如:
这正是 Q-Learning 中对 最优贝尔曼方程 的单步采样更新。
(4)扩展到更复杂场景
-
在策略梯度和 Actor-Critic 方法中,Critic 的目标就是学习满足“贝尔曼方程”的价值函数或 Q 函数。
-
其它如分层强化学习、多智能体强化学习等场景中,依旧离不开对贝尔曼方程的变形或推广。
总之,
- 价值函数 为评估“当前状态(或动作)有多好”提供了一个“期望回报”的度量。
- 贝尔曼方程 阐明了价值函数可以被分解成与下一状态和相应奖励相联系的自洽递归关系。
A、V、Q 的关系
优势函数(A)与值函数(V)、动作值函数(Q)的区别的 联系:
优势函数是 Q 和 V 的差值。
优势函数与值函数、动作值函数的 区别:
- 值函数(V):衡量一个状态的价值,反映了在某个状态下,智能体根据当前策略所能期望得到的总回报。
- 动作值函数(Q):直接衡量在某状态下采取某动作后,智能体所能期望得到的总回报。
- 优势函数(A):是一个动作对比的度量,表明选择某个动作相较于平均策略的回报增益。和 V、Q 不同的是,A 提供了一个相对的评价。
估计值函数的三种方法:MC、TD、GAE
RL 中,价值的估计非常重要。估计值函数的常见方法有三种:蒙特卡洛(MC)、时间差分(TD) 、广义优势估计(GAE)。
它们在估计值函数时各有优缺点,具体在方差和偏差之间存在不同的权衡。
1. 蒙特卡洛方法(MC)
-
原理:蒙特卡洛方法通过在完整的轨迹上计算回报(即从当前状态开始到最终状态的累积奖励)来估计状态值函数或动作值函数。这个方法完全依赖于最终的回报,因此需要等待完整的路径(完整的 Episode)来计算值。
-
优点:
-
不需要任何模型假设,直接依赖实际回报。
-
在长期内是无偏的(即期望值是正确的),因为它直接使用实际的累积奖励。
-
缺点:
-
高方差:由于只使用每个 Episode 的最终回报,导致每个回报的估计可能存在较大波动,尤其是在奖励信号稀疏或变动较大的情况下,估计的方差较大。
总结:MC 方法因为依赖完整的回报,所以它的估计有较大的方差,但没有偏差。
2. 时序差分方法(TD)
-
原理:时序差分方法则是通过 递推更新(也称为 bootstrapping)来估计值函数,它并不需要等待完整的 Episode,而是根据每一步的即时反馈进行更新。TD 方法将当前的估计值与下一时刻的估计值进行比较,通过差分来更新当前状态的值。
-
优点:
-
较低的方差:由于 TD 方法使用每一步的即时反馈,它不依赖于完整 Episode 的回报,估计过程可以在更短时间内进行,因而方差较小。
-
可以在线学习,不需要等待完整的 Episode。
-
缺点:
-
高偏差:由于 TD 方法使用的是估计值而非真实回报,它会引入一定的偏差。特别是它依赖当前的估计来更新,因此如果初始估计有偏,后续的更新也会继承这个偏差。
-
总结:TD 方法具有较低的方差,但它引入了偏差,因为它依赖于现有的估计,而非实际的回报。
3. 广义优势估计(GAE)
-
原理:GAE 是一种折中方法,它结合了 MC 和 TD 的方法,旨在通过平衡方差和偏差来提高估计的稳定性和效率。GAE 通过引入一个 超参数 (类似于 TD 方法中的折扣因子),在计算优势函数时利用 TD 方法的部分信息,而不是完全依赖于真实的回报。
-
具体来说,GAE 通过对 TD 误差进行加权平均来估计优势函数,从而减少单步 TD 误差带来的偏差,并控制方差的大小。
-
它的更新公式为:
其中, 表示每一步的 TD 误差, 是折扣因子, 是用于加权的超参数,控制了 TD 和 MC 的折中。
- 优点:
- 在方差和偏差之间取得了更好的折中。通过调节 ,GAE 可以灵活控制偏差和方差之间的权衡。
- 缺点:
- 相较于纯粹的 TD 或 MC,GAE 需要更多的计算,因为它需要在每一步计算加权的 TD 误差。
- 总结:GAE 通过加权 TD 误差,能够在 MC 的低偏差和 TD 的低方差之间取得一个折中。
4. 高方差、低偏差 vs. 高偏差、低方差的折中
- MC 方法 高方差是由于它依赖于整个轨迹的回报,导致估计可能存在较大波动,但它是无偏的,因此在长时间运行时可以获得精确的估计。
- TD 方法 则通过引入当前估计来更新状态值或动作值,它减少了方差,因为每次更新都基于当前估计的反馈。然而,它依赖于已有的估计,因此会引入偏差。
- GAE 则通过平衡这两者的优缺点,调整 来控制估计中的偏差和方差,从而获得更稳定、更准确的估计。当 时,GAE 等价于 TD(0),当 时,GAE 等价于 MC 方法。
总结
- MC 方法:高方差,无偏。
- TD 方法:低方差,高偏差。
- GAE 方法:折中,既能减少偏差,也能降低方差,通过调整 来灵活控制。
这个折中使得 GAE 在实际应用中往往能取得更好的性能,特别是在复杂的强化学习任务中。
NLP 中的 RL

状态 S: 输入 prompt
动作 A: 输出 response(即 LLM 输出下一个 token)
奖励 R: 根据 prompt+response 进行奖励模型打分
整体目标:给定 prompt,调整 policy,生成符合人类喜好(RM 偏序信号)的 response