强化学习中五大要素(核心概念)
强化学习的标准框架是 马尔可夫决策过程(MDP),它由五个基本元素构成(不可或缺的部分):状态(S)、动作(A)、状态转移(P)、奖励(R)和折扣因子(γ)。
-
状态(S):描述了环境是什么样子。
-
动作(A):智能体可以做什么。
-
状态转移(P):环境如何响应动作。
-
奖励(R):定义了“好”与“坏”,是智能体唯一的学习目标。
-
折扣因子(γ):权衡即时奖励和未来奖励的重要性。
优势函数A(s, a)
优势函数 定义为 动作价值函数 Q(s, a) 与 状态价值函数 V(s) 的差值:
A(s, a) = Q(s, a) - V(s)
2. 它直观地表达了什么?
优势函数衡量的是,在状态 s 下,选择某个特定动作 a,相对于按照当前策略 π 的“平均”表现来说,是好还是坏,以及好/坏多少。
-
A(s, a) > 0:意味着在这个状态下,选择动作 a 比“平均动作”要好。这是一个优势动作。
-
A(s, a) = 0:意味着动作 a 的表现和平均水准一样。
-
A(s, a) < 0:意味着动作 a 的表现比平均水准要差。这是一个劣势动作。
3. 为什么需要它?(它的好处)
想象一下玩游戏:
-
V(s) 告诉你当前局面(状态)的优劣。比如,血量多、位置好,V(s) 就高。
-
Q(s, a) 告诉你如果做出某个具体操作(动作)后的局面优劣。比如,你按下了“攻击”键,Q(s, attack) 会预估按下后的结果。
核心好处:优势函数降低了状态本身固有价值带来的方差。它让智能体更专注于学习动作之间的相对好坏,而不是状态的绝对价值。这使得策略梯度等算法的训练更加稳定和高效。
V(s) 由价值网络预估得出
广义优势估计
1. 问题所在:优势函数是未知的
在真实环境中,我们无法直接知道 Q(s, a) 和 V(s) 的精确值,我们只能通过采样(与环境交互)来估计它们。GAE 就是一种高效、低方差地估计优势函数 A(s, a) 的方法。
2. GAE 的核心思想:结合蒙特卡洛和时序差分
估计价值有两种常见方法:
-
蒙特卡洛:使用一次交互轨迹的实际回报
Gₜ来估计。无偏(准确),但高方差(不稳定)。 -
时序差分:使用当前的估计
rₜ + γV(sₜ₊₁)来估计。有偏(不准确),但低方差(稳定)。
GAE 巧妙地将这两种思想结合起来,通过引入一个参数 λ,在偏差和方差之间做了一个可调节的权衡。
3. GAE 是如何工作的?
GAE 定义了一个 k 步优势估计的指数加权平均。
-
1步优势估计:
δₜ = rₜ + γV(sₜ₊₁) - V(sₜ)-
这个
δₜ也叫 TD误差。它本身就是一个最朴素的优势估计,只看了一步的奖励和下一个状态的价值。
-
-
2步优势估计:
δₜ + γλδₜ₊₁-
不仅看下一步,还多看一步,并用 λ 来调节下一步的重要性。
-
-
3步优势估计:
δₜ + γλδₜ₊₁ + (γλ)²δₜ₊₂ -
...
-
一直到无穷步(即蒙特卡洛方法)。
GAE 最终将这些所有步数的估计加权求和,得到一个平滑的优势估计值。
GAE的公式为:Aₜ^GAE(γ, λ) = Σ (γλ)^l δₜ₊l (从 l=0 到 ∞ 求和)
4. 参数 λ 的意义
λ 是一个在 [0, 1] 之间的超参数,它控制了估计的“视野”和“平滑度”。
-
λ → 1:GAE 更倾向于使用更多步的回报,估计更接近蒙特卡洛方法。
-
优点:偏差更小,更准确。
-
缺点:方差更高,更不稳定。
-
-
λ → 0:GAE 更倾向于只使用1步的 TD 误差。
-
优点:方差更低,更稳定。
-
缺点:偏差更大,因为只依赖价值函数 V 的估计,如果 V 不准,A 也不准。
-
通俗理解 λ:它就像一个“信任度”旋钮。你有多信任你学到的价值函数 V?
-
如果 V 学得很好,你可以把 λ 调小一点,依赖 V 来做快速、低方差的估计。
-
如果 V 学得不好,你应该把 λ 调大一点,更多地依赖实际采样得到的数据,虽然这会更“吵闹”。
5. GAE(λ) 的前向定义

6. 关键问题:反向计算

7. 反向计算算法

8. 优点与直觉

Clip 函数
在普通的策略梯度中,我们根据优势函数A(s, a)的符号和大小来更新策略。如果 A(s, a) 是很大的正数,我们会大幅增加该动作的概率;如果是很大的负数,则会大幅减少其概率。这种大幅波动会导致训练不稳定,甚至策略崩溃。
PPO 的想法是:我们可以相信优势函数A(s, a) 告诉我们的更新 方向,但不能完全相信它建议的更新 幅度。
概率比 (Probability Ratio)

Clipped Surrogate Objective(裁剪替代目标)-------策略网络的损失函数


价值网络损失函数
价值网络的目标是学习状态价值函数,使其估计更准确。PPO 通常使用一个简单的均方误差损失,并结合了 Clip 来防止价值函数的更新也过于剧烈。

"Epoch" 机制
在传统的策略梯度方法(如REINFORCE或A2C)中,我们通常:
-
收集一批数据(轨迹)
-
用这批数据计算梯度,进行一次策略更新
-
丢弃这批数据,用更新后的策略重新收集新数据
这种方法样本效率很低,因为每批数据只使用一次就被丢弃了。
PPO 的想法是:既然收集数据(与环境交互)是昂贵的,为什么我们不充分利用每一批数据呢?
因此,PPO 的做法是:
-
使用当前策略与环境交互,收集一批数据(状态、动作、奖励等)
-
将这批数据保存起来,在接下来的 K个 Epoch(轮次)中重复使用它来更新策略
-
经过 K 次更新后,丢弃旧数据,用更新后的新策略重新收集数据
价值网络的价值目标为什么 是优势函数加上旧价值网络的输出?--------- 利用同一状态下不同动作的 Q 值平均起来就是 V 值这一特性。


| 理论根源 | 直接来自优势函数的定义:A(s,a)=Q(s,a)−V(s)A(s,a)=Q(s,a)−V(s),移项得 Q(s,a)=A(s,a)+V(s)Q(s,a)=A(s,a)+V(s) |
| 实际意义 | 价值网络学习的目标是估计动作价值 Q(st,at)Q(st,at),而非直接学习状态价值 V(st)V(st) |

浙公网安备 33010602011771号