Q-Learning 算法:时序差分与表格求解
Q-Learning 算法:时序差分与表格求解
欢迎来到这篇为初学者精心准备的 Q-Learning 算法教程。在这里,你将从零开始,理解强化学习中最重要的无模型算法之一——Q-Learning,并掌握它如何通过时序差分思想在表格中求解最优策略。无需深厚的数学背景,让我们用直觉和清晰的例子一起探索。
1. 强化学习基础概念快速回顾
在深入 Q-Learning 之前,我们需要对齐几个核心术语。假设你已经了解智能体与环境交互的基本循环,但这里仍做一个快速梳理,确保后续内容完全清晰。
1.1 智能体与环境
- 智能体:学习和做决策的主体,比如一只在迷宫中寻找出口的小老鼠。
- 环境:智能体所处的外部世界,迷宫、棋盘或任何交互场景。
- 在每一个时间步
t,智能体观察环境状态S_t,选择一个动作A_t,环境返回一个奖励R_{t+1}并进入新状态S_{t+1}。
1.2 回报与折扣因子
- 回报(Return) 定义为从当前时刻开始,未来所有奖励的累积和:
G_t = R_{t+1} + γR_{t+2} + γ^2R_{t+3} + ... - 其中
γ(折扣因子,介于 0 到 1 之间)让近期奖励比远期奖励更重要。这保证了回报在数学上收敛,也符合实际中对即时收益的自然偏好。
1.3 策略与价值函数
- 策略 π:状态到动作的概率映射。即给定状态
s,采取动作a的概率π(a|s)。 - 状态价值函数 V^π(s):从状态
s出发,遵循策略 π 所能获得的期望回报。 - 动作价值函数 Q^π(s, a):从状态
s出发,执行动作a,之后遵循策略 π 所能获得的期望回报。
Q-Learning 的目标就是直接寻找最优动作价值函数 Q*(s, a),而无需知道环境模型。
2. 什么是 Q-Learning?核心思想
Q-Learning 是一种无模型(model-free)、离线策略(off-policy) 的强化学习算法。
- 无模型:它不要求知道环境的状态转移概率和奖励函数,只需通过与环境交互产生的经验来学习。
- 离线策略:它学习最优 Q 函数时,可以独立于智能体当前实际执行的策略。即,收集数据的行为策略可以是一个探索性策略,而目标策略是直接选最大 Q 值的贪心策略。
算法的灵魂在于使用时序差分(Temporal Difference, TD) 方法来更新 Q 值。它结合了动态规划与蒙特卡罗方法的优点:既能像蒙特卡罗那样从真实的经验中学习,又能像动态规划那样基于已学到的估计值进行引导(bootstrapping),无需等待一个完整的回合结束。
3. 时序差分更新规则
Q-Learning 的更新公式简洁而强大:
Q(S_t, A_t) ← Q(S_t, A_t) + α [ R_{t+1} + γ · max_a Q(S_{t+1}, a) - Q(S_t, A_t) ]
让我们逐项拆解这个公式:
Q(S_t, A_t):当前状态下执行动作A_t的旧估计值。α(学习率):控制在多大程度上用新信息覆盖旧估计。α=0表示不学习,α=1完全相信新目标。R_{t+1}:执行动作后立刻得到的奖励。γ · max_a Q(S_{t+1}, a):对下一个状态S_{t+1}中所有可能动作的 Q 值取最大值,折扣后作为未来回报的估计。- TD目标:
R_{t+1} + γ · max_a Q(S_{t+1}, a),这是我们希望当前Q(S_t, A_t)趋近的值。 - TD误差:
R_{t+1} + γ · max_a Q(S_{t+1}, a) - Q(S_t, A_t),即目标与当前估计的差值。算法通过最小化这个误差来逐步逼近最优 Q 函数。
关键点解释:
- 公式使用了
max_a Q(S_{t+1}, a)而不是根据实际下一步动作的 Q 值来更新。这体现了离线策略特性:它假设在下一状态就会采取最优动作,即使智能体实际在探索时可能随机选择了其它动作。这样 Q 函数会直接学习最优策略,而不受探索动作的干扰。 - 因为每次更新都基于一次实际交互(一个
(S_t, A_t, R_{t+1}, S_{t+1})经验元组),所以属于单步时序差分方法。
4. 表格型 Q-Learning 算法流程
当状态空间和动作空间都比较小且离散时,我们可以用一张表格来记录所有状态-动作对的 Q 值,即 Q[s, a]。这称作表格型 Q-Learning。每个单元格独立地存储一个数字,随着智能体的学习不断被更新。
算法伪代码:
初始化 Q(s, a) 表格,对所有 s ∈ S, a ∈ A,Q(s, a) 可为 0 或小随机值
对每一个回合进行循环:
初始化初始状态 S (通常从环境获取)
对回合中的每一步进行循环:
采用某种策略从状态 S 选择动作 A (例如 ε-贪婪策略)
执行动作 A,从环境得到奖励 R 和下一状态 S'
更新 Q(S, A):
Q(S, A) ← Q(S, A) + α [ R + γ * max_a Q(S', a) - Q(S, A) ]
S ← S'
如果 S 是终止状态,则结束该回合
5. 探索与利用的权衡:ε-贪婪策略
在学习过程中,智能体面临一个根本困境:
- 利用(Exploitation):选择当前估计 Q 值最大的动作,以期获得高回报。
- 探索(Exploration):尝试不同动作,以便发现可能更好的动作,防止陷入局部最优。
表格型 Q-Learning 通常采用 ε-贪婪策略 作为行为策略:
- 以概率
1 - ε选择max_a Q(s, a)(利用)。 - 以概率
ε随机选择一个动作(探索)。 ε通常在训练开始时设置较大(如 0.9),随着学习进行逐渐衰减至很小的值(如 0.01),让智能体从大量探索逐渐过渡到精准利用。
为什么 Q-Learning 用 ε-贪婪作为行为策略,却仍能学习到最优策略?
因为更新规则中的 max 操作直接对最优策略进行估计,而行为策略只需保证有足够的探索让每个状态-动作对被无限次访问。在表格环境下,只要满足探索条件(所有状态-动作对都被无限频繁地访问)和学习率衰减适当,Q-Learning 已被证明可以收敛到最优 Q 函数。
6. 从 0 构建一个表格型 Q-Learning 示例
下面通过一个经典的网格世界例子来直观演示算法的工作原理。环境是一个 4x4 的冰冻湖风格网格,智能体从起点出发,目标是到达终点拿到+1的奖励,途中某些格子会带来负奖励,掉入陷阱则回合结束。动作空间为上下左右四个方向,由于地面湿滑,动作可能向非预想方向滑动(但为了简化,我们可以先用确定性环境理解)。
6.1 环境定义
- 状态:网格坐标 (row, col),共 16 个状态,外加终止状态。
- 动作:0=上, 1=下, 2=左, 3=右。
- 奖励:到达目标 +1,掉入陷阱 -1,其他步 -0.04(鼓励尽快到达终点)。
- 在确定性版本中,动作直接指向对应相邻格子,碰到墙壁则原地不动。
6.2 Q 表初始化
建立一个 16x4 的全零二维数组。也可以初始化为很小的随机正数,以稍微鼓励乐观探索。
6.3 超参数设置
- 学习率
α = 0.5 - 折扣因子
γ = 0.99 - 初始探索率
ε = 0.8,每回合衰减0.9999,最低0.01
6.4 训练循环(逐步解析)
- 开始一个新回合,智能体位置重置为起点
(0,0)。 - 在状态
s,生成一个随机数,若小于 ε,则随机选择动作;否则选择当前 Q 表中该行最大值的列索引所代表的动作。 - 执行动作,得到新状态
s'和奖励r。 - 找到
s'行中最大 Q 值maxQ_s'。 - 计算 TD 目标:
target = r + γ * maxQ_s' - 计算 TD 误差:
error = target - Q[s][a] - 更新 Q 值:
Q[s][a] = Q[s][a] + α * error - 将状态迁移到
s'。若s'为终止状态(目标或陷阱),跳到步骤1开始新回合;否则回到步骤2。
随着成千上万次到达终点的经验积累,Q 表中的值会逐渐正确反映从每个格子执行各动作的未来期望回报,最终智能体可以单纯通过选取每行最大值来走出最优路径。
7. 收敛性与超参数调试建议
7.1 收敛条件
在有限马尔可夫决策过程(MDP)中,表格型 Q-Learning 被证明在以下条件下以概率 1 收敛到最优 Q*:
- 状态和动作空间有限。
- 学习率序列
α_t满足 ROBBINS-MONRO 条件:Σ α_t = ∞,Σ α_t^2 < ∞(例如α = 1/t,实践中常使用常数 α 并配合长训练也能近似收敛)。 - 所有状态-动作对都被无限频繁地访问(由 ε-贪婪策略保证)。
7.2 超参数影响
- 学习率 α:
太大 → 震荡不收敛;太小 → 学习缓慢。典型初值 0.1~0.5,可逐步衰减。 - 折扣因子 γ:
接近 0 时只关心即时奖励,策略短视;接近 1 时重视长期回报,需更多训练。通常 0.9~0.99。 - 探索率 ε 及其衰减:
衰减过快导致探索不足,可能陷入次优;衰减过慢浪费计算。可配合指数衰减或线性衰减至一个小值。
7.3 常见问题及解决
- Q 值无限膨胀:若环境没有终止状态或终止很难达到,Q 值可能变得非常大。确保折扣 γ < 1,或设置回合最大步数。
- 表格过大:状态数量爆炸时,表格存储不现实,需过渡到函数近似方法(如 DQN),这已超出本入门范围。
8. Q-Learning 的变体与进阶方向
掌握基础表格 Q-Learning 后,你会发现它本身是一个框架,可以衍生出强大的变体:
- SARSA(State-Action-Reward-State-Action):同属时序差分,但是在线策略,更新时使用下一步实际选择的动作的 Q 值,而不是最大值。学习曲线更平滑,但倾向于学习更保守的策略。
- Double Q-Learning:解决 Q-Learning 对 Q 值过高估计的问题,使用两个 Q 表互相纠偏。
- 期望 SARSA:使用期望值代替最大值,降低方差。
当状态空间连续或巨大时,深度 Q 网络(DQN)用神经网络替换表格,并以经验回放和固定目标网络增强稳定性,成为现代强化学习的基石。
9. 总结与思考
Q-Learning 的优雅在于仅通过与环境交互,并反复运用时序差分公式,就能在表格中雕琢出最优动作价值。它不需要任何先验动力学模型,是所有无模型强化学习的起点。
现在,你应当已经理解:
- 时序差分如何让学习即时发生,无需等待回合结束。
- 表格 Q-Learning 的完整更新规则与算法步骤。
- 探索-利用问题与 ε-贪婪策略的实践。
- 算法收敛的核心条件与调参思路。
建议立刻动手实现一个简单的表格 Q-Learning 解决小规模迷宫或 Cliff Walking 问题。当你亲眼看到 Q 表一步步从随机走向有序,强化学习的魅力将真正变得触手可及。如果这篇教程帮助你理解了 Q-Learning,请继续深入探索函数近似方法,将学习能力扩展到更复杂的世界。