基于价值的强化学习 (Value-Based Reinforcement Learning)

目录


1. Q函数近似问题

1.1 目标

强化学习的最终目标是赢得游戏(等价于最大化总奖励)。

1.2 最优动作

如果我们知道最优动作价值函数 Q(s,a)Q^*(s, a),那么在状态 ss 下的最佳动作就是:

a=argmaxaQ(s,a)a^* = \arg\max_a Q^*(s, a)

这意味着我们应该选择使Q值最大的动作。

Approximate the Q Function

1.3 核心挑战

问题:我们实际上不知道 Q(s,a)Q^*(s, a)

在复杂的游戏环境中(如 Atari 游戏或 Go),状态空间和动作空间都非常庞大,无法用表格形式存储所有的 Q(s,a)Q(s, a) 值。

1.4 解决方案:深度Q网络

核心思想:使用神经网络来近似 Q(s,a)Q^*(s, a)

Q(s,a;w)Q(s,a)Q(s, a; w) \approx Q^*(s, a)

其中 ww 是神经网络的参数(权重)。


2. 深度Q网络 (DQN)

2.1 网络架构

DQN 是一个神经网络,用于将状态映射到每个动作的Q值:

Deep Q Network

输入层:游戏截图的像素值

  • 输入形状:(height, width, channels)
  • 例如:(84, 84, 4) 表示4帧堆叠的灰度图像

卷积层 (Conv):提取视觉特征

  • 将原始像素转换为高级特征表示

全连接层 (Dense):输出动作价值

  • 输出形状:动作空间的维度

2.2 数学表示

Q(st,a;wt)=fNN(st;wt)[a]Q(s_t, a; w_t) = f_{\text{NN}}(s_t; w_t)[a]

其中 fNNf_{\text{NN}} 是神经网络的前向传播函数,[a][a] 表示取动作 aa 对应的输出。

2.3 示例

假设动作空间为 {left,right,up}\{\text{left}, \text{right}, \text{up}\}

Q(st,"left";wt)=2000Q(st,"right";wt)=1000Q(st,"up";wt)=3000\begin{aligned} Q(s_t, \text{"left"}; w_t) &= 2000 \\ Q(s_t, \text{"right"}; w_t) &= 1000 \\ Q(s_t, \text{"up"}; w_t) &= 3000 \end{aligned}

问题:基于以上预测,应该选择什么动作?

答案:选择 "up"\text{"up"},因为 3000=max{2000,1000,3000}3000 = \max\{2000, 1000, 3000\}


3. DQN在游戏中的应用

3.1 决策流程

使用DQN玩游戏时,每个时间步的决策过程如下:

Apply DQN to Play Game

![Temporal Difference Learning](/img/reinforcement-learning/Value-Based Reinforcement Learning/20260312-171357.196-4.jpg)

3.2 状态-动作-奖励序列

完整的交互过程形成一条轨迹:

statst+1at+1st+2at+2st+3at+3s_t \xrightarrow{a_t} s_{t+1} \xrightarrow{a_{t+1}} s_{t+2} \xrightarrow{a_{t+2}} s_{t+3} \xrightarrow{a_{t+3}} \cdots

对应的奖励序列:

rt,rt+1,rt+2,r_t, \quad r_{t+1}, \quad r_{t+2}, \quad \cdots

3.3 动作选择策略

在每个状态 sts_t,智能体选择动作:

at=argmaxaQ(st,a;wt)a_t = \arg\max_a Q(s_t, a; w_t)

这是一种贪婪策略(greedy policy),即总是选择当前估计价值最高的动作。

3.4 环境动力学

状态转移遵循环境的动力学模型:

st+1p(st,at)s_{t+1} \sim p(\cdot | s_t, a_t)

st+2p(st+1,at+1)s_{t+2} \sim p(\cdot | s_{t+1}, a_{t+1})

st+3p(st+2,at+2)s_{t+3} \sim p(\cdot | s_{t+2}, a_{t+2})

其中 p(ss,a)p(s' | s, a) 是状态转移概率函数。


4. 时序差分学习 (TD Learning)

4.1 TD学习概述

时序差分学习 (Temporal Difference Learning) 是强化学习中用于学习价值函数的核心方法。它结合了蒙特卡洛方法和动态规划的优点。

4.2 TD学习算法

一次TD学习的迭代包含以下6个步骤:

步骤1:观察状态和动作

St=st,At=atS_t = s_t, \quad A_t = a_t

步骤2:预测Q值

qt=Q(st,at;wt)q_t = Q(s_t, a_t; w_t)

这是神经网络对当前状态-动作对价值的估计。

步骤3:计算梯度

dt=Q(st,at;w)ww=wtd_t = \left. \frac{\partial Q(s_t, a_t; w)}{\partial w} \right|_{w=w_t}

这是Q函数关于网络参数的梯度,用于后续的梯度更新。

步骤4:环境反馈

环境提供新的状态 st+1s_{t+1} 和奖励 rtr_t

步骤5:计算TD目标

yt=rt+γmaxaQ(st+1,a;wt)y_t = r_t + \gamma \cdot \max_a Q(s_{t+1}, a; w_t)

TD目标由两部分组成:

  • 即时奖励 rtr_t:当前动作的立即反馈
  • 折扣未来价值 γmaxaQ(st+1,a;wt)\gamma \cdot \max_a Q(s_{t+1}, a; w_t):下一状态的最大Q值

步骤6:梯度下降更新

wt+1=wtα(qtyt)dtw_{t+1} = w_t - \alpha \cdot (q_t - y_t) \cdot d_t

参数解释

  • α\alpha:学习率 (learning rate)
  • qtytq_t - y_t:TD误差 (TD error)
  • dtd_t:梯度方向

4.3 TD误差

δt=qtyt=Q(st,at;wt)[rt+γmaxaQ(st+1,a;wt)]\delta_t = q_t - y_t = Q(s_t, a_t; w_t) - [r_t + \gamma \cdot \max_a Q(s_{t+1}, a; w_t)]

TD误差反映了我们的估计与目标之间的差距。我们的目标是最小化这个误差。

4.4 损失函数

从优化的角度看,TD学习最小化以下损失函数:

L(w)=Est,at,rt,st+1[(Q(st,at;w)(rt+γmaxaQ(st+1,a;w)))2]\mathcal{L}(w) = \mathbb{E}_{s_t, a_t, r_t, s_{t+1}} \left[ \left( Q(s_t, a_t; w) - \left( r_t + \gamma \cdot \max_a Q(s_{t+1}, a; w) \right) \right)^2 \right]

这是Bellman误差的期望平方。


5. 完整算法流程

5.1 DQN训练算法

1
2
3
4
5
6
7
8
9
10
11
12
初始化:Q网络参数 w,回放缓冲区 D
对于每个回合 episode:
初始化状态 s_t
对于每个时间步 t:
1. 选择动作:a_t = argmax_a Q(s_t, a; w) + 探索噪声
2. 执行动作,获得奖励 r_t 和新状态 s_{t+1}
3. 存储经验:(s_t, a_t, r_t, s_{t+1}) → D
4. 从 D 中随机采样一个小批量
5. 对每个样本计算 TD 目标:y = r + γ·max_a' Q(s', a'; w)
6. 计算损失:L = (Q(s, a; w) - y)²
7. 梯度下降更新:w ← w - α·∇_w L
8. s_t ← s_{t+1}

5.2 关键技术创新

实际应用中,DQN通常包含以下改进:

经验回放 (Experience Replay)

  • 将经验 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1}) 存储在缓冲区
  • 随机采样进行训练,打破数据相关性

目标网络 (Target Network)

  • 使用独立的目标网络 Q(s,a;w)Q(s, a; w^-) 计算TD目标
  • 定期将主网络参数复制到目标网络
  • 提高训练稳定性

yt=rt+γmaxaQ(st+1,a;wt)y_t = r_t + \gamma \cdot \max_a Q(s_{t+1}, a; w_t^-)

ε-贪婪探索 (ε-greedy Exploration)

at={argmaxaQ(st,a;w)以概率 1ϵ随机动作以概率 ϵa_t = \begin{cases} \arg\max_a Q(s_t, a; w) & \text{以概率 } 1-\epsilon \\ \text{随机动作} & \text{以概率 } \epsilon \end{cases}


概念关系总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────────────────────────────────────────────────┐
│ 基于价值的强化学习 (Value-Based RL) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 目标:学习 Q*(s,a) → 选择最优动作 a* = argmax_a Q*(s,a) │
│ │
│ 挑战:Q*(s,a) 未知 → 用神经网络 Q(s,a;w) 近似 │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Deep Q-Network (DQN) │ │
│ │ ┌─────────┐ ┌──────────┐ ┌────────┐ │ │
│ │ │ 图像输入 │ → │ Conv+Dense│ → │ Q-values│ │ │
│ │ └─────────┘ └──────────┘ └────────┘ │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Temporal Difference (TD) Learning │ │
│ │ │ │
│ │ TD目标: y_t = r_t + γ·max_a Q(s_{t+1},a) │ │
│ │ 更新: w ← w - α·(Q - y)·∇_w Q │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

数学符号汇总

符号 含义
Q(s,a)Q^*(s, a) 最优动作价值函数
Q(s,a;w)Q(s, a; w) 神经网络近似的Q函数
ww 神经网络参数
sts_t 时刻tt 的状态
ata_t 时刻tt 的动作
rtr_t 时刻tt 的奖励
γ\gamma 折扣因子
α\alpha 学习率
yty_t TD目标
δt\delta_t TD误差
dtd_t Q函数梯度
p(ss,a)p(s'\|s, a) 状态转移概率
ϵ\epsilon 探索率

核心公式速查

1. 动作选择

at=argmaxaQ(st,a;wt)a_t = \arg\max_a Q(s_t, a; w_t)

2. TD目标

yt=rt+γmaxaQ(st+1,a;wt)y_t = r_t + \gamma \cdot \max_a Q(s_{t+1}, a; w_t)

3. TD误差

δt=Q(st,at;wt)yt\delta_t = Q(s_t, a_t; w_t) - y_t

4. 参数更新

wt+1=wtαδtwQ(st,at;wt)w_{t+1} = w_t - \alpha \cdot \delta_t \cdot \nabla_w Q(s_t, a_t; w_t)

5. 损失函数

L(w)=E[(Q(s,a;w)(r+γmaxaQ(s,a;w)))2]\mathcal{L}(w) = \mathbb{E}\left[ \left( Q(s, a; w) - \left( r + \gamma \cdot \max_a Q(s', a; w) \right) \right)^2 \right]


参考文献

本笔记基于强化学习课程的基于价值方法部分,涵盖了DQN架构、时序差分学习等核心内容。相关经典论文:

  • Mnih et al. (2015). “Human-level control through deep reinforcement learning”. Nature.
  • Watkins & Dayan (1992). “Q-learning”. Machine Learning.