🏀常用¶
三大模型¶
这三个模型是进阶 RL 的三座基石,三者不是孤立的,是层层递进、分工协作、互相依赖的关系
前置结论:策略 / 价值模型 是「纯强化学习(RL)的原生双模型」,奖励模型是「RLHF(基于人类反馈的强化学习)新增的核心模型」 —— 所有讨论都基于这个核心前提,先记牢。
核心内容¶
核心定义
策略模型(Actor):做决策,生成动作/回答,目标是「选最优行为」;
价值模型(Critic):做评估,输出状态价值,目标是「精准量化行为优劣」;
奖励模型(RM):做打分,输出奖励分数,目标是「定义什么是最优行为」。
核心关系
奖励模型(RM) → 提供奖励信号 → 价值模型(Critic) → 加工为GAE优势值 → 策略模型(Actor) → 优化行为策略 单向依赖、闭环优化、缺一不可
核心结论
纯RL只有 Actor+Critic,奖励来自环境;RLHF新增RM,奖励来自人类偏好,RM替代环境;
Critic是核心枢纽,没有Critic,RM的奖励无法有效指导Actor;
三者分工明确,协同工作,共同完成「让模型从「会生成」到「生成的内容符合人类需求」」的核心目标。
策略模型 (Actor)¶
核心定位:智能体的「大脑」,负责做决策的模型
输入:智能体当前的环境状态 \(s_t\) (RL里是游戏/环境状态;LLM的RLHF里是用户的prompt/对话上下文)
输出:动作的概率分布 \(\pi(a|s)\) (RL里是向左/向右/攻击等动作;LLM里是下一个token的生成概率)
核心目标:学习一个最优策略 → 选择能让「累计收益最大」的动作,最终目的是最大化回报
通俗理解:只负责「做什么」,不负责「这么做好不好」
价值模型 (Critic)¶
核心定位:智能体的「裁判」,负责评估决策优劣的模型
输入:智能体当前的环境状态 \(s_t\)
输出:状态价值 \(V(s)\) (标量值)
核心目标:精准评估状态的好坏 → 预测「在当前状态下,不管选什么动作,未来能获得的期望累计回报」
通俗理解:只负责「评判当前处境好不好」,不负责「选动作」,也不直接给动作打分
补充你之前的知识点闭环:Critic的三大作用(减方差、稳训练、支持GAE),本质都是为了给Actor的决策提供「精准的优劣评估」,让Actor知道自己选的动作到底赚不赚。
奖励模型 (Reward Model)¶
核心定位:智能体的「评委/老师」,负责给「动作的结果」打精准分数的模型
输入:完整的动作序列/决策结果 (RL里是「状态+动作」组合;LLM的RLHF里是「用户prompt + LLM生成的回答文本」)
输出:一个标量奖励分 \(r\) (数值越大,代表这个决策/回答越好)
核心目标:定义「什么是好的行为」 → 给出客观、精准的奖励信号,替代RL里「人工写死的奖励函数」
通俗理解:只负责「给最终的行为结果打分」,告诉你「你选的这个动作,最终得到的结果是好是坏,好多少,坏多少」
三者的「核心区别」¶
✅ 核心区别1:核心职责不同(最本质)
Actor:决策端 → 生成动作/回答(生成式)
Critic:状态评估端 → 评估当前状态的价值(评估式,只评状态,不评动作)
Reward Model:行为评分端 → 评估动作/回答的最终质量(评分式,只评结果,不评状态)
✅ 核心区别2:输出目标不同
Actor → 输出:概率(动作的可能性,是分布值)
Critic → 输出:价值(状态的期望回报,是标量)
Reward Model → 输出:奖励分(行为的好坏分数,是标量)
✅ 核心区别3:是否是「RL原生模型」
✔️ Actor + Critic:纯强化学习(RL)的原生双模型,所有经典Actor-Critic算法(PPO、TRPO、A2C)里,只有这两个模型,缺一不可。
✔️ Reward Model:RLHF专属模型,是「人类反馈」的载体,纯RL里根本没有这个模型!RLHF = 预训练 → 奖励模型训练 → 强化学习微调,RM是连接「人类偏好」和「纯RL」的桥梁。
✅ 原则1:奖励模型是「顶层规则制定者」,价值模型是「中层评估官」,策略模型是「底层执行者」
RM:定规则 → 什么是好回答、什么是坏回答(人类偏好);
Critic:做评估 → 基于规则,量化动作的优劣(优势值);
Actor:去执行 → 基于评估,调整行为,向规则靠拢;
通俗比喻:RM是「老板」,定KPI;Critic是「主管」,核算员工的KPI完成度;Actor是「员工」,根据主管的核算结果调整工作方式,争取拿高绩效。
✅ 原则2:Critic 是「承上启下的核心枢纽」,无Critic则RM无法赋能Actor 为什么不能让Actor直接用RM的奖励分做优化?这是你一定会想到的问题,也是RL的核心知识点:
RM输出的是「最终奖励分」,是轨迹级的全局信号,方差极大、延迟极高(LLM里要等完整回答生成才能打分);
如果Actor直接用这个奖励分更新,训练会极度震荡、不收敛、甚至发散(这就是纯策略梯度的痛点);
Critic的核心作用:把RM的「全局粗奖励」,转化为「每一步的细粒度优势值」,通过GAE做平滑处理,大幅降低方差、稳定训练
✅ 结论:RM是「源头奖励」,Critic是「奖励的加工器」,Actor只能吃「加工后的奖励(优势值)」才能健康成长。
✅ 原则3:三者可以「权重共享/合二为一」,但分工不变 在工程落地中(比如LLM的RLHF),为了节省显存、提升效率,会有两种常见的合并方式,但「决策、评估、打分」的核心分工永远不变:
Actor和Critic共享主体网络权重:只在最后一层加一个「价值头」输出V(s),主体的Transformer层复用,节省显存(FSDP里的双模型分片就是针对这个场景);
奖励模型RM,通常是基于预训练模型微调而来,和Actor的基础模型是同架构,甚至部分权重复用,目的是让打分逻辑和生成逻辑对齐。
✅ 原则4:三者的训练目标完全独立,互不冲突
Actor的损失:策略梯度损失 → 最大化优势值对应的动作概率;
Critic的损失:均方误差损失(MSE) → 让预测的V(s)接近真实的「回报+未来价值」;
RM的损失:排序损失/回归损失 → 让打分结果和人类的偏好排序一致;
训练时三者的损失函数分开计算、分开反向传播,FSDP的分片训练也是对三个模型分别做显存优化,互不干扰。
场景¶
纯强化学习(无 RM,只有 Actor + Critic)场景¶
无奖励模型,奖励信号来自环境的硬编码奖励函数(比如游戏里得分+1,撞墙-10)
✅ 核心关系 & 训练闭环:环境奖励 → Critic 评估 → Actor 优化
Actor 基于当前状态 \(s_t\),输出动作概率,选择一个动作 \(a_t\) 执行;
环境收到动作后,返回 即时奖励 \(r_t\) + 新状态 \(s_{t+1}\);
Critic 接收 \(s_t\) 和 \(s_{t+1}\),输出状态价值 \(V(s_t)\) 和 \(V(s_{t+1})\),计算「TD残差/GAE优势值」;
这个优势值,本质是「Critic结合环境奖励,对Actor选的动作做的「优劣量化」」;
Actor 拿到这个优势值:优势值>0 → 这个动作好,提升该动作的概率;优势值<0 → 这个动作差,降低该动作的概率;
Critic 同时自我优化:让自己的状态价值预测,越来越接近「真实的累计回报」,评估越来越准。
核心结论:
Actor 依赖 Critic 的评估结果做优化,Critic 依赖环境的奖励信号做优化 Critic 是 Actor 的「导航仪」,环境奖励是 Critic 的「标准答案」
大模型 RLHF(Actor + Critic + RM 三者齐全)场景¶
RLHF 是大模型对齐的核心技术(ChatGPT/LLaMA/百川都是这个路线),这里的奖励模型完全替代了纯RL里的「环境硬编码奖励」,是整个流程的「核心驱动力」,也是三者关系最完整的形态。 先补RLHF的标准三步流程(必记,理解关系的前提):
预训练:训练一个基础大模型(LLaMA/OPT),能生成通顺文本,但无人类偏好;
奖励模型训练:用人类标注的「偏好数据」训练RM → 学会给LLM的回答打分;
RL微调:用RM输出的「奖励分」替代环境奖励,训练Actor+Critic,让模型生成更符合人类偏好的回答。
✅ 核心关系
Actor(策略模型):输入用户prompt(状态\(s_t\)),生成回答文本(动作\(a_t\));
Reward Model(奖励模型):输入「prompt+回答文本」,输出一个精准的奖励分数 \(r_t\) → 这个分数就是「人类偏好的量化体现」(回答越符合人类需求,分数越高);
Critic(价值模型):输入当前prompt(\(s_t\))和下一轮上下文(\(s_{t+1}\)),输出状态价值\(V(s_t)\)/\(V(s_{t+1})\),结合RM给的奖励分\(r_t\),计算GAE优势值; → 这里的关键:RM的奖励分,就是RLHF里的「环境奖励」,是Critic做评估的唯一依据
Actor的优化:拿到Critic计算的优势值,和纯RL逻辑一致,调整生成文本的概率分布,让「高奖励分的回答」生成概率更高;
Critic的优化:让自己的状态价值预测,贴合「RM奖励分+未来价值」的真实值,评估越来越精准;
Reward Model的特殊性:RM在RL微调阶段是「只读的」,不参与训练更新!RM只负责输出分数,不会被Actor/Critic的训练影响,它的参数在第二步就已经固定了。
伪代码¶
# ===================== 1. 初始化三大模型 =====================
actor = ActorModel() # 策略模型:生成回答
critic = CriticModel() # 价值模型:评估状态价值
reward_model = RewardModel() # 奖励模型:打分,固定参数不更新
# ===================== 2. RLHF核心训练循环 =====================
for prompt in dataloader:
# ✅ Actor:生成动作(回答文本)
response = actor.generate(prompt)
# ✅ Reward Model:输出奖励分 (替代环境奖励)
reward = reward_model.score(prompt, response)
# ✅ Critic:计算状态价值 + GAE优势值 (核心加工环节)
v_s = critic.get_value(prompt)
v_s_next = critic.get_value(prompt + response)
advantage = compute_gae(reward, v_s, v_s_next, gamma=0.99, lam=0.95)
# ✅ 分别计算损失,独立更新
actor_loss = policy_gradient_loss(advantage) # Actor优化
critic_loss = mse_loss(v_s, reward + 0.99*v_s_next) # Critic优化
actor_loss.backward()
critic_loss.backward()
optimizer.step()
optimizer.zero_grad()
时序差分残差¶
这是一个在强化学习 中非常核心且基础的概念,它是许多经典算法(如 Q-Learning、SARSA)的基石。
1. 核心思想:用估计来更新估计¶
要理解时序差分残差,首先要明白“时序差分”的含义。
蒙特卡洛方法:我们必须等到一个完整的回合(episode)结束,知道了最终的总收益后,才能回过头来更新每个状态的价值。速度慢,但无偏。
动态规划:它使用环境的完整模型(状态转移概率和奖励函数),通过“自举”来更新价值。需要模型,不适用于未知环境。
时序差分:它结合了以上两者的思想。它不需要等待回合结束,而是在每一步之后,利用当前得到的奖励和对下一个状态的价值的估计,来更新当前状态的价值。这就是所谓的“用估计来更新估计”,或者叫“自举”。
时序差分残差,就是这个更新过程中产生的误差信号,它告诉我们需要将当前的价值估计调整多少。
2. 正式定义与公式¶
我们通常在两种场景下讨论时序差分残差:
场景一:状态价值函数 \( V(s) \) 的学习¶
假设一个智能体在时间步 \( t \),处于状态 \( S_t \),执行动作后转移到状态 \( S_{t+1} \),并获得奖励 \( R_{t+1} \)。
当前的估计值:在更新前,我们认为状态 \( S_t \) 的价值是 \( V(S_t) \)。
更优的目标估计值:我们观察到了一次真实的转移,得到了奖励 \( R_{t+1} \),并且我们对下一个状态 \( S_{t+1} \) 的价值有一个估计 \( V(S_{t+1}) \)。那么,一个更好的、对 \( S_t \) 价值的估计应该是: $\( \text{目标值} = R_{t+1} + \gamma V(S_{t+1}) \)\( 其中 \) \gamma $ 是折扣因子,表示未来奖励的现值。
时序差分残差 \( \delta_t \) 就定义为这个“更好的目标值”与“旧的估计值”之间的差值:
这个 \( \delta_t \) 就是我们要用来更新 \( V(S_t) \) 的误差信号。
场景二:动作价值函数 \( Q(s, a) \) 的学习(更常用)¶
在 Q-Learning 等算法中,我们直接学习状态-动作对的价值 \( Q(s, a) \)。
当前的估计值:在状态 \( S_t \) 执行动作 \( A_t \) 的估计价值是 \( Q(S_t, A_t) \)。
更优的目标估计值:我们转移到了 \( S_{t+1} \),获得了 \( R_{t+1} \)。对于下一个状态,我们采取不同的策略(例如,在 Q-Learning 中,我们选择能带来最大 Q 值的动作),得到一个目标值。
以 Q-Learning 为例,其时序差分残差为:
以 SARSA 为例,其时序差分残差为:
3. 核心作用:驱动学习¶
时序差分残差最直接的作用是更新价值函数。
我们使用这个残差来调整旧的估计值,使其更接近目标值。更新公式通常为:
或 $\( Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha \delta_t \)$
其中 \( \alpha \) 是学习率。
这个过程的直观理解是:
如果 \( \delta_t > 0 \):说明我们之前的估计 \( V(S_t) \) 过于悲观了。实际得到的回报(即时奖励+下一状态价值)比我们想象的要好。所以我们要增加 \( V(S_t) \) 的值。
如果 \( \delta_t < 0 \):说明我们之前的估计 \( V(S_t) \) 过于乐观了。实际情况没那么好。所以我们要减少 \( V(S_t) \) 的值。
如果 \( \delta_t = 0 \):说明我们的估计非常准确,不需要修改。
通过成千上万次这样的更新,价值函数会逐渐收敛到真实的价值,智能体也因此学会了如何做出更好的决策。
4. 深入理解:为什么它是“差分”且“时序”的?¶
差分:因为它计算的是两个不同估计之间的差值(\( (R + \gamma V(S‘)) - V(S) \))。
时序:因为这个差值是在连续的时间步 \( t \) 和 \( t+1 \) 上计算出来的。它关联了相邻两个状态的价值。
5. 扩展:优势函数与残差的关系¶
在演员-评论家算法中,时序差分残差有一个非常重要的解释:
时序差分残差是对优势函数 \( A(s, a) \) 的一个估计。
优势函数 \( A(s, a) = Q(s, a) - V(s) \) 衡量了在状态 \( s \) 下采取动作 \( a \) 相对于平均而言有多好。
回顾一下 TD 残差: $\( \delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t) \)$
如果我们有一个近似的价值函数 \( V \),那么 \( \delta_t \) 正是 \( Q(S_t, A_t) \) 的一个估计(即 \( R + \gamma V(S’) \))减去 \( V(S_t) \)。因此,\( \delta_t \) 可以被看作是 \( A(S_t, A_t) \) 的一个有效、低方差的估计。这使得它可以直接用作策略梯度中的基准,来更新策略(演员)。
总结¶
方面 |
描述 |
|---|---|
定义 |
当前价值估计与基于新观察(奖励和下一状态估计)得出的目标值之间的差值。 |
核心公式 |
\( \delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t) \) 或 \( \delta_t = R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t, A_t) \) |
核心思想 |
时序差分学习与自举——用估计来更新估计。 |
主要作用 |
驱动学习:作为误差信号,用于更新价值函数,使其更准确。 |
直观理解 |
一个“惊喜”或“失望”的信号,告诉智能体应该如何修正其预期。 |
高级应用 |
在演员-评论家算法中,作为优势函数的估计,用于更新策略。 |
简单来说,时序差分残差是强化学习智能体从环境中学习“什么好、什么坏”的关键反馈信号。没有它,像 AlphaGo 这样的智能体就无法通过经验自我改进。
Bradley-Terry模型¶
这是一个非常重要且经典的统计模型,主要用于对一组物品(通常是选手、团队或产品)进行配对比较并从中推断出它们的相对强度或偏好顺序。
1. 核心思想¶
Bradley-Terry模型的核心思想非常直观:
两个个体(例如选手A和选手B)进行对抗时,其中一方获胜的概率可以由他们各自的“内在强度”决定。强度越高,获胜的概率就越大。
模型不会直接给你一个绝对的分数,而是通过一系列“谁打败了谁”的配对比较数据,反推出每个个体的强度参数。
2. 基本模型与公式¶
假设我们有N个选手/物品,我们需要为每个选手 i 估计一个正的强度参数 λ_i(或 θ_i,有时也表示为 β_i)。
根据Bradley-Terry模型,选手 i 在与选手 j 比赛时获胜的概率 P(i > j) 由以下公式给出:
P(i beats j) = λ_i / (λ_i + λ_j)
或者,更常见的另一种等价形式是:
P(i beats j) = exp(β_i) / [exp(β_i) + exp(β_j)]
其中 β_i = log(λ_i)。这两种形式是等价的,因为 λ_i = exp(β_i)。第二种形式在数学上更方便,尤其是在使用广义线性模型框架时。
公式解读:
概率只取决于相对强度:选手i的胜率只取决于他自己的强度与对手强度的比值。
强度是相对的:强度参数
λ_i本身没有绝对意义,只有相互比较时才有意义。例如,将所有的λ都乘以2,概率计算结果不变。概率边界:
如果
λ_i远大于λ_j(即β_i远大于β_j),则P(i beats j)接近 1。如果
λ_i远小于λ_j,则P(i beats j)接近 0。如果
λ_i = λ_j,则P(i beats j) = 0.5,表示势均力敌。
3. 一个简单的例子¶
假设我们有三位网球选手:费德勒(F)、纳达尔(N)和德约科维奇(D)。我们观察到以下历史对战记录(假设没有平局):
费德勒 vs 纳达尔:费德勒赢了60场,纳达尔赢了40场。
费德勒 vs 德约:费德勒赢了55场,德约赢了45场。
纳达尔 vs 德约:纳达尔赢了52场,德约赢了48场。
我们想通过Bradley-Terry模型来估计三人的强度参数 λ_F, λ_N, λ_D。
模型设定:
P(F beats N) = λ_F / (λ_F + λ_N) = 60 / (60+40) = 0.6
P(F beats D) = λ_F / (λ_F + λ_D) = 55 / (55+45) = 0.55
P(N beats D) = λ_N / (λ_N + λ_D) = 52 / (52+48) = 0.52
我们的任务就是找到一组 λ_F, λ_N, λ_D,使得上面的三个等式(在统计意义上)最成立。
参数估计与标准化
由于强度是相对的,我们需要一个基准。通常的做法是固定其中一个参数(例如设 λ_D = 1),或者要求所有参数之和为一个常数(例如和为N)。
通过迭代算法(如最大似然估计的MM算法或牛顿法)求解后,我们可能会得到一组如下的解:
λ_F = 1.2, λ_N = 0.8, λ_D = 1.0
结果解读:
费德勒的强度最高(1.2)。
我们可以计算任意两人对战的预测胜率:
P(F beats D) = 1.2 / (1.2 + 1.0) = 0.545,这与我们观察到的0.55非常接近。
P(N beats D) = 0.8 / (0.8 + 1.0) = 0.444,这与观察到的0.52略有偏差,说明模型在拟合这个简化数据时并非完美,但这展示了其工作原理。
我们也可以预测未发生的对战:P(F beats N) = 1.2 / (1.2 + 0.8) = 0.6。
4. 模型优势与特点¶
处理不完整的比较数据:你不需要让每个选手都和所有其他选手比赛。只要整个比较网络是连通的(即没有选手是完全孤立的),模型就可以估计所有选手的强度。
量化差异:它不仅给出排名,还能量化选手之间的差距。例如,强度为2.0的选手对强度为1.0的选手的胜率是2/3,而强度为1.1的选手对强度为1.0的选手的胜率只有1.1/2.1 ≈ 0.524。这比简单的“赢了多少场”要精细得多。
概率解释:结果为概率形式,非常直观,易于理解和应用。
5. 模型扩展¶
基础的Bradley-Terry模型有很多强大的扩展,以适应更复杂的场景:
考虑主客场/平局:引入“主场优势”参数,或者修改模型以处理平局的情况。
考虑协变量:将选手的强度
β_i建模为其特征(如年龄、身高、技术统计)的线性函数,即β_i = X_i^T * γ。这被称为“结构化Bradley-Terry模型”。动态Bradley-Terry模型:允许选手的强度随时间变化,用于动态排名系统(如国际象棋ELO评分、足球俱乐部世界排名就是其变体)。
处理多队比较:扩展模型以处理团队比赛,而不仅仅是一对一的比较。
6. 应用领域¶
Bradley-Terry模型的应用非常广泛,远不止于体育:
体育排名:网球、棋类、电子竞技等个人项目的选手排名。
消费者偏好研究:在市场调研中,通过让消费者反复选择他们更喜欢的产品A还是产品B,来推断所有产品的整体偏好排序。
搜索引擎排名:Learning to Rank算法中,可以利用文档之间的配对比较关系来学习排序函数。
社会科学:用于衡量公众对某些政策、候选人或其他抽象概念的相对偏好。
总结¶
Bradley-Terry模型是一个优雅而强大的工具,它通过“赢家通吃”的二元比较数据,巧妙地还原出背后隐含的连续强度标度。它将复杂的多对象比较问题,分解为一系列两两比较的概率问题,并通过统计方法进行求解,是数据科学和统计学中处理排序和偏好数据的基石模型之一。
马尔可夫决策过程¶
马尔可夫决策过程(Markov Decision Process, MDP)是 强化学习(Reinforcement Learning, RL) 的核心数学框架,用于描述 智能体(Agent)在不确定环境中通过选择动作(Action)最大化长期累积奖励(Reward) 的序贯决策问题。
它的核心是马尔可夫性——未来的状态仅依赖于当前状态和动作,与历史状态无关,这大大简化了决策的复杂度。
MDP 是强化学习的理论基础,它将决策问题形式化为状态、动作、转移概率和奖励的数学框架。
一、MDP的核心组成要素¶
一个标准的MDP由五元组 \( \langle S, A, P, R, \gamma \rangle \) 定义:
状态空间 \( S \)
环境所有可能状态的集合。
例:机器人导航时,\( S \) 是地图上的所有坐标;游戏中,\( S \) 是所有可能的游戏画面或棋盘布局。
动作空间 \( A \)
智能体在每个状态下可执行的所有动作的集合。
例:机器人的动作 \( A = \{向前, 向后, 左转, 右转\} \);围棋的动作是棋盘上的落子位置。
状态转移概率 \( P(s'|s,a) \)
核心的马尔可夫性体现:在状态 \( s \) 执行动作 \( a \) 后,环境转移到状态 \( s' \) 的概率。
满足 \( \sum_{s' \in S} P(s'|s,a) = 1 \)(所有可能转移的概率和为1)。
例:在状态 \( s \) 执行“向前”动作,有80%概率到 \( s_1 \),20%概率因环境干扰到 \( s_2 \)。
奖励函数 \( R(s,a,s') \) 或 \( R(s,a) \)
智能体在状态 \( s \) 执行动作 \( a \) 并转移到 \( s' \) 时获得的即时奖励。
奖励是智能体的“目标信号”:正向奖励引导智能体靠近目标,负向奖励避免错误行为。
例:机器人到达终点获得+100奖励,撞到障碍物获得-10奖励。
折扣因子 \( \gamma \in [0,1] \)
用于权衡即时奖励和未来奖励的重要性。
\( \gamma = 0 \):智能体只关注当前奖励(短视);
\( \gamma = 1 \):智能体同等重视所有未来奖励(适用于无限期任务);
通常取 \( 0.9 \sim 0.99 \),保证长期奖励的总和是有限的(避免无穷大)。
二、MDP的核心目标:最大化累积奖励¶
智能体的决策目标不是最大化即时奖励,而是最大化长期累积折扣奖励(Return): $\( G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \)\( 其中 \) G_t \( 是从时刻 \) t $ 开始的累积奖励。
三、策略与价值函数¶
为了实现目标,MDP引入策略和价值函数两个关键概念:
策略 \( \pi(a|s) \)
智能体的决策规则:在状态 \( s \) 下选择动作 \( a \) 的概率分布。
确定性策略:\( \pi(a|s) = 1 \)(某个动作被确定选择),如 \( \pi(s) = a \);
随机性策略:\( \pi(a|s) \) 是概率分布(探索不同动作)。
MDP的目标是找到最优策略 \( \pi^* \),使得对于所有状态 \( s \),累积奖励的期望最大。
价值函数 价值函数用于量化“某个状态/动作的好坏”,分为两种:
状态价值函数 \( V^\pi(s) \) 定义:在策略 \( \pi \) 下,从状态 \( s \) 出发的累积奖励的期望。 $\( V^\pi(s) = \mathbb{E}_\pi \left[ G_t \mid S_t = s \right] \)$
动作价值函数 \( Q^\pi(s,a) \) 定义:在策略 \( \pi \) 下,从状态 \( s \) 执行动作 \( a \) 后,累积奖励的期望。 $\( Q^\pi(s,a) = \mathbb{E}_\pi \left[ G_t \mid S_t = s, A_t = a \right] \)$
贝尔曼方程(Bellman Equation) 价值函数的核心递归关系,体现了“当前价值 = 即时奖励 + 未来价值的折扣期望”。
状态价值函数的贝尔曼方程: $\( V^\pi(s) = \sum_{a \in A} \pi(a|s) \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V^\pi(s') \right) \)$
最优状态价值函数 \( V^*(s) \) 满足: $\( V^*(s) = \max_{a \in A} \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V^*(s') \right) \)$ 贝尔曼方程是所有强化学习算法(如动态规划、Q-Learning、SARSA)的理论基础。
四、MDP的分类¶
根据任务的持续时间和状态转移的特性,MDP可分为:
有限期MDP(Finite-Horizon MDP)
决策过程有固定的时间步数 \( T \),在 \( T \) 步后结束。
价值函数依赖于当前时间步 \( t \),即 \( V_t^\pi(s) \)。
无限期MDP(Infinite-Horizon MDP)
决策过程没有固定结束时间,智能体需要持续决策。
价值函数与时间步无关,仅依赖于状态 \( s \),即 \( V^\pi(s) \)。
大多数强化学习任务(如机器人导航、游戏AI)属于此类。
确定性MDP vs 随机性MDP
确定性MDP:\( P(s'|s,a) = 1 \)(动作的结果确定);
随机性MDP:\( P(s'|s,a) \) 是概率分布(环境存在不确定性,如机器人受噪声干扰)。
五、MDP与强化学习的关系¶
MDP是完全可观测环境下的强化学习框架——智能体可以准确知道当前的状态 \( s \)。
如果环境是部分可观测的(智能体只能通过观测 \( O \) 推断状态),则扩展为部分可观测马尔可夫决策过程(POMDP)。
所有经典的强化学习算法(如动态规划、蒙特卡洛方法、时序差分学习)都是基于MDP的贝尔曼方程推导而来。
六、简单示例:格子世界¶
假设有一个4x4的格子世界,智能体从任意格子出发,目标是到达右上角的终点(奖励+1),撞到边界(奖励-1),其他情况奖励0。
状态空间 \( S \):16个格子的坐标;
动作空间 \( A \):上下左右;
转移概率 \( P \):执行动作后,80%概率按动作方向移动,20%概率随机移动到相邻格子;
折扣因子 \( \gamma = 0.9 \)。 智能体通过MDP框架学习最优策略,即从任意格子出发,以最小步数到达终点的动作选择规则。
核心总结¶
马尔可夫决策过程的本质是用马尔可夫性简化序贯决策问题,通过策略和价值函数建模智能体的决策行为,最终通过贝尔曼方程求解最优策略,是强化学习中连接理论和算法的关键桥梁。
动态规划¶
在强化学习与马尔可夫决策过程(MDP)的语境下,动态规划(Dynamic Programming, DP) 是一类利用贝尔曼方程的递归结构,通过“价值迭代”或“策略迭代”求解MDP最优策略的方法。其核心思想是 “将复杂问题分解为重叠的子问题,通过求解子问题的最优解来构建原问题的最优解”,并利用缓存(存储已计算的子问题结果) 避免重复计算。
一、动态规划的核心前提¶
动态规划能应用于MDP的两个关键条件:
马尔可夫性:未来状态仅依赖当前状态和动作,子问题的边界清晰。
完全可观测性:智能体已知完整的MDP模型(即已知状态空间 \( S \)、动作空间 \( A \)、转移概率 \( P \)、奖励函数 \( R \))。
这是DP与无模型强化学习(如Q-Learning)的核心区别——DP是有模型(Model-Based) 方法。
二、动态规划的核心操作¶
在MDP中,DP通过两个基本操作来更新价值函数和策略,这两个操作共同构成了DP算法的基础:
1. 策略评估(Policy Evaluation)¶
定义:给定一个策略 \( \pi \),计算该策略下的状态价值函数 \( V^\pi(s) \)。 本质:求解策略 \( \pi \) 对应的贝尔曼方程。 递归公式: $\( V^\pi(s) = \sum_{a \in A} \pi(a|s) \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V^\pi(s') \right) \)$ 实现方式:
迭代法:从任意初始价值函数 \( V_0(s) \) 开始,不断用上述公式更新 \( V_k(s) \),直到 \( V_k(s) \) 收敛到 \( V^\pi(s) \)。
停止条件:\( \max_{s \in S} |V_{k+1}(s) - V_k(s)| < \epsilon \)(\( \epsilon \) 为预设的极小值)。
2. 策略改进(Policy Improvement)¶
定义:基于当前策略的价值函数 \( V^\pi(s) \),生成一个更优的策略 \( \pi' \)。 本质:通过“贪心选择”最大化动作价值函数 \( Q^\pi(s,a) \)。 策略更新规则: $\( \pi'(a|s) = \begin{cases} 1 & \text{if } a = \arg\max_{a' \in A} Q^\pi(s,a') \\ 0 & \text{otherwise} \end{cases} \)\( **原理**:对于任意状态 \) s \(,新策略 \) \pi’ \( 选择能最大化 \) Q^\pi(s,a) \( 的动作,因此 \) V^{\pi’}(s) \geq V^\pi(s) $,策略得到改进。
三、MDP中动态规划的两种核心算法¶
DP在MDP中的应用主要有两种经典算法,均基于上述两个操作:
1. 策略迭代(Policy Iteration, PI)¶
核心流程:策略评估 + 策略改进 交替进行,直到策略收敛到最优策略 \( \pi^* \)。
初始化:随机选择一个初始策略 \( \pi_0 \),初始化价值函数 \( V_0(s) \)。
策略评估:对当前策略 \( \pi_k \),迭代计算 \( V_k(s) \) 直到收敛。
策略改进:用 \( V_k(s) \) 计算 \( Q^\pi(s,a) \),通过贪心选择得到新策略 \( \pi_{k+1} \)。
收敛判断:如果 \( \pi_{k+1} = \pi_k \),则策略已最优,停止;否则返回步骤2。
特点:
每次策略评估都需要收敛到精确的 \( V^\pi(s) \),计算量较大,但收敛速度快(通常只需几次迭代即可得到最优策略)。
2. 价值迭代(Value Iteration, VI)¶
核心思想:将“策略评估”和“策略改进”合并为一步,直接迭代更新最优价值函数 \( V^*(s) \),无需显式维护策略。 递归公式: $\( V_{k+1}(s) = \max_{a \in A} \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V_k(s') \right) \)$ 核心流程:
初始化:设置初始价值函数 \( V_0(s) \)(通常设为0)。
价值更新:对所有状态 \( s \),用上述公式迭代更新 \( V_k(s) \)。
收敛判断:当 \( V_k(s) \) 收敛到 \( V^*(s) \) 时,停止。
提取最优策略:通过贪心选择从 \( V^*(s) \) 得到最优策略 \( \pi^*(a|s) = \arg\max_{a \in A} Q^*(s,a) \)。
特点:
无需显式评估策略,每次迭代只需一次价值更新,计算量较小,适合状态空间较大的问题。
本质是“截断的策略迭代”——策略评估仅做一次迭代就进行策略改进。
四、动态规划的优缺点¶
优点¶
理论完备:基于贝尔曼方程,能保证收敛到MDP的最优策略。
精度高:如果MDP模型完全准确,DP能得到精确的最优价值函数和策略。
缺点¶
维数灾难:当状态空间 \( S \) 很大时(如像素级的游戏画面),DP需要遍历所有状态,计算量呈指数级增长,无法实际应用。
依赖模型:必须已知完整的转移概率 \( P \) 和奖励函数 \( R \),而现实中很多问题的模型是未知的(如机器人导航的环境转移概率难以精确建模)。
五、动态规划与其他强化学习方法的关系¶
DP vs 蒙特卡洛(MC):MC是无模型方法,通过实际采样的轨迹来估计价值函数,无需模型,但需要大量样本,收敛较慢。
DP vs 时序差分(TD):TD也是无模型方法,结合了DP的递归更新和MC的采样思想,是Q-Learning、SARSA等算法的基础。
DP的扩展:为解决维数灾难,出现了近似动态规划(Approximate Dynamic Programming),用函数近似(如神经网络)来表示价值函数,而不是存储所有状态的价值。
六、简单示例:格子世界的价值迭代¶
以4x4格子世界为例(终点奖励+1,撞边界奖励-1,其他奖励0,\( \gamma=0.9 \)):
初始化 \( V_0(s) = 0 \)(所有格子的价值为0)。
第一次迭代:计算每个格子的 \( V_1(s) \),终点格子的 \( V_1(s) = 1 \)(自身奖励),相邻格子的 \( V_1(s) = 0.9 \times 1 = 0.9 \)。
重复迭代:每次迭代都通过最大化动作价值更新每个格子的价值,直到相邻两次迭代的价值差小于 \( \epsilon \)。
提取策略:每个格子的最优动作是指向价值最高的相邻格子(即向终点方向移动)。
核心总结¶
在MDP中,动态规划是有模型强化学习的基础方法,通过策略迭代或价值迭代,利用贝尔曼方程的递归结构,将复杂的序贯决策问题分解为可求解的子问题,最终得到最优策略。其核心局限是维数灾难和模型依赖,这也推动了无模型强化学习和函数近似方法的发展。
贝尔曼方程¶
在强化学习(RL)和马尔可夫决策过程(MDP)中,贝尔曼方程(Bellman Equation) 是描述价值函数递归关系的核心数学公式,其本质是**“当前价值 = 即时奖励 + 未来折扣价值的期望”**。
它由理查德·贝尔曼(Richard Bellman)提出,利用MDP的马尔可夫性(未来仅依赖当前状态和动作,与历史无关),将复杂的长期累积奖励问题分解为可迭代求解的子问题,是动态规划、时序差分(TD)、Q-Learning等所有RL算法的理论基础。
一、贝尔曼方程的核心前提¶
马尔可夫性:状态转移满足 \( P(s'|s,a) \),未来状态仅由当前状态 \( s \) 和动作 \( a \) 决定。
累积折扣奖励:智能体的目标是最大化长期累积折扣奖励 \( G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots \),其中 \( \gamma \in [0,1] \) 是折扣因子。
二、贝尔曼方程的分类¶
根据价值函数的类型(状态价值、动作价值)和策略的性质(任意策略、最优策略),贝尔曼方程分为四大核心形式。
1. 策略评估的贝尔曼方程(针对任意策略 \( \pi \))¶
这类方程用于计算给定策略 \( \pi \) 下的价值函数,是动态规划中策略评估的理论依据。
1.1 状态价值函数的贝尔曼方程¶
状态价值函数 \( V^\pi(s) \) 定义为:在策略 \( \pi \) 下,从状态 \( s \) 出发的累积折扣奖励的期望。
其递归关系为: $\( V^\pi(s) = \sum_{a \in A} \pi(a|s) \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V^\pi(s') \right) \)$
公式解读:
\( \pi(a|s) \):策略 \( \pi \) 下,状态 \( s \) 选择动作 \( a \) 的概率。
\( R(s,a) \):在状态 \( s \) 执行动作 \( a \) 获得的即时奖励(也可扩展为 \( R(s,a,s') \),此时需在转移概率后求和)。
\( \gamma \sum_{s' \in S} P(s'|s,a) V^\pi(s') \):未来所有可能状态 \( s' \) 的价值的折扣期望——先按转移概率加权,再乘以折扣因子 \( \gamma \)。
直观理解:当前状态的价值 = 策略下所有可能动作的价值的加权平均,而每个动作的价值 = 即时奖励 + 未来状态价值的折扣期望。
1.2 动作价值函数的贝尔曼方程¶
动作价值函数 \( Q^\pi(s,a) \) 定义为:在策略 \( \pi \) 下,从状态 \( s \) 执行动作 \( a \) 后,累积折扣奖励的期望。
其递归关系为: $\( Q^\pi(s,a) = R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) \sum_{a' \in A} \pi(a'|s') Q^\pi(s',a') \)$
公式解读:
动作 \( a \) 的价值 = 即时奖励 + 转移到新状态 \( s' \) 后,策略 \( \pi \) 下所有可能动作 \( a' \) 的价值的折扣期望。
状态价值与动作价值的关系:\( V^\pi(s) = \sum_{a \in A} \pi(a|s) Q^\pi(s,a) \)(状态价值是动作价值的策略加权平均)。
2. 最优性的贝尔曼方程(针对最优策略 \( \pi^* \))¶
这类方程用于计算最优价值函数,是动态规划中策略改进和价值迭代的理论依据。最优策略 \( \pi^* \) 满足:对所有状态 \( s \),\( V^{\pi^*}(s) \geq V^\pi(s) \)(即最优状态价值是所有策略中最大的)。
2.1 最优状态价值函数的贝尔曼方程¶
最优状态价值函数 \( V^*(s) \) 定义为:从状态 \( s \) 出发,遵循最优策略 \( \pi^* \) 时的累积折扣奖励的期望。
其递归关系为: $\( V^*(s) = \max_{a \in A} \left( R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) V^*(s') \right) \)$
公式解读:
与任意策略的区别在于用 \( \max_a \) 替代了策略加权和 \( \sum_a \pi(a|s) \)。
最优状态的价值 = 选择能最大化未来累积奖励的动作 \( a \),该动作的价值 = 即时奖励 + 未来状态最优价值的折扣期望。
2.2 最优动作价值函数的贝尔曼方程¶
最优动作价值函数 \( Q^*(s,a) \) 定义为:从状态 \( s \) 执行动作 \( a \) 后,遵循最优策略 \( \pi^* \) 时的累积折扣奖励的期望。
其递归关系为: $\( Q^*(s,a) = R(s,a) + \gamma \sum_{s' \in S} P(s'|s,a) \max_{a' \in A} Q^*(s',a') \)$
公式解读:
最优动作的价值 = 即时奖励 + 转移到新状态 \( s' \) 后,所有可能动作中最优动作的价值的折扣期望。
最优状态价值与最优动作价值的关系:\( V^*(s) = \max_{a \in A} Q^*(s,a) \)(最优状态价值是最优动作价值的最大值)。
最优策略的提取:\( \pi^*(a|s) = \arg\max_{a \in A} Q^*(s,a) \)(在每个状态选择能最大化最优动作价值的动作)。
三、贝尔曼方程的求解思路¶
贝尔曼方程是递归方程,无法直接通过代数方法求解(除非状态空间极小),实际中通过迭代法求解,核心思路是:
初始化:设置价值函数的初始值(如 \( V_0(s) = 0 \) 对所有 \( s \))。
迭代更新:用贝尔曼方程作为更新规则,不断更新价值函数:
对任意策略:\( V_{k+1}(s) = \sum_a \pi(a|s) \left( R(s,a) + \gamma \sum_{s'} P(s'|s,a) V_k(s') \right) \)
对最优策略:\( V_{k+1}(s) = \max_a \left( R(s,a) + \gamma \sum_{s'} P(s'|s,a) V_k(s') \right) \)
收敛判断:当相邻两次迭代的价值函数的最大差值小于预设阈值 \( \epsilon \)(如 \( \max_s |V_{k+1}(s) - V_k(s)| < 10^{-5} \)),认为价值函数收敛到真实值。
四、贝尔曼方程的意义与扩展¶
1. 核心意义¶
理论基础:所有强化学习算法的更新规则都源于贝尔曼方程(如Q-Learning的更新规则 \( Q(s,a) \leftarrow Q(s,a) + \alpha [R + \gamma \max_{a'} Q(s',a') - Q(s,a)] \) 就是最优动作价值贝尔曼方程的近似)。
问题分解:将“无限期的长期奖励问题”分解为“即时奖励 + 单步的未来奖励问题”,使问题可解。
2. 扩展形式¶
贝尔曼期望方程:即“策略评估的贝尔曼方程”,描述任意策略下价值函数的期望递归关系。
贝尔曼最优方程:即“最优性的贝尔曼方程”,描述最优策略下价值函数的最大递归关系。
时序差分(TD)误差:贝尔曼方程的近似误差 \( \delta = R + \gamma V(s') - V(s) \),是TD学习、SARSA等算法的核心更新信号。
五、简单示例:格子世界的贝尔曼方程¶
以4x4格子世界为例(终点 \( s_{goal} \) 奖励+10,撞边界奖励-1,其他奖励0,\( \gamma=0.9 \),动作上下左右为确定性转移):
对终点状态 \( s_{goal} \),其最优状态价值 \( V^*(s_{goal}) = 10 \)(无未来转移,价值等于自身奖励)。
对终点相邻的状态 \( s_{adj} \),执行“向终点移动”的动作 \( a \),其最优价值为: $\( V^*(s_{adj}) = \max_a \left( R(s_{adj},a) + \gamma V^*(s') \right) = 0 + 0.9 \times 10 = 9 \)$
迭代更新所有状态的价值,最终收敛到最优价值函数,即可提取最优策略(向价值最高的方向移动)。
核心总结¶
贝尔曼方程的本质是价值函数的递归分解,它将MDP的长期累积奖励问题转化为可迭代求解的局部问题。无论是有模型的动态规划,还是无模型的Q-Learning,其核心更新逻辑都是对贝尔曼方程的精确计算或近似估计。
Q-learning¶
Q-Learning 是强化学习中最经典的 无模型(Model-Free)、异策略(Off-Policy) 算法,核心目标是直接学习最优动作价值函数 \( Q^*(s,a) \),而无需知道MDP的转移概率 \( P \) 和奖励函数 \( R \)。它通过与环境的交互采样(试错)来更新Q值,最终通过贪心策略提取最优决策。
一、Q-Learning的核心概念¶
1. 核心对象:Q表(Q-Table)¶
Q-Learning用Q表存储所有状态-动作对的价值 \( Q(s,a) \),表的行是状态 \( s \),列是动作 \( a \)。
对于离散状态和离散动作空间,Q表是一个二维数组;对于连续空间,需要用函数近似(如神经网络,即DQN)。
2. 核心策略¶
Q-Learning的异策略体现在两个策略的分离:
行为策略(Behavior Policy):用于与环境交互、生成样本的策略,通常是ε-贪心策略(以概率 \( 1-\epsilon \) 选择当前Q值最大的动作,以概率 \( \epsilon \) 随机选择动作),目的是探索环境。
目标策略(Target Policy):用于更新Q值的策略,是贪心策略(直接选择 \( \arg\max_{a'} Q(s',a') \)),目的是学习最优策略。
3. 最优动作价值函数的贝尔曼方程¶
Q-Learning的更新规则源于最优动作价值函数的贝尔曼方程: $\( Q^*(s,a) = \mathbb{E}\left[ R + \gamma \max_{a'} Q^*(s',a') \mid s,a \right] \)$ 其中:
\( R \) 是执行动作 \( a \) 后获得的即时奖励;
\( s' \) 是转移后的新状态;
\( \gamma \) 是折扣因子;
\( \max_{a'} Q^*(s',a') \) 是新状态 \( s' \) 下所有动作的最大Q值(体现贪心的目标策略)。
二、Q-Learning的核心更新规则¶
Q-Learning不直接求解贝尔曼方程,而是通过时序差分(TD)学习的方式近似更新Q值,核心更新公式为: $\( Q(s,a) \leftarrow Q(s,a) + \alpha \left( R + \gamma \max_{a'} Q(s',a') - Q(s,a) \right) \)$ 其中:
学习率 \( \alpha \in (0,1] \):控制每次更新的步长,\( \alpha \) 越大,新的样本对Q值的影响越大;\( \alpha \) 过小,收敛速度会很慢。
TD目标(Target):\( R + \gamma \max_{a'} Q(s',a') \),即当前样本估计的最优动作价值。
TD误差(Error):\( \text{TD Error} = \text{TD Target} - Q(s,a) \),即当前Q值与目标Q值的差值,更新的目的是最小化这个误差。
公式直观理解¶
新的Q值 = 旧的Q值 + 学习率 ×(实际得到的总奖励 - 旧的Q值) 其中“实际得到的总奖励” = 即时奖励 + 未来最优状态的折扣价值
三、Q-Learning的完整算法流程¶
假设状态空间 \( S \) 和动作空间 \( A \) 均为离散,算法步骤如下:
初始化
初始化Q表 \( Q(s,a) \),所有值初始为0(或随机小值)。
设置学习率 \( \alpha \)、折扣因子 \( \gamma \)、探索率 \( \epsilon \)。
对于每个回合(Episode)
初始化当前状态 \( s \)。
对于每个时间步(Step)
选择动作:根据行为策略(ε-贪心)从当前状态 \( s \) 选择动作 \( a \): $\( a = \begin{cases} \arg\max_{a'} Q(s,a') & \text{以概率 } 1-\epsilon \\ \text{随机动作} & \text{以概率 } \epsilon \end{cases} \)$
执行动作:在环境中执行动作 \( a \),得到即时奖励 \( R \) 和新状态 \( s' \)。
更新Q值:使用Q-Learning更新规则更新 \( Q(s,a) \): $\( Q(s,a) \leftarrow Q(s,a) + \alpha \left( R + \gamma \max_{a'} Q(s',a') - Q(s,a) \right) \)$
更新状态:设置 \( s = s' \)。
终止判断:如果 \( s \) 是终止状态,结束当前回合。
收敛判断
当Q表的更新幅度足够小(如 \( \max |Q_{new} - Q_{old}| < \epsilon \)),或回合累积奖励稳定,认为算法收敛。
提取最优策略
收敛后,最优策略为贪心策略: $\( \pi^*(a|s) = \arg\max_{a'} Q(s,a') \)$
四、Q-Learning的关键特性¶
1. 无模型(Model-Free)¶
无需知道环境的转移概率 \( P(s'|s,a) \) 和奖励函数 \( R(s,a) \),仅通过与环境的交互样本(\( s,a,R,s' \))更新Q值。
这是Q-Learning与动态规划(DP)的核心区别,DP需要完整的MDP模型。
2. 异策略(Off-Policy)¶
行为策略(ε-贪心)和目标策略(贪心)分离,行为策略负责探索,目标策略负责学习最优策略。
优势:可以用更具探索性的策略生成样本,同时保证学习到的是最优策略,样本利用率更高。
对比:SARSA是**同策略(On-Policy)**算法,其更新规则中使用的是行为策略选择的下一个动作 \( a' \),而非最大Q值的动作。
3. 收敛性¶
在满足探索充分(所有状态-动作对都被无限次访问)和学习率递减(如 \( \alpha_t = \frac{1}{t} \))的条件下,Q-Learning能以概率1收敛到最优动作价值函数 \( Q^*(s,a) \)。
五、Q-Learning与SARSA的核心区别¶
Q-Learning和SARSA是最常用的两种时序差分算法,核心区别在于TD目标的计算方式:
特性 |
Q-Learning |
SARSA |
|---|---|---|
策略类型 |
异策略(Off-Policy) |
同策略(On-Policy) |
TD目标 |
\( R + \gamma \max_{a'} Q(s',a') \) |
\( R + \gamma Q(s',a') \)(\( a' \) 是行为策略选择的动作) |
核心思想 |
学习“无论下一步怎么走,都要选最优的” |
学习“按照当前策略,下一步会怎么走” |
探索与利用 |
更激进,可能在探索时忽略风险 |
更保守,考虑探索时的实际动作风险 |
示例:机器人在悬崖边行走,Q-Learning会学习到直接走最短路径(即使路径靠近悬崖,因为它只关注最优目标),而SARSA会学习到绕开悬崖的路径(因为它考虑了行为策略可能选择的探索动作)。
六、Q-Learning的局限性与扩展¶
1. 局限性¶
维数灾难:仅适用于离散状态和离散动作空间,当状态空间很大(如像素级游戏画面)或动作空间连续时,Q表无法存储。
探索与利用的平衡:ε-贪心策略的 \( \epsilon \) 选择需要手动调参,\( \epsilon \) 过大导致探索过多,收敛慢;\( \epsilon \) 过小导致探索不足,可能陷入局部最优。
2. 经典扩展¶
DQN(Deep Q-Network):用神经网络替代Q表,实现对连续状态空间的函数近似,解决了维数灾难问题,成功应用于Atari游戏。
Double DQN:解决DQN中因 \( \max_{a'} Q(s',a') \) 导致的Q值过估计问题。
Dueling DQN:将Q值分解为状态价值 \( V(s) \) 和优势函数 \( A(s,a) \),提高学习效率。
七、简单示例:格子世界的Q-Learning¶
以4x4格子世界为例(终点奖励+10,撞边界奖励-1,其他奖励0,\( \gamma=0.9 \),\( \alpha=0.1 \),\( \epsilon=0.1 \)):
初始化Q表为全0。
智能体从随机状态出发,用ε-贪心策略选择动作(90%选当前Q值最大的动作,10%随机选)。
执行动作后,得到奖励 \( R \) 和新状态 \( s' \),用Q-Learning更新规则更新 \( Q(s,a) \)。
重复多个回合,Q表逐渐收敛,最终智能体在每个状态都会选择向终点移动的动作。
核心总结¶
Q-Learning是无模型异策略强化学习的基础,通过直接学习Q值来逼近最优动作价值函数,无需环境模型,仅通过试错交互即可实现自主决策。它的局限性推动了深度强化学习(如DQN)的发展,是连接经典强化学习和现代深度强化学习的关键算法。