系列文章目录

第一章 姿态描述之旋转矩阵、欧拉角、四元数

第二章 坐标系与位姿变换

第三章 手眼标定

第四章 机器人正逆运动学与路径规划

第五章 图解Transformer架构

第六章 图解Bert

第七章 BERT代码解析与实战

第八章 强化学习


目录

系列文章目录

文章目录

前言

一、基本概念

(一)智能体与环境交互

(二)强化学习的目标

(三)马尔科夫链

(四)蒙特卡洛(MC)采样

(五)贝尔曼(Bellman)公式

(六)蒙特卡洛估计状态V值

(七)Q值和V值

1. Q 值(动作价值函数):——「状态 - 动作对」的价值

2. V 值(状态价值函数):——「状态本身」的价值

​编辑3. Q 值与 V 值的核心关系

4. 最优 Q 值(Q*)与最优 V 值(V*))

二、时序差分(Temporal Difference, TD)方法

(一)时序差分(TD)估计状态V值

1. 核心定义与本质

2. TD 方法的优势

3. 应用场景

(二)Q-Learning:表格型 “离线最优策略” 学习

1. Q-Learning 的基本概念

2. 核心逻辑:求解贝尔曼最优方程​编辑

3. 关键机制:ε-greedy 策略(平衡探索与利用)

4. 更新规则

5.优势与应用

(三)SARSA:表格型 “在线安全策略” 学习

 1. 核心属性:在线策略(On-Policy)

2. SARSA 更新规则(核心公式)

​编辑3. SARSA 算法流程

4.  SARSA 示例:Windy Gridworld( windy 网格世界)

5. 优势与适用场景

(四)深度 Q 网络DQN(Deep Q-Network)

1. 核心思想:用神经网络拟合 Q 值

2. 关键技术

3. DQN 的训练流程

4. 应用与成就

(五)DQN 改进算法

(六)TD 方法体系总结:核心区别与选型建议

1. 核心算法对比

2. 选型建议

三、策略梯度(Policy Gradient, PG)方法

(一)策略梯度方法简介

(二)PG 与 DQN 的核心区别

(三)PG的训练过程

(四)PG 的两个关键改进方法

1. Baseline(基准线):解决 “回报全为正” 的更新偏差

2. Suitable Credit(合适的信用分配):解决 “轨迹中动作贡献不均” 的问题

(五)策略值函数估计

1. 两个核心价值函数(V 函数 vs Q 函数)

2. 策略提升:如何让策略变得更好?

(六)价值迭代 vs 策略迭代

1. 动态规划的核心思想

2. 策略迭代(PI):“评估→改进” 的循环

步骤拆解(用 “走迷宫” 举例)

3. 价值迭代(VI):“评估 + 改进” 的合并

步骤拆解(同样用 “走迷宫”)

4. 收敛速度与计算复杂度

四,Actor-critic

(一)AC 算法的核心架构:Actor + Critic

1. Actor(演员):负责 “做决策”—— 策略网络

2. Critic(评论家):负责 “评分数”—— 价值网络

(二)优势函数(advantage Function)

1. 定义:A (s,a) = Q (s,a) - V (s)

2. 为什么用优势函数,而不用直接用 Q 值 / 回报 R?

3. 优势函数的简化计算(TD 误差)

4. AC 算法的训练流程(闭环逻辑)

5. 标准 AC 的核心优势与不足

(三)Advantage Actor-Critic(A2C)

1. A2C 的核心改进点(对比标准 AC)

2. A2C 的适用场景

(四)Asynchronous Advantaged Actor-Critic(A3C)

1. A3C 与 A2C 的核心区别:同步 vs 异步

2. A3C 的核心架构:全局网络 + Worker 网络

3. A3C 与 DPPO 的关键区别

4. A3C 的优势与不足

(五)Deep deterministic policy gradient (DDPG)

1. DDPG 与 DQN/PG 的核心区别

2. DDPG 的核心设计:确定性策略 + 四个网络

3. DDPG 的适用场景

(六)DDPG 的改进版:TD3(Twin Delayed DDPG)—— 解决 Q 值高估的稳定方案

1. TD3 的核心改进点

2. TD3 与 DDPG 的性能对比

(七)AC 系列算法总结

关键知识点串联

五、PPO(Proximal Policy Optimization)

(一)On-Policy vs Off-Policy:强化学习的核心范式差异

1. 定义与通俗类比

2. 为什么 PG 是 On-Policy?

3. On-Policy 的致命缺点:数据利用率极低

4. Off-Policy 的优势:数据复用

(二)重要性采样(Importance Sampling)

1. 什么是重要性采样?

2. PG 中如何用重要性采样实现 Off-Policy?

3. 重要性采样的致命问题:方差爆炸

(三)策略更新约束

(四)TRPO:带信任域的策略优化(PPO 的前身)

1. TRPO 的核心目标

2. TRPO 的缺点

(五)PPO:简化版 TRPO,兼顾性能与易用性

1. PPO-Penalty:KL 散度作为惩罚项

2. PPO-Clip(PPO2):直接裁剪更新幅度

3. PPO 的完整训练流程(Actor-Critic 架构)

4. GAE(Generalized Advantage Estimation)

(六)PPO 的核心优势(对比 TRPO/PG/AC)

(七)PPO 的适用场景

六、GRPO (Group Relative Policy Optimization)

1. 核心思想:组内相对优势替代价值函数

2. 算法流程:

3. GRPO vs PPO:关键差异

4. 应用场景:

七、DPO (Direct Preference Optimization)

1. 核心思想:直接优化人类偏好,绕过奖励模型

2. 算法原理:

3. DPO vs PPO vs GRPO:核心区别

4. DPO应用场景:

总结


前言

        在具身智能(Embodied AI)中,强化学习(Reinforcement Learning, RL)是核心技术框架之一 —— 它解决了智能体如何通过与环境的交互,将视觉 - 语言理解转化为连续 / 离散动作决策的关键问题。


提示:该博客仅为个人学习记录,若有错误之处,还请批评指正。

参考:具身智能基础——强化学习.docx - 飞书云文档

一、基本概念

(一)智能体与环境交互

        强化学习(Reinfocement Learning,RL)中的核心概念是智能体(Agent)和环境(Environment)之间的交互。智能体通过观察环境的状态,选择动作来改变环境,环境根据动作反馈出奖励和新的状态。智能体的目标是通过学习选择最优的策略,使得在长时间的交互过程中获得尽可能多的累积奖励。这个循环的交互过程帮助智能体通过试错来学习如何在不同的状态下做出最佳决策 。       

(二)强化学习的目标

        强化学习的目标是让智能体(比如游戏 AI、机器人)找到一个策略 π(状态→动作的映射),使得累积奖励最大。策略的表示有两种核心思路:

  • 基于价值的方法(如 DQN):先学习 “价值函数”(Q 值 / V 值),告诉智能体 “在某个状态下,哪个动作更有价值”,再通过价值函数间接推导策略(比如选 Q 值最大的动作)。类比:先给你一张 “藏宝图”(价值函数),告诉你每个路口(状态)走哪条路(动作)能挖到最多宝藏,你再根据地图选路。

  • 基于策略的方法(如 PG):不绕弯子,直接学习策略本身—— 用神经网络(或其他模型)直接建模 “状态→动作的概率分布”。比如输入游戏画面(状态),输出 “向左走(30%)、向右走(60%)、攻击(10%)” 的概率,智能体按这个概率采样动作。类比:不看藏宝图,直接训练你 “遇到某个路口时,更大概率选哪条路”,通过不断试错调整这个概率分布。

(三)马尔科夫链

        马尔可夫过程是一种具有马尔可夫性质的随机过程,意味着未来的状态只与当前状态有关,而与过去状态无关。基于此,马尔可夫奖励过程引入了奖励函数和折扣因子,使得状态转移仍然保持马尔可夫性质,环境基于每个状态提供相应的奖励。序列回报考虑未来奖励的综合,通常使用时间衰减来强调近期奖励的重要性。马尔可夫决策过程(MDP)是强化学习的基础框架,描述了在部分可控和部分随机的决策过程中如何选择最佳动作。MDP 通过状态集合、动作集合、状态转移概率、折扣因子和奖励函数构成五元组,动态地在当前状态中选择动作,获得奖励并随机转移到下一个状态,直到达到终止状态。占用度量用于描述给定策略下状态和动作的出现频率,最终目标是学习出能够最大化累积奖励期望的策略。马尔可夫链假设当前状态只与前一时刻状态有关。

        三个重要因素:S、A、R,即状态、动作、奖励。
(1)智能体在环境中观察到状态S;
(2)状态S输入到智能体,智能体通过计算,得到执行动作A;
(3)动作A使智能体进入到新的状态,并返回奖励R给智能体:
(4)智能体通过奖励调整策略。

(四)蒙特卡洛(MC)采样

        蒙特卡洛(MC)采样是强化学习中的一种方法,用于估计当前状态到最终状态的累积奖励。智能体在t时刻选择动作 a后,会在 t+1 时刻进入新的状态并获得奖励,因此我们定义 G 值为从当前状态 S 开始直到最终状态所收获的总奖励。蒙特卡洛采样的核心思想是当前的 G 值等于当前动作获得的即时奖励r,加上未来的G 值乘以一个折扣率 。这个过程是迭代的,意味着智能体会在多次尝试中不断修正对累积奖励的估计。
        折扣率 y 的作用在于衡量时间的影响,距离当前时刻越远的奖励,对当前决策的影响越小。蒙特卡洛采样的核心特点是,它是无模型(free-model)方法的基础即不需要知道环境的具体动态,仅通过采样来进行学习
        蒙特卡洛采样还分为同策略(on-policy)和异策略(off-policy)两种方式,区别在于采样的策略不同。同策略采样使用的是智能体当前的行为策略,而异策略采样则允许智能体使用一个不同的策略来收集数据

(五)贝尔曼(Bellman)公式

        贝尔曼公式是强化学习中一个核心的递归公式,用来表示状态或动作的价值。贝尔曼公式通过将当前状态的价值表示为未来状态的价值加上即时奖励,从而建立了当前决策和未来决策之间的联系。这个公式在强化学习的动态规划算法和价值迭代算法中起到了重要作用。

(六)蒙特卡洛估计状态V值

        蒙特卡洛估计状态 ∨ 值 是通过观察智能体的实际运行轨迹,来更新每个状态的价值估计。采用的增量更新法表示每次获得新的信息后,更新的 V 值是基于当前V 值加上一小部分调整。具体地,新平均等于旧平均加上一个比例(即学习率)乘以新信息与旧平均的差值,
蒙特卡洛估计的迭代公式为,

        其中,α 是学习率,用来控制每次更新的步幅大小。Gt 是当前轨迹下状态 St 对应的累积奖励(即目标值),通过每次迭代逐步让V(St)更加接近 Gt。这种方法的缺点是每个轨迹的计算需要完整运行到结束,因此每次更新可能耗时较长,尤其是在复杂环境中

(七)Q值和V值

即时奖励(Reward,r)指智能体在「状态 s 下执行动作 a」后,环境即时反馈的 scalar 数值(如游戏得分 + 10、碰撞惩罚 - 50),仅对应单一步骤,是最直接的环境信号。
Return(总奖励)指智能体从当前状态开始,到达终点的过程中,累积的奖励总和

折扣总奖励(Discounted Return, Gₜ)

        定义:从第 t 步开始,智能体后续所有步骤的即时奖励「加权累积和」,公式为:

        关键参数:折扣因子 \gamma \epsilon [0,1] 

        γ=1:无折扣,未来所有奖励与当前奖励同等重要(适用于有限步数任务,如迷宫终点固定);

        γ<1:未来奖励的权重随步数衰减(适用于无限步数任务,避免总奖励发散,且符合「近期奖励比远期奖励更可信」的现实逻辑)。

        意义:Return 是「从当前步到任务结束的总收益」,但受环境随机性(如动作后到达的状态不确定)影响,Return 是随机变量 —— 因此需要用「期望」来量化其平均水平,这就是 Q 值和 V 值的核心。

1. Q 值(动作价值函数):Q^{\pi }(s,a)——「状态 - 动作对」的价值

        Q 值(动作价值) 评估的是在某个状态下选择某个动作后,从当前状态到最终状态,智能体所能获得的累积奖励的期望。计算 Q 值的过程类似于从当前状态出发,假设有多个“分身”,每个分身选择不同路径前进,最终记录每个分身获得的奖励然后计算这些分身奖励的平均值,得到Q 值。

(1)核心定义

(2)数学表达

(3)举例——分身类比

(4)实际意义

2. V 值(状态价值函数):V^{^{\pi }}(s)——「状态本身」的价值

        V 值(状态价值)则评估的是智能体在某个状态下,从这个状态到最终状态所能获得的累积奖励的期望。计算 V 值的方式类似于:从当前状态出发,分身出来多个智能体,分身根据当前策略选择动作,走到终点后计算各自获得的总奖励,然后取这些分身的奖励平均值作为 V 值。

(1)核心定义

(2)数学表达

(3)举例——分身类比

(4)实际意义

3. Q 值与 V 值的核心关系

        V 和 Q 的关系 是紧密的。V 值是所有可能动作的 Q 值的期望,而 Q 值则是从当前状态采取某个具体动作后,到达下一状态的V值的期望。

(1)V 值是 Q 值的「加权平均」(状态价值 = 所有动作价值的期望)

(2)Q 值是「即时奖励 + 下一步 V 值的期望」(动作价值 = 即时收益 + 未来状态价值)

(3)组合关系(Bellman 方程的统一形式)

4. 最优 Q 值(Q*)与最优 V 值(V*))

二、时序差分(Temporal Difference, TD)方法

(一)时序差分(TD)估计状态V值

        时序差分(Temporal Difference, TD)方法是强化学习的核心技术体系之一,其融合了蒙特卡洛(MC)方法的经验驱动特性与动态规划(DP)的 bootstrap 思想,能够在交互过程中实时更新价值估计,无需等待回合结束。与蒙特卡洛方法需要等到整个序列结束后才更新价值函数不同,TD 方法通过对当前状态的价值估计进行更新,使用当前的奖励以及下一状态的价值来进行预测。这种更新方式可以在每一个时间步进行,使得智能体在学习时能够更快地适应环境的变化,而不是等待整个回合结束。TD 误差是这一更新过程中的核心概念,它衡量了当前价值估计与实际获得的奖励和下一个状态价值之间的差距。

1. 核心定义与本质

2. TD 方法的优势

        在线学习:TD 方法允许智能体在每一步都进行学习,无需等到回合结束,从而加快了学习速度
        增量更新:通过利用当前的状态、动作和奖励进行增量更新,智能体可以及时调整其价值估计,适应环境的动态变化。
        减少方差:与蒙特卡洛方法相比,TD方法通常具有更低的方差,因为它使用了当前状态的估计值,而不仅仅依赖于最终的奖励。

3. 应用场景

        TD 学习广泛应用于许多强化学习算法中,例如 Q-Learing和 SARSA 等。这些算法利用 TD 方法来优化策略,使得智能体能够在复杂的环境中做出更优的决策。通过 TD 学习,智能体能够通过不断的交互和经验积累,提高其在环境中的表现

(二)Q-Learning:表格型 “离线最优策略” 学习

      Q-Learning 是一种经典的强化学习算法,旨在通过学习每个状态-动作对(S-A)对应的 Q 值来优化策略。Q 值表示在某个特定状态下采取某个动作所能获得的期望总奖励,因此,智能体可以通过选择具有最高 Q 值的动作来做出决策,从而最大化未来的奖励。通常使用一个 Q-table 来记录每个状态下各个动作的 Q 值,帮助智能体找到 S-A 的对应关系。其本质是求解贝尔曼最优方程。核心是通过迭代更新状态 - 动作价值函数 Q(s,a),表示在状态 s 下执行动作 a 后,遵循最优策略能获得的累积折扣奖励,最终收敛到最优价值函数 Q*(s,a)。

1. Q-Learning 的基本概念

        Q 值:Q(s,a)表示 “在状态 s 下执行动作 a 后,未来能获得的期望总奖励”—— 是 “状态价值 V (s)” 考虑动作的细化。

        Q表:在 Q-Learning 中,智能体维护一个 Q 表,记录每个状态下每个可能动作的 Q值。本质是一个二维数组(行 = 状态 s,列 = 动作 a),存储所有 (s,a) 对的 Q 值,相当于智能体的 “决策手册”。每次智能体与环境交互时,它会根据当前的策略(例如 ε-greedy 策略)选择一个动作,并根据获得的奖励和下一个状态的 Q 值来更新 Q 表。

2. 核心逻辑:求解贝尔曼最优方程

3. 关键机制:ε-greedy 策略(平衡探索与利用)

  • 利用(Exploitation):选择当前 Q 表中最大 Q 值的动作(依赖已有知识);

  • 探索(Exploration):随机选择动作(尝试新动作,避免陷入局部最优);

  • ε-greedy:以概率ε随机探索,以概率1-ε贪心利用。训练中ε逐渐衰减(从 1→0.01),前期多探索,后期多利用。

4. 更新规则

        Q-Learning 的核心在于其 Q 值更新公式。智能体在选择动作并获得奖励后,会使用当前状态的 Q 值、所采取的动作、获得的奖励以及下一个状态的最大 Q 值来更新 Q 表。这一更新过程使得 Q 值逐渐收敛到最优值,从而优化策略。

符号 含义 工程化取值建议
Q(s_{t},a_{t}) 当前时刻 t 的状态s_{t}下,执行动作a_{t}的旧 Q 值 初始化为随机小值(如 [-0.1, 0.1])或全 0
\alpha(学习率) 控制每次更新的步长(权重),平衡旧 Q 值与新信息的影响 通常取0.1~0.5,可动态衰减(如 \alpha =0.3/(1+0.001\cdot step)
r_{t+1} 执行动作a_{t}后,从环境获得的即时奖励 由环境定义(如游戏得分、任务完成奖励、碰撞惩罚等)
\gamma(折扣因子) 控制未来奖励的权重,\gamma =0只关注即时奖励,\gamma =1同等重视未来奖励 通常取(0.8~0.99)(探索性任务取 0.9,短期收益任务取 0.8)
max_{a'}Q(s_{t+1},a') 下一状态s_{t+1}下,所有可能动作 a'中的最大 Q 值(体现最优策略) 离线策略的核心:无需实际执行a',仅通过 Q 表查询最大值
\delta _{t}=r_{t+1}+\gamma \cdot max_{a'}Q(s_{t+1},a')-Q(s_{t},a_{t}) TD 误差(当前预期与实际反馈的差值) 工程中可记录 TD 误差序列,用于监控训练收敛性(误差趋于 0 表示收敛)

        Q-learning 的更新过程可概括为「经验回放→误差计算→权重更新」三步,工程化实现时需严格遵循时序逻辑:

  1. 交互探索:智能体在状态s_{t}下,通过行为策略(如 ε-greedy)选择动作a_{t},与环境交互后得到即时奖励 r_{t+1}和下一状态s_{t+1}
  2. 计算目标 Q 值:基于下一状态 s_{t+1}的最优可能收益max_{a'}Q(s_{t+1},a'),计算目标 Q 值traget=r_{t+1}+\gamma \cdot max_{a'}Q(s_{t+1},a')
  3. 更新当前 Q 值:用学习率\alpha调整当前 Q 值,缩小 TD 误差(目标 Q 值与旧 Q 值的差距)。

关键特性:无论下一动作实际是否执行,都用 s_{t+1}的最大 Q 值更新 —— 这是 Q-learning 「离线策略」的核心,保证了即使行为策略是探索性的(如 ε-greedy),目标策略仍能逼近最优。

        训练初期:Q (s,a) 是初始随机值(或全 0),每次交互后会根据 TD 误差更新(如执行动作 a_t 后,用奖励 r 和下一状态的最大 Q 值修正 Q (s_t,a_t));

        训练中期:Q (s,a) 的数值波动较大,随着样本积累逐渐向最优值靠拢;

        训练后期:当 Q (s,a) 的更新幅度趋近于 0(TD 误差→0),数值趋于稳定,此时 Q 表收敛。

5.优势与应用

        无模型(Model-Free): Q-Learning 是一种无模型的学习方法,即智能体不需要了解环境的状态转移概率 P (s'|s,a) 和奖励函数 R (s,a),可以仅通过与环境的交互来学习
        离线策略(Off-Policy):学习的是最优策略,而非当前执行的策略(比如用 ε-greedy 探索时,更新的是最优 Q 值,而非探索动作的 Q 值);通过学习 Q 表,智能体可以在训练完成后独立地决定策略,而不再需要继续与环境交互。
        广泛应用:Q-Learning 被广泛应用于许多领域,适用于离散状态、离散动作的简单环境:包括游戏 A1、机器人控制以及各种决策制定问题。通过不断与环境交互并更新 Q 表,Q-Learning 能够有效地训练智能体,使其在给定的状态下做出最优决策

(三)SARSA:表格型 “在线安全策略” 学习

        SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,属于时序差分(Temporal Difference,TD)控制方法。SARSA 的名字源于交互轨迹的 5 个元素:S_{t}(当前状态)→ A_{t}(当前动作)→ R_{t+1}(奖励)→ S_{t+1}(下一个状态)→ A_{t+1}(下一个动作)—— 更新 Q 值时必须用到 “下一个动作”,这是它与 Q-Learning 的核心区别。

 1. 核心属性:在线策略(On-Policy)

        该算法通过同时评估和改进当前策略,帮助智能体在动态环境中学习最佳行动策略。学习的是 “当前正在执行的策略”(比如用 ε-greedy 策略选动作,更新的也是该策略下的 Q 值),策略评估与策略改进同步进行,保证 “学什么、用什么”。 智能体通过输入当前状态 S 和动作 A,来学习最优策略。它的核心思想是用相同状态下产生的动作 Q 值来代替下一个状态的价值估计。在SARSA 在线策略控制中,智能体在每个时间步都进行策略的评估和改进每一步都会根据更新的 Q值调整策略,从而确保在探索新策略的同时不断优化已有策略。

        对比 Q-Learning(离线策略):Q-Learning“学最优策略,用探索策略”,而 SARSA“学探索策略,用探索策略”—— 更保守、更安全(避免探索时因追求最优动作而陷入危险)。

2. SARSA 更新规则(核心公式)


3. SARSA 算法流程

        (1) 初始化:初始化 Q 表(全 0 或随机小值),为每个状态-动作对初始化 Q 值函数。初始化状态s。

        (2) 选择和执行动作:在当前状态下,根据当前策略(通常使用ε-greedy 策略)选择并执行一个动作a。
        (3) 观察结果:执行动作a后,智能体接收环境的反馈,包括奖励r和下一个状态s',

        (4) 选择下一个动作:在新的状态下,基于当前策略选择下一个动作a';
        (5) 更新 Q值:根据观察到的奖励和状态转移,用上述更新规则更新Q(s,a);以反映新的经验。

        (6) 状态和动作转移:将当前状态和动作更新为新状态和新动作,令s = s',a = a',重复步骤 2~5,直到回合结束。

4.  SARSA 示例:Windy Gridworld( windy 网格世界)

        以 Windy Gridword 为例,智能体的目标是从起点移动到目标位置。在这个环境中,智能体每步会获得一个小的负奖励,直到成功到达目标。随着训练的进行SARSA 策略会使智能体更快地达到目标位置,从而逐渐提高其学习效率和成功率。通过 SARSA,智能体能够在不断交互的过程中更新自身的知识,并学习如何在复杂的环境中做出最佳决策。

  • 环境:10×7 的网格,智能体从起点(0,3)出发,目标是(7,3);网格存在 “侧风”(第 3~6 列有向上的风力,风力随列变化),导致智能体移动后会被风吹向上方;

  • 奖励:每步奖励 - 1(鼓励快速到达目标),到达目标奖励 0;

  • SARSA 的优势:由于是在线策略,智能体会考虑 “下一个动作的安全性”—— 比如在侧风区域,不会盲目选择 “最短路径”,而是选择 “更稳定、不易被风吹出边界” 的动作,训练过程更平滑,成功率提升更快。

5. 优势与适用场景

  • 安全探索:适合需要避免危险动作的场景(如机器人导航、自动驾驶避障),因为策略一致性能防止 “为了最优而冒险”;

  • 稳定收敛:在线策略的更新更保守,训练过程波动小;

  • 局限:仅适用于离散状态 / 动作,且策略受探索策略影响,收敛速度可能慢于 Q-Learning。

(四)深度 Q 网络DQN(Deep Q-Network)

        DQN 通过结合深度神经网络解决了 Q-Learning 的 Q-table 局限性问题尤其在连续空间和大状态空间中表现优异。Q-Learning 的 Q 表仅适用于离散、低维状态空间(如网格世界的状态数 = 网格数),但现实场景中状态往往是连续、高维的(如 Atari 游戏的帧图像(210×160×3)、机器人的传感器数据)—— 此时 Q 表的维度会爆炸(比如 Atari 游戏的状态数是无限的),无法存储。

        DQN 通过神经网络拟合 Q 值,并采用 ε-greedy 策略来平衡探索与利用。Replay Buffer 技术通过保存状态转换,进行批量训练,避免过拟合。同时,它使用双 Q 网络来计算更新目标。深度神经网络的使用: DQN 利用深度神经网络来拟合 Q 值,这意味着智能体可以处理高维和连续的状态空间。网络的输入是状态,输出是每个可能动作的 Q 值。通过训练网络,DQN 能够学习到不同状态下各个动作的价值

1. 核心思想:用神经网络拟合 Q 值

    DQN(Deep Q-Network)的本质是 “深度学习 + Q-Learning”:

  • 用深度神经网络(DNN)替代 Q 表,输入是状态 s(如游戏帧、传感器数据),输出是每个动作 a 的 Q 值(即 Q (s,a));
  • 网络训练的目标:最小化 “预测 Q 值” 与 “目标 Q 值” 的均方误差(MSE)。

2. 关键技术

(1)ε-greedy策略

        为了在探索新策略与利用已有知识之间取得平衡,DQN通常采用 ε-greedy 策略。平衡探索与利用,训练中ε衰减,与 Q-Learning 一致。智能体以一定概率(ε)随机选择一个动作,以便探索新的策略。

(2)经验回放(Replay Buffer):

        DQN 使用 Replay Buffer 技术来存储智能体与环境交互中获得的状态转移数据。强化学习的交互数据是时序相关的(比如连续帧图像),而深度学习要求训练数据独立同分布,否则会导致网络过拟合、训练不稳定;用一个 “经验池” 存储智能体的交互经验(s_t, a_t, r_t+1, s_t+1, done_t),训练时从经验池中随机采样批量样本进行训练,打破数据的时序相关性,降低方差,提升训练稳定性。通过批量训练的方式,DQN可以从这些存储的数据中随机抽取样本进行训练,降低了数据之间的相关性,从而有效地避免过拟合。这种方法使得智能体能够更稳定地学习。

(3)目标网络(Target Network):解决目标 Q 值波动问题

        如果用同一个网络同时计算 “预测 Q 值” 和 “目标 Q 值”,目标 Q 值会随网络参数更新而实时波动,导致训练震荡、难以收敛;通过引入两个结构完全相同的网络,主网络实时更新参数,用于预测当前 Q 值Q(s_t,a_t);目标网络固定一段时间(如 10 回合)后,复制主网络的参数,用于计算目标 Q 值,使得目标 Q 值相对稳定,训练收敛更快

(4)双 Q 网络:解决 Q 值过估计

        DQN 还引入了双 Q 网络的概念,以进一步提升训练的稳定性。具体而言,它使用两个 Q 网络来分别计算当前动作的 Q 值和目标 Q 值从而减少因过估计而导致的训练不稳定性。这一设计使得 DQN 在更新目标时更加精确。

3. DQN 的训练流程

  1. 初始化主网络、目标网络(参数相同)、经验回放池,初始化状态s(如游戏的初始帧)

  2. 对每个时间步:

        a. 用 ε-greedy 策略选择动作a;

        b. 执行动作a,获得奖励r、下一个状态s'、结束标志done;

        c. 将经验((s,a,r,s',done)存入经验回放池;

        d. 当经验池大小≥批量大小时,随机采样批量样本;

        e. 用目标网络计算目标 Q 值(y_t);

        f. 用主网络计算预测 Q 值Q(s,a),计算 MSE 损失;

        g. 反向传播更新主网络参数;

        h. 每 10 回合,将主网络参数复制到目标网络;

    3. 衰减ε,重复回合训练,直到网络收敛。

4. 应用与成就

        DQN 在许多复杂任务中表现出色,尤其是在一些具有挑战性的游戏中(如 Atari游戏),它通过自我对弈的方式训练,取得了超越人类专家的表现。由于其强大的学习能力,DQN 被广泛应用于机器人控制、智能游戏代理以及自动驾驶等领域,展示了深度强化学习的巨大潜力。

(五)DQN 改进算法

        原版 DQN 存在 Q 值过估计、样本利用效率低、状态价值判断不足等问题,后续改进算法针对性解决这些痛点,形成了从 “单改进” 到 “多改进集成” 的演进。

改进算法 核心问题解决 核心思想 优势与适用场景 
Double DQN(双 Q 网络) Q 值过估计 主网络选动作,目标网络算价值,避免 “最大化操作” 放大误差 降低 Q 值偏差,提升收敛稳定性
Dueling DQN(决斗 Q 网络) 状态价值与动作优势混淆 将 Q 值分解为 “状态价值 V (s)” 和 “动作优势 A (s,a)”:Q(s,a) = V(s) + A(s,a) 增强状态价值判断(如 “这个状态本身就不好”),适合状态主导的场景
Prioritized ER(优先经验回放) 样本利用效率低 给经验池中的样本分配优先级(TD 误差越大,优先级越高),采样时优先选高优先级样本 重点训练 “难样本”(如失败动作、高奖励动作),提升学习效率
Multi-step TD(多步 TD) 单步 TD 的偏差与方差平衡

用 “多步奖励和” 替代 “单步奖励”:

y_{t} = r_{t+1} +\gamma r_{t+2} + ... + \gamma^n \max_{a'} Q(s_{t+n},a')

平衡 MC(多步,低偏差高方差)和 TD(单步,高偏差低方差)
Distributed Q Function(分布式 Q 函数) 单智能体学习效率低 多个智能体并行交互,每个智能体学习不同的 Q 函数,最后融合结果 提升数据多样性,加快收敛,适合大规模训练
Rainbow 单一改进效果有限 集成 Double DQN、Dueling DQN、Prioritized ER、Multi-step 等所有改进 目前性能最强的离散动作 DQN 变体,适用于高难度任务
Continuous DQN(连续动作 DQN) 无法处理连续动作空间 用神经网络输出动作的概率分布或采样动作,结合梯度上升优化连续动作的 Q 值 适用于连续动作场景(如机器人关节控制、自动驾驶的车速调节

(六)TD 方法体系总结:核心区别与选型建议

1. 核心算法对比

算法 核心特点 状态空间 动作空间 策略类型 核心适用场景
TD(0) 状态价值估计 离散低维 无(仅评估状态) - 简单环境的策略评估
Q-Learning 表格型、离线最优 离散低维 离散 离线策略 离散场景的最优决策(如迷宫)
SARSA 表格型、在线安全 离散低维 离散 在线策略 离散场景的安全探索(如机器人避障)
DQN 深度学习、高维状态 连续高维 离散 离线策略 高维场景的离散动作决策(如 Atari)
Rainbow 集成改进、性能最优 连续高维 离散 离线策略 高难度离散动作任务
Continuous DQN 深度学习、连续动作 连续高维 连续 离线 / 在线策略 连续动作控制(如机器人、自动驾驶)

2. 选型建议

  • 若场景是离散低维状态 / 动作:优先选 Q-Learning(追求最优)或 SARSA(追求安全);

  • 若场景是连续高维状态、离散动作:优先选 DQN 或 Rainbow(性能更强);

  • 若场景是连续动作:选 Continuous DQN 或其他连续控制算法(如 DDPG、PPO);

  • 若需要快速验证思路:用 Q-Learning/SARSA(表格型,实现简单);

  • 若需要工业级性能:用 Rainbow 或分布式 DQN(样本效率高、收敛快)。

三、策略梯度(Policy Gradient, PG)方法

(一)策略梯度方法简介

        策略梯度方法直接优化策略,通过调整智能体在每个状态下选择动作的概率分布来提升整体表现。与基于价值的算法不同,策略梯度方法不需要明确估计 Q 值或 V值,而是直接优化策略,使其能够在环境中做出更优决策。智能体通过采样轨迹,不断学习并改进自己选择动作的策略

(二)PG 与 DQN 的核心区别

维度 策略梯度(PG) DQN(基于价值)
核心目标 直接优化策略 π(a,s)(动作概率) 先优化价值函数 Q (s,a)(动作价值),再推导策略
方法 蒙特卡洛+神经网络(选择更好行为的概率更高) TD+神经网络
动作选择方式

按概率采样(如 30% 选 a1,70% 选 a2)

训练一个神经网络,输入状态 state,直接输出动作 action,不再计算Q

贪心选择(选 Q 值最大的动作,加 ε 探索)
依赖的数据 完整轨迹(蒙特卡洛) 单步 / 多步转移(TD 时序差分)
适用场景 连续动作空间(如机器人关节角度)、策略需随机的场景 离散动作空间(如游戏上下左右)、动作数少的场景
训练稳定性 方差大(依赖完整轨迹) 偏差大(依赖 Q 值估计)

(三)PG的训练过程

        训练过程中,智能体首先与环境交互,收集一系列状态、动作和奖励信息。这些数据用于计算当前策略的表现,智能体根据这些反馈信息调整策略。整个过程通过多次迭代,逐渐优化策略,使得智能体在相同的状态下能够选择更加有利的动作。

步骤 1:交互采样,收集轨迹

        智能体用当前策略 π,在环境中 “玩一局”(比如打一局游戏),记录完整轨迹:(s₀,a₀,r₀) → (s₁,a₁,r₁) → ... → (s_T,a_T,r_T)其中:s = 状态(如游戏画面),a = 动作(如攻击),r = 即时奖励(如得分)。PG 依赖完整轨迹(蒙特卡洛思想),因为需要计算 “这一局的总回报” 来判断策略好不好。

步骤 2:计算回报(衡量动作的 “好坏”)

        总回报 R:对轨迹中的每个动作 a_t,计算从 t 时刻到游戏结束的累积奖励R_{t}= r_{t} + \gamma r_{t+1} + \gamma^{2} r_{t+2} + ... + \gamma^{T} r_{T}\gamma是折扣因子,0<\gamma≤1,比如 \gamma=0.9,强调 “即时奖励更重要”,避免未来回报的不确定性)。比如:游戏中 “捡装备(a_t)” 后,后续打怪得分更高,那么 a_t 的 R_t 会包含这些后续奖励,说明这个动作是 “好动作”。

步骤 3:调整策略,让 “好动作” 更易被选中

  • 核心逻辑:提高 “高回报动作” 的选择概率,降低 “低回报动作” 的概率。用神经网络的梯度上升(因为要最大化回报):损失函数设计为 L = -E[logπ(a|s) * R_t]

    • logπ(a|s):动作 a 在状态 s 下被选中的概率的对数(概率越高,log 值越大);

    • R_t:动作 a 的总回报(R_t 越大,说明动作越好);

    • 负号:把 “最大化回报” 转化为 “最小化损失”(符合神经网络训练习惯)。

  • 通俗说:如果某个动作 a 在状态 s 下带来了高回报 R_t,就通过梯度调整,让下次在 s 状态下选 a 的概率变大;反之则变小。

(四)PG 的两个关键改进方法

1. Baseline(基准线):解决 “回报全为正” 的更新偏差

  • 问题:如果游戏中所有动作的回报 R_t 都是正数(比如每走一步都得分),即使某个动作是 “差动作”(得分少),R_t 也是正的,会导致策略依然倾向于选择它,更新方向出错。

  • 解决方案:给每个 R_t 减去一个基准线 B(通常是 “所有轨迹的平均回报”),即 R'_t = R_t - B。让回报有正有负,明确 “相对好坏”,减少更新方差,让策略收敛更稳定。

    • 若 R_t > B:动作比平均水平好,更新时增加其概率;

    • 若 R_t < B:动作比平均水平差,更新时降低其概率。

2. Suitable Credit(合适的信用分配):解决 “轨迹中动作贡献不均” 的问题

  • 问题:最初的 PG 中,会把 “一整局的总回报 R” 分配给轨迹中的所有动作(s,a),但这不合理 —— 比如一局游戏赢了(总回报高),但中间有几个 “失误动作”(比如差点掉血),这些失误动作不该得到和关键动作(比如最后击杀)一样的 “功劳”;反之,一局输了(总回报低),可能只是最后一个动作失误,前面的正确动作不该被全盘否定。

  • 解决方案:用 “时序差分回报” 或 “折扣累积回报” 替代全局总回报,让每个动作只获得 “它应得的功劳”。比如:动作 a_t 的回报 R_t 是 “从 t 时刻开始的累积奖励”,而不是整局的总奖励 —— 这样,t 时刻的动作只对后续的奖励负责,前面的动作不背后面的锅。

  • 关键:依然需要等回合结束(蒙特卡洛特性),才能回溯计算每个动作的 R_t,但解决了 “一刀切” 的信用分配问题。

(五)策略值函数估计

        策略值函数估计是通过给定环境中的马尔可夫决策过程(MDP)和策略\pi来评估状态的价值和动作的价值。具体而言,状态价值函数表示在某一状态下,按照该策略所能获得的期望回报,而动作价值函数则进一步考虑在某一状态下采取特定动作后的期望回报。策略提升是指在某一状态下,如果新的策略\pi'的价值超过了原策略\pi,那么就可以认为\pi'是对π的提升。根据策略提升定理,当新的策略在某些状态下的回报高于原策略时,就可以确保新策略的价值也高于原策略。

        策略值函数估计是强化学习中的一个核心概念,它主要用于评估给定策略在特定环境中的表现。这个过程通过计算每个状态的价值函数来完成,价值函数反映了在特定状态下,执行策略所能获得的期望累积奖励。

        通过价值评估,我们能够指导策略的提升,最终实现更优的决策。ε-Greedy 策略提升则强调在多个动作选择中,利用小概率选择高价值动作的方式进行策略改进。整体而言,这些方法通过动态规划的框架,为优化决策过程提供了系统的理论支持。

1. 两个核心价值函数(V 函数 vs Q 函数)

(1)状态价值函数 V^\pi (s)

        状态价值函数是指在某个状态下,执行该策略所能获得的期望奖励。这可以看作是当前状态的“价值”。只和 “状态 s” 有关,不管选什么动作,评估的是 “状态本身的好坏”。在状态 s 下,遵循策略 π,从 s 出发能获得的期望累积回报。公式:V^\pi (s) = E[R_{t} | s_{t} = s, \pi ]

        例如游戏中 “你残血(s),敌方满血”,V^\pi (s) 就是你按当前策略(如逃跑)继续玩,最终能赢的期望得分 —— 这个值很低;如果 “你满血,敌方残血”,V^π(s) 就很高。

(2)动作价值函数 Q^\pi (s,a)

        动作价值函数则是指在某个状态下采取特定动作所能获得的期望奖励,和 “状态 s + 动作 a” 都有关,评估的是 “某个动作在某个状态下的好坏”,是策略改进的直接依据。在状态 s 下,遵循策略 π,先采取动作 a,之后继续按 π 执行,能获得的期望累积回报。公式:Q^\pi (s,a) = E[R_{t} | s_{t} = s, a_{t} = a, \pi ]

        同样是 “你残血(s)”,Q^π(s, 逃跑) 是 “逃跑后继续玩” 的期望得分,Q^π(s, 反打) 是 “反打后继续玩” 的期望得分 —— 显然 Q^π(s, 逃跑) 更高,所以策略会倾向于选 “逃跑”。

2. 策略提升:如何让策略变得更好?

        策略提升的目标是:从当前策略 π,找到一个更优的策略 π',使得对于所有状态 s,都有 V^{\pi'}(s)\geqslant V^{\pi }(s)(新策略的价值不低于旧策略)。

(1)策略提升定理(核心依据)

        如果对于所有状态 s,新策略 π' 满足:Q^{\pi }(s, \pi '(s)) \geqslant V{\pi }(s)(即:新策略在 s 下选的动作 a=π'(s),其 Q 值≥旧策略在 s 下的 V 值)那么 π' 是比 π 更优的策略V^{\pi'}(s)\geqslant V^{\pi }(s)

(2)ε-Greedy 策略提升(平衡探索与利用)

        如果直接选 Q 值最大的动作(贪心策略),可能会陷入 “局部最优”(比如一直选同一个动作,错过更好的选择)。ε-Greedy(ε 是小概率,比如 0.1),在策略提升过程中,既保证了 “大部分时间选已知的好动作”,又保留了 “探索新动作” 的可能,避免过早收敛到次优策略。

  • 以概率(1-ε)选 Q^\pi (s,a) 最大的动作(利用已知的好动作);

  • 以概率 ε 随机选一个动作(探索未知的动作,可能发现更好的选择)。

(六)价值迭代 vs 策略迭代

        在强化学习中,价值迭代和策略迭代是两种常用的求解最优策略的方法。价值迭代主要通过贪心更新方式来迭代每个状态的价值函数,直到达到收敛。在这一过程中,对每个状态的价值进行更新,旨在通过最大化当前价值函数来逼近最优价值。这种方法适用于没有状态转移循环的情况,通常在处理大规模的马尔可夫决策过程(MDP)时效率较高。
        相较之下,策略迭代则采用不同的思路。它首先随机初始化一个策略,然后通过交替的方式评估该策略的价值并改进策略。具体而言,策略迭代先计算出在当前策略下每个状态的价值,接着利用这些价值信息更新策略。这一过程持续进行,直到策略不再改变为止。策略迭代在状态空间较小的情况下往往收敛较快,因为它能更精确地评估和提升策略。

        最优价值函数是所有可能策略中可获得的最大期望奖励,而最优策略则是能够实现这一最大期望奖励的具体策略

1. 动态规划的核心思想

        利用 “贝尔曼方程”(Bellman Equation),通过迭代的方式,逐步逼近最优价值函数 V*(所有策略中最大的 V 函数)和最优策略 π*(能实现 V * 的策略)。贝尔曼最优方程(核心公式):

  • 最优状态价值函数:V^{*}(s) = max_{a} [ R(s,a) + \gamma \sum_{s'}P(s'|s,a) V^{*}(s') ]状态 s 的最优价值 = 选一个最优动作 a,获得即时奖励 R,加上折扣后的下一个状态 s' 的最优价值)

  • 最优动作价值函数:Q^{}(s,a) = R(s,a) + \gamma\sum_{s'}P(s'|s,a) V^{*}(s')

2. 策略迭代(PI):“评估→改进” 的循环

        策略迭代是通过交替评估当前策略的价值函数并更新策略来找到最优策略的,每次更新都通过计算状态的最大价值来改善策略。策略评估阶段需要迭代多次,直到 V 收敛,所以计算量较大(尤其是状态空间大时)。

步骤拆解(用 “走迷宫” 举例)
  • 初始状态:随机初始化一个策略 π₀(比如每个状态下随机选动作)。

  • Step 1:策略评估(Policy Evaluation)固定当前策略\pi _{k},计算该策略下的状态价值函数 V^{\pi _{k}}(s)(即 “按\pi _{k}走,每个状态的期望回报”)。用贝尔曼方程迭代,直到V^{\pi _{k}}(s)收敛(前后两次迭代的 V 值差小于阈值)。

  • Step 2:策略改进(Policy Improvement)用收敛后的V^{\pi _{k}}(s),更新策略\pi _{k}\pi _{k+1}:对每个状态 s,选能最大化Q^{\pi _{k}}(s,a)的动作 a(贪心策略)。

  • 循环:重复 “策略评估→策略改进”,直到策略 π 不再变化(\pi _{k}=\pi _{k+1}),此时的策略就是最优策略 π*。

3. 价值迭代(VI):“评估 + 改进” 的合并

价值迭代则是直接更新状态价值函数,直到收敛。这个方法通常在状态和动作空间较大的情况下效率更高。 价值迭代的核心是:把 “策略评估” 和 “策略改进” 合并成一步,直接迭代最优价值函数 V*,直到 V 收敛后再推导最优策略。不需要保存中间策略,只需要迭代 V 函数,适合状态空间大的场景。

步骤拆解(同样用 “走迷宫”)
  • 初始状态:随机初始化所有状态的价值函数 V₀(s)(比如全为 0)。

  • Step 1:价值更新(贪心更新)对每个状态 s,用贝尔曼最优方程直接更新V_k (s) 为:V_{k+1}(s) = max_{a}[ R(s,a) + \gamma \sum_{s'}P(s'|s,a) V_{k}(s') ],这里的关键是 “max_a”—— 直接在价值更新时,选择能最大化未来回报的动作,相当于 “边评估价值,边改进策略”。

  • 循环:重复价值更新,直到V_k (s)收敛(前后两次迭代的 V 值差小于阈值),此时 V_k (s)就是最优价值函数 V*。

  • Step 2:推导最优策略收敛后,对每个状态 s,最优策略 \pi^{*}(s) = argmax_a Q^{*}(s,a)选 Q 值最大的动作)。

4. 收敛速度与计算复杂度

        策略迭代在状态空间较小的情况下通常能快速收敛,因为它逐步改善策略。而价值迭代则更适合处理较大状态空间的 MDP(马尔可夫决策过程),因为它在计算效率上更具优势。无论用价值迭代还是策略迭代,最终都会收敛到同一个最优价值函数 V和最优策略 π—— 区别只在于 “迭代路径” 和 “计算效率”。
        在收敛速度方面,策略迭代通常能在小规模 MDP 中更快达到最优策略,因为它在每一步中都有明确的评估和改进过程。然而,在大规模 MDP 中,策略迭代的计算复杂度会显著增加,特别是在需要频繁更新价值函数时。这使得价值迭代成为更具吸引力的选择,尤其是在状态空间较大的情况下,因为它通常能在较少的迭代中找到接近最优的价值函数。
        此外,价值迭代的贪心更新方法使其在面对复杂问题时能够快速调整并逼近最优解。尽管策略迭代在每一步都进行更为详尽的计算,但它的复杂性可能会导致在较大的问题上变得低效。

        总的来说,价值迭代和策略迭代各有优缺点。在小规模 MDP 中,策略迭代因其较快的收敛速度而显得更为优越;而在大规模 MDP 中,价值迭代的计算效率和简单性使其更具实用性。

四,Actor-critic

        前面讲述的策略梯度(PG) 方法有两个致命问题,导致训练效率低、稳定性差,

        痛点 1:依赖 完整轨迹(蒙特卡洛特性),必须等回合结束(如游戏通关 / 失败),才能计算总回报 R_t,才能更新策略,中间步骤无法学习,效率极低;

        痛点 2:回报方差大,即使是同一个(s,a),在不同轨迹中可能得到差异很大的 R_t,导致策略更新波动剧烈。

        而 价值方法(如 DQN) 能用 时序差分(TD) 解决 “无需完整轨迹” 的问题(每步都能通过 TD 误差更新价值函数),但只能处理离散动作空间。

        AC 算法的核心思想:把 PG(直接优化策略)和价值方法(TD 误差估计)结合起来,用 “价值网络(Critic)” 指导 “策略网络(Actor)” 更新,既保留 PG 处理连续动作的能力,又解决了 PG 效率低、方差大的问题。

(一)AC 算法的核心架构:Actor + Critic

        Actor-Critic 使用两个网络,输入均为状态 S,但输出不同,一个负责输出策略,即动作,为 Actor;另一个输出每个动作的分数,即Q值,为 Critic,像 “演员 + 评论家” 的组合。      

        在 AC 算法中,Critic 会估计一个状态的期望奖励,即 V 值,而 Actor 则基于该V 值来选择动作。Critic 同时还计算出 TD 误差,衡量实际奖励与期望奖励之间的差异,用来更新策略。通过这种方式,智能体能够在每一步进行策略优化,而不必等到整个回合结束。
        此外,Critic 使用优势函数来评估当前选择的动作与其他可能动作的相对好坏。为了稳定计算,AC 通常通过神经网络来估计状态的 Q 值和 V 值,进而指导 Actor 选择更优的动作。

1. Actor(演员):负责 “做决策”—— 策略网络

  • 功能:和 PG 中的策略网络一样,建模策略 π(a|s),输出动作(或动作概率分布);

    • 离散动作空间:状态空间有限,输出每个动作的概率(如 “左走 30%、右走 60%”);

    • 连续动作空间:状态空间无限,直接输出动作值(如机器人关节角度 “0.5 弧度”);

  • 目标:根据 Critic 的 “评分”,调整策略,让 “得分高的动作” 更易被选中。

    2. Critic(评论家):负责 “评分数”—— 价值网络

    • 功能:评估 Actor 选择的动作好不好,输出 “价值分数”(V 值或 Q 值),核心是计算 优势函数(Advantage Function)

    • 目标:准确评估动作的实际价值,给 Actor 提供可靠的更新信号(类似老师给学生打分,指导学生改进)。

    (二)优势函数(advantage Function)

            在策略梯度算法中,衡量一个动作是否比其他动作更有优势,通常使用优势函数(Advantage Function)。优势函数会评估某个动作在当前状态下是否优于其他可选动作。这个过程可以帮助智能体在做出决策时,不仅考虑当前动作的潜在奖励,还与其他可能动作进行比较。Critic 的角色就是充当这个优势函数,它在每一步都评估当前动作是否比其他动作更好。相比于直接给每个动作分配一个奖励,使用优势函数能更加高效地优化策略,帮助智能体更快找到最优行为。

    1. 定义:A (s,a) = Q (s,a) - V (s)

    • Q (s,a):动作价值函数(状态 s 选动作 a 的总期望回报);

    • V (s):状态价值函数(状态 s 本身的总期望回报,即 “平均水平”);

    • 通俗理解:A (s,a) 表示 “在状态 s 下选动作 a,比当前状态的平均水平好多少”—— 正优势 = 动作超预期,负优势 = 动作拖后腿。

    2. 为什么用优势函数,而不用直接用 Q 值 / 回报 R?

    • 对比 PG:PG 用总回报 R_t 作为更新权重,方差大;AC 用 A (s,a) 替代 R_t,相当于减去了 “状态平均价值”,大幅降低方差(比如同样是 R_t=10,若 V (s)=8,A=2;若 V (s)=5,A=5,更能体现动作的相对好坏);

    • 对比 Q 值:Q (s,a) 是 “绝对价值”,受状态本身影响大(比如状态 s 本身很好,所有动作的 Q 值都高);A (s,a) 是 “相对价值”,能精准衡量 “动作本身的贡献”,避免状态价值的干扰。

    3. 优势函数的简化计算(TD 误差)

            实际训练中,很难直接计算 Q (s,a) 和 V (s),常用 TD 误差 近似优势函数:         

                                      A(s_{t},a_{t}) \approx \delta _{t}= r_{t} + \gamma V(s_{t+1}) - V(s_{t}) 

    • 解释:\delta _{t}是 “实际回报与期望回报的差值”。若r_{t} + \gamma V(s_{t+1})\geqslant V(s_{t}),说明动作a_{t}带来了超预期的回报,A 为正,应增加a_{t}的概率;反之则减少。

    • 关键:无需完整轨迹,每步都能计算\delta _{t},实现 在线更新(边交互边学习),解决了 PG 效率低的问题。

    4. AC 算法的训练流程(闭环逻辑)

        (1) 交互采样:Actor 用当前策略 π(a|s) 选动作a_{t},与环境交互得到(s_t, a_t, r_t, s_{t+1})

        (2) Critic 打分:用 Critic 网络计算V (s_{t})V (s_{t+1}),得到 TD 误差\delta _{t}\approx A (s_t,a_t)

        (3) 更新 Actor:用优势函数 A 作为权重,通过梯度上升最大化策略回报 —— 损失函数                           L_{actor} = -\log \pi (a_t|s_t) * A(s_t,a_t)(和 PG 类似,但权重从R_{t}换成了 A);

        (4) 更新 Critic:最小化 TD 误差的平方,让 Critic 评分更准确 —— 损失函数 L_{critic} = (\delta _{t})^2 = (r_t + \gamma V(s_{t+1}) - V(s_t))^2

        (5) 循环迭代:重复 1-4,直到 Actor 策略收敛到最优。

    5. 标准 AC 的核心优势与不足

    • 优势:① 在线更新(无需等回合结束),训练效率比 PG 高;

                      ② 用优势函数降低方差,训练更稳定;

                      ③ 支持连续动作空间;

    • 不足:① 双网络独立训练,存在 “两倍不准确性”(Actor 依赖 Critic 的评分,若 Critic 估计不准,会误导 Actor);

                      ② 单线程交互,数据收集速度慢;

                      ③ 更新频繁,策略波动较大。

    (三)Advantage Actor-Critic(A2C)

            A2C(Advantage Actor-Critic)是 Actor-Critic 算法的一种改进版本,旨在提高策略优化的效率。A2C 是 AC 算法的工业级改进,核心解决了 “数据收集慢” 和 “双网络不准确性” 问题,是实际应用中最常用的基础 AC 变体。
            在 A2C 中,智能体t同样包含两个主要组件:
            Actor:根据状态选择动作。Actor 是负责策略的部分,它通过优化策略使得智能体在当前状态下选择最优动作。
            Critic:评估当前状态的价值。Critic 通过计算 价值函数(V 值)来评估状态的好坏,同时使用 优势函数(Advantage Function) 来衡量实际选择的动作是否优于其他可能的动作。

            A2C 与标准 Actor-Critic 的区别在于,A2C 是同步的,即它会在多个环境中并行执行智能体,并等待所有环境的反馈,然后统一进行梯度更新。这种同步执行的方式可以更好地利用多核 CPU 资源,提升训练速度和稳定性,避免传统 Actor-Critic 中由于更新频繁而导致的高波动性。

    1. A2C 的核心改进点(对比标准 AC)

    (1)同步并行训练(核心创新)

            标准 AC是单智能体与环境交互,数据收集慢,且样本相关性强(连续轨迹的状态动作相似),导致训练不稳定;而A2C是多智能体(worker)同步并行交互—— 启动多个独立的环境实例(比如 8 个游戏进程),每个 worker 用相同的 Actor/Critic 网络参数与环境交互,收集不同轨迹的数据;所有 worker 收集完一轮数据后,统一计算梯度,对全局网络进行一次更新,然后所有 worker 同步新参数,再继续收集数据;

    • 优势:① 数据收集速度翻倍;

                      ② 不同 worker 的轨迹独立,降低样本相关性,提升训练稳定性;

                      ③ 充分利用多核 CPU 资源。

    (2)用 V 值替代 Q 值,减少网络冗余(解决 “两倍不准确性”)

            标准 AC 可能同时训练 Q 网络(Critic 输出 Q (s,a))和 V 网络,两个网络的估计误差会叠加;A2C 中,Critic 只训练 V 网络(输出 V (s)),优势函数直接用 TD 误差计算

    A=\delta =r+\gamma V (s')-V (s)),避免了 Q 网络的额外误差,减少了参数冗余。

    (3)共享特征提取层(加速收敛)

            Actor 和 Critic 的输入都是状态 s(比如游戏画面、传感器数据),它们的 “特征提取” 过程(比如卷积层处理图像)是相同的;A2C 让 Actor 和 Critic 共享底层的特征提取网络,只在顶层分别输出 “动作” 和 “V 值”;

    • 优势:① 减少参数总量,降低训练开销;

                      ② 特征提取层的学习同时服务于两个网络,加速整体收敛。

    (4)修改 Reward:避免回合提前结束

            比如游戏中 “死亡”“撞墙” 等动作会导致回合提前结束,智能体可能还没学到足够多的经验;对导致回合结束的动作(如死亡),给予 大幅负反馈(比如 r=-100),对延长回合的动作给予正反馈(比如 r=1);引导智能体主动避免 “致命动作”,延长交互轨迹,收集更多有效数据。

    2. A2C 的适用场景

    适合需要高效训练、中等规模状态空间的问题,比如:

    • 离散动作:游戏 AI(如 Atari 游戏)、机器人导航;

    • 连续动作:简单的机械臂控制、无人机悬停。

    (四)Asynchronous Advantaged Actor-Critic(A3C)

            A3C 是 A2C 的 “异步兄弟”,核心思想是 “用异步并行替代同步并行”,进一步提升数据收集速度,解决强化学习 “数据稀缺” 的痛点。 强化学习的一个难点在于数据的获取,因为智能体需要通过与环境的实际交互来产生数据,这与监督学习相比,数据量要少得多。为了解决这个问题,可以通过多个智能体同时与环境交互,从而加快数据收集的速度,生成更多的交互数据。这意味着多个智能体可以并行工作,每个智能体在不同的轨迹上进行探索,增加整体数据量。

    1. A3C 与 A2C 的核心区别:同步 vs 异步

    维度 A2C(同步) A3C(异步)
    并行方式 所有 worker 同步收集数据,统一更新 每个 worker 独立收集数据,独立更新
    网络架构 单全局网络,worker 无独立参数 全局网络 + 每个 worker 本地网络
    更新逻辑 所有 worker 数据汇总后,一次更新 单个 worker 完成数据收集后,立即向全局网络更新梯度
    训练稳定性 高(样本批次大,梯度平滑) 中(样本独立,但梯度更新频繁)
    硬件要求 多核 CPU + 足够内存(同步存储数据) 低(无需等待其他 worker,灵活扩展)

    2. A3C 的核心架构:全局网络 + Worker 网络

            在 A3C(异步优势演员-评论家)算法中,存在一个全局网络(Global Network)和多个工作者网络(worker)。全局网络和每个工作者网络的结构是完全相同的,但全局网络并不会直接与环境交互,它仅用于收集并更新梯度。工作者网络是实际与环境进行交互的部分,它们从环境中获得数据并进行学习。然后,每个工作者将计算得到的梯度传递给全局网络,由全局网络对所有工作者的梯度进行整合和更新。通过这样的架构,多个工作者可以并行地从环境中获取数据,同时异步地将自己的学习结果传递给全局网络,从而加速强化学习的过程。

    (1)全局网络(Global Network)

    • 角色:“参数服务器”—— 存储 Actor 和 Critic 的全局最优参数,不直接与环境交互;

    • 功能:接收所有 Worker 上传的梯度,统一更新全局参数(梯度下降 / 上升)。

    (2)Worker 网络(本地网络)

    • 角色:“数据收集者 + 本地学习者”—— 每个 Worker 都有一份与全局网络结构完全相同的本地 Actor/Critic 网络;

    • 工作流程:

      1. Worker 从全局网络拷贝最新参数,初始化本地网络;

      2. Worker 与独立环境交互,收集轨迹数据(s_t, a_t, r_t, s_{t+1})

      3. 用本地数据计算 Actor 和 Critic 的损失,得到梯度;

      4. 将梯度上传到全局网络,全局网络更新参数;

      5. Worker 丢弃本地网络参数,重新从全局网络拷贝最新参数,重复步骤 2-4。

    3. A3C 与 DPPO 的关键区别

            两者都是分布式强化学习算法,但核心差异在 “上传内容”:

    • A3C:Worker 上传的是 梯度—— 每个 Worker 计算完梯度后,直接发送给全局网络,全局网络汇总梯度后更新参数;

    • DPPO(分布式 PPO):Worker 上传的是 交互数据(s,a,r,s')—— 全局网络收集所有 Worker 的数据,统一进行训练和参数更新;

    • 影响:A3C 对网络带宽要求低(梯度比数据小),但梯度更新频繁可能导致全局参数波动;DPPO 数据利用率高,训练更稳定,但数据传输开销大。

    4. A3C 的优势与不足

    • 优势:① 异步并行,数据收集速度极快(无需等待其他 Worker);

                      ② 样本独立性强,减少相关性导致的训练偏差;

                      ③ 硬件扩展性好(可动态增加 / 减少 Worker);

    • 不足:① 梯度异步更新,可能导致全局参数震荡,训练稳定性不如 A2C;

                      ② 对网络同步时机敏感,需要精细调参。

    (五)Deep deterministic policy gradient (DDPG)

            DQN 只能处理 离散动作空间(如游戏上下左右),但现实中很多问题是 连续动作空间(如机器人关节角度、自动驾驶的车速 / 方向盘角度)—— DDPG 就是为解决这个问题而生,是 “确定性策略 + AC 架构” 的结合体。它的确定性体现在模型直接输出具体的动作,而不是动作的概率分布。与离散动作空间的DQN不同,DDPG 针对连续动作空间进行了改进,适合处理连续性动作的场景,因此在输出时直接给出动作值,而非动作的概率分布。为了在选取动作时保持一定的随机性,DQN 采用的是 \varepsilon-greedy 策略,而 DDPG 使用正态分布进行采样来选择动作。

    1. DDPG 与 DQN/PG 的核心区别

    维度 DQN(离散动作) PG(连续 / 离散) DDPG(连续动作)
    策略类型 基于价值(间接推导策略) 基于策略(随机策略) 基于策略(确定性策略)
    动作输出形式 动作 Q 值(选最大 Q 值动作) 动作概率分布(采样动作) 具体动作值(如 0.3 弧度)
    探索机制 ε-Greedy(随机选动作) 概率采样(如高斯噪声) 动作加高斯噪声(如 a = μ(s) + N (0,σ))
    核心网络 Q 网络 + 目标 Q 网络 策略网络 Actor + Critic + 两个目标网络

     (2)DDPG 网络架构
            在 DDPG 中,Critic 网络的输入是状态 SSS 和动作 AAA,输出对应的 Q值,损失函数为 TD-Error。DDPG 的 Critic 网络主要计算 Q 值,而不像 Actor-Critic (AC)计算的是 V 值,因此 DDPG 并不属于传统的策略梯度方法(PG)。Actor 网络直接输出动作 AAA,与 AC 不同的是,DDPG 的 Actor 网络输出的动作会被输入到 Critic 网络中,以最大化 Q 值。Actor 网络的更新方式也有区别,DDPG 通过梯度上升来最大化 Q 值,而不是像 PG 中通过带权重的梯度下降来优化策略。
    由于参数变化频繁,直接更新会导致训练不稳定。因此,和DQN 类似,DDPG 采用了固定网络(fixed network)的方式来稳定训练过程在实际应用中,DDPG 需要四个网络:Actor 网络、Critic 网络及其对应的两个目标网络,用于帮助稳定训练。

    2. DDPG 的核心设计:确定性策略 + 四个网络

    (1)确定性策略(Deterministic Policy)

            连续动作空间中,动作是无限的(如关节角度可以是 0.1、0.11、0.111...),无法像离散动作那样计算每个动作的概率,确定性策略更高效;Actor 网络直接输出 唯一的最优动作 μ(s) = argmax_a Q (s,a),而不是动作概率分布;为了避免 Actor 一直输出同一个动作(缺乏探索),在训练时给动作加 高斯噪声(N (0,σ)),测试时去掉噪声。

    (2)四个网络架构(稳定训练的关键)

            DDPG 继承了 DQN 的 “目标网络” 思想,并用了四个网络(Actor 两个 + Critic 两个),解决 “目标 Q 值波动过大” 的问题:

    • 主 Actor 网络(μ):输入 s,输出动作 a=μ(s)(当前最优动作);

    • 目标 Actor 网络(μ'):拷贝主 Actor 的参数,但更新频率更低(比如每 100 步更新一次),输出目标动作 a'=μ'(s');

    • 主 Critic 网络(Q):输入 (s,a),输出 Q 值 Q (s,a)(评估当前动作的价值);

    • 目标 Critic 网络(Q'):拷贝主 Critic 的参数,更新频率与 μ' 一致,输出目标 Q 值 Q'(s',a');

    (3)目标 Q 值的计算

            主 Critic 网络的损失函数是 TD 误差的平方:L_{critic} = (Q(s,a) - y_t)^2其中,目标 Q 值 y_{t} 由目标网络计算:y_{t} = r+\gamma ^{*}Q' (s', \mu ^{'}(s'))

            y_t 由目标网络(μ' 和 Q')计算,而目标网络的参数更新缓慢,避免了 “主网络更新导致y_{t}剧烈波动”,让 Critic 网络的训练更稳定。

    (4)Actor 网络的更新(最大化 Q 值)

            Actor 网络的目标是输出能让 Critic 给出最高 Q 值的动作,因此用 梯度上升 优化:

    ∇θ_μ J(θ_μ) = E[∇_a Q(s,a)|s~D, a=μ(s)] * ∇θ_μ μ(s|θ_μ)

            让 Actor 学习 “如何调整动作,才能让 Critic 打更高的分”,梯度方向指向 Q 值最大的动作。

    3. DDPG 的适用场景

    连续动作控制问题,比如:

    • 机器人控制(机械臂抓取、无人机飞行);

    • 自动驾驶(车速调节、方向盘角度控制);

    • 工业控制(电机转速、阀门开度调节)。

    (六)DDPG 的改进版:TD3(Twin Delayed DDPG)—— 解决 Q 值高估的稳定方案

            DDPG 存在一个严重问题:Q 值高估(主 Critic 网络可能过度乐观,给普通动作打高分),导致 Actor 网络学习到次优策略。TD3(双延迟深度确定性策略网络)通过两个核心改进,解决了这个问题,成为目前最稳定的连续控制算法之一。

    1. TD3 的核心改进点

    (1)双 Critic 网络(Twin Critics)—— 解决 Q 值高估

            DDPG 只有一个 Critic 网络,容易因估计误差导致 Q 值高估;

            TD3 用两个独立的主 Critic 网络(Q1 和 Q2),计算两个 Q 值(Q1 (s,a) 和 Q2 (s,a)),取其中较小的一个作为 “真实 Q 值”:Q(s,a) = min(Q1(s,a), Q2(s,a)),目标 Q 值 y_t 也相应调整为:

               y_t = r + γ * min(Q1'(s',a'), Q2'(s',a'))

            两个 Critic 网络同时高估同一个动作的概率极低,取最小值能有效抑制高估,让 Q 值更接近真实价值。

    (2)延迟更新 Actor 网络(Delayed Actor Update)—— 避免误导 Actor

            DDPG 中,Actor 和 Critic 网络同步更新:如果 Critic 网络的 Q 值高估,会立即误导 Actor 学习错误的动作;

            TD3 中,Actor 网络的更新频率远低于 Critic 网络(比如 Critic 每更新 2 步,Actor 才更新 1 步);让 Critic 网络先 “稳定下来”(Q 值估计更准确),再更新 Actor 网络,避免 Actor 被 Critic 的临时误差误导。

    (3)动作正则化(可选)—— 增加探索稳定性

            在目标动作 a' 上添加少量噪声,再裁剪到动作空间范围内:a' = clip(μ'(s') + N(0,σ), a_min, a_max),避免目标动作过于极端,提升 Critic 网络对动作微小变化的鲁棒性。

    2. TD3 与 DDPG 的性能对比

    • 稳定性:TD3 远优于 DDPG,Q 值高估问题得到显著缓解;

    • 收敛速度:TD3 收敛更快,且最终策略的性能更高;

    • 适用场景:与 DDPG 一致,但更适合对稳定性要求高的复杂连续控制问题(如多关节机器人控制、高维度动作空间)。

    (七)AC 系列算法总结

    算法 核心特点 动作空间 并行方式 核心优势 适用场景
    AC 双网络(Actor+Critic),TD 在线更新 离散 / 连续 单线程 效率高于 PG,稳定于 PG 入门级强化学习,小规模问题
    A2C 同步并行,共享特征层,优势函数 离散 / 连续 同步多线程 数据高效,训练稳定 中等规模问题,需要平衡速度与稳定
    A3C 异步并行,全局 + Worker 网络 离散 / 连续 异步多线程 数据收集极快,扩展性好 大规模问题,需要快速迭代
    DDPG 确定性策略,四个网络,连续动作 连续 单线程 首次成熟解决连续控制 简单连续控制问题(如无人机悬停)
    TD3 双 Critic,延迟更新,抑制 Q 高估 连续 单线程 稳定、鲁棒,性能最优 复杂连续控制问题(如多关节机器人)

    关键知识点串联

    1. 从 PG 到 AC:AC 是 PG 的 TD 版本,用优势函数解决 PG 的方差大、效率低问题;

    2. 从 AC 到 A2C/A3C:并行化改进,解决数据收集慢、样本相关性强的问题;

    3. 从 DQN 到 DDPG:从离散动作扩展到连续动作,用确定性策略 + 目标网络稳定训练;

    4. 从 DDPG 到 TD3:针对 Q 值高估和训练不稳定,加入双 Critic 和延迟更新。

    五、PPO(Proximal Policy Optimization)

            PPO(Proximal Policy Optimization,近端策略优化)是基于 Actor-Critic 架构 的强化学习算法,核心目标是:解决传统策略梯度(PG)的 “数据低效” 问题,同时避免 TRPO(信任域策略优化)的 “计算复杂” 问题,实现 “简单、稳定、高效” 的策略优化。

            它继承了 Actor-Critic 架构处理连续动作空间的能力,又通过 “策略更新约束” 大幅提升训练稳定性,是目前工业界和学术界最常用的强化学习算法之一(比如 OpenAI 的机器人控制、AlphaStar 都用到了 PPO)。

    (一)On-Policy vs Off-Policy:强化学习的核心范式差异

            要理解 PPO 的改进,必须先搞懂这两个概念,它们的本质是 “采样策略” 和 “更新策略” 是否相同。

    1. 定义与通俗类比

    范式 核心特点 通俗例子 典型算法
    On-Policy 采样策略 = 更新策略(用当前策略生成的数据训练当前策略) 教练教球员:用现在的战术打比赛,用比赛数据改进现在的战术 PG、AC、A2C、PPO
    Off-Policy 采样策略≠更新策略(用旧策略 / 其他策略的数据训练新策略) 教练教球员:用过去的战术录像(旧数据)改进现在的战术 DQN、DDPG、SAC

    2. 为什么 PG 是 On-Policy?

            PG 的目标函数是:J(\theta )= \mathbb{E}_{(s,a)\sim\pi_\theta} \left[ \log\pi_\theta(a|s) \cdot A^\pi(s,a) \right]

            其中,期望是对当前策略\pi _{0}生成的轨迹求平均 —— 如果策略更新为\pi _{\theta '},旧轨迹 (s,a) 就不再属于\pi _{\theta '}的分布,用旧数据训练会引入偏差,因此必须用新策略重新采样数据。

    3. On-Policy 的致命缺点:数据利用率极低

            每次策略更新后,旧数据全部作废,需要重新与环境交互生成新数据,导致训练速度慢(交互成本高);样本效率低(大量数据只用于一次更新)。

    4. Off-Policy 的优势:数据复用

            Off-Policy 算法(如 DQN)可以用 “经验回放池” 存储旧数据,反复用于训练,大幅提升数据利用率。但 PG 类算法要实现 Off-Policy,必须解决 “分布不匹配” 问题 —— 这就需要重要性采样

    (二)重要性采样(Importance Sampling)

    1. 什么是重要性采样?

            核心目标:用 A 分布的样本,估计 B 分布的期望。

            数学原理:对任意函数 f (x),有\mathbb{E}_{x\sim P} [f(x)] = \mathbb{E}_{x\sim Q} \left[ f(x) \cdot \frac{P(x)}{Q(x)} \right]其中:

    • P 是目标分布(要估计期望的分布);Q 是采样分布(实际采样的分布);
    • \frac{P(x)}{Q(x)} 是重要性权重(衡量样本 x 在 P 中的概率与 Q 中的概率的比值)。

            通俗例子:用抛硬币估计掷骰子的期望

    • 目标:估计掷骰子(P 分布,1-6 各 1/6)的点数期望\mathbb{E}_P[x]
    • 采样:只有抛硬币(Q 分布,正 = 1、反 = 0,各 1/2)的数据;
    • 计算:\mathbb{E}_P[x] = \mathbb{E}_Q\left[ x \cdot \frac{P(x)}{Q(x)} \right]硬币样本 x=1(正):P(1)=1/6Q(1)=1/2,权重 = \frac{1}{6}/\tfrac{1}{2}=\frac{1}{3};硬币样本 x=0(反):P(0)=0,权重 = 0;因此\mathbb{E}_P[x] = (1 \cdot 1/3 + 0 \cdot 0)/2 = 1/6?不对,因为硬币样本无法覆盖骰子的 2-6,但原理是对的 ——用权重修正分布差异

            假设你要算全班 50 人的数学平均分,但你只抽到了5 个男生的成绩—— 男生和全班的分布不一样(比如男生平均分 80,女生平均分 90),直接用 5 个男生的分算全班分肯定不准。这时候 “重要性采样” 就来了:你给每个男生的成绩加个 “权重”—— 比如班里男生占 40%,女生占 60%,那每个男生成绩的权重就是 “全班概率 / 男生概率”=1/0.4=2.5。这样算出来的平均分就更接近全班真实分了。

    对应到算法里

    • “全班成绩”= 目标策略(新战术)的数据;
    • “男生成绩”= 采样策略(旧战术)的数据;
    • “权重”= 新战术选这个动作的概率 / 旧战术选这个动作的概率 —— 用权重修正旧数据,让它能用来训练新战术。

            但这里又有个坑:如果 “男生” 和 “全班” 差异太大(比如班里只有 1 个男生,你却抽了他),权重会变得超大,算出来的结果反而更不准 —— 对应算法里就是 “新旧策略差异太大,训练崩了”。

    2. PG 中如何用重要性采样实现 Off-Policy?

            将 PG 的目标函数从 “当前策略\pi _{\theta }采样” 改为 “旧策略\pi _{\theta _{old}}采样”,引入重要性权重\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}:J(\theta) = \mathbb{E}_{(s,a)\sim\pi_{\theta_{old}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} \cdot \log\pi_\theta(a|s) \cdot A^{\pi_{\theta_{old}}}(s,a) \right]

            这样就能用旧策略 \pi _{\theta _{old}}生成的数据,训练新策略\pi _{\theta },实现 Off-Policy。

    3. 重要性采样的致命问题:方差爆炸

            重要性权重\frac{P(x)}{Q(x)}的方差会随 P 和 Q 的差异增大而急剧增加,如果新旧策略差异太大,权重可能变得极大或极小,导致估计结果完全不可靠。

            例子:如果 P 是 “掷骰子”,Q 是 “抛硬币”,两者分布几乎无重叠,权重\frac{P(x)}{Q(x)}要么是 0,要么是 1/3,方差极大,估计结果毫无意义。

    (三)策略更新约束

            为了解决重要性采样的方差问题,必须限制新旧策略的差异—— 不能让新策略\pi _{\theta }和旧策略 \pi _{\theta _{old}}差得太远,否则权重方差会爆炸,训练崩溃。这就是 TRPO 和 PPO 的核心思想:在优化策略时,给策略更新加一个 “信任域”(Trust Region),确保更新幅度在可控范围内。

    (四)TRPO:带信任域的策略优化(PPO 的前身)

    1. TRPO 的核心目标

            在保证新旧策略的 KL 散度不超过阈值 δ的约束下,最大化策略改进:

            其中,KL 散度DKL​(P∥Q)衡量两个分布的差异 ——KL 越小,分布越接近。

    2. TRPO 的缺点

            为了求解带约束的优化问题,TRPO 需要计算二阶导数(Hessian 矩阵),这导致计算复杂度极高(尤其是高维动作空间);实现难度大(需要复杂的数值优化);训练速度慢(二阶计算耗时)。

    (五)PPO:简化版 TRPO,兼顾性能与易用性

            PPO 的核心改进:用 “惩罚项” 或 “裁剪” 替代 TRPO 的硬约束,既保证策略更新幅度可控,又大幅简化计算。PPO 有两种主流形式:PPO-Penalty(KL 惩罚)和PPO-Clip(裁剪目标),其中 PPO-Clip 是最常用的版本。PPO 通过引入KL 散度作为约束,来限制优化过程中策略之间的变化幅度。这种方法的好处在于,可以有效控制策略的更新,使得新旧策略之间的差异不至于太大,从而减少方差引起的波动。此外,PPO中的KL散度作用于策略的表现,而非参数本身且可以根据具体情况动态调整。

    1. PPO-Penalty:KL 散度作为惩罚项

            将约束转化为损失函数的惩罚项:            

    其中,β 是惩罚系数 —— 如果 KL 散度超过阈值 δ,就增大 β;如果 KL 太小,就减小 β(动态调整)。

    2. PPO-Clip(PPO2):直接裁剪更新幅度

            这是 PPO 的精髓,完全避免了 KL 散度的计算,直接对 “策略更新比率” 进行裁剪,目标函数设计为:

    • 如果动作 a_t 是好动作(A_t>0):

      • 若rt​(θ)>1(新策略选 a_t 的概率比旧策略高):裁剪到 1+ε,避免新策略过度偏爱 a_t;

      • 若rt​(θ)<1(新策略选 a_t 的概率比旧策略低):不裁剪,鼓励提高 a_t 的概率;

    • 如果动作 a_t 是差动作(A_t<0):

      • 若rt​(θ)<1(新策略选 a_t 的概率比旧策略低):裁剪到 1-ε,避免新策略过度规避 a_t;

      • 若rt​(θ)>1(新策略选 a_t 的概率比旧策略高):不裁剪,鼓励降低 a_t 的概率。

    最终效果:策略更新被限制在 [1-ε, 1+ε] 的范围内,不会出现 “突变”,训练极其稳定。

    3. PPO 的完整训练流程(Actor-Critic 架构)

    1. 采样阶段(On-Policy):用当前策略 π_θ 与环境交互,收集轨迹数据(st​,at​,rt​,st+1​),计算优势函数At​(常用 GAE 方法,GAE 能进一步降低优势函数的方差);

    2. 更新阶段

      • 固定优势函数At​,重复 K 轮(通常 K=4)优化 Actor 的 Clip 目标函数LClip(θ);

      • 优化 Critic 的均方误差损失:L_{critic}=E[(V(st​)−V^t​)2](V^t​是目标价值,如r_{t}​+\gamma V(s_{t}+1​))

    3. 迭代:更新策略后,重新采样数据,重复步骤 1-2。

    4. GAE(Generalized Advantage Estimation)

            PPO 中通常用 GAE 计算优势函数,平衡方差和偏差:        

            其中 λ∈[0,1]:λ=0 时等价于 TD 误差(方差小,偏差大);λ=1 时等价于蒙特卡洛回报(方差大,偏差小)。

    (六)PPO 的核心优势(对比 TRPO/PG/AC)

    • 训练稳定:Clip 机制限制策略更新幅度,几乎不会出现训练崩溃;

    • 实现简单:无需计算二阶导数,几行代码就能实现核心逻辑;

    • 样本效率高:虽然仍是 On-Policy,但可以对同一批数据迭代优化 K 轮(如 K=4),大幅提升数据利用率;

    • 性能优异:在离散 / 连续动作空间都表现出色,是 “通用型算法”;

    • 超参数鲁棒:ε、K 等超参数对结果影响较小,调参成本低。

    维度 TRPO PPO(PPO-Clip)
    约束方式 硬约束(KL≤δ) 软约束(Clip 裁剪)
    计算复杂度 高(二阶导数、共轭梯度) 低(一阶导数)
    实现难度 难(复杂的数值优化) 易(几行代码实现 Clip 目标)
    训练速度 慢(二阶计算耗时) 快(一阶优化)
    稳定性 极高(Clip 更鲁棒)
    实际应用 少(复杂) 多(主流选择)

    (七)PPO 的适用场景

    几乎覆盖所有强化学习问题,尤其是:

    • 离散动作:游戏 AI(Atari、MOBA 游戏)、推荐系统;
    • 连续动作:机器人控制(机械臂抓取、无人机飞行)、自动驾驶;
    • 复杂环境:需要稳定训练、高样本效率的场景(如多智能体交互)。 

    六、GRPO (Group Relative Policy Optimization)

    1. 核心思想:组内相对优势替代价值函数

            GRPO 是 DeepSeek 团队 2024 年提出的 PPO 变种,核心创新在于完全移除 Critic 网络,通过 "组内比较" 替代传统价值评估:

    • "小组评比" 机制:对同一问题生成多个回答,通过组内相对排名确定优劣,而非依赖绝对评分

    • 组内归一化优势:将每个回答的奖励减去组内均值,再除以标准差,得到相对优势。高于组平均分的输出获得正优势 (奖励),低于平均分的获得负优势 (惩罚),优势大小与偏离程度成正比。

    • 省去价值模型:直接用组内统计量 (均值、标准差) 替代 PPO 中昂贵的 Critic 网络,大幅降低显存占用 (减少 40%)

    2. 算法流程:

            Step 1:组采样 (Group Sampling): 对每个输入 prompt,用当前策略 π_θ 生成 G 个不同输出 {y₁,y₂,...,y_G}

            Step 2:组评估 (Group Evaluation):用奖励模型对每个输出打分,得到奖励 {r₁,r₂,...,r_G}

            Step 3:组内优势计算 (关键创新)

    • 计算组内均值 μ = (r₁+r₂+...+r_G)/G

    • 计算组内标准差 σ = √[(∑(r_{i}-μ)²)/(G-1)]

    • 每个输出的优势:A_i = (r_{i}-μ)/(σ+ε) (ε 为防止除零的小常数)

            Step 4:策略更新

            使用 PPO 类似的 Clip 目标函数,但用组内优势 A_i 替代传统优势:

    L_CLIP(θ) = E[min(ρ_i·A_i, clip(ρ_i, 1-ε, 1+ε)·A_i)] - β·D_KL(π_θ || π_ref)
    
    • \rho _{i} = \pi _{\theta}(y_i|x)/\pi _{\theta _{old}}(y_i|x):新旧策略概率比

    • clip 操作限制策略更新幅度,防止剧烈变化

    • KL 散度惩罚项防止模型偏离参考策略太远

    3. GRPO vs PPO:关键差异

    特性 PPO GRPO 优势
    架构 Actor-Critic (双网络) 仅 Actor (单网络) 显存占用降低 40%,适合大模型
    优势计算 奖励 - 价值函数 (V 值) 组内归一化:(奖励 - 组均值)/ 组标准差 无需训练额外的 Critic 网络
    KL 惩罚位置 奖励函数中 损失函数中 实现更简单,控制更精确
    适用场景 通用任务 数学推理、代码生成等可验证任务 在复杂推理任务中表现更佳

    4. 应用场景:

    • 数学推理:DeepSeek-R1 用 GRPO 将数学推理准确率从 15.6% 提升至 71.0%,同时减少 40% 显存占用

    • 代码生成:适合需要验证输出正确性的场景,如单元测试通过与否

    • 资源受限环境:模型规模大但 GPU 资源有限时的优选方案

    • 多样化生成:通过组内竞争机制,鼓励模型探索多种解决方案,避免同质化输出

    七、DPO (Direct Preference Optimization)

    1. 核心思想:直接优化人类偏好,绕过奖励模型

            DPO 是 2023 年提出的对齐优化方法,革命性突破在于无需训练奖励模型,直接从人类偏好数据中学习:

    • "直接示范" 机制:利用人类标注的 "好回答 vs 差回答" 直接训练模型,跳过奖励建模步骤

    • 将 RL 问题转化为分类问题:通过对比学习,让模型学会对 "好回答" 赋予更高概率

    • 参考模型正则:通过与参考模型 (通常是 SFT 模型) 的 KL 散度约束,防止模型偏离初始能力

    2. 算法原理:

            Step 1:数据准备:收集三元组数据集:{x, y_w, y_l},其中:

    • x:输入 prompt

    • y_w:人类偏好的 "好回答"(winner)

    • y_l:人类不偏好的 "差回答"(loser)

            Step 2:隐式奖励定义 

            DPO 通过策略模型与参考模型的概率比定义 "隐式奖励":

    • r̂(x,y) = β·log(π_θ(y|x)/π_ref(y|x))

    • 其中 β 是控制敏感度的超参数,π_ref 是参考模型 (通常是 SFT 模型)

            直观理解:如果当前模型生成 y 的概率比参考模型高,隐式奖励为正;反之则为负

            Step 3:损失函数设计:DPO 损失函数基于 Bradley-Terry 模型,将偏好数据转化为分类问题:

    L_DPO(θ) = -E[log σ(β·(r̂(x,y_w) - r̂(x,y_l)))]
             = -E[log σ(β·(log(π_θ(y_w|x)/π_ref(y_w|x)) - log(π_θ(y_l|x)/π_ref(y_l|x))))]
    

            其中 σ(・) 是 sigmoid 函数,目标是最大化好回答与差回答的隐式奖励差值

            直观理解:要求模型对 "好回答" 的评分必须显著高于 "差回答",否则惩罚

    3. DPO vs PPO vs GRPO:核心区别

    算法 训练流程 奖励来源 显存占用 适用场景
    PPO 奖励模型→优势估计→策略更新 显式奖励模型 高 (需策略 + 价值模型) 通用任务,资源充足时
    DPO 直接用偏好对训练 隐式 (通过策略与参考模型对比) 低 (仅需策略模型) 偏好数据充足的对话、推荐
    GRPO 组采样→组评估→组内优势→策略更新 显式奖励模型 + 组内比较 中 (无需价值模型) 推理任务,资源受限环境

    4. DPO应用场景:

    • 对话系统优化:在 MT-Bench 对话测试中表现优异,适合客服、助手类模型

    • 推荐系统:直接优化用户点击 / 转化偏好,无需复杂的 CTR 预估模型

    • 内容审核:利用人工标注的 "合规 vs 违规" 样例直接训练模型

    • 快速微调:偏好数据明确时,训练速度是 PPO 的 3-5 倍,显存需求仅为 PPO 的 1/3


    总结

            本文系统介绍了强化学习的核心概念与主流算法。首先阐述了强化学习的基本框架,包括智能体与环境交互、马尔可夫决策过程、蒙特卡洛采样等基础理论。随后详细解析了时序差分(TD)方法体系,包括Q-Learning、SARSA及其深度版本DQN等价值型算法。然后重点讨论了策略梯度(PG)方法及其改进版本Actor-Critic架构,涵盖A2C、A3C、DDPG等算法。最后深入剖析了PPO算法及其变种GRPO和DPO,这些算法通过引入策略约束机制,显著提升了训练稳定性和样本效率。文章通过对比不同算法的核心思想、实现细节和适用场景,为读者提供了全面的强化学习算法指南,特别强调了现代算法在处理连续动作空间和高维状态空间方面的创新突破。

    Logo

    DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

    更多推荐