Files
RL-learning/q_learning/q-learning.md
T
2026-08-31 17:55:15 +08:00

462 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Q-Learning 走迷宫:原理与数学推导
> 本文是仓库配套文档,对应代码为 `q_learning.py`numpy 表格型实现,可选 matplotlib 绘图。
---
## 一、问题形式化:迷宫是一个马尔可夫决策过程
把走迷宫抽象成标准 MDP 五元组 $(S,\,A,\,P,\,R,\,\gamma)$
| 符号 | 含义 | 本例取值 |
|------|------|---------|
| $S$ | 状态空间(所有格子坐标 $(r,c)$ | 尺寸 $n\times n$ 的网格 |
| $A$ | 动作空间 | 上/下/左/右,$|A|=4$ |
| $P(s'\, \| \,s,a)$ | 状态转移概率 | **确定性**(见下) |
| $R(s,a)$ | 即时奖励 | $+100$ / $-1$ / $-10$ |
| $\gamma$ | 折扣因子 | $0.9$ |
### 1.1 转移与奖励的具体化
动作集 $A=\{0,1,2,3\}$ 对应位移向量 $\Delta=\{(-1,0),(1,0),(0,-1),(0,1)\}$。执行动作 $a$ 后:
$$
s' \;=\; \begin{cases}
s + \Delta_a, & \text{若 } s+\Delta_a \in S \text{ 且非墙}\\
s, & \text{否则(撞墙或越界,原地不动)}
\end{cases}
$$
因为结果由 $(s,a)$ **唯一决定**,转移概率是退化分布:$P(s'|s,a)=\delta_{\,s',\,f(s,a)}$。这一点至关重要——后文会看到,确定性环境下 Q-Learning 的收敛分析可以大幅简化。
奖励函数:
$$
R(s,a) \;=\; \begin{cases}
+100, & s' = G \;\;(\text{到达终点})\\
-10, & s' = s \;\;(\text{撞墙 / 越界})\\
-1, & \text{其他(正常走一步)}
\end{cases}
$$
### 1.2 策略与回报
策略 $\pi(a\,|\,s)$ 是在状态 $s$ 下选择动作 $a$ 的概率分布。一次完整的交互产生轨迹 $(S_0,A_0,R_1,S_1,A_1,\dots)$,其中 $S_0$ 为起点。**回报(Return)**是折扣后的累积奖励:
$$
G_t \;=\; \sum_{k=0}^{\infty} \gamma^{k}\, R_{t+k+1}
$$
由于 $|R| \le 100$,当 $\gamma<1$ 时级数绝对收敛:
$$
|G_t| \;\le\; \sum_{k=0}^{\infty}\gamma^{k}|R| \;=\; \frac{100}{1-\gamma}
$$
这就是"折扣因子保证收敛"的严格理由:**回报被夹在一个有限的几何级数之内**。
### 1.3 最优准则
强化学习的目标是找到一个使起点期望回报最大的策略:
$$
\pi^{*} \;=\; \arg\max_{\pi}\;\mathbb{E}_{\pi}\!\left[\,G_{0}\;\big|\;S_{0}=s_{\text{start}}\right]
$$
---
## 二、价值函数与贝尔曼方程
### 2.1 价值函数的定义
给定策略 $\pi$,定义**状态价值**与**动作价值**:
$$
V^{\pi}(s) \;=\; \mathbb{E}_{\pi}\!\left[G_t\;\big|\;S_t=s\right],
\qquad
Q^{\pi}(s,a) \;=\; \mathbb{E}_{\pi}\!\left[G_t\;\big|\;S_t=s,\,A_t=a\right]
$$
直觉:$V^{\pi}(s)$ 是"从 $s$ 出发、以后都按 $\pi$ 走"的期望总收益;$Q^{\pi}(s,a)$ 是"在 $s$ 先做 $a$、以后按 $\pi$ 走"的期望总收益。
### 2.2 贝尔曼期望方程的推导
利用 $G_t = R_{t+1} + \gamma\,G_{t+1}$,代入 $Q^{\pi}$ 的定义:
$$
\begin{aligned}
Q^{\pi}(s,a)
&= \mathbb{E}_{\pi}\!\left[R_{t+1} + \gamma\,G_{t+1}\;\big|\;S_t=s,\,A_t=a\right]\\[2pt]
&= \mathbb{E}\!\left[R_{t+1}\;\big|\;s,a\right]
\;+\; \gamma\,\mathbb{E}\!\left[\mathbb{E}\!\left[G_{t+1}\;\big|\;S_{t+1}\right]\;\Big|\;s,a\right] \quad (\text{塔性质/全期望公式})\\[2pt]
&= r(s,a) \;+\; \gamma \sum_{s'} P(s'|s,a)\,V^{\pi}(s')
\end{aligned}
$$
其中关键一步是**塔性质**:对 $G_{t+1}$ 先关于 $S_{t+1}$ 取条件期望,其内层恰好是 $V^{\pi}(S_{t+1})$(因为 $t+1$ 之后的动作都由 $\pi$ 采样)。再结合
$$
V^{\pi}(s) \;=\; \sum_{a} \pi(a|s)\,Q^{\pi}(s,a)
$$
两式联立,即把"无限长的期望"化成了**只与一步奖励和下一状态有关的自洽方程**——这就是贝尔曼期望方程。
> **用途说明**:期望方程并不出现在 Q-Learning 的更新公式里(更新用的是 2.3 的 max 版最优方程)。它的作用是:① 作为最优方程的内层成分($Q^{*}(s,a)=r+\gamma\sum P\,V^{*}(s')$,其中 $V^{*}=\max_a Q^{*}$);② 解出**任意固定策略**的价值——第五节里 $V(d)$ 的解析值、价值快照图的数值,都是把"沿最短路径走"这个策略代入本节方程算出来的;③ 理解 SARSA(其目标逼近的正是 ε-greedy 策略的期望方程)与策略评估。若只关心 Q-Learning 的更新本身,本节可先略读。
### 2.3 贝尔曼最优方程
记最优策略下的价值为 $V^{*},\,Q^{*}$。在最优点上"每一步都选当前最优动作",于是
$$
V^{*}(s) \;=\; \max_{a} Q^{*}(s,a),
\qquad
Q^{*}(s,a) \;=\; r(s,a) + \gamma \sum_{s'} P(s'|s,a)\, \max_{a'}\, Q^{*}(s',a')
$$
在确定性迷宫中求和号退化为代入一个 $s'$,即
$$
Q^{*}(s,a) \;=\; r(s,a) + \gamma \max_{a'} Q^{*}(s',a')
$$
这组方程是后续一切推导的核心。它告诉我们:**"最优动作的价值"由"即时奖励 + 折扣后的下一状态最优价值"决定**。
### 2.4 唯一性:压缩映射与不动点
定义贝尔曼最优算子 $T^{*}$
$$
(T^{*}Q)(s,a) \;=\; r(s,a) + \gamma\max_{a'} Q(s',a')
$$
则最优方程写作 $Q^{*} = T^{*}Q^{*}$,即 $Q^{*}$ 是 $T^{*}$ 的**不动点**。为什么恰好有一个不动点?
**引理(max 算子的非膨胀性)**:对任意两组数 $\{u_a\},\{v_a\}$
$$
\left|\max_{a} u_a - \max_{a} v_a\right| \;\le\; \max_{a} \left|u_a - v_a\right|
$$
证明:由 $u_a \le v_a + |u_a-v_a|$ 两边取 max 得 $\max u \le \max v + \max|u-v|$;对称地 $\max v \le \max u + \max|u-v|$,合并即得。
由此可证 $T^{*}$ 是 $\gamma$-**压缩映射**(在无穷范数 $\|\cdot\|_\infty$ 下):
$$
\begin{aligned}
\|T^{*}Q_1 - T^{*}Q_2\|_\infty
&\;=\; \gamma \max_{s,a}\left|\max_{a'} Q_1(s',a') - \max_{a'} Q_2(s',a')\right|\\[2pt]
&\;\le\; \gamma\,\|Q_1 - Q_2\|_\infty
\end{aligned}
$$
**Banach 不动点定理**:完备度量空间上的 $\gamma$-压缩映射有唯一不动点 $Q^{*}$,且从任意初值 $Q_0$ 反复迭代满足
$$
\|Q_k - Q^{*}\|_\infty \;\le\; \gamma^{k}\,\|Q_0 - Q^{*}\|_\infty
$$
即**以 $\gamma^{k}$ 的速率几何收敛**。这既证明了最优价值存在唯一,也给出了"值迭代"这一类算法收敛的理论依据。Q-Learning 正是对这一算子做**样本化的异步近似**。
### 2.5 确定性环境带来的化简
因为转移是确定性的,公式中所有 $E_{s'}[\,\cdot\,]$ 都退化为直接代入 $s'$。这意味着:
1. TD 目标**不含采样噪声**,误差只来自"信息尚未从终点传播过来"bootstrap 滞后);
2. 因此常数学习率即可精确收敛(见 3.3 的解析推导);
3. 值迭代的收敛速率在每一层就是干净的 $\gamma$ 打折。
---
## 三、Q-Learning 算法
### 3.1 从值迭代到随机近似
理论上我们可以反复计算 $Q \leftarrow T^{*}Q$(值迭代)。但现实中我们**不知道 $r$ 和 $P$ 的完整信息**,只能在环境中试走、观测 $(s,a,r,s')$ 四元组。于是用**单次观测**去近似期望:
$$
\underbrace{r + \gamma\max_{a'}Q(s',a')}_{\text{TD 目标 }\, Y}
\;\approx\;
\underbrace{r(s,a) + \gamma \sum_{s'}P(s'|s,a)\max_{a'}Q(s',a')}_{(T^{*}Q)(s,a)}
$$
这就是 Robbins–Monro 随机逼近的思想:用噪声样本替代期望,向不动点方程 $Q - T^{*}Q = 0$ 的根靠近。
### 3.2 更新公式与 TD 误差
$$
Q(s,a) \;\leftarrow\; Q(s,a) + \alpha\underbrace{\big[\,r + \gamma\max_{a'} Q(s',a') - Q(s,a)\,\big]}_{\delta_t \;=\; \text{TD 误差}}
$$
TD 误差 $\delta_t$ 是"现实所见"与"旧猜测"之差:正值说明这次发现这步比预想更值钱,负值反之。更新只朝 $\delta_t$ 的方向挪 $\alpha$ 一步。
**与贝尔曼最优方程逐项对照**
| 项 | 表达式 | 角色 |
|----|--------|------|
| 旧估计 | $Q(s,a)$ | 当前猜测 |
| 即时奖励 | $r$ | 实际到手 |
| 未来价值 | $\gamma\max_{a'} Q(s',a')$ | 对最优未来的乐观估计(打 $\gamma$ 折)|
| 目标值 | $Y = r + \gamma\max_{a'} Q(s',a')$ | 单样本的 $(T^{*}Q)(s,a)$ |
| TD 误差 | $\delta = Y - Q(s,a)$ | 修正方向 |
### 3.3 收敛性
**WatkinsDayan 定理**1992):若
1. 每个状态—动作对 $(s,a)$ 被访问无穷多次;
2. 学习率 $\alpha_k(s,a)$ 满足 RobbinsMonro 条件 $\sum_k\alpha_k=\infty,\ \sum_k\alpha_k^{2}<\infty$
3. 奖励有界,
则 $Q_t \to Q^{*}$ 以概率 1 成立。
实践中本实现取常数 $\alpha=0.1$,并不满足条件 2。但在**确定性迷宫**里这无害,可以给出精确的解析结论:固定某个 $(s,a)$,把目标值 $Y$ 暂视为常数,则更新为线性差分方程
$$
Q_{k+1} = Q_k + \alpha\,(Y - Q_k)
\;\Longrightarrow\;
Q_k = (1-\alpha)^{k}\,Q_0 + \big[1-(1-\alpha)^{k}\big]\,Y
$$
误差 $|Q_k - Y|$ 以 $(1-\alpha)^{k}$ 几何衰减。例如 $\alpha=0.1$ 时,$(1-\alpha)^{22} \approx 0.098$,即**每约 22 次访问该状态—动作对,误差缩小一个数量级**。真正的收敛瓶颈是传播的"层次":距终点 $d$ 层的格子必须等 $d-1$ 层价值稳定后才稳定,故总学习量级 $\sim O(D\times \text{每层更新次数})$,其中 $D$ 为最短路长——这与"迷宫越大、需要越多局"的直观一致。
### 3.4 离策略(Off-policy)特性
更新公式中的未来项用的是 $\max_{a'}Q(s',a')$,即**假设到达 $s'$ 后走最优动作**的价值。这与智能体实际用来选动作的行为策略无关——即使实际是用随机策略在探索,学习的目标依然是"如果以后都走最优"的价值。这正是 Q-Learning 收敛到 $Q^{*}$(贪心策略的价值)而不是 $\pi_{\varepsilon}$ 的价值的原因。
### 3.5 与 SARSA 的数学差别
SARSA 把未来项换成**实际执行的下一动作** $a'$ 的价值:
$$
Q_{\text{SARSA}}(s,a) \;\leftarrow\; Q(s,a) + \alpha\big[\,r + \gamma\,Q(s',a')\;-\;Q(s,a)\big]
$$
其中 $a'$ 由当前行为策略(含探索)采样。期望上它逼近的是
$$
Q^{\pi_{\varepsilon}}(s,a) = r(s,a) + \gamma \sum_{a'} \pi_{\varepsilon}(a'|s')\,Q^{\pi_{\varepsilon}}(s',a')
$$
即**$\varepsilon$-greedy 行为策略自身的价值**,而非最优价值。数学差异集中在一个算子:
$$
\max_{a'} \quad\text{vs}\quad \mathbb{E}_{a'\sim \pi_{\varepsilon}}[\cdot]
$$
Q-Learning 悲观/乐观地用 max(乐观偏差),SARSA 如实反映探索的代价。**在带陷阱(危险吸收态)的环境里,SARSA 会学出"绕开陷阱"的保守路线,而 Q-Learning 学的是理论上最优、但执行时需承担探索风险的路线**。两种方法都收敛,只是目标函数不同。
### 3.6 终止状态的边界条件
到达终点 $G$ 后没有"下一步"。若把 $G$ 的 Q 值写成不动点形式 $Q(G,a) = +100 + \gamma\max Q(G,\cdot)$,会引入不存在的自引用。因此终止状态的目标值**不含 bootstrap 项**
$$
Q(s,a) \leftarrow Q(s,a) + \alpha\big[\,r - Q(s,a)\,\big], \qquad s' = G
$$
实现上即"$done$ 时目标值仅为 $r$"。若不区分,换成带随机奖励的环境就会算错。
---
## 四、探索:为什么必须乱走
### 4.1 覆盖条件
收敛定理要求每个 $(s,a)$ 被访问无穷多次。若一直贪心($a = \arg\max_a Q(s,a)$),许多从未被试探过的动作会被永久错过,错误的估计也无法纠正——这违反了覆盖条件。因此必须引入探索。
### 4.2 ε-greedy 策略
$$
\pi_{\varepsilon}(a\,|\,s) \;=\; \begin{cases}
\dfrac{1}{|A|}, & \text{以概率 }\varepsilon \quad(\text{均匀随机})\\[8pt]
\mathbb{1}\!\left[a = \arg\max_{a'}Q(s,a')\right], & \text{以概率 }1-\varepsilon \quad(\text{贪心})
\end{cases}
$$
数学上写作:
$$
\pi_{\varepsilon}(a|s) \;=\; \frac{\varepsilon}{|A|} + (1-\varepsilon)\,\mathbb{1}\!\left[a = \arg\max_{a'}Q(s,a')\right]
$$
### 4.3 衰减与 GLIE
GLIEGreedy in the Limit with Infinite Exploration)要求:每个动作仍被访问无穷多次,但策略逐渐退化为贪心。本实现采用指数衰减:
$$
\varepsilon_k \;=\; \max\!\left(\varepsilon_{\min},\; \varepsilon_0\,\lambda^{k}\right), \qquad \varepsilon_0=1.0,\ \lambda=0.99,\ \varepsilon_{\min}=0.05
$$
何时到达下限?解 $\varepsilon_0\lambda^{k}=\varepsilon_{\min}$
$$
k^{*} \;=\; \frac{\ln(\varepsilon_{\min}/\varepsilon_0)}{\ln \lambda}
\;=\; \frac{\ln 0.05}{\ln 0.99}
\;\approx\; \frac{-2.996}{-0.01005}
\;\approx\; 298
$$
即前约 300 局以探索为主,之后进入利用阶段;保留 $\varepsilon_{\min}=0.05$ 是防止早期偶然形成的错误估值被完全固化。
---
## 五、奖励设计的数学分析
### 5.1 定理:每步 $-1$ 诱导最短路径
设从某状态沿一条长度为 $d$ 的无撞墙路径走到终点,途中共 $d$ 步:前 $d-1$ 步各拿 $-1$,最后一步拿 $+100$。该路径的(最优)价值为
$$
V(d) \;=\; -\!\sum_{k=0}^{d-2}\gamma^{k} \;+\; 100\,\gamma^{d-1}
\;=\; \gamma^{d-1}\!\left(100 + \frac{1}{1-\gamma}\right) - \frac{1}{1-\gamma}
$$
**单调性**:对任意 $0<\gamma<1$$d$ 越大 $\gamma^{d-1}$ 越小,而括弧内 $100 + \tfrac{1}{1-\gamma}>0$,故
$$
d_1 < d_2 \;\Longrightarrow\; V(d_1) > V(d_2)
$$
**结论:只要每步奖励为负、终点奖励为正,最优策略一定是步数最短的路径,且这一结论对所有 $\gamma\in(0,1)$ 无条件成立。** 若把每步奖励改成 $0$,则 $V(d)$ 不再依赖 $d$,任何能到终点的路径价值相同,智能体就会随意游荡——这就是奖励设计为什么"每步 $-1$"。
### 5.2 价值沿最短路径的分布(数值实例)
以当前默认的 9×9 迷宫(seed 固定)为例,起点到终点 $D=16$ 步,$\gamma=0.9$。距终点 $d$ 步处的稳态价值:
| $d$(距终点步数) | $V(d) = 100\gamma^{d-1} - \frac{1-\gamma^{d-1}}{1-\gamma}$ | 约值 |
|---|---|---|
| 1 | $100$ | 100.0 |
| 2 | $90-1$ | 89.0 |
| 3 | $81-1.9$ | 79.1 |
| 8 | $100\cdot 0.9^{7}-\frac{1-0.9^{7}}{0.1}$ | 41.8 |
| 16(起点)| $100\cdot 0.9^{15}-\frac{1-0.9^{15}}{0.1}$ | **12.7** |
起点价值为正(12.7 > 0),说明该路径"划算";且价值沿路径**单调递减**,颜色从终点向起点变暗——这正是价值热力图快照中看到的"波从 G 向 S 回传"。训练前期该分布被层层填入,快照图记录的就是这个传播过程。
### 5.3 撞墙惩罚的作用
设状态 $s$ 下某动作撞墙($s'=s$),其最优值为 $Q^{*}(s,\text{撞墙})$。代入不动点方程:$Q^{*} = -10 + \gamma\max_{a'}Q^{*}(s,a') = -10 + \gamma V^{*}(s)$。因此
$$
Q^{*}(s,\text{撞墙}) \;<\; V^{*}(s) \;\iff\; V^{*}(s) > \frac{-10}{1-\gamma} = -100
$$
只要该格的可达价值高于 $-100$(一般成立),**撞墙动作永远不是最优**。撞墙惩罚不改变最优策略集合,但把"错误动作"的 Q 值压得明显更低($\gamma V^{*}(s)-10$),形成清晰的负样本,**加速排除而非改变极限**。
### 5.4 信号淹没:γ 过小的后果
价值传播的关键项是 $\gamma^{d-1}\cdot 100$。以 15×15$D=28$ 步)为例:
| $\gamma$ | 起点价值 $\gamma^{27}\cdot100 - \frac{1-\gamma^{27}}{1-\gamma}$ | 观察 |
|---|---|---|
| 0.5 | $\approx 0.006 - 2.0 = -2.0$ | 信号被路费扣光,学不动 |
| 0.9 | $5.8 - 9.4 = -3.6$ | 收敛慢,价值微弱 |
| 0.99 | $76.3 - 23.7 = 52.6$ | 信号充足 |
注意 5.1 的排序定理依然成立,所以即使 $\gamma=0.5$ 理论上仍选最短路径;但 $|\Delta V| \sim \gamma^{d-1}(100+\tfrac{1}{1-\gamma})$ 小到与撞墙惩罚、局部噪声同量级,学习变得极其缓慢。**路径越长,γ 越应接近 1**——这就是"远见"的数学含义。
---
## 六、迷宫生成与拓扑
### 6.1 递归回溯 = 生成树
迷宫取奇数尺寸 $n\times n$:房间格位于偶数坐标,隔墙位于奇数坐标。房间数为
$$
N_{\text{room}} = \left(\frac{n+1}{2}\right)^2
$$
9×9 时 $N_{\text{room}}=25$。递归回溯算法相当于:从 (0,0) 出发做**深度优先搜索**,每访问一个新房间打通相邻一堵墙。最终所有房间连通、且"回路数"为零,即形成一棵**生成树**——树的边数恰为
$$
|E| = N_{\text{room}} - 1 = 24
$$
生成树的性质决定了:**任意两个房间之间有且仅有一条路径**(完美迷宫)。这正是"分支不够复杂"的数学根源:树的分支因子低、死胡同长而少。
> 为什么必须奇数:若 $n$ 为偶数,终点 $(n-1,n-1)$ 落在奇数坐标上,永远是隔墙,迷宫无解。
### 6.2 braid:加弦成环
迷宫内所有"两侧都是路"的隔墙总数为(每对相邻房间一堵墙,横向与纵向各 $\frac{n+1}{2}\cdot\frac{n-1}{2}$ 堵):
$$
|E_{\max}| = 2\cdot\frac{n+1}{2}\cdot\frac{n-1}{2} \;=\; \frac{n^{2}-1}{2}
$$
9×9 时为 40。生成树用了 24 堵,剩余 $40-24=16$ 堵"可拆墙"。braid 参数 $p$ 即以概率 $p$ 拆掉这些墙——每拆一堵,就在树上加一条**弦**。图论中"回路数"等于圈秩(cyclomatic number):
$$
\mu \;=\; |E| - |V| + 1
$$
弦的条数就是独立环的个数。$p=0.3$ 时期望拆掉 $0.3\times16\approx 4.8$ 堵,即引入约 5 个独立环路。环路的引入使同一对起终点**出现多条路径**,Q 表必须在"步数相当的多条备选"之间真正比较,分支复杂度显著上升;$p$ 越大越接近"开阔场地 + 散墙"。
---
## 七、运行与观察
### 7.1 参数
| 参数 | 默认 | 含义 |
|------|------|------|
| `--rows` / `--cols` | 9 | 迷宫尺寸(必须为 ≥3 的奇数)|
| `--seed` | 0 | 迷宫生成与训练的随机种子 |
| `--episodes` | 500 | 训练局数 |
| `--braid` | 0.0 | 拆墙成环概率(0=完美迷宫)|
| `--plot` | 关 | 生成两张训练过程图 |
运行示例(一句话):`python q_learning.py --rows 15 --cols 15 --braid 0.3 --episodes 2000 --plot`
输出物:控制台打印迷宫、每格最优动作(箭头)、贪心走出的一条路径、成功统计;`--plot` 时额外生成 `qlearning_training.png``qlearning_snapshots.png`
### 7.2 四联训练曲线
| 子图 | 数学对象 | 判读标准 |
|------|---------|---------|
| 逐局回报 | $G_0$ 的单次实现(含探索噪声)| 整体上升、波动收窄 |
| 滑动成功率 | 到达概率的滑动频率估计(大数定律)| 趋近 1 |
| 单局步数 | 回合内步数,对比 BFS 最短步 $D$ | 曲线逼近红线 $D$ 即学会最短路 |
| ε 曲线 | $\varepsilon_k = \max(\varepsilon_{\min},\varepsilon_0\lambda^{k})$ | 前约 300 局探索为主 |
其中红线 $D$ 由广度优先搜索求出,等于 5.1 中 $V(d)$ 的极值点对应的步数,作为"已学会最短路"的基准。
### 7.3 价值快照:传播过程的定格
`qlearning_snapshots.png` 在若干训练时刻各拍一张 $V(s)=\max_a Q(s,a)$ 的热力图(同一色标),对应 3.3 的层次收敛分析:
- 早期:全表接近 0(只有被偶然走到终点的格有正值);
- 中期:$G$ 附近的格子率先变亮,价值以每层 $\gamma$ 的比例向四周"渗出",同时回填每步 $-1$
- 后期:整条最短路径被点亮,远处格子的价值沿 5.2 的公式 $V(d)=\gamma^{d-1}(100+\frac{1}{1-\gamma})-\frac{1}{1-\gamma}$ 单调排列。
快照图是"价值从终点反向传播"这一数学事实最直观的证据。
### 7.4 常见现象排查
| 现象 | 数学原因 | 调整 |
|------|---------|------|
| 走不到终点 / 绕圈 | 信号 $\gamma^{D}R_{g}$ 被路费淹没(见 5.4| 增大 $\gamma$ 或终点奖励 |
| 学了很久不收敛 | 传播层次 $D$ 大,覆盖不足(见 3.3)| 增大 `--episodes` |
| 前期好后期退化 | ε 衰减过快,覆盖条件被破坏(见 4.3)| 衰减系数调大(0.995|
| 路径不是最短路 | 每步奖励改为 0,$V(d)$ 失去单调性(见 5.1| 保持每步 $-1$ |
| 结果不可复现 | 探索随机性来自 ε-greedy 采样 | 固定 `--seed` |
---
## 八、进阶实验设计
1. **γ 扫描**:分别取 $\gamma=0.1/0.5/0.9/0.99$ 训练,对照 5.2/5.4 的解析值验证"远见程度"。
2. **ε 扫描**:比较不同 $\lambda$ 下的收敛曲线,观察覆盖—利用的权衡(4.3)。
3. **braid 扫描**$p=0/0.15/0.3/0.5$,用 6.2 的圈秩公式预估环路数,观察步数曲线是否仍收敛到红线 $D$。
4. **加陷阱**:把某些格子设为吸收态,踩中奖励 $-50$ 并终止。$V$ 方程中这些状态加入终态集合,观察策略是否绕行;并对比 SARSA(3.5)——Q-Learning 学最优、SARSA 学安全。
5. **随机风**:以概率把智能体吹向随机方向,使 $P(s'|s,a)$ 从退化分布变为非退化。此时 $E_{s'}[\max Q]$ 与 $\max_{a'}E_{s'}[Q]$ 不再相等,2.5 的化简失效,随机性真正登场。
6. **迁移到标准环境**:把同一套更新套到 FrozenLake 等接口一致的环境,体会表格型方法的适用边界(状态太多时转 DQN)。
---
## 九、小结
走迷宫虽小,却完整覆盖了强化学习的核心数学:**MDP 形式化 → 贝尔曼最优方程 → 压缩映射与唯一性 → 样本化的随机逼近(Q-Learning)→ 探索—利用权衡 → 奖励设计的数值分析**。
贯穿全文的一条主线是:$Q^{*}$ 是贝尔曼最优算子 $T^{*}$ 的唯一不动点,Q-Learning 只是用单步样本 $(s,a,r,s')$ 去逼近它;收敛的快慢由"信号传播层次 $\gamma^{d}$"与"覆盖是否充分"决定。理解这条主线后,把"格子"换成任意可枚举状态、把"上下左右"换成任意离散动作,同一套数学框架即可迁移到调度、寻路、资源分配等实际问题。
---