From d2dc1f091058ee326738fbb1ae97013496d47126 Mon Sep 17 00:00:00 2001 From: ViperEkura <3081035982@qq.com> Date: Mon, 31 Aug 2026 17:58:05 +0800 Subject: [PATCH] Simplify q-learning doc --- q_learning/q-learning.md | 463 ++++++++------------------------------- 1 file changed, 91 insertions(+), 372 deletions(-) diff --git a/q_learning/q-learning.md b/q_learning/q-learning.md index 6257ea5..a4232a8 100644 --- a/q_learning/q-learning.md +++ b/q_learning/q-learning.md @@ -1,462 +1,181 @@ -# Q-Learning 走迷宫:原理与数学推导 +# Q-Learning 走迷宫:简明原理与推导 -> 本文是仓库配套文档,对应代码为 `q_learning.py`(numpy 表格型实现,可选 matplotlib 绘图。 +> 对应代码 `q_learning.py`(numpy 实现,可选 matplotlib 绘图)。本文不含代码,只保留核心公式与结论。行内公式用 `$...$`、独立公式用 `$$...$$`,Gitea 网页端可直接渲染;建议搭配支持数学渲染的本地查看器(VSCode 预览、Typora、Obsidian)使用。 --- -## 一、问题形式化:迷宫是一个马尔可夫决策过程 +## 一、问题:迷宫 = 马尔可夫决策过程(MDP) -把走迷宫抽象成标准 MDP 五元组 $(S,\,A,\,P,\,R,\,\gamma)$: +五元组 $(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$ | +| 元素 | 含义 | 取值 | +|------|------|------| +| 状态 S | 智能体所在格子坐标 (r, c) | n×n 网格 | +| 动作 A | 上 / 下 / 左 / 右 | 共 4 个 | +| 转移 P | 在 s 执行 a 后到达 s' 的概率 | 确定性(见下文)| +| 奖励 R | 即时奖励 | +100(到终点)/ −10(撞墙)/ −1(每步)| +| 折扣 γ | 未来奖励的打折系数 | 0.9 | -### 1.1 转移与奖励的具体化 +转移是确定性的:结果由 (s, a) 唯一决定,因此转移概率为退化分布 -动作集 $A=\{0,1,2,3\}$ 对应位移向量 $\Delta=\{(-1,0),(1,0),(0,-1),(0,1)\}$。执行动作 $a$ 后: +$$P(s'\mid s,a)=\delta_{s',f(s,a)}$$ -$$ -s' \;=\; \begin{cases} -s + \Delta_a, & \text{若 } s+\Delta_a \in S \text{ 且非墙}\\ -s, & \text{否则(撞墙或越界,原地不动)} -\end{cases} -$$ +其中 $f(s,a)$ 表示"执行 a 后的实际落点"——撞墙或越界时原地不动,即 $f(s,a)=s$。 -因为结果由 $(s,a)$ **唯一决定**,转移概率是退化分布:$P(s'|s,a)=\delta_{\,s',\,f(s,a)}$。这一点至关重要——后文会看到,确定性环境下 Q-Learning 的收敛分析可以大幅简化。 +回报(Return)为折扣累积奖励,$\gamma<1$ 保证收敛: -奖励函数: +$$G_t=\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}$$ -$$ -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] -$$ +其绝对值的上界为 $|G_t|\le 100/(1-\gamma)$,即收敛有界。目标是最大化起点期望回报:$\pi^{*}=\arg\max_{\pi}\mathbb{E}_{\pi}[G_0]$。 --- ## 二、价值函数与贝尔曼方程 -### 2.1 价值函数的定义 +定义(对策略 $\pi$): -给定策略 $\pi$,定义**状态价值**与**动作价值**: +$$V^{\pi}(s)=\mathbb{E}_{\pi}[G_t\mid S_t=s]$$ -$$ -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] -$$ +$$Q^{\pi}(s,a)=\mathbb{E}_{\pi}[G_t\mid S_t=s,A_t=a]$$ -直觉:$V^{\pi}(s)$ 是"从 $s$ 出发、以后都按 $\pi$ 走"的期望总收益;$Q^{\pi}(s,a)$ 是"在 $s$ 先做 $a$、以后按 $\pi$ 走"的期望总收益。 +**贝尔曼期望方程**:由 $G_t=R_{t+1}+\gamma G_{t+1}$ 与全期望公式(塔性质)可得 -### 2.2 贝尔曼期望方程的推导 +$$Q^{\pi}(s,a)=r(s,a)+\gamma\sum_{s'}P(s'\mid s,a)\,V^{\pi}(s')$$ -利用 $G_t = R_{t+1} + \gamma\,G_{t+1}$,代入 $Q^{\pi}$ 的定义: +$$V^{\pi}(s)=\sum_{a}\pi(a\mid s)\,Q^{\pi}(s,a)$$ -$$ -\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$ 采样)。再结合 +> 用途说明:期望方程**不进** Q-Learning 更新公式(更新用的是下面的 max 版)。它用于:① 作为最优方程的内层成分;② 解任意固定策略的价值——第五节的 $V(d)$ 解析值、热力图数值都由此算出;③ 理解 SARSA 与策略评估。只关心 Q-Learning 更新本身可先跳过。 -$$ -V^{\pi}(s) \;=\; \sum_{a} \pi(a|s)\,Q^{\pi}(s,a) -$$ +**贝尔曼最优方程**(Q-Learning 直接逼近的): -两式联立,即把"无限长的期望"化成了**只与一步奖励和下一状态有关的自洽方程**——这就是贝尔曼期望方程。 +$$Q^{*}(s,a)=r(s,a)+\gamma\max_{a'}Q^{*}(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 的更新本身,本节可先略读。 +(确定性环境下求和 $\sum_{s'}P(s'\mid s,a)\,V(s')$ 退化为直接代入 $s'$。) -### 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$ 打折。 +**存在唯一解**:定义算子 $(T^{*}Q)(s,a)=r(s,a)+\gamma\max_{a'}Q(s',a')$。因 max 算子非膨胀,$T^{*}$ 是 $\gamma$-压缩映射;由 Banach 不动点定理,$Q^{*}=T^{*}Q^{*}$ 有唯一不动点,且迭代以 $\gamma^{k}$ 速率收敛(值迭代的依据)。 --- ## 三、Q-Learning 算法 -### 3.1 从值迭代到随机近似 +用单次观测近似期望: -理论上我们可以反复计算 $Q \leftarrow T^{*}Q$(值迭代)。但现实中我们**不知道 $r$ 和 $P$ 的完整信息**,只能在环境中试走、观测 $(s,a,r,s')$ 四元组。于是用**单次观测**去近似期望: +$$Y=r+\gamma\max_{a'}Q(s',a')\approx(T^{*}Q)(s,a)$$ -$$ -\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)} -$$ +更新公式($\delta_t$ 为 TD 误差): -这就是 Robbins–Monro 随机逼近的思想:用噪声样本替代期望,向不动点方程 $Q - T^{*}Q = 0$ 的根靠近。 +$$Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\max_{a'}Q(s',a')-Q(s,a)]$$ -### 3.2 更新公式与 TD 误差 +其中 $\alpha=0.1$,$\delta_t=r+\gamma\max_{a'}Q(s',a')-Q(s,a)$。 -$$ -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$ 一步。 +- **收敛**:需每个 $(s,a)$ 被访问无穷多次,且学习率满足 $\sum\alpha=\infty$、$\sum\alpha^{2}<\infty$(Watkins 1992,以概率 1 收敛)。本实现取常数 $\alpha$,确定性环境下无采样噪声,固定 $(s,a)$ 可解析解: -**与贝尔曼最优方程逐项对照**: + $$Q_k=(1-\alpha)^{k}Q_0+[1-(1-\alpha)^{k}]Y$$ -| 项 | 表达式 | 角色 | -|----|--------|------| -| 旧估计 | $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 收敛性 - -**Watkins–Dayan 定理**(1992):若 -1. 每个状态—动作对 $(s,a)$ 被访问无穷多次; -2. 学习率 $\alpha_k(s,a)$ 满足 Robbins–Monro 条件 $\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$"。若不区分,换成带随机奖励的环境就会算错。 + 误差以 $(1-\alpha)^{k}$ 几何衰减($\alpha=0.1$ 时约 22 次访问缩小一个数量级);真正的瓶颈是价值逐层传播(层数 = 最短路长 $D$),故迷宫越大越需更多训练。 +- **Off-policy**:未来项用 $\max_{a'}Q(s',\cdot)$,与行为策略(含探索)无关,因此收敛到 $Q^{*}$。 +- **vs SARSA**:SARSA 的未来项用实际执行的 $a'$,逼近 $\mathbb{E}_{a'\sim\pi_\varepsilon}[\cdot]$ 而非 max,收敛到 ε-greedy 策略自身的价值;在带陷阱环境里 SARSA 学出保守绕行,Q-Learning 学理论最优。 +- **终止状态**:$done$ 时目标值不含 bootstrap 项,仅为 $r$。 --- ## 四、探索:为什么必须乱走 -### 4.1 覆盖条件 +收敛要求每个 $(s,a)$ 被访问无穷多次;纯贪心会永久错过未试探的动作,故需探索。 -收敛定理要求每个 $(s,a)$ 被访问无穷多次。若一直贪心($a = \arg\max_a Q(s,a)$),许多从未被试探过的动作会被永久错过,错误的估计也无法纠正——这违反了覆盖条件。因此必须引入探索。 +**ε-greedy**:以概率 $\varepsilon$ 均匀随机选一个动作;以概率 $1-\varepsilon$ 选贪心动作 $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} -$$ +$$\varepsilon_{k}=\max(\varepsilon_{\min},\varepsilon_0\lambda^{k})$$ -数学上写作: +取 $\varepsilon_0=1.0$,$\lambda=0.99$,$\varepsilon_{\min}=0.05$。到达下限所需局数: -$$ -\pi_{\varepsilon}(a|s) \;=\; \frac{\varepsilon}{|A|} + (1-\varepsilon)\,\mathbb{1}\!\left[a = \arg\max_{a'}Q(s,a')\right] -$$ +$$k^{*}=\frac{\ln(\varepsilon_{\min}/\varepsilon_0)}{\ln\lambda}=\frac{\ln 0.05}{\ln 0.99}\approx 298$$ -### 4.3 衰减与 GLIE - -GLIE(Greedy 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$ 是防止早期偶然形成的错误估值被完全固化。 +即前约 300 局以探索为主,之后以利用为主;保留 5% 下限防止估值固化。 --- -## 五、奖励设计的数学分析 +## 五、奖励设计的数学 -### 5.1 定理:每步 $-1$ 诱导最短路径 +**定理(每步 $-1$ 诱导最短路)**:沿长度 $d$ 的无撞墙路径走到终点(前 $d-1$ 步各 $-1$,末步 $+100$),其价值为 -设从某状态沿一条长度为 $d$ 的无撞墙路径走到终点,途中共 $d$ 步:前 $d-1$ 步各拿 $-1$,最后一步拿 $+100$。该路径的(最优)价值为 +$$V(d)=\gamma^{d-1}(100+\frac{1}{1-\gamma})-\frac{1}{1-\gamma}$$ -$$ -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} -$$ +因 $\gamma^{d-1}$ 随 $d$ 严格递减且括弧内恒正,对任意 $\gamma\in(0,1)$ 有 $d_1V(d_2)$。**结论:最优策略必然是最短路径**。若每步奖励改为 $0$,$V(d)$ 与 $d$ 无关,智能体将随意游荡。 -**单调性**:对任意 $0<\gamma<1$,$d$ 越大 $\gamma^{d-1}$ 越小,而括弧内 $100 + \tfrac{1}{1-\gamma}>0$,故 +数值(9×9 迷宫,起点到终点 $D=16$,$\gamma=0.9$): -$$ -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}$ | 约值 | +| 距终点 $d$ | $V(d)$ | 约值 | |---|---|---| | 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** | +| 8 | $100\times 0.9^{7}-(1-0.9^{7})/0.1$ | 41.8 | +| 16(起点)| $100\times 0.9^{15}-(1-0.9^{15})/0.1$ | 12.7 | -起点价值为正(12.7 > 0),说明该路径"划算";且价值沿路径**单调递减**,颜色从终点向起点变暗——这正是价值热力图快照中看到的"波从 G 向 S 回传"。训练前期该分布被层层填入,快照图记录的就是这个传播过程。 +价值沿路径单调递减、从 $G$ 向 $S$ 回传——热力图快照记录的就是这个分布逐层填入的过程。 -### 5.3 撞墙惩罚的作用 +**γ 过小的信号淹没**:传播关键项是 $\gamma^{D}\times 100$。以 15×15($D=28$)为例: -设状态 $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}$ | 观察 | +| $\gamma$ | 起点价值 $100\gamma^{27}-(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$ | 信号充足 | +| 0.5 | $\approx -2.0$ | 信号被路费扣光,学不动 | +| 0.9 | $\approx -3.6$ | 收敛慢 | +| 0.99 | $\approx 52.6$ | 信号充足 | -注意 5.1 的排序定理依然成立,所以即使 $\gamma=0.5$ 理论上仍选最短路径;但 $|\Delta V| \sim \gamma^{d-1}(100+\tfrac{1}{1-\gamma})$ 小到与撞墙惩罚、局部噪声同量级,学习变得极其缓慢。**路径越长,γ 越应接近 1**——这就是"远见"的数学含义。 +排序定理仍成立,但 $|\Delta V|\sim\gamma^{D}(100+\frac{1}{1-\gamma})$ 过小时与噪声同量级,学习极慢。**路径越长,γ 越应接近 1**。 + +**撞墙惩罚**:撞墙动作的最优价值满足 $Q^{*}(s,\text{wall})=\gamma V^{*}(s)-10$,只要 $V^{*}(s)>-100$ 就恒小于 $V^{*}(s)$。它压负样本、加速排除错误动作,**不改变**最优策略集合。 --- ## 六、迷宫生成与拓扑 -### 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$ 越大越接近"开阔场地 + 散墙"。 +- **递归回溯 = DFS 生成树**:房间数 $N=((n+1)/2)^{2}$,通路数 $N-1$。树的性质 ⟹ 任意两房间**唯一路径**(完美迷宫),这是"分支不复杂"的数学根源。 +- **为何奇数尺寸**:房间在偶坐标、隔墙在奇坐标;若 $n$ 为偶数,终点 $(n-1,n-1)$ 落在隔墙上,迷宫无解。 +- **braid 成环**:迷宫内"两侧都是路的墙"共 $(n^{2}-1)/2$ 堵(9×9 为 40,树用 24,剩 16 可拆)。braid 概率 $p$ 即拆墙概率,等价于给生成树**加弦**;环路数(圈秩)等于 $|E|-|V|+1$。$p=0.3$ 时 9×9 约引入 $0.3\times 16\approx 5$ 个独立环,同一对起终点出现多条路径,Q 表需真正比较选择。 --- ## 七、运行与观察 -### 7.1 参数 +运行参数:`--rows/--cols`(默认 9,须为奇数)、`--seed`、`--episodes`(默认 500)、`--braid`(默认 0)、`--plot`。输出:迷宫、策略箭头、贪心路径、成功率统计;加 `--plot` 生成两张图。 -| 参数 | 默认 | 含义 | -|------|------|------| -| `--rows` / `--cols` | 9 | 迷宫尺寸(必须为 ≥3 的奇数)| -| `--seed` | 0 | 迷宫生成与训练的随机种子 | -| `--episodes` | 500 | 训练局数 | -| `--braid` | 0.0 | 拆墙成环概率(0=完美迷宫)| -| `--plot` | 关 | 生成两张训练过程图 | +| 图 | 数学对象 | 判读 | +|---|---|---| +| 逐局回报 | $G_0$ 的单次实现(含探索噪声)| 总体上升、波动收窄 | +| 滑动成功率 | 到达概率的频率估计(大数定律)| 趋近 1 | +| 单局步数 | 回合步数 vs BFS 最短步 $D$ | 降到红线即学会最短路 | +| V(s) 快照 | $V(d)$ 分布逐层填入 | 价值从 $G$ 向 $S$ 回传 | -运行示例(一句话):`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` | +| 现象 | 原因 | 调整 | +|---|---|---| +| 学不到终点 | 信号 $\gamma^{D}R_g$ 被路费淹没 | 增大 γ 或终点奖励 | +| 不收敛 | 传播层数 $D$ 大、覆盖不足 | 增大 `--episodes` | +| 后期退化 | ε 衰减过快破坏覆盖 | 衰减系数调大(0.995)| +| 路径非最短路 | 每步奖励被改为 0 | 保持 $-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)。 +1. **γ 扫描**:$\gamma=0.1/0.5/0.9/0.99$,对照第五节解析值验证"远见"。 +2. **ε 扫描**:不同 $\lambda$ 观察覆盖与利用的权衡。 +3. **braid 扫描**:$p=0/0.15/0.3/0.5$,用圈秩预估环路数,验证步数仍收敛到红线 $D$。 +4. **加陷阱**:某些格设为吸收态(踩中 $-50$ 并终止),观察策略绕行;对比 SARSA 的保守路线。 +5. **随机风**:$P(s'\mid s,a)$ 变为非退化,$\mathbb{E}[\max Q]\ne\max\mathbb{E}[Q]$,随机性真正登场。 +6. **迁移 FrozenLake**:套用标准接口,体会表格法边界(状态太多时转 DQN)。 --- ## 九、小结 -走迷宫虽小,却完整覆盖了强化学习的核心数学:**MDP 形式化 → 贝尔曼最优方程 → 压缩映射与唯一性 → 样本化的随机逼近(Q-Learning)→ 探索—利用权衡 → 奖励设计的数值分析**。 - -贯穿全文的一条主线是:$Q^{*}$ 是贝尔曼最优算子 $T^{*}$ 的唯一不动点,Q-Learning 只是用单步样本 $(s,a,r,s')$ 去逼近它;收敛的快慢由"信号传播层次 $\gamma^{d}$"与"覆盖是否充分"决定。理解这条主线后,把"格子"换成任意可枚举状态、把"上下左右"换成任意离散动作,同一套数学框架即可迁移到调度、寻路、资源分配等实际问题。 - ---- \ No newline at end of file +主线一句话:**$Q^{*}$ 是贝尔曼最优算子 $T^{*}$ 的唯一不动点,Q-Learning 用单步样本 $(s,a,r,s')$ 逼近它**;收敛快慢由"信号传播层数 $\gamma^{D}$"和"覆盖是否充分"决定。理解这点后,把格子换成任意可枚举状态、动作换成任意离散集合,同一框架即可迁移。