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 | |
|---|---|---|---|
| 状态1 | Q(1,1) | Q(1,2) | Q(1,3) |
| 状态2 | Q(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算法
- 初始化Q表(通常初始化为0)
- 对于每个回合:
- 获取当前状态s
- 使用ε-greedy策略选择动作a
- 执行动作,观察奖励r和新状态s'
- 更新Q值:Q(s,a) ← Q(s,a) + α[r + γ max_a' Q(s',a') - Q(s,a)]
- s ← s'
- 重复直到收敛
ε-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误差大的经验更重要
- 提高样本效率