函数逼近 — 从查表到学规律
这一章讲四件事: 表格为什么必须被换 掉,换成的参数化函数怎么接上监督学习; 「往哪个状态学」变成一个必须显式回答的问题(on-policy 分布); 半梯度这个词「半」在哪,线性情形的收敛定理与代价; 特征构造与神经网络各扮演什么角色。 读完你会理解全书最大的转轨:从「存得下」的世界进入「要泛化」的世界。
1. 转轨:表格的死亡
第一部分的所有方法都默认一件事:每个状态(或状态-动作对)有自己专属的一个数。双陆棋 10^20 个状态已经宣告这条路走不通。本章把值函数换成参数化的函数形式 v̂(s,w)≈vπ(s):线性函数也好、多层神经网络也好、决策树(像流程图一样层层提问的模型)也好,权重向量的维数 d 远小于状态数1。
这一换带来一个质变:改一个权重,许多状态的估计值一起变——在某个状态学到的经验,自动泛化到相似状态。书里的评价一分为二:泛化让学习潜在的更强大,但也更难驾驭和理解1。
意外的红利:函数逼近顺带让 RL 能处理部分可观测问题——只要函数形式上不让值依赖状态的某些侧面,那些侧面就等价于看不见2。
2. 核心原理一:每次更新 = 一条监督学习样例
把 TD(0) 的更新拆开看:它说「状态 S(t) 的值,该更像 R(t+1)+v̂(S(t+1))」。这就是一条输入-输出样例:S(t) ↦ 目标值。于是任何监督学习方法(神经网络、决策树、回归)都能拿来当值函数的学习器——把每次更新当一条样例喂给它即可3。
但不是什么监督学习法都行。RL 有两条硬约束,直接淘汰了一批漂亮方法4:
- 在线增量:数据一条条来,不允许「先攒一大堆旧数据再整批刷」;
- 非平稳目标:控制里策略在变,bootstrap 的目标本身也在漂——静态数据集上研发的精巧方法,遇到会动的靶子就失灵。
3. 核心原理二:「在乎哪些状态」必须说清
表格时代每个状态各管各的,可以处处精确;现在 参数不够用,把这个状态调准必然把别的状态挤歪——于是「更在乎哪些状态的误差」必须显式建模。这就是状态分布 μ(s) 与目标函数 VE(均方值误差)。最自然的 μ 是on-policy 分布:按策略走,停留在各状态的时间占比5。
作者在这里留了句诚实的话:连 VE 是不是对的优化目标都不完全清楚——我们学值函数是为了找好策略,对策略最有用的值函数未必是 VE 最小的那个;只是眼下没有更好的共识答案6。还要记一个坏消息:函数逼近之下,有的方法干脆发散,VE 冲向无穷——这不是危言耸听,第 10 章会给反例7。
4. 核心原理三:梯度下降,和「半」个梯度
SGD(随机梯度下降):每来一个样例,把权重朝「这条样例的误差下降最快的方向」挪一小步8。直观版:误差像山谷的高度,梯度是上坡方向,每次朝下坡踩一小步, 换一条样例踩一步,最后停在谷底。
而 TD 类方法的麻烦在:目标 R+v̂(S′) 里含有 w 自己。严格求梯度就该把这一项也算进去;实际上大家都把它当常数不管——只对 v̂(S(t)) 这一半求梯度,所以叫 semi-gradient(半梯度)9。省事、常用、有效,但经典 SGD 的收敛定理不能直接搬过来——需要单独证。
5. 线性情形:唯一能全证的世界
线性方法把每个状态表示成一个特征向量 x(s),值=权重的加权和 wᵀx(s)。它是最受理论青睐的情形——书里直言:几乎所有学习系统的有用收敛结果,都是线性(或更简单)情形的10。
主走查看线性 TD(0) 的落点(数是推演用的演示值,机制为书中定理):
设两个特征 x₁=「是否靠近出口」(0 或 1)、x₂=「走廊长度」(1–5),权重 w₁=4、w₂= −0.5。
状态 s:x(s)=[1,3] → v̂ = 4×1 + (−0.5)×3 = 2.5
一步后拿到奖励 R=1,后继 v̂(S′)=3.0,α=0.1,γ=0.9:
δ = 1 + 0.9×3.0 − 2.5 = 1.2
w ← w + α·δ·x(s) = [4, −0.5] + 0.1×1.2×[1,3] = [4.12, −0.14]
注意:只访问了 s,但两个权重都动了 → 所有含这些特征的状态的估计都变了。
这就是「改一处、动一片」的具体样子。
线性 semi-gradient TD(0) 收敛到的点有名字:TD fixed point(w_TD=A⁻¹b)11。它的代价也有定量刻画:fixed point 处的 VE 不超过理论最优误差的 1/(1−γ) 倍——γ=0.9 时是最优的 10 倍以内,γ 越大放大越狠。作者如实两边记账:TD 的渐近误差可能明显更差,但方差小、学得快;孰优取决于问题和学习时长12。n-step 推广后,界随 n 增大而变紧、n→∞ 时退回 MC 的最优界——但实践中太高的 n 学得太慢,还是小 bootstrap 划算13。
6. 特征怎么造,网络何时进场
特征选择是往系统里注入领域知识的最主要通道14。书里的工具箱一句话带过:多项式基(在线情形泛化差)、tile coding(把状态空间铺多层错位的网格,每格一个开关;计算便宜、灵活,线性方法的主力)、径向基函数(低维平滑响应)、Fourier 基15。
再往上是非线性方法:多层神经网络+反向传播(把误差从输出逐层传回、算出每个权重该怎么改的算法)。书里对它的定位值得原样记住:这些方法近年大红大紫,名字就叫深度强化学习16——全书 2018 年成书时,已经给 DQN(第 15 章)预留好了理论位置。
7. 作者的判断与证据
书里给了定理/推导的: 线性 TD(0) 收敛(证明核心:矩阵(数字排成的表)D(I−γP) 的列和为 (1−γ)μ>0,故正定)——这个证明依赖 on-policy 分布:μ 恰是策略自己的平稳分布,列和才恰好非负17。请记住这个依赖,它是下一章所有故事的引线:分布一换(离策),证明的地基就没了。
作者的立场: 在函数逼近下,「挑哪些状态学」从技术细节升格为目标定义的一部分;本书选定 on-policy 分布作为本章的立足点,off-policy 推到第 11 章。
8. 边界与局限
- half 的代价:semi-gradient 不是真梯度,只有线性(及部分特殊)情形有收敛保证;非线性情形连局部最优(在小邻域内最好的解)都保证不了。
- 1/(1−γ) 的界只在 on-policy + 线性 + γ<1 下成立;三个条件缺一个都作废。
- 特征构造仍是手工艺术,书里直言「更多的表示选择目前 more art than science」(第 03 章已见),本章的工具箱也只是菜单不是答案。
- 神经网络部分本章只开窗口;它与本框架组合时的稳定性问题,要到第 10 章才见分晓。
9. 可带走的
- 参数少于状态=必须泛化:改一个权重、动一片状态——这是力量也是失控的来源。
- 每次更新就是一条监督学习样例;但你的监督学习器必须吃得了「源源涌来的经验+会漂的靶子」。
- on-policy 分布是表格时代没有的新问题:误差必须在某个状态分布下加权,本书默认「按策略呆得久的状态」。
- semi-gradient 的「半」:目标里的 w 不进梯度;省了事,也丢了现成定理。
- 线性世界的两个数字:TD fixed point 存在且收敛;误差至多 1/(1−γ) 倍于最优——γ=0.9 时付的「近视税」可到 10 倍。
- tile coding 是线性时代的王牌特征;神经网络是下一个时代的——它在本书里的名字就是「深度强化学习」。
- 收敛证明押在 on-policy 分布上——记住这句,下一章它就是案发现场。
10. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| 参数化、泛化的双刃 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:16(搜「number of states (d ⌧ |
| 部分可观测红利 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:22(搜「partially observable」) |
| 更新即样例 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:48(搜「input–output」) |
| RL 的两条硬约束 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:63(搜「incrementally acquired」) · text/12-fm-on-policy-prediction-with-approximation.txt:65(搜「nonstationary」) |
| μ 与 VE、on-policy 分布 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:82(搜「state distribution」) · text/12-fm-on-policy-prediction-with-approximation.txt:95(搜「on-policy distribution」) |
| VE 是否正确目标 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:123(搜「right performance objective」) |
| 可能发散 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:136(搜「diverge」) |
| SGD | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:152(搜「stochastic gradient descent」) |
| 线性方法、特征 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:357(搜「feature vector」) |
| 线性世界几乎全部定理 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:374(搜「Almost all useful」) |
| TD fixed point | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:409(搜「TD fixed point」) |
| 1/(1−γ) 界 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:486(搜「substantial potential loss」) |
| 收敛证明的列和 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:96(搜「stationary distribution」) |
| n-step 界与实用 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:1736(搜「bound」) |
| tile coding 等、深度 RL | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:1727(搜「Tile coding」) · text/12-fm-on-policy-prediction-with-approximation.txt:1734(搜「deep reinforcement learning」) |
| semi-gradient 的定义 | On-policy Prediction with Approximation | text/12-fm-on-policy-prediction-with-approximation.txt:150(搜「semi-gradient」) |