Q-Learning

Q-Learning是最经典的强化学习算法之一。通过学习每个状态-动作对的价值(Q值),智能体可以做出最优决策。DQN的出现让Q-Learning能够处理复杂的高维状态空间。

学习难度:进阶·阅读时间:约12分钟

Q-Learning概述

基本思想

Q-Learning是一种基于价值的方法:

  • 学习每个状态-动作对的价值Q(s,a)
  • 选择Q值最大的动作
  • 不需要环境模型(model-free)

特点

  • 无模型:不需要知道环境动力学
  • 离策略:可以学习任意策略产生的数据
  • 收敛保证:在有限MDP下保证收敛到最优

Q值与Q表

Q值定义

Q(s,a)表示在状态s采取动作a后的期望累积奖励:

Q(s,a) = E[Σ γ^t r_t | s_0=s, a_0=a]

Q表

对于有限状态和动作空间,可以用表格存储所有Q值:

动作1动作2动作3
状态1Q(1,1)Q(1,2)Q(1,3)
状态2Q(2,1)Q(2,2)Q(2,3)

决策时选择Q值最大的动作:a* = argmax_a Q(s,a)

贝尔曼方程

贝尔曼期望方程

Q值满足递归关系:

Q(s,a) = r + γ Σ P(s'|s,a) max_a' Q(s',a')

当前Q值等于即时奖励加上下一状态的最大Q值(折扣后)。

Q-Learning更新

使用时序差分更新Q值:

Q(s,a) ← Q(s,a) + α[r + γ max_a' Q(s',a') - Q(s,a)]

  • α:学习率
  • γ:折扣因子
  • r + γ max Q(s',a'):TD目标

算法流程

Q-Learning算法

  1. 初始化Q表(通常初始化为0)
  2. 对于每个回合:
    1. 获取当前状态s
    2. 使用ε-greedy策略选择动作a
    3. 执行动作,观察奖励r和新状态s'
    4. 更新Q值:Q(s,a) ← Q(s,a) + α[r + γ max_a' Q(s',a') - Q(s,a)]
    5. s ← s'
  3. 重复直到收敛

ε-greedy策略

平衡探索与利用:

  • 以ε概率随机选择动作(探索)
  • 以1-ε概率选择最优动作(利用)
  • 通常随时间减小ε

深度Q网络

为什么需要DQN

Q表的问题:

  • 状态空间大时,表格无法存储
  • 无法处理连续状态
  • 无法泛化到未见过的状态

DQN的核心思想

用神经网络近似Q函数:

  • 输入:状态s(如图像)
  • 输出:每个动作的Q值
  • 网络参数θ,学习Q(s,a;θ)

关键技术

经验回放

存储经验(s,a,r,s')到缓冲区,随机采样训练。打破数据相关性。

目标网络

使用单独的网络计算TD目标,定期更新。稳定训练过程。

DQN突破

2015年,DeepMind用DQN在Atari游戏上达到人类水平:

  • 仅从像素输入学习
  • 同一网络架构玩多种游戏
  • 展示了深度强化学习的威力

DQN变体

Double DQN

解决Q值过估计问题:

  • 用两个网络分别选择和评估动作
  • 减少乐观估计偏差

Dueling DQN

分解Q值为状态价值和动作优势:

  • Q(s,a) = V(s) + A(s,a)
  • 更好地学习状态价值

Prioritized Experience Replay

优先回放重要的经验:

  • TD误差大的经验更重要
  • 提高样本效率
----