跳到主要内容

通读笔记(二)—— Part V 后半 + Part VI/VII/VIII/IX

reading-notes.md。同一套页码锚规则。


第 28 章 用可微仿真解概率反问题(SMDP 的玩具实现)

**玩具问题:**二次衰减的轨迹。轨迹从 +1 或 −1 出发,随 t 增大趋近 0。 SDE:dx = −[λ₁·sign(x)·x²]dt + λ₂·dw,λ₁ = 7,λ₂ = 0.03; p₀ 是一个类别分布,等概率地抽 +1 或 −1(text/14-p261-280.txt:647:656)。 用 JAX + haiku + optax + diffrax(解 SDE 和 ODE)。

**训练:**滑动窗口。单步损失 = 窗口大小 2(每个样本往前走一步), 2500 epoch,lr=1e-3,subsample=5,10 分 23 秒,loss 0.0232; 第二阶段降 lr 到 1e-4、取消 subsample、1000 步,20 分 41 秒,loss 0.0160 (text/15-p281-300.txt:423:456)。

一个很诚实的观察(值得引):

有些部分,尤其是靠近结束时刻(右侧 t=10)的地方,会出现符号翻转、内容基本随机。 这是因为网络主要是在它在训练数据里见过的样本附近被训练的。离得远的地方, 它「没学过」怎么把样本正确地变成可接受的样本。 (text/15-p281-300.txt:426)

两种推理的对照(这是全章的落点):

  • 反向 SDE(带布朗运动项):轨迹初期有噪声运动,然后可靠地收敛到 +1 和 −1; 如果降低精度或缩短训练,分数会含有错误区域,粒子会在到达 t=0 之前飞出去 (text/15-p281-300.txt:544);
  • 概率流 ODE(去掉扩散项,drift 里分数系数从 1 变 0.5): 给出基本是水平的运动,在两个端点处分岔(text/15-p281-300.txt:617)。

第 29 章 基于扩散的时间预测(ACDM)—— 这一章有全书最重要的一个新概念

为什么时间序列也要概率化(书给的论证很有分量)

  • 即使空间平均后的状态里有极微小的歧义,随时间也会导向截然不同的结果;
  • 大多数传统求解器和学习方法把仿真轨迹当成确定性的、一阶马尔可夫的 (一个状态完全决定下一个状态)。
  • 而 Mori-Zwanzig 形式给出的、更现实的视角是:我们观测到系统的一部分, 同时存在一个「未被观测(或未被仿真)」的部分在影响它的时间演化。 (text/15-p281-300.txt:636)

书给的「没什么可失去的」论证:概率仿真器能学着把未观测状态的影响考虑进来。 最坏情况下,如果这个未观测状态影响可以忽略,我们会看到一个均值状态、 方差实际上为零。所以没什么可失去的!(text/15-p281-300.txt:644)

无条件稳定(unconditional stability)—— 全书最独特的发现之一

书用 Note 框标出(text/15-p281-300.txt:661):

基于扩散的时间预测器最有意思的一面是它们的时间稳定性。 看起来扩散过程迫使网络学会处理状态里的扰动和累积误差,而不会轻易脱轨。 这对无条件稳定至关重要 —— 也就是说,神经网络可以被自回归地调用任意多次而不炸掉。

29.1 条件化的坑(一条反直觉、但书说是关键的做法)

设 x = (c, d),c 是条件、d 是目标数据。时间预测里 c 包含 x_t(还可以有雷诺数等)。

核心带走点:所有用于条件化的输入,都应该和扩散过程的输出被同样对待。 (text/15-p281-300.txt:675)

书自己承认这乍看反直觉(条件更像输入而不是输出)。理由有两条:

  1. 训练时「强迫」网络把条件和目标一起去噪,会迫使它充分考虑条件变量, 从而让输出的特征与条件紧密缠绕在一起;
  2. 在高噪声水平上抹掉条件信息,还有一个额外的好处:减少误差累积。 因为反向过程 p_θ 的最初几步由于条件很噪,基本上是无条件的, 所以前几个去噪步在 c 里累积的误差不会立刻进入预测 d。 (text/15-p281-300.txt:678)

推理时的做法:因为我们知道 c 的确切值,而噪声 ε 也完全在掌控中, 所以可以保证去噪时刻 r 的条件 c_r 恰好有正确的内容。 每一步之后用已知的真值 c 加正确的噪声量重新算一遍 c_{r−1}, 保证零漂移,让扩散模型专心产生准确的 d(text/15-p281-300.txt:689)。

⚠️ 记号的坑:这一章用 r 表示去噪时间,t 表示物理时间。 物理时间 t 和去噪时间 r 是完全正交的 —— 去噪过程除了「被要求产生一个 遵守系统动力学的输出」之外,不以任何别的方式与 t 交互(text/15-p281-300.txt:706)。

29.3 现代 U-Net(和第 6 章那个老 U-Net 的三处差别)

(text/15-p281-300.txt:768)

  1. skip connection 被换成了注意力机制;
  2. GELU 激活替代 ReLU;
  3. 每一层都用 group normalization。 另外用了 Transformer 来的正弦位置嵌入,把扩散步通过一个时间嵌入 MLP 接进 U-Net 的各层。

这个架构是许多流行扩散模型的骨干,通常比更简单的架构好几个百分点 (有些情况下好得多)。

注意力放哪儿(一个很实际的工程细节):

  • 常规注意力(softmax 注意力)对输入尺寸是二次的,所以只用在 U-Net 的瓶颈层 —— 那里潜空间最小,注意力的稠密连接不至于让资源爆掉;
  • skip connection 上用线性注意力 —— 它对输入尺寸线性, 但对内部核维度仍是二次的;而那个维度可以自由选。 (text/16-p301-320.txt 的散文行)

29.10 结论(书对「什么时候该用扩散」给了非常明确的边界)

✅ 得到了 PDE 时间预测的概率模型,能估计数据集里的变化与不确定性并在推理时再现; 提供沿时间的后验采样,可以多跑几次推出不同的可能解。

反面(书讲得毫不含糊):

扩散模型在预测均值解上一般并不比经典方法更好。 因此,如果你数据里的输入-输出关系是唯一的,扩散模型不会划算, 只会带来更高的推理计算量。

**但对大多数非平凡数据集扩散模型会划算:**数据里的歧义不会被平均掉, 而是被当成分布来处理和再现。 再加上无条件稳定这一点:

给定合适的学习任务,训练出的模型不会随时间炸掉,也不会把输入变成平凡的稳态。 这两种情况在用其他训练方法训出的模型里都很常见。 相反,基于扩散的网络能在任意长的 rollout 上保持参考数据的统计特性。 很难证明它们永远不发散,但在我们的测试里,稳定的网络在几十万个 rollout 步的过程中 都没有发散。这是非常有吸引力的行为,表明基于扩散的模型有着根本不同的行为。


第 30 章 无条件稳定(Part V 里最有实操价值的一章,是一整套消融实验)

中心问题

要得到无条件稳定(在任意长的 rollout 上都稳定)的网络,需要哪些成分? 是需要归纳偏置或特殊的训练方法,还是仅仅是训练足够多不同初始化的问题? (text/17-p321-340.txt:8)

书先给了一个总的判断:

前面几章的「成功案例」——有些设置还相当简单——表明无条件稳定对基于神经网络的 预测器来说「没什么特别的」。也就是说,它不需要特殊的损失函数或超出「正常学习设置」 (合适的超参、足够大的模型加上足够的数据)的技巧。 有意思的是,神经网络架构似乎真的不太重要:只要足够大,几乎「任何」架构都能得到稳定的 rollout。 (text/17-p321-340.txt:12)

实验设置

任务训练范围测试范围(外推)
Inc(较容易的不可压圆柱绕流)雷诺数 200–900960 / 980 / 1000(记作 Inc-high)
Tra(复杂的跨音速尾流,Re=10,000)马赫数 0.53–0.90.50 / 0.51 / 0.52(记作 Tra-ext)—— 书说这个马赫数很难,因为含有大量与流动交互的激波

每个架构在每个序列上跑 3 次训练,rollout 展开 200,000 步。

书自己的免责声明:这个展开长度不能证明这些网络给出无限长的稳定 rollout, 但它们发散的概率极小。(text/17-p321-340.txt:43)

30.2 三种稳定化手段的对照

方法做法
U-Net-ut展开训练:梯度在训练时穿过多个时间步反传
U-Net-tn单步预测 + 训练噪声:加噪声来减少数据漂移,噪声模拟推理时累积的误差
ACDM自回归条件扩散模型

结果:

  • Inc-high 上三种方法、所有训练轮次全部无条件稳定。 书的解释:这个流动虽不定常但完全周期,所有网络的结果都是简单的周期轨迹, 从而防止了误差累积。这个例子说明对较简单的任务,长期稳定性不太是个问题 (text/17-p321-340.txt:62);
  • Tra-ext 上:三个 U-Net-tn 里有一个在头几千步内就出了稳定性问题, 退化成一个没有涡的简单均值流预测;
  • U-Net-ut(展开训练)和 ACDM(扩散)在所有序列和训练轮次上完全稳定;
  • 自回归扩散模型是全面无条件稳定的,所以书在后续消融里把它们剔除, 专注在稳定性更难达到的 U-Net 上(text/17-p321-340.txt:67)。

30.3 最重要的稳定性判据:展开步数 m

最重要的稳定性判据是展开步数 m:m ≤ 4 的网络一致地拿不到稳定的 rollout, 而 m ≥ 8 就足以在不同马赫数上都稳定。 (text/17-p321-340.txt:89) 不同马赫数的泛化测试没有区别。

三个「无关紧要」的因素(书特意列出,很有价值):

  1. **预测策略:**用残差预测(预测与上一时间步的差)而不是完整时间步,不影响稳定性;
  2. 训练数据量:把数据减少 8 倍(每个马赫数从 1000 个时间步降到 125 步, 同时训练 8 倍多的 epoch 以求公平),稳定性不受影响 —— 前提是这个缩减仍保留了完整的物理行为,即完整的涡脱落周期;
  3. **骨干架构:**用展开训练也能让其他骨干(比如 dilated ResNet)拿到完全稳定的 rollout。 不带 dilation 的 ResNet 只有一个训练出的网络稳定,很可能是因为感受野变小了。 (text/17-p321-340.txt:92)

30.4 批大小 vs 展开长度(这是本章的核心裁决)

  • 批大小是个重要因素:和图像领域一样,小批次已知能改善泛化 (这正是用 mini-batch 而不是全数据集梯度的动机);
  • 只在大批次下勉强够到理想展开长度的网络,可以靠更小的批次稳定下来。 但这个效应不能完全免掉展开训练 —— 不做展开的网络在所有测试过的批大小上都不稳定;
  • 增大批次在两个数据集上都让训练时间更长(计算的内存效率变差);
  • 用更长的展开不一定导致更长的训练时间,因为可以用更少的每 epoch 更新数去补偿 (例如:250 个 batch × rollout 4,或者 125 个 batch × rollout 8 —— 每个网络在训练过程中见到的仿真状态总数保持不变)。

裁决:要拿到无条件稳定的网络和神经算子,一致地更划算的做法是 「大的展开长度 + 一个足够占满可用 GPU 显存的批大小」。 也就是说,靠更长的训练展开比靠更小的批次更高效地达成稳定。 (text/17-p321-340.txt:128)

30.5 结账(可直接搬进拆解的清单)

不用扩散的话,要考虑的因素:

  • 训练时用长展开;
  • 小批大小;
  • 两者相比:更长的展开更可取,而且训练时间比小批次更快;
  • 同时,网络要足够大(取决于学习任务的复杂度)。

不实质影响长期稳定性的因素:

  • 训练时的预测范式(残差和直接预测都行);
  • 没有带来新物理行为的额外训练数据;
  • 不同的网络架构(尽管每种架构理想的展开步数可能不一样)。

第 31 章 基于图的扩散模型(DGN / LDGN)

这一章的两个新主张

主张一:扩散模型擅长「补全数据分布」。

即使训练数据对单个例子(由物理域的几何、边界条件和物理参数定义)只有一个不完整的分布, 「从许多不同例子里学习」这个全局视角,也能让网络在看过许多不同例子的部分数据之后, 把后验分布补全。(text/17-p321-340.txt:166)

主张二:扩散模型能跳过瞬态热身。

对许多涉及湍流的实际应用,访问可能流态的完整分布是关键的 (由此可导出 RMS、两点相关等统计量)。 扩散模型的强项正在这里:不必模拟一段冗长的瞬态阶段去收敛到平衡态, 扩散模型可以完全跳过瞬态热身,直接产生想要的样本。 (text/17-p321-340.txt:170)

结构

  • 网格(节点 𝒱_M、边 ℰ_M)代替规则网格;DDPM(以及流匹配)直接作用在网格节点上;
  • DGN = 直接在物理空间上做扩散;
  • LDGN = 在一个**变分图自编码器(VGAE)**的预训练语义潜空间里做扩散;
  • 分工:VGAE 抓高频信息(空间梯度、小涡),LDGN 专注中到大尺度的模式(尾流、涡街)。 解耦这两个任务简化了生成式学习过程;推理时 VGAE 的解码器还能帮着去掉 LDGN 样本里的残余噪声(text/17-p321-340.txt:276);
  • 一个必须点破的架构问题:普通的图扩散模型用顺序消息传递在图上传播节点特征, 但这对大尺度现象失效 —— 全局特征的去噪会被消息传递有限的触及范围卡住。 解法:处理器用多尺度 GNN,在 𝒢 和它的多个粗化版本上以 U-Net 的方式做消息传递, 粗化用的是 Guillard 粗化算法(本来是给 CFD 快速网格粗化用的) (text/17-p321-340.txt:260)。

3D 机翼实验的数字(全书最好的一组性能对比)

**任务:**3D 湍流里的机翼表面压力分布。翼型在相对厚度、梢根比、后掠角、扭转角上变化。

  • 用 GNN 的理由:规则网格绕机翼要 10⁵ 个以上的单元, 而表面网格表示只要约 7,000 个节点(text/17-p321-340.txt:337);
  • 训练数据的关键限制:用 OpenFOAM 的 PISO 求解器做分离涡模拟(DES), 取统计平衡刚达成之后的 250 个连续状态这只占「达到统计稳定的方差所需状态数」的约 10% —— 所以模型是在对每个 case 只有很片面的视野下训练的(text/17-p321-340.txt:340)。

指标:Wasserstein-2 距离,两种算法:

  • W₂^node:把每个节点的分布独立处理再平均 → 反映逐点统计(均值、标准差)的准确度, 但不惩罚错误的空间相关性;
  • W₂^graph:考虑图上所有节点的联合分布会惩罚空间相关性
方法W₂^graph
LDGN(潜空间扩散)1.95 ± 0.89
DGN2.12 ± 0.90
GM-GNN(高斯混合基线)4.32 ± 0.86
(text/17-p321-340.txt:362)

计算性能(书自己提醒「跨实现的运行时比较总要打个折扣」):

时间
真值求解器(8 个 CPU 线程),模拟瞬态阶段 + 2500 个平衡态2,989 分钟
LDGN 生成 3000 个样本(8 CPU 线程)49 分钟
LDGN 生成 3000 个样本(单 GPU)2.43 分钟

若只算生成单个收敛态(比如拿去当另一个仿真器的初始条件), CPU 上加速四个数量级,GPU 上五个数量级。 靠潜空间,LDGN 不但更准,还比 DGN 快 8 倍,而训练时间只多约 55%。 (text/17-p321-340.txt:371)


第 32 章 扩散图网络的分布精度(椭圆 case,一张极有价值的方法对照表)

任务:预测椭圆柱周围的压力场 p,只在浸没体的表面上。 关键设计:训练轨迹被故意做得很短 —— 短到覆盖不了一个完整的振荡周期, 也就是说它们没有显式提供系统的完整统计信息。 要证明的点:扩散训练能通过组合多个初始条件和几何形状的信息,学到完整的统计。 书说这是「一个非常强大的能力,把它和其他概率学习方法区分开来」 (text/17-p321-340.txt:393)。

真值分布是双峰的,由椭圆后方反复的涡脱落造成 —— 所以模型既要抓住两个极值(密度更高的区域),也要抓住密度较低的中间部分 (text/18-p341-360.txt:256)。

七种方法的定量对照(这张表是全书对概率方法最完整的横评)

方法均值的 R²标准差的 R²W₂ (1d)W₂ (nd)
DGN0.99890.98140.01160.1536
LDGN0.99860.96140.01430.1787
Latent Flow-Matching DGN0.99850.84250.01540.1635
VGAE0.99940.88180.01300.2050
Flow-Matching DGN0.99760.42370.02350.2256
Bayesian Graph Net0.9980−0.6514 ← 比常数预测还差0.03630.5987
Gaussian Mixture Graph Net0.97080.10790.05350.7174
(text/18-p341-360.txt:216:253)

这张表最有冲击力的一点:所有方法的「均值 R²」都在 0.97 以上,几乎分不出高下; 而「标准差 R²」从 0.98 一路掉到 −0.65。 也就是说:学均值谁都会,学分布才是分水岭。

书自己的观察:

  • 常规 DGN 的噪声在这里一定程度上被平均掉了,表现甚至能超过 LDGN 版本;
  • 流匹配能以零头的成本产生这些分布,因此一般更可取;
  • 贝叶斯网络和高斯混合模型的问题在分布图上非常清楚地显现出来;
  • VGAE 的问题在这里也更清楚了:它有模态坍缩(mode-collapse)问题, 在更复杂的场景里更严重;
  • 图上的 Wasserstein 距离基本抓住了上述直觉,但没能反映外围(和内部)部分匹配得多好。 (text/18-p341-360.txt:256)

第 33 章 概率学习的讨论(Part V 结账)

能对分布做训练和推理 / 理论很成熟 / 训练稳定推理成本(略微)增加 / 对确定性场景没有真正的优势

书还有一句很有意思的观察:

令人惊讶的是,(概率方法的)有些部分实际上比关于更简单学习方法的基本问题 发展得还更完善。(text/18-p341-360.txt:272)

一个明确的例外:

对确定性场景,扩散方法优势相对少:它们不更准,而且通常带来略高的计算成本。 一个有趣的例外是长期稳定性(见第 30 章)。

最后的推荐(一句话可带走): 如果你的问题包含歧义,以流匹配形式出现的扩散建模是首选方法。 如果你的数据包含可靠的输入-输出对,那就用更简单的确定性训练。 (text/18-p341-360.txt:288)


Part VI:强化学习(第 34–35 章)—— 全书最短的一部分,而且结论是「输了」

第 34 章 强化学习导论

基本框架:环境接收智能体的动作 a,回给它状态 s 形式的观测和奖励 r。 学习目标:arg max_θ E_{a∼π(;s,θ_p)}[Σ_t r_t](text/18-p341-360.txt:317)。

两大类算法:

做法
策略梯度网络直接从环境观测里选动作;训练时提高「导致轨迹剩余部分回报更高」的动作的概率
值函数方法(如 Q-Learning)优化一个状态-动作值函数(Q 函数):网络接收 s 和 a,预测该输入下轨迹剩余部分的平均累积奖励 Q(s,a);选动作时最大化 Q
actor-critic(两者结合)策略网络产生的动作由另一个网络给出的「状态潜力变化」来评分。PPO 属于这一类,是本章的选择

PPO 为什么存在(书讲得很清楚)

actor 的目标本质上依赖 critic 的输出(它反馈哪些动作值得做), critic 又依赖 actor 生成的动作(这决定探索哪些状态)。

这种相互依赖会促成不稳定:比如被严重高估或低估的状态值会在学习时给出错误的冲量。 回报更高的动作往往也有助于到达信息价值更高的状态。 结果是:当个别样本的(可能错误的)价值估计被允许不受限制地影响智能体的行为时, 学习进展可能会崩溃。 PPO 就是为专门对抗这个问题而提出的:限制单个状态价值估计能对 actor 行为变化 产生的影响。(text/18-p341-360.txt:347)

PPO-clip 的具体做法:用一个之前的网络状态 θ_p 限制每一步的变化; 目标函数里用 clip(a,b,c) 把比值 π(a;s,θ)/π(a;s,θ_p) 夹到 [1−ε, 1+ε]。 critic 用值函数 V(s;φ) 预测从状态 s 起的期望累积回报, 目标是最小化优势 A 的平方;A 用 广义优势估计(GAE) 算: A(s_t,a_t;φ) = Σ_{i=0}^{n−t−1} (γλ)^i · δ_{t+i}, 其中 δ_t = r_t + γ(V(s_{t+1};φ) − V(s_t;φ))。 γ 和 λ 控制遥远未来的奖励和状态价值预测对优势计算的影响,通常取小于 1 (text/18-p341-360.txt:392)。

34.3 RL 与 DP 最本质的差别(这一段是整个 Part VI 的关键)

在带可微物理(DP)损失的控制力估计器设置里,长期依赖是靠「把损失梯度穿过仿真步 传回之前的时间步」来处理的。 与之相反,强化学习通常把环境当成一个没有梯度信息的黑箱。 用 PPO 时,是由那个价值估计网络来追踪长期依赖 —— 靠预测任何动作对未来系统演化的影响。 (text/18-p341-360.txt:415)

另一处差别:PPO 靠给 actor 选的动作加一个随机偏移来探索动作空间, 从而发现比之前更精细的新行为模式(text/18-p341-360.txt:410)。

奖励的设计(和 DP 的损失几乎一一对应):

r_t = r_t^f + r_t^o
r_t^f = −‖a_t‖² # 每一步都给:施加力的负平方范数
r_t^o = −‖u* − u_t‖² 若 t = n−1 # 只在轨迹末尾给:与目标态的 L2 距离
0 否则

(text/18-p341-360.txt:433)


第 35 章 用 RL 控制 Burgers 方程(RL vs DP 的正面对决)

**任务:**训一个控制力估计器网络,预测在两个给定状态之间产生平滑过渡所需的力。 和第 19 章 DP 版本的直接对比。

书自己提出的核心问题:

一个有意思的问题是:免模型(model-free)的 PPO 强化学习, 能不能匹敌基于模型的 DP 训练的表现?我们将在学习速度和所需力的量两方面比较。 (text/18-p341-360.txt:504)

**设置:**32 个格子、粘性 0.003、32 步、dt=0.03;1000 个 case (800 训练 / 100 验证 / 100 测试)—— 和第 19 章同样的规模 (text/18-p341-360.txt:533)。 RL:10 个并行环境,每次 rollout 收集 320 步,每次更新 10 epoch,lr=1e-4,batch 128。 书说预训练的智能体已经训了 3500 次迭代,notebook 里只再做 500 次微调; 500 次 rollout 约 2 小时,所以从头训要将近 18 小时(text/18-p341-360.txt:645)。

两个网络架构不同:

  • actor 用 Holl 等 [HKT19] 的 U-Net 变体(和第 19 章的 CFE 一致);
  • critic 用一串卷积 + 最大池化(核 3、池化核 2 步长 2)把特征图降到 1 个值, 最后一个全连接层合并所有通道给出预测的状态价值(text/18-p341-360.txt:464)。

对比的关键指标:施加的力有多大

书解释了为什么这个指标才是对的:

这个任务用「在最后一个时间步施加一个巨大的力」就能平凡地解决。 因此理想的解会考虑 PDE 的动力学,尽量少施加力。 所以这个指标非常好地度量了网络对底层物理环境(这里是 Burgers 方程)学到了多少。 (text/19-p361-380.txt 散文)

结果(三条,全部是 DP 赢)

  1. 视觉质量:训练好的 RL 智能体能相当好地重建轨迹, 但「它们仍然……」(比 DP 更噪);DP 模型产生的结果噪声更少;
  2. 力的大小:DP 学会施加略低的力。 因为两种方法在「到达最终目标状态的程度」上打平, 所以力的大小是比较两者的主要指标。 在「力 vs 真值」的散点图上,DP 的橙点总体上更贴近对角线 —— 即这个网络学得更好;
  3. 收敛速度:DP 显著更快。

    不感知物理的 RL 训练与紧耦合求解器的 DP 方法之间,主要区别在于后者带来显著更快的收敛。 也就是说,数值求解器提供的梯度给出的学习信号,比 RL 过程那种无方向的探索好得多。 RL 训练的这种行为,部分可以归因于「同策略(on-policy)」的训练数据收集方式, 以及强化学习技术那种「暴力」的探索。

书的最终裁决:

PPO 强化学习相比可微物理方法施加了更高的力,因此 PPO 给出的学习到的解质量略逊。 此外,RL 情形下收敛所需的时间显著更高(无论按墙钟时间还是按训练迭代数计)。

但书也公平地列了 RL 的一个优势:

强化学习算法不像 DP 算法那样受训练集大小的限制,因为新的训练样本是同策略生成的。 然而这也在训练时引入了额外的仿真开销。


Part VII:改进的梯度(第 36–42 章)—— 全书的第二个落点,也是最理论的一块

这一部分兑现了第 3.8 节(优化与收敛)埋下的伏笔。

第 36 章 尺度不变性与求逆

36.1 问题的核心(书用一个两行的玩具例子讲透了)

𝒫(x₁, x₂) = [x₁, α·x₂] L(𝒫) = |𝒫|²
  • **α = 1:**损失景观径向对称,x₁ 和 x₂ 行为一样,梯度垂直于等值线, −η∇x 直指原点的最小值书点明:这是经典深度学习场景(大多数监督学习和分类问题)面对的设定;
  • **α 变大:**远离最小值的地方损失景观沿 x₂ 变陡,x₁ 和 x₂ 的尺度差越来越大; 梯度沿 x₂ 增长。为了不让优化炸掉,只能选更小的学习率 η,而这又减慢了沿 x₁ 的进展。 结果是:沿 x₂ 快速移动到接近 x 轴,然后极其缓慢地朝最小值往左爬。

书自己加的一句更糟的话:「更糟的是,常规更新实际上施加的是这个缩放的平方!」 而在多维的场景里,找到一个好的学习率会极其困难。 (text/19-p361-380.txt 第 36.1 节)

为什么物理问题必然遇到这个:

物理过程几乎总是给不同分量引入不同的缩放行为: 物理状态里有些变化很敏感、会产生巨大的响应,另一些几乎没有影响。

一个必须澄清的点(书自己怕人误解,特意写了):

求逆当然不等于取负(g⁻¹ ≠ −g)。取负的梯度肯定会往错的方向走。 我们要的更新仍然要指向损失下降的方向,但要顾及不同尺度的维度。

尺度不变性的定义(书用 Note 框给的):

对给定函数的一个尺度不变的优化,在该函数的不同参数化(即缩放)下会给出相同的结果。 即:上面那个玩具问题里,无论 α 取什么值,优化轨迹都应该一模一样。

36.2–36.6 四种更新的对账(这张表是 Part VII 的骨架)

更新式单位函数敏感度接近最优时函数复合的一致性主要代价
GD(梯度下降)Δx = −η·∂L/∂x(参数在分母,单位是反的;不同单位的参数无法用同一个 η 修正):损失变化按导数的平方走 ⟹ 缩放 α 得到 α²;敏感函数得到大更新 → 梯度爆炸;不敏感函数得到小更新 → 梯度消失变慢:梯度趋零 ⟹ Δx→0便宜
拟牛顿(BFGS 等)Δx = −η·(∂²L/∂x²)⁻¹·∂L/∂x(η 可以无量纲):逆 Hessian 给出 1/α² 抵消更快:逆 Hessian 的特征值随景观变平而增大,步子变大 —— 复合函数的 Hessian 带非线性项,依赖内层雅可比的平方,所以中间潜空间的更新在算完整条链之前是未知的Hessian 按参数量平方增长,求值和求逆都很贵;Hessian 接近不可逆时数值不稳;要求目标函数二阶可微(而 ReLU 的二阶导是零);高阶导数在参数空间里变化更快,更容易受损失景观里的高频噪声影响
逆梯度(IG)Δx = (∂x/∂y)·Δy(自动和参数同单位,不需要任意的学习率):更新按 α⁻¹ 缩放仍能推进优化 —— 中间空间的变化与它们各自的依赖无关(至少到一阶),所以在所有梯度算完之前就能估出这些空间的变化。连牛顿法带逆 Hessian 都没做到这一点需要雅可比 ∂x/∂y 的逆:只对方雅可比有定义(输入输出同维),而优化里输入通常高维、输出是标量;而且即使是方的也可能不可逆
逆仿真器(Δx_PG)Δx_PG = (𝒫⁻¹(y₀+Δy; x₀) − x₀)/Δy · Δy需要一个局部逆求解器的表达式和离散化

Δx_PG 的关键性质(书自己称它为「理想设定」):

应用更新 𝒫⁻¹(y₀+Δy; x₀) − x₀ 时,它会精确地产生 𝒫(x₀+Δx) = y₀+Δy, 尽管 𝒫 可能是个高度非线性的函数。 (text/20-p381-400.txt:28) 与 IG 的关系:Δx_PG 到一阶等于 IG,但含有非线性项, 即 Δx_PG/Δy = ∂x/∂y + 𝒪(Δy²)(text/20-p381-400.txt:137)。

局部逆(local inverse)这个概念很要紧:

  • 𝒫⁻¹(y; x₀) 而不是全局逆 𝒫⁻¹(y);
  • 理由:x 空间里可能有非常不同的位置产生非常相似的 y,我们要找离当前猜测最近的那个。 这对在多模态设定里得到行为良好的解很重要 —— 避免解流形变成一堆散落的点。* (text/20-p381-400.txt:18)
  • 书给的例子极清楚:𝒫(x) = x² 没有全局逆(每个 y 有 ± 两个解), 但我们可以通过「从初始猜测出发选最近的那个解」轻松构造一个局部逆。 (text/20-p381-400.txt:97)
  • 可微函数只要雅可比非奇异,逆函数定理就保证局部逆存在 —— 因为逆雅可比本身就是一个局部逆函数(只是一阶的,不是最准的那个)。

「时间反演」这个直觉(书给的一个漂亮的物理论证):

仿真器的逆函数通常就是时间反演的物理过程。有些情况下,把正向仿真器的时间轴翻转 (t → −t)就能给出一个够用的全局逆仿真器。 而且:只要物理过程不销毁信息,雅可比就是非奇异的。事实上人们相信, 我们宇宙里的信息不会被销毁,所以只要我们有对状态的完美知识, 任何物理过程理论上都可以被反演。因此,期待 𝒫⁻¹ 在许多场景里能被写出来,并非不合理。 (text/20-p381-400.txt:57) 但书立刻给了限制:除非仿真器实践中销毁了信息(累积的数值误差、刚性线性系统); 而且仿真器本身必须足够精确 —— 对更复杂的设定(比如很多时间步的流体仿真), 第 3.7 节用的那种一阶、二阶格式是不够的(text/20-p381-400.txt:111)。


第 37 章 四种优化器的实测对比(Part VII 的主走查,数字全在)

**设置:**x ∈ ℝ²,y(x) = [x₀, x₁²],L(y) = y₀² + y₁²;起点 x = [3, 3],目标是原点。 用 JAX。

第一个关键数字:起点处的梯度 ∂L/∂x = [6, 108]。

虽然我们知道该沿对角线朝原点走,但这个梯度一点都不对角 —— 它沿 x₁ 有一个强烈占优的分量,值是 108。 (text/20-p381-400.txt:250)

四种方法各走 10 步的结果:

方法步长10 步后的位置到原点的距离
GDη = 0.01[2.451, 0.962]2.63
Newtonη = 1/3[0.052, 0.924]~0.93
PG(逆仿真器)[0.084, 0.504]0.51
(text/20-p381-400.txt 散文行)
步长是特意选的,使得三者的第一步幅度大致相同,以便公平比较轨迹。

书对第一步与对角线对齐程度的度量:PG 的 1.356 最大,证实了它最接近理想的对角线。

37.7 y 空间里发生了什么(这一节是全章最有洞察力的一段)

要理解这些方法的行为和差别,关键是记住:我们面对的不是一个在 x 和 L 之间映射的黑箱, 而是中间还有些空间在起作用。我们这里只有一个 y 空间, 但在深度学习的设定里,我们可能有大量潜空间,而我们对它们有一定的控制权。 (text/20-p381-400.txt 第 37.7 节)

三条轨迹在 y 空间里的样子:

  • PG:我们显式地从 L 映射到 y、再映射到 x,所以已经得到了 y 空间的轨迹 —— 它是一条笔直的、朝原点走的对角线;
  • **GD:**很次优的轨迹。原因:我们拼接的是雅可比,走的是局部上应该降低损失的方向; 但 y 的位置由 x 决定,所以在拿到最终的点之前,我们不知道自己会落在 y 空间的哪里

    (对一般的神经网络来说,在真正做完一次 GD 更新之前, 我们不知道会落在哪些潜空间的点上。)

  • Newton:好一些,但仍然明显是弯曲的,近似不了这个例子的高阶项。

    牛顿法也没好到哪儿去:我们算一阶导数(像 GD 那样),再为整个过程的 Hessian 算二阶导数。但因为两者都是近似,一次更新步产生的实际中间状态在整条链算完之前是未知的。

37.9 一个很实用的补充:如果没有解析逆怎么办 可以用牛顿法或 BFGS 数值地求局部逆。 书用 scipy 的 fmin_l_bfgs_b 演示, 得到的结果和解析逆版本的差别在浮点精度量级上。


第 38 章 尺度不变物理训练(SIP)—— 把 Δx_PG 装进网络训练

算法(三段式,这是 SIP 的定义)

① 对损失 L 做一个牛顿步 ⟹ 得到 y 空间的步 Δy
② 对物理部分用逆仿真器 ⟹ 得到 x 空间的步 Δx_PG
③ 对神经网络用 GD ⟹ 更新 θ

(text/20-p381-400.txt 第 38 章 + text/21-p401-420.txt)

**两个学习率:**网络的 η_NN 和上面那个步长 η。 到一阶,网络权重的有效学习率是 η_eff = η · η_NN。

书的建议:η 设得尽可能大,只要逆仿真器的精度允许。很多情况下 η = 1 是可以的。

38.4 消融实验(用一个可调条件数的玩具问题)

问题带两个参数:ξ 决定 𝒫 的条件数(ξ 大 = 病态),φ 描述 x₁ 和 x₂ 的耦合 (φ=0 时 Hessian 的非对角元消失)。

情形结果
ξ = 1(完美条件)所有网络优化器都收敛,Adam 略有优势
ξ = 32(相当病态)只有 SIP 和 Adam 成功把网络优化到一个(低损失)
只变 φ(ξ=32 固定)Adam 的表现劣化超过一个数量级

为什么 Adam 在病态时还能撑住、而参数耦合时就不行(书给的解释极清楚):

Adam 对 Hessian 的对角近似,在 x₁ 和 x₂ 处于不同尺度时能减小缩放效应; 但当参数被耦合时,缺少非对角项就阻止了这一点。 SIP 训练对耦合参数没有问题,因为它的优化更新步用的是满秩的 Hessian ∂L/∂x。 (text/21-p401-420.txt 第 38.4 节)

一个诚实的成本说明:

SIP 相对较慢的收敛(按时间算)主要来自它每次迭代花的时间显著更多, 平均是 Adam 的 3 倍。

38.5 SIP 的三条限制(书自己列的,非常诚实)

  1. 需要一个近似尺度不变的物理求解器。 低维 x 空间里牛顿法是个好候选, 高维空间需要别的求逆形式。有些方程能局部解析地反演,复杂问题可能需要领域知识, 或者数值方法;
  2. SIP 只精确地反演物理部分,决定 Δθ 仍用传统一阶优化器。 这些求解器在病态设定下表现糟糕,当网络输出处于非常不同的尺度上时, 这也会影响 SIP 的表现。所以**「对神经网络也求逆」应该被记为一个目标**;
  3. SIP 通常给出更准的解(按 x 空间度量),但对损失 L = ΣᵢLᵢ 不总是如此。 SIP 平等对待所有样本,与它们的损失值无关。 这有时有用,但在曲率过小或过大的区域会扭曲样本的重要性; 这些情况下,或者当 x 空间的精度不重要时(比如控制任务),传统训练可能更好。

一个漂亮的呼应(把 SIP 接回第 1 章)

有意思的是,SIP 训练和第 4 章的监督方法很像。它实际上给出了一种方法: 提供可靠的、在训练时即时算出的更新。逆仿真器提供了所需的求逆(可能带高阶方法), 并且避免了多模态解的平均(参见第 1 章的抛物线例子)。 后者是这套设置的主要优点之一:一个预计算的数据集无法把多模态考虑进来, 因此一旦「输入到参考解」的映射不唯一,就不可避免地会学到次优解。 同时这也说明了第 13 章 DP 训练的一个困难:它给出的梯度没有被正确地求逆, 而且很难靠预处理可靠地归一化。所以它们会导致第 36 章讨论的缩放问题, 相应地在训练时给出梯度消失和爆炸。 (text/21-p401-420.txt 第 38.5 节) ⚠️ 这一段是全书最重要的「回收」之一:它把 Part I 的教学例、Part IV 的主力方法、 Part VII 的新方法全部串在了一起。写总纲时必须用上。


第 39 章 用尺度不变更新学「反向热传导」(最能说明问题的一个例子)

**任务:*二维热方程,给定 t₀ 的状态,求解器算出 t 的状态 y = 𝒫(x); 现在要反过来,从 y 恢复 x。 参数:t·ν = 8,域是 64×64 个单位长度的格子。

书说这个扩散程度「很有挑战性,它扩散掉了大部分细节,只留下大尺度结构完好」。

为什么难:

精确反演这个系统只在 t·ν = 0 时可能,而且随 t·ν 增大越来越不稳定, 因为最初不同的热水平会随时间抹平,把原始信息淹没在噪声里。 因此物理的雅可比 ∂y/∂x 接近奇异。

DP 梯度在这里做了什么(全书最反直觉的一处观察)

频域里正向物理是 ŷ = x̂ · e^{−k²(t*−t₀)},高频被指数级压制。 而 GD 的更新可以解析写出来:

Δx_GD = −η · ℱ⁻¹( e^{−k²(t*−t₀)} · ℱ(y − y*) )

看这个表达式的意思是:用可微仿真器的梯度做梯度下降, 等于把正向物理施加到梯度向量本身上。这很令人惊讶: 正向仿真做的是扩散,而现在反向传播又做了更多的扩散,而不是以某种方式撤销扩散? 不幸的是,这就是 DP 固有的、「正确」的行为, 其结果是更新虽然稳定,但缺少高频的空间信息。 因此基于 GD 的优化方法在拟合完粗结构之后收敛很慢,在恢复高频细节上有严重问题。 这不是因为信息从根本上缺失了,而是因为 GD 无法充分地处理高频细节。 (text/21-p401-420.txt 第 39.4 节)

SIP 怎么修(一个很聪明的概率视角)

频域里解析逆是 x̂ = ŷ · e^{+k²(t*−t₀)}问题:高频被乘上指数级大的因子,导致数值不稳定,Δx_PG 里会出现大幅振荡。 (书补了一句:在实空间而不是频域算梯度时,这些数值不稳定同样会出现。)

解法(利用我们对物理仿真过程的知识,构造一个稳定的逆):

  • 假设观测值 y 含有一定量的噪声 n,余下的是信号 s = y − n;
  • 噪声假设为正态 n ∼ 𝒩(0, ε·y)(ε > 0);
  • 信号假设来自合理的 x,于是 y ∼ 𝒩(0, δ·e^{−k²})(δ > 0);
  • 用贝叶斯定理估计一个观测值来自信号的概率(先验取 p(s) = p(n) = 1/2);
  • 基于这个概率去阻尼(damp)逆物理的放大,从而得到一个稳定的逆。

这样算出的梯度,在存在噪声的前提下,保有了尽可能多的高频信息。 这带来了比任何通用优化方法都快得多的收敛和更精确的解。

**结果:**两边都用 U-Net,batch 128,常数 lr = 1e-3,物理用 64 位精度、网络用 32 位; 数据在训练时即时生成(域里随机放 4–10 个随机大小形状的「热」矩形)。 在 x 空间的 L2 误差上,SIP 版本明显更好,收敛显著改善。 书特意强调:两个变体用的是同一套基于反向传播的权重更新。 改进纯粹来自逆仿真器在 y 空间算出的那个高阶步。 在 y 空间也有改进,但不如 x 空间明显 —— 而 x 的重建才是主要目标。

SIP 的实现细节(值得记): 对 SIP,先反演物理,然后把代理损失定义成 L2(prediction − correction), 其中 correction 被当成常数(代码里是 x = field.stop_gradient(prediction))。 这个 L2 损失触发朝网络权重的反向传播。


第 40 章 半逆梯度(HIG)—— 第三条路

定位(书用 Preview 框给的)

HIG
不需要解析的逆求解器(SIP 需要);同时反演神经网络部分和物理模型
需要对一个大雅可比矩阵做 SVD;基于一阶信息(和常规梯度一样)
与常规梯度不同的是,它用的是完整的雅可比矩阵。所以它通常显著超过常规 GD 和 Adam
(text/21-p401-420.txt:448 起)

推导

从 Gauss-Newton 出发(L2 损失下的牛顿步):

Δθ_GN = −η·((∂y/∂θ)ᵀ·(∂y/∂θ))⁻¹·(∂y/∂θ)ᵀ·(∂L/∂y)ᵀ

满秩雅可比时转置项抵消,简化成 Δθ_GN = −η·(∂y/∂θ)⁻¹·(∂L/∂y)ᵀ

但这个雅可比通常是非方的,而且有很小的奇异值,求逆时出问题。 天真地用 Gauss-Newton 会很快爆掉。

然而,因为我们面对的是训练环路里有物理求解器的情形,那些小的奇异值往往与物理相关。 所以我们不想直接丢掉学习信号的这些部分,而是想尽可能保住它们。 (text/21-p401-420.txt 第 40.1 节)

HIG 更新(部分且截断的求逆):

Δθ_HIG = −η · (∂y/∂θ)^{−1/2} · (∂L/∂y)ᵀ

这个 −1/2 次方(「半逆」)通过 SVD 算:A^{−1/2} = V·Λ^{−1/2}·Uᵀ。 同时处理数值噪声:所有小于阈值 τ 的奇异值被设成零。

一个很要紧的细节(书用 Note 框标出):

截断 vs 夹紧:乍看之下,把奇异值夹到一个小值 τ 而不是设成零似乎更有吸引力。 但那些对应小奇异值的奇异向量,恰恰是可能不可靠的那些。 小的 τ 在求逆时会产生巨大的贡献,所以夹紧时这些奇异向量会带来问题。 因此,把它们的奇异值设成零、丢掉它们的内容,是好得多的主意。

为什么用 −1/2 而不是 −1(灵感来自 Adam):

用 −1/2 的部分求逆而不是 −1 的完全求逆,有助于防止小特征值在更新步里 带来过大的贡献。这受 Adam 启发 —— Adam 用 J/√(diag(JᵀJ)) 归一化搜索方向, 而不是用 J/(JᵀJ) 去求逆。对 Adam 来说,这个妥协是因为对角近似太粗糙才必须的; 而对 HIG,我们用的是完整的雅可比,所以可以做一个真正的求逆。 尽管如此,半求逆正则化了这个逆,给学习带来实质改进,同时降低了梯度爆炸的概率。

40.2 一个隐藏的重点:HIG 会跨 mini-batch 求最优方向

我们计算的搜索方向不仅联合考虑了神经网络和物理的缩放,还能纳入一个 mini-batch 里 所有样本的信息。这样的好处是找到(在 L2 意义上)最小化损失的最优方向, 而不是像 GD 或 Adam 那样对方向做平均。 做法:把 mini-batch 里每个样本各自的雅可比拼接成最终的雅可比。 与常规优化(更大的批次因为平均效应通常不太划算)相反,HIG 对批大小的依赖更强, 它们常常受益于更大的 mini-batch。 (text/21-p401-420.txt 第 40.2 节)

**完整流程:**求出一个批次里每个样本的雅可比 → 对拼起来的雅可比做 SVD → 截断并半求逆奇异值 → 重新组装出半逆雅可比,算出更新方向。

40.3–40.5 玩具例的对照

目标函数 ŷ(x) = (sin(6x), cos(9x)),x ∈ [−1,1]; 损失 L = ½(y₁−ŷ₁)² + ½(λ·y₂−ŷ₂)² —— λ 只作用在第二个分量上,模拟物理里常见的不均匀缩放。 网络:单隐层、7 个 tanh 神经元

书看三样东西:①损失曲线 ②神经元激活的分布 ③y 空间里的轨迹。

**λ=1(良态)时三种方法都还行:**损失降到 10⁻²–10⁻³; 神经元激活都呈现宽范围的值 —— 书解释这为什么重要:

虽然很难解读具体的数值,但「不同的输入产生不同的值」是个好迹象。 如果不是这样(不同输入产生常数值,尽管目标 ŷ 明显不同),那就是非常糟糕的信号。 那通常由完全饱和的神经元造成 —— 它们的状态被过大的更新步「毁掉」了。 y 空间的轨迹:GN 和 HIG 在学习初期有大跳跃(初始状态不好 + 求逆导致网络状态大变), 而 Adam 的动量项减小了这种跳跃性。


第 41 章 耦合振子的 HIG 实测(三种方法的最终排名)

**任务:**耦合线性振子系统的控制。只有两个质点,四个自由度(两点的位置和速度) —— 书说这是特意挑的小规模,好评估 HIG(对比:哪怕只有 32×32 的小流体仿真 也有 32×32×2 个未知量)。 目标:施加控制,使初始状态在选定的时间区间之后被重新达到。24 步四阶 Runge-Kutta,所以网络得学会在所有时间步上怎样「推」这两个质点。 网络:4 个全连接层(中间的每层 20 个神经元);数据 4000 个随机位置值

⚠️ 书特意说明了公平性:三种方法的全局参数是各自启发式调到最好的 ——「如果对所有方法用同样的设置,那对某些方法必然不公平」。

结果排名(按最终精度)

方法表现
HIG最好 —— 「尽管每次迭代相当慢,半求逆产生了非常好的更新,让训练很快收敛到很低的损失值。HIG 达到的精度比另外两种方法好大约四个数量级。
Adam(GD)「做了大量更新,但它对 Hessian 的粗略近似不足以收敛到高精度」
SIP「在这个场景里没有超过 Adam。**这是由相对简单的物理(线性振子)和 SIP 更高的每次运行成本造成的。**如果把这个例子跑更久,SIP 实际上会反超 Adam」

⚠️ 一个测量上的诚实说明:三种方法的曲线开头都有一个大的线性台阶 —— 为公平起见测的是全部运行时,这第一步包含了所有 TensorFlow 初始化步骤, 而 HIG 和 SIP 的初始化明显更费事。


第 42 章 改进梯度的讨论(Part VII 结账)

三种方法的定位(书自己的话)

不幸的是,我们不能简单地丢掉其中两个、以后只用一个。 (text/22-p421-440.txt:563 起)

核心论证(这一段极精彩):

**首先也是最重要的,改进更新的中心动机是要解决学习问题的缩放问题。 这不是个全新的问题:已经有大量深度学习算法被提出来处理网络训练里的缩放。 然而,网络与物理仿真的结合带来了新的挑战,同时也提供了解决这个问题的新角度。 负面看:我们多了来自 PDE 模型的、额外的高度非线性算子。 正面看:这些算子在学习期间通常没有自由参数,因此可以被反演。

三种方法的分工:

反演了什么用了几阶信息
DP什么都不反演(把物理仿真当成网络的其他部分一样对待)一阶
SIP用定制的逆求解器反演物理部分,让我们能在训练里用上高阶信息高阶
HIG回到一阶信息(雅可比),但做的是神经网络与物理的联合反演,并把一个 mini-batch 的所有样本纳入进来算最优的一阶方向一阶,但用完整雅可比

成本与收益的账(这一段值得整段搬):

这两种情形通常都导致更复杂、更耗资源的训练。 然而,假设我们能在训练完成后多次复用训练好的模型, 那么有许多应用领域这笔账很快就能回本:训练好的网络虽然在运行时上与其他训练方法 得到的网络完全相同,却常常达到显著改进的精度。 用常规 Adam 和 DP 训练要达到相似的精度水平(是很难的)。 当这样一个训练好的网络被当作反问题的代理模型使用时,它可能被执行大量次, 改进的精度能在这个后续阶段省下相应大量的计算资源。 一个好的潜在例子是浸没在流体里的物体的减阻形状优化 [CCHT21]。

最重要的一句带走点:

总结起来,这一章展示了求逆的重要性。一条重要的带走信息是: 当涉及 PDE 时,神经网络训练里的常规梯度不是最好的选择。 在这些情况下,我们能得到比常规梯度那种局部化的一阶信息好得多的、 关于该往哪个方向优化的信息。 即使只对物理仿真部分做反演(如 SIP 那样),也能实质改进学习过程。 定制的逆求解器让我们能在训练里使用高阶信息。 另一方面,HIG 回到了雅可比形式的一阶信息。它们展示了:即使没有任何高阶项, 求逆也能非常有用。


Part VIII:快进主题(第 43–46 章)—— 只有散文,没有 notebook

书自己说明:「接下来几节将对物理深度学习语境里其他有趣的经典主题做较短的介绍。 这些主题(目前)不配可执行的 notebook,但我们仍会指向已有的开源代码。」

第 44 章 模型降阶与时间序列(ROM)

**问题的规模:**3 维问题的模型 𝒫 通常用 𝒪(n³) 个样本离散化, 含时现象还要沿时间离散,后者通常与空间维度同步缩放,合起来是 𝒪(n⁴) 量级 —— 对更大的 n,工作量迅速爆炸(text/22-p421-440.txt 第 44 章)。

**降阶模型(ROM)的做法:**把空间状态 s_t ∈ ℝⁿ 映到低得多的 c_t ∈ ℝᵐ(m ≪ n³); 在这个潜空间里推断新状态 c_{t+1},再解码回 s_{t+1}。 成立的两个条件:m 要大到能捕捉解流形里所有重要的结构; c_{t+1} 的时间预测要能高效算出,以便尽管多了编解码步骤仍有性能收益。

为什么这是深度学习的好任务(书的论证):

传统技术常用主成分分析这类方法得到解空间的一组基。 然而,这些方法由于构造上是线性的,在表示复杂的非线性解流形时有固有的局限。 实践中所有「有意思」的解都是高度非线性的。

核心网络:自编码器。

  • 瓶颈处的数据就是压缩的潜空间表示 c;瓶颈之前是编码器 f_e,之后是解码器 f_d;
  • 一个关键性质:编码器和解码器之间不能有任何连接。 网络必须对编解码可分离。这很自然 —— 任何共享的连接或信息都会阻止 单独使用编码器或解码器。(注意这和 U-Net 的 skip connection 恰恰相反。)
  • VAE(变分自编码器):额外加一个损失项塑造潜空间,让它服从已知分布 (通常是正态)。这样能直接在潜空间抽样

    书的判断:这对构造人脸这类自然图像的生成模型非常有用, 但在仿真设定里没那么关键 —— 这里我们要的是一个便于时间预测的潜空间, 而不是便于抽样的。

**时间预测:**目标是从一个或多个之前的潜空间状态算出 t+1 的状态。 这天然是个递归任务:第 i 步是 f_p 求值 i 次的结果。

因为每次求值有固有误差,通常必须为多于一步的过程训练, 好让 f_p 网络「看见」它在潜空间状态上随时间产生的漂移。

要么给预测网络更多历史状态,要么用 RNN 家族(LSTM / GRU / 基于注意力的 Transformer)。 无论哪种,这些方法总是用全连接层,因为潜空间向量没有空间结构, 通常只是一堆看似随机的值。因为是全连接层,预测网络的参数量增长很快, 所以需要相对小的潜空间维度 m。

**端到端训练:**理想情况下还要沿时间展开以稳定演化。 训练会显著更贵(要一次训更多权重、处理多得多的中间状态), 但增加的成本通常能靠降低的整体推断误差回本。

第 45 章 非结构网格与无网格方法

**三类计算网格:**结构化 / 非结构化 / 无连接的点(粒子)。

  • 结构化网格目前在 DL 算法里支持最好(和图像数据相似), 但对「光滑区域和复杂区域不均匀混合」的目标函数,另外两类更好;
  • 非结构化网格在网格化这一侧最灵活,与 GNN 有许多共同性质; 但 GNN 通常给实现带来相当多的额外复杂度,任意的连接关系要求消息传递, 而消息传递通常用全连接层实现;
  • 无网格 / 粒子方法:操作定义在采样位置周围的空间邻域上。 在动态情形下(比如运动材料的拉格朗日表示,连接关系很快过时), 依赖灵活的、重新计算的连接关系的方法是好选择。

连续卷积(continuous convolution,引 [UPTK19]):

  • 在 x 周围半径 R 的径向邻域 𝒩(x,R) 上求值卷积;
  • 关键是映射 Λ:从单位球到单位立方体的映射,让我们能用一个简单的网格 来表示卷积核里的未知量。这大大简化了卷积核的构造和处理;
  • 物理设定里再加一个径向权重函数 a,保证核有平滑的衰减 (归一化因子 a_𝒩 = Σ a(xᵢ,x))。这确保学到的影响对每个卷积都平滑地降到零;
  • 为求精简的架构,可以为每个卷积加一个小的全连接层来处理目标粒子自身的内容。 这使得能用相对小的偶数尺寸核,比如 4³。

**效果:**用一个基于粒子的 Navier-Stokes 求解器的随机参考数据训练, 得到的网络用一个非常小而高效的模型就有好精度。 与基于 GNN 的方法相比,连续卷积需要的权重显著更少,求值也更快。

一个诚实的失败案例:

一个特别难的情形是「一容器液体最终应该静止下来」。 如果训练数据没有被专门设计成包含许多这样的 case,网络在训练时只收到相对少的这类样本。 而且,一次仿真通常要很多步才静止(远多于训练时展开的步数)。 因此网络没有被显式训练去再现这种行为。

一个意外的好处:

有一个训练好的网络来做这样的液体仿真,本身就构造性地提供了一个可微求解器。 基于一个预训练的网络,学到的求解器随后支持通过梯度下降做优化, 比如对粘性这类输入参数做优化。

第 46 章 生成对抗网络(GAN)—— 书把它当历史来讲

书的定位一句话:

虽然它们在研究中已经被扩散方法大量取代,GAN 用的是一个非常有意思的做法。

结构:

  • 生成器(通常类似解码器网络,比如自编码器的后半部分)接收随机输入向量 z, 产生想要的输出;
  • 不直接训练生成器,而是用第二个网络当生成器的损失 —— 这就是判别器, 它做的是分类任务:把生成的样本和「真」样本区分开

训练:通常交替进行,先为 D 走一步,再为 G 走一步。 D 保持不变,提供梯度「引导」G 朝着产生与真样本无法区分的样本的方向走。 因为 D 本身也是神经网络,它构造上可微,能提供所需的梯度。

为什么难训(书讲得很直白):

由于耦合的、交替的训练,GAN 训练在实践中以难伺候著称。 我们现在不再是一个单一的非线性优化问题,而是两个耦合的问题, 我们需要为它们找到一个脆弱的平衡。 (否则我们会遇到可怕的 mode-collapse 问题:一旦两个网络之一「坍缩」到一个平凡解, 耦合的……) 缓解办法:正则化通常对达成稳定训练至关重要。最简单的情形下, 我们可以为生成器 G 加一个相对参考数据的、系数很小的 L1 正则项。 沿着这条思路,以监督方式预训练生成器有助于让 G 从一个稳定状态出发。

书对 GAN 与 DP 关系的最终判断(很重要):

(如果有可微物理可用)DP 训练很可能给出比「试图用判别器去近似 PDE 模型」更好的结果。 DP 训练能带来与 GAN 训练相似的好处:它通过离散化的仿真器给出局部梯度, 从而防止样本之间不理想的平均。 因此,DP 训练与 GAN 的组合也注定不会比两者中任何一个单独使用表现得更好。 话虽如此,在因为黑箱求解器没有梯度而无法做 DP 训练的场景里,GAN 仍然可能有吸引力。 (text/23-p441-460.txt:300)

一个概念上的桥(值得讲): 交叉熵训练实质上就是对类别概率的最大似然估计(MLE)。 书说这有好几个等价的视角:可以看成最小化「训练数据给出的经验分布」与「学到的分布」 之间的 KL 散度;也等于最大化训练数据定义的期望 𝔼 log f(xᵢ;θ)。


Part IX:结语(第 47 章)

47.0 全书的收束(这是拆解总纲最好的素材)

深度学习并不取代传统数值方法,而是增强它们。两者合在一起形成一种开创性的协同, 有巨大的潜力打开仿真与建模的新前沿。 有一个方面我们还没触及,而它可能是最深刻的:归根结底,我们的终极目标是加深 人类对世界的理解。「神经网络是不可穿透的黑箱」这个观念已经过时了。 相反,它们应该被看作又一个数值工具 —— 一个在被正确使用时, 与传统仿真同样可解释的工具。 展望未来,最令人兴奋的挑战之一,是提升我们分析训练好的网络的能力。 通过提炼这些网络发现的模式和结构,我们更接近于从它们的解流形里 抽取出根本的、人类可读的洞见。可微仿真的未来不只是更好的预测, 而是以我们从未想象过的方式揭示物理世界隐藏的秩序。 (text/23-p441-460.txt:325:337)

47.1 三个具体方向(书自己点的名)

方向书说的理由
化学反应 PDE多物种相互作用导致复杂行为。特别令人兴奋的路子是训练能快速预测实验或工业过程、并动态调整控制参数使之稳定的模型,以实现实时的智能控制
等离子体仿真与基于涡量的流体表述相似,但因电磁相互作用而更复杂。对等离子体聚变实验和能源发生器,可微物理可能是改变游戏规则的
天气与气候建模人类最关键的科学挑战之一。高度复杂的多尺度系统。不只是为了更准的预报,而是为了解锁对我们星球动力学的更深洞见

第 48 章 记号与缩写(拆解里应该复用这张表)

符号含义
𝒫*连续 / 理想的物理模型
𝒫离散化的物理模型,PDE
f*待逼近的一般函数,通常是未知的
ff* 的近似版本
y*学习目标:真值、参考或观测数据
Ω / Γ计算域 / 计算域的边界
θ神经网络参数
η学习率或步长
u向量值的速度

缩写表里书自己开的一个玩笑(值得引,能说明这本书的性格):

AI:这些天到处冒出来的、神秘的时髦词。 (原文:「Mysterious buzzword popping up in all kinds of places these days」, text/23-p441-460.txt:386)


附:全书的伏笔清单(通读才看得出的,写大纲时对照兑现)

埋在哪埋的是什么在哪揭晓
第 1–2 章 抛物线例DP 只拿一个模态、拿上面还是下面由随机初始化决定Part V(概率方法学整个分布)
第 3.8 节(优化 deep-dive)「GD 缺求逆,梯度活在错误的空间里」第 36 章
第 7.1.4 节「必须把仿真器包进训练,否则分布漂移」第 17、18、20 章
第 8.2 节「v1 基本上是可微物理训练的一个子集」第 13.6 节
第 17.6 节「生成式方法为纳入噪声提供了更有根据的路子」第 30 章
第 20.2 节「很难用别的方法打败一个好的展开设置」第 30 章的消融实验
第 24.2/24.3 节三条待解决:更快推理 / 条件化 / 物理约束第 25 章 / 第 26、29 章 / 第 27 章
第 5.8 节「现代化的 U-Net」(U-Net + 注意力 + 归一化)第 29.3 节
第 34.3 节「RL 与 DP 的对比」第 35.7 节
第 38.5 节SIP 把第 1 章的多模态问题、第 13 章的 DP 缩放问题一起回收本身就是回收点

附:章 → 文件对照表(写正文前必查,这是最容易出错的地方)

这本书 chapterAddressable: false,24 个文本文件按页码切,不按章切。 一章常常跨两个文件,而且章标题在文件里是拼写出来的英文数字(THIRTEEN / TWENTYSEVEN …)。 下表给出每一章的标题行位置;某一章的有效锚范围 = 它的标题行 到 下一章标题行之前。

标题行位置标题行位置
1text/01-p1-20.txt:46025text/13-p241-260.txt:168
2text/02-p21-40.txt:8926text/13-p241-260.txt:544
3text/02-p21-40.txt:30427text/14-p261-280.txt:319
4text/03-p41-60.txt:64328text/14-p261-280.txt:634
5text/04-p61-80.txt:129text/15-p281-300.txt:626
6text/04-p61-80.txt:25130text/17-p321-340.txt:1
7text/05-p81-100.txt:131text/17-p321-340.txt:159
8text/05-p81-100.txt:10932text/17-p321-340.txt:384
9text/05-p81-100.txt:24733text/18-p341-360.txt:267
10text/06-p101-120.txt:10334text/18-p341-360.txt:299
11text/06-p101-120.txt:11335text/18-p341-360.txt:480
12text/06-p101-120.txt:58536text/19-p361-380.txt:421
13text/07-p121-140.txt:537text/20-p381-400.txt:154
14text/07-p121-140.txt:33738text/20-p381-400.txt:665
15text/08-p141-160.txt:1939text/21-p401-420.txt:108
16text/08-p141-160.txt:11140text/21-p401-420.txt:448
17text/08-p141-160.txt:47041text/22-p421-440.txt:1
18text/09-p161-180.txt:4542text/22-p421-440.txt:563
19text/09-p161-180.txt:89343text/22-p421-440.txt:633
20text/10-p181-200.txt:33844text/22-p421-440.txt:650
21text/10-p181-200.txt:40645text/23-p441-460.txt:50
22text/10-p181-200.txt:54046text/23-p441-460.txt:175
23text/11-p201-220.txt:71447text/23-p441-460.txt:321
24text/12-p221-240.txt:54848text/23-p441-460.txt:361

⚠️ 三个最容易踩的边界(我在起草这份笔记时全部踩过一次,已改正):

  • 第 17 章在文件 08,不在 07 —— 文件 07 里 470 行前后是第 14 章的代码;
  • 第 27 章在文件 14,不在 13 —— 文件 13 里 319 行前后是第 26 章的代码;
  • 第 29 章跨文件 15 和 16,而第 30 章从文件 17 开头就开始 —— 文件 16 全是第 29 章。

本笔记里的 356 处锚全部逐条核过:落在非空行、且落在所属章的页码范围内。 少数几处是有意的跨章引用(例如在第 3 章的记号一节引第 1 章的 * 上标约定、 在第 9 章引第 8 章给出的 Helmholtz 分解定义),不是错。

写正文时的建议写法(既让人看懂又让 agent 跳得回去):

[^N]: 出处:第 18 章 Reducing Numerical Errors with Neural Operators(p.153–168)第 809 段
(`text/09-p161-180.txt:809`,搜「Rel. L2 errors」)。