Q-learning算法详解
Q-learning 是经典的基于价值的、离策略(off-policy)、无模型(model-free)强化学习算法,也是绝大多数人学习强化学习时第一个真正能跑起来并看到效果的算法。一、Q-learning 核心一句话总结「通过反复试错,不断更新一张『状态-动作价值表』(Q表),最终让智能体学会在每个状态下选择能带来最
作者:lh
Q-learning 是经典的基于价值的、离策略(off-policy)、无模型(model-free)强化学习算法,也是绝大多数人学习强化学习时第一个真正能跑起来并看到效果的算法。
一、Q-learning 核心一句话总结
「通过反复试错,不断更新一张『状态-动作价值表』(Q表),最终让智能体学会在每个状态下选择能带来最大长期累积回报的动作。」
二、Q-learning 为什么叫 Q-learning?
Q = Quality = 动作质量
Q(s,a) 表示:在状态 s 采取动作 a 后,后面能拿到的长期期望回报(折扣后的)有多好。
三、Q-learning 最核心的更新公式(必须背下来!)
Q(s, a) ← Q(s, a) + α [ r + γ max_a' Q(s', a') - Q(s, a) ]
或者更常见的写法(等价):
Q(s, a) ← (1-α) ⋅ Q(s, a) + α ⋅ (r + γ ⋅ max_{a'} Q(s', a'))
各符号含义:
| 符号 | 含义 | 常见取值 | 说明 |
|---|---|---|---|
| α | 学习率(learning rate) | 0.001 ~ 0.5 | 控制新信息覆盖旧信息的程度,太大容易震荡 |
| γ | 折扣因子(discount factor) | 0.9 ~ 0.999 | 越接近1越重视未来回报,0则只看即时奖励 |
| r | 即时奖励 | 视任务而定 | 通常稀疏(大部分是0),找到目标+1/-1等 |
| max Q(s',a') | 对下一状态所有可能动作的最优Q值 | — | 这就是为什么叫max,贪心地看下一步最好能拿多少 |
四、Q-learning 算法完整流程(伪代码)
# 初始化
Q表 ← 全0 或 很小的随机数 # 形状:[n_states, n_actions]
ε ← 1.0 # 初始探索率(ε-greedy)
α ← 0.1 # 学习率
γ ← 0.99 # 折扣因子
for episode = 1 to 很多很多轮:
s = env.reset() # 回到初始状态
while not done:
# ε-greedy 动作选择(探索 vs 利用)
if random() < ε:
a = 随机选择一个合法动作 # 探索
else:
a = argmax(Q[s, :]) # 利用当前学到的最好动作
# 与环境交互
s_next, r, done = env.step(a)
# 核心更新!!
target = r + γ * max(Q[s_next, :]) # 如果done则max项通常为0
Q[s, a] += α * (target - Q[s, a]) # TD误差更新
s = s_next
# 逐渐减少探索(很重要!)
ε = max(ε_min, ε * ε_decay) # e.g. 0.995衰减
五、Q-learning 的重要特性对比表
| 特性 | Q-learning | SARSA(对比) | 说明 |
|---|---|---|---|
| 策略类型 | off-policy | on-policy | Q学的是最优策略,行为策略可以不同 |
| 更新时用的下一动作 | max Q(s',a')(最优) | 实际采取的a'(实际) | Q更贪心,也更容易高估 |
| 探索策略影响学习目标 | 不影响(学的是最优) | 直接影响 | Q更稳定,但也更容易过乐观估计 |
| 样本效率 | 通常更高 | 通常稍低 | 因为学的是最优策略 |
| 经典问题 | 容易高估Q值 | 更保守 | 后来有Double Q-learning专门解决高估问题 |
六、Q-learning 常见问题与现代改进(2025~2026视角)
| 问题 | 表现 | 主流解决方案(现在基本都用) |
|---|---|---|
| Q值严重高估 | 学到的策略看起来很好但实际很差 | Double Q-learning / Double DQN |
| 高维/连续状态空间 | Q表放不下 | Deep Q-Network (DQN) + 各种改进 |
| 探索不足/过度 | 卡在局部最优或学得很慢 | ε-greedy衰减 + NoisyNet + 熵正则等 |
| 训练不稳定 | 震荡、发散 | 经验回放 + 目标网络(这就是DQN) |
| 稀疏奖励 | 几乎学不动 | Hindsight Experience Replay / 奖励重塑 |
七、现在(2026年)Q-learning 的真实地位
一句话总结:
Q-learning 本身已经很少直接在工业/竞赛中使用,但它是几乎所有现代价值类深度强化学习算法(DQN、Rainbow、C51、IQN、Agent57……)的理论根基和起点。
当前真正大量使用的模式是:
原始Q-learning
↓
表格形式 → 基本教学用、小规模离散环境
↓
Deep Q-Network (DQN) + 经验回放 + 目标网络
↓
Double DQN + Dueling + Prioritized Replay + Distributional + n-step + NoisyNet……
↓
Rainbow / Agent57 / 各种现代SOTA价值类算法送您一句话:
先把原始Q-learning在迷宫、Taxi、FrozenLake、CliffWalking等经典小网格环境里调通、看懂收敛过程、理解ε衰减和学习率的影响,再去碰DQN及后续变种,才会走得又快又稳。