跳到主要内容

把「求逆」装回训练

1. 这一章讲什么

三件事: 第 18 章那个「补回求逆」怎么真的装进网络训练(只有三步); 一个把这件事的价值放到最大的例子——反向热传导,以及它里面全书最反直觉的一处观察; 以及第二条路:不只反演物理,连网络一起反演。

它在全书链条里的位置:这是第三问的落点,也是全书主线合拢的地方。 书在这一章里自己点破:这套训练「其实很像第 05 章那种监督训练」, 只是更新量是训练时当场算出来的,而且避开了多个答案被平均掉—— 也就是第 01 章那条抛物线。

2. 顶层全景

第 18 章的诊断:丢的是求逆。那怎么装回训练里?

┌───────────── 第一条路:只反演物理 ─────────────┐
│ │
│ ① 对损失做一个牛顿步 → 得到「中间空间该往哪走」│
│ ② 对物理那一半用逆求解器 → 换算回输入空间该往哪走│
│ ③ 网络那一半 → 照常用梯度更新 │
│ │
│ 代价:你得写得出那个逆求解器 │
│ 死角:只反演了物理,网络那一半还是一阶的 │
└───────────────────────────────────────────────┘


┌───────────── 第二条路:连网络一起反演 ─────────────┐
│ │
│ 把「输出对参数」的整个雅可比拼起来 → 做奇异值分解 │
│ 小于阈值的奇异值 → 直接设成零(不是夹到一个小值) │
│ 剩下的 → 取负二分之一次方(「半个逆」) │
│ │
│ 好处:不需要解析的逆;而且跨整批求最优方向 │
│ 代价:要对一个大矩阵做奇异值分解;仍是一阶信息 │
└───────────────────────────────────────────────────┘


四个自由度的耦合振子上:半逆的精度好约四个数量级

这张图在讲什么: 两条路解的是同一个问题(把求逆装回去), 但切法不同:一条切在物理和网络的分界上,另一条干脆不分。

3. 第一条路:三段式

结论先行:把第 18 章那个更新装进训练,只有三步。

先说清楚这一章的问题设定,它和前面几章是反的1: 这里做的是反问题——网络的输入是观测,输出是我们要反推的那个量。

三步是这样的2:

① 网络先给一个猜测:输入观测,输出一个候选


② 拿这个候选跑一遍正向仿真,得到它对应的观测;
和真观测比,得到「中间空间该往哪走」——这一步用的是牛顿步


③ 对物理那一半调用逆求解器:
问它「要让输出往那边挪这么多,输入该怎么变」
得到一个「修正后的候选」


④ 把「网络当前的输出」和「修正后的候选」做一个平方误差,
照常反向传播去更新网络参数

这个做法有名字:尺度不变物理训练(书里的缩写是 SIP)。

第 ④ 步有一个实现上的关键细节,不写出来会读岔3: 那个「修正后的候选」在第 ④ 步里被当成常数—— 代码里是一句「切断梯度」。 也就是说:反向传播只从那个平方误差走向网络参数,不再往物理那边走。

读法:物理那一半的求逆,是在反向传播之外单独算好的; 算好之后它变成一个「标准答案」,交给网络去逼近。 所以这套训练在网络那一侧,和普通的监督训练长得一模一样——只是标准答案是当场算出来的。

4. 两个学习率,以及它们的乘积

这套算法有两个步长,而它们不是独立的2:

管什么
中间空间那一步的步长「要让输出往目标挪多少」——挪一整段,还是只挪一小截
网络的学习率网络参数每次挪多少

书明说:到一阶,网络权重的有效学习率是这两个数的乘积。

书给的建议很具体:第一个步长设得尽可能大,只要逆求解器的精度允许; 很多情况下取 1 是可以的,否则就调另一个2理由是:这样才能让仿真器的非线性最大程度地帮上忙。

5. 病态:为什么有些反问题天生难

结论先行:这一节讲清一个词,后面那个例子全靠它。

先看现象。 热扩散会把细节抹平:一开始高低不同的热量,过一段时间就均匀了。 抹得越久,细节越少。

反过来推就麻烦了:你手上是一张被抹平的图,要还原出当初那张有细节的图。 正向的过程把高频细节按指数压掉;反过来就要按指数放大。 而观测里总有一点噪声——噪声也会被同样地指数放大。

书的说法是:这个雅可比接近奇异。 「奇异」在这里的意思是:某些方向被压扁到零,信息没了,反推不回来; 「接近奇异」就是压得极扁但还没到零—— 理论上推得回来,数值上一放大就全是噪声。

这种问题在数值上有个统称:病态。 书自己的话是:精确反演这个系统只在完全没扩散时才可能, 而随着扩散越久越不稳定,因为最初不同的热水平会随时间抹平, 把原始信息淹没在噪声里4

6. 主走查:二维反向热传导

主走查第 1 步(任务): 二维热方程。 给定初始时刻的状态,求解器算出稍后时刻的状态;现在要反过来,从后者恢复前者4

主走查第 2 步(参数,而这个数是全章难度的来源): 扩散强度取 8,域是 64 × 64 个单位长度的格子5书自己评价这个扩散程度「很有挑战性——它把大部分细节都扩散掉了, 只留下大尺度结构完好」。

主走查第 3 步(数据): 训练时即时生成: 在域里随机放 4 到 10 个大小和形状都随机的「热」矩形6⚠️ 因为数据是现造的,每个样本都是没见过的,所以书直接拿训练曲线下结论。

主走查第 4 步(常规做法在这里做了什么——全书最反直觉的一处观察): 因为这个方程可以在频域里解析地写出来,梯度下降的更新也能解析地写出来。 写出来之后,书自己都觉得意外7:

看这个表达式的意思是:用可微仿真器的梯度做梯度下降, 等于把正向物理施加到梯度向量本身上。 这很令人惊讶:正向仿真做的是扩散,而现在反向传播又做了更多的扩散, 而不是以某种方式撤销扩散?

书接着把这件事定性了:这就是可微物理固有的、「正确」的行为。 后果是更新虽然稳定,但缺少高频的空间信息。

这一句要读三遍,因为它推翻了一个很自然的直觉。 我们本来以为「反向传播会撤销正向做的事」——不会。 反向传播传回来的是「输出对输入有多敏感」,而扩散过程对高频不敏感**, 所以传回来的梯度里高频那一份也被压掉了。**

书给的后果判断很重要,而且它区分了两件事7:

基于梯度下降的方法在拟合完粗结构之后收敛很慢,恢复高频细节上有严重问题。 这不是因为信息从根本上缺失了,而是因为梯度下降处理不了高频细节。

「信息还在,只是这个更新方式用不上它」——这是整章最值钱的一句诊断。

主走查第 5 步(直接用解析逆会怎样): 频域里的解析逆是把那个指数压制反过来,变成指数放大书说:高频被乘上指数级大的因子,导致数值不稳定,更新量里会出现大幅振荡8⚠️ 书还补了一句:换到实空间去算,这些不稳定同样会出现——频域只是更容易量化它。

主走查第 6 步(怎么修:一个概率的视角): 做法分四小步9: ① 假设观测里含有一定量的噪声,剩下的才是信号; ② 给噪声和信号各假设一个分布; ③ 用贝叶斯定理估计「某个观测值来自信号的概率」(两边的先验都取一半一半); ④ 按这个概率去阻尼逆物理的放大——像信号的就多放大,像噪声的就少放大。

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

主走查第 7 步(两个变体唯一的区别,这一步是全章最干净的对照)10: 两边都用同一个 U-Net、批大小 128、常数学习率 1e-3; 物理部分用 64 位精度算,网络部分用 32 位。 书特意强调:两个变体用的是同一套基于反向传播的权重更新。 改进纯粹来自逆求解器在中间空间算出的那一步。

主走查第 8 步(结果): 在恢复初始状态这个主目标上,装了求逆的那一版明显更好,收敛显著改善10在输出那一侧也有改进,但没有那么明显——而输入的重建才是主要目标。 ⚠️ 书只给了对数坐标的曲线图,正文没有报出最终的误差数值。

7. 第一条路的三条限制

书自己列的,而且列得非常诚实11:

限制具体是什么
① 需要一个近似尺度不变的物理求解器低维时牛顿法是个好候选;高维就要别的求逆形式——有些方程能局部解析地反演,复杂问题可能需要领域知识
② 它只反演了一半**只精确地反演物理,决定网络参数的更新仍用传统的一阶优化器。**而那些优化器在病态设定下表现糟糕
③ 它对所有样本一视同仁不管样本的损失值是多少,都平等对待。 这有时有用,但在曲率过小或过大的区域,反而扭曲了样本的相对重要性

第 ② 条书自己把它写成了一个待办: 「所以我们应该把『对神经网络也求逆』记为一个目标」—— 这正是第 10 节那条路要做的事。

第 ③ 条的实际后果书也说了:在这些情况下, 或者当输入空间的精度本来就不重要时(比如控制任务),传统训练可能更好11

还有一处成本要照实说:书给的数是—— 它每次迭代花的时间平均是 Adam 的 3 倍12书同时补了一句:这个每次迭代的耗时很可能还能靠优化实现大幅降低。

8. 一组消融,以及 Adam 到底赢在哪

书用一个可以调两个旋钮的玩具问题做了消融,而结论出乎意料地有教学价值12:

旋钮调什么
第一个物理有多病态(越大越病态)
第二个两个输入分量之间耦合得多紧(为零时互不影响)

结果:

情形谁活下来了
完美条件所有网络优化器都收敛,Adam 略有优势
相当病态(第一个旋钮开到 32)只有装了求逆的那一版和 Adam 成功
固定病态,只加耦合Adam 的表现劣化超过一个数量级

书对第三行的解释,是这一章对 Adam 最精确的一次定位12:

Adam 对曲率的对角近似,在两个分量处于不同尺度时能减小缩放效应; 但当参数被耦合时,缺少非对角项就阻止了这一点。 而装了求逆的那一版对耦合参数没有问题,因为它的更新用的是满秩的曲率。

这一段把第 18 章那条链的第 ④ 档讲透了: 「只留对角线」丢掉的正是「参数之间怎么互相影响」。 尺度差它能救,耦合它救不了。

9. 那个把全书缝起来的回收

这是全书最重要的一次回指,而且它一次缝了三处。

书的原话13:

有意思的是,这套训练和监督训练那部分很像。它实际上给出了一种方法: 提供可靠的、在训练时即时算出的更新。 逆求解器提供了所需的求逆(可能还带高阶方法), 并且避免了多模态解的平均(参见开篇那个抛物线例子)。 后者是这套设置的主要优点之一:一个预先算好的数据集没法把多模态考虑进来, 因此一旦「输入到参考解」的映射不唯一,就不可避免地会学到次优解。

读法:第 01 章那盆冷水,在这里被用第三种方式治好了。

治法出自哪一章怎么治的
换损失第 01 章不比标准答案,把输出送回物理过程
学一整个分布第 11–16 章两支都生成,而且按比例
每次挑最近的那一支这一章逆求解器用的是局部逆(第 18 章那一节)

书紧接着还捅了自己一刀,而这一刀连着第 08 章13:

同时这也说明了可微物理训练的一个困难: 它给出的梯度没有被正确地求逆,而且很难靠预处理可靠地归一化。 所以它们会导致缩放问题,相应地在训练时给出梯度消失和爆炸。

这句话把第 08 到 10 章那把主力刀的短板挑明了: 它是对的方向,但它的更新量本身没被修好。

10. 第二条路:半逆

结论先行:不分物理和网络,把整条链的雅可比一起反演——但只反演「一半」。

先看它从哪儿来。 从第 18 章那条链的第 ③ 档(Gauss-Newton)出发: 在平方损失下,雅可比是满秩的话,那个更新可以化简成「雅可比的逆乘以损失的梯度」14

卡在哪儿,书说得很清楚14: 这个雅可比通常不是方阵,而且带着很小的奇异值,求逆时会出问题; 天真地用 Gauss-Newton 会很快爆掉。

但接下来那句才是这条路存在的理由14:

因为我们面对的是训练环路里有物理求解器的情形, 那些小的奇异值往往和物理相关。 所以我们不想直接丢掉学习信号的这些部分,而是想尽可能保住它们。

「奇异值」得当场讲清,它是这一节的承重词: 任何一个矩阵都可以被拆成「转一下 → 沿几个主轴各拉伸一个倍数 → 再转一下」。 那几个拉伸倍数就是奇异值,而这个拆法叫奇异值分解。 倍数很小的那个方向,意味着「输入在这个方向上动很多,输出几乎不变」—— 求逆时它会变成「输出动一点点,输入要动很多」,也就是放大器。

做法一句话14:

把整个雅可比做奇异值分解,把小于阈值的奇异值直接设成零, 剩下的取负二分之一次方,再拼回去。

这个做法叫半逆梯度(书里的缩写是 HIG)。

11. 两个设计选择,各有一段很好的理由

选择一:小的奇异值要设成零,不要夹到一个小值。

书用一个专门的框讲这件事,而它反直觉15:

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

读法:夹紧看起来是「保留一点」,实际是「把最不可信的方向放大到最大」。 因为求逆之后,越小的奇异值贡献越大——夹到 0.001 比夹到 0.1 更危险。

选择二:为什么是负二分之一次方,而不是完整的负一次方。

书说这个想法受 Adam 启发,而它顺带把第 18 章那条链又串了一遍16:

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

这一段的分量:同一个「开方」动作,在 Adam 那里是被逼出来的妥协, 在这里是主动选择的正则化。 同一个操作,两种完全不同的理由——这是全书对 Adam 最公道的一次评价。

12. 一个隐藏的重点:它跨整批求最优方向

结论先行:这一节说的是一个副产品,但它改变了「批大小该怎么选」这件事。

书的话17:

我们计算的搜索方向,不仅联合考虑了神经网络和物理的缩放, 还能纳入一个批次里所有样本的信息。 这样的好处是找到(在平方误差意义上)最小化损失的最优方向**, 而不是像梯度下降或 Adam 那样对方向做平均。**

做法很直接:把批次里每个样本各自的雅可比拼接起来,当成最终的那个雅可比17

后果和常规优化相反,而这一条值得单独记17:

常规优化里,更大的批次因为平均效应通常不太划算; 而这条路对批大小的依赖更强,它常常受益于更大的批次。

摊开讲差别:平均是「大家各说一个方向,取个中间」; 求最优方向是「把所有人的约束一起解一遍,找出同时照顾到所有人的那个方向」。 样本越多,前者越糊,后者越准。

13. 另起一处的走查:四个自由度的耦合振子

另起一处的走查(和主走查那个反向热传导不是同一个任务): 一个耦合振子系统的控制问题。 只有两个质点,所以只有四个自由度(两个点各自的位置和速度)18书说这个规模是特意挑的——好评估这条路; 作为对照,哪怕只有 32 × 32 的一个小流体仿真,未知量也有 32×32×2 个。

任务:施加一个控制,让系统在一段选定的时间之后回到初始状态**。** 用 24 步的四阶 Runge-Kutta(一种把时间切成小步、每步用四次求值来提高精度的经典积分法), 所以网络得学会在所有这些时间步上怎么「推」这两个质点18

网络:四个全连接层,中间每层 20 个神经元19

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

最终排名20:

方法结果
半逆那条路最好——尽管每次迭代相当慢,半求逆产生了非常好的更新,让训练很快收敛到很低的损失。精度比另外两种好大约四个数量级
Adam做了大量更新,但它对曲率的粗略近似不足以收敛到高精度
只反演物理那条路在这个场景里没有超过 Adam——书归因于物理太简单(线性振子)和它更高的每次运行成本;跑更久它会反超,但会开始受完整求逆的数值问题困扰

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

14. 三者的分工,以及这笔账怎么算得回来

书在这一部分收尾时先说了一句实在话22:

不幸的是,我们不能简单地丢掉其中两个、以后只用一个。

三者的分工22:

反演了什么用了几阶信息
可微物理(第 08–10 章)什么都不反演——把物理仿真当成网络的其他部分一样对待一阶
只反演物理用定制的逆求解器反演物理部分,于是能在训练里用上高阶信息高阶
半逆回到一阶信息(雅可比),但做的是网络与物理的联合反演,并把整批样本纳进来算最优的一阶方向一阶,但用完整雅可比

书还给了一个很清爽的框架来理解「为什么物理这一侧可以被特别对待」22:

负面看:我们多了来自 PDE 模型的、额外的高度非线性算子。 正面看:这些算子在学习期间通常没有自由参数,因此可以被反演。

读法:网络的每一层都有要学的参数,所以它是活的、每一步都在变; 而物理那一段是死的、固定的——正因为它固定,才值得为它单独写一个逆。

最后是那笔账,书讲得很实在23:

这两种情形通常都导致更复杂、更耗资源的训练。 然而,假设我们能在训练完成后多次复用训练好的模型, 那么有许多应用领域这笔账很快就能回本: 训练好的网络虽然在运行时上和别的训练方法得到的网络完全相同, 却常常达到显著改进的精度。

书举的落地例子:把这样一个网络当成反问题的代理模型, 它可能被执行大量次——比如给浸在流体里的物体做减阻形状优化。

这一章的最终带走点,书自己写了24:

当涉及 PDE 时,神经网络训练里的常规梯度不是最好的选择。 在这些情况下,我们能得到比常规梯度那种局部化的一阶信息好得多的、 关于该往哪个方向优化的信息。 即使只对物理仿真部分做反演,也能实质改进学习过程; 而半逆那条路展示了:即使没有任何高阶项,求逆也能非常有用。

15. 主走查合起来看

发生了什么具体的数
1任务二维反向热传导:从被抹平的末状态,恢复带细节的初状态
2参数扩散强度 8,域 64 × 64 个格子——大部分细节被扩散掉
3为什么难正向对高频指数级压制 → 反过来要指数级放大雅可比接近奇异
4数据训练时即时生成:随机放 4 到 10 个随机大小形状的热矩形
5常规梯度做了什么等于把正向物理再施加一次——正向在扩散,反传又做了更多扩散
6后果粗结构拟合完之后收敛极慢,高频细节恢复不了;信息还在,是更新方式用不上它
7直接用解析逆:高频被乘上指数级大的因子,更新量剧烈振荡
8修法假设观测含噪 → 用贝叶斯定理估「这个值来自信号的概率」→ 据此阻尼逆物理的放大
9两个变体的唯一区别同一个 U-Net、批 128、学习率 1e-3;同一套反向传播的权重更新
10结果装了求逆的那版在输入的重建上明显更好、收敛显著改善;输出那侧改进较小

⚠️ 这一章的两个走查,书都只给了对数坐标的曲线图,正文没有报最终的误差数值; 唯一给出的量化说法是耦合振子上的「好约四个数量级」。

16. 作者的判断与证据

书里给了证据的:

说法证据
常规梯度等于把正向物理再施加一次一个可以解析写出来的更新式(热方程在频域里)7
改进纯粹来自逆求解器那一步两个变体用同一套权重更新,只有那一步不同10
半逆在振子上好约四个数量级三次运行的损失-时间曲线并排20
Adam 救得了尺度差、救不了耦合一组两个旋钮的消融12
它每次迭代平均是 Adam 的 3 倍一个直接给出的比值12

作者的判断:

说法为什么算判断
「跑更久,只反演物理那条会反超 Adam」书没有跑那个更久的实验20
「它的每次迭代耗时很可能还能大幅降低」一句推测,没有尝试12
「即使雅可比奇异,小奇异值往往和物理相关」一句领域经验,没有验证14
「这套训练和监督训练很像」一个类比,不是等价性证明13
半逆的测试只报了训练表现书自己承认这是坏做法,并把「用真正的测试集重跑」列成了读者练习25

判断(我们的,不是书里的): 这一章两条路的真正分界不在「反演谁」, 在于「你手上有没有那个逆」。 第一条路要求你能写出物理的逆——而写不出来的时候,它一步都走不了; 第二条路不要求,代价是每一步都要对一个大矩阵做奇异值分解。 所以选哪条,取决于「写一个逆求解器的一次性成本」和「每一步做分解的持续成本」谁更小。 如果错,会错在: 如果你的问题里那个雅可比本身规模巨大 (比如一个几十万自由度的三维流体),那么第二条路的每一步成本会高到不可行, 「二选一」就退化成「只有第一条路」。判据是: 把一个批次的雅可比拼起来,它有多大? 大到做不了分解,这一章就只剩一条路。

17. 边界与局限

  • 两个主要例子都很小。 反向热传导是 64×64 的二维标量场, 耦合振子只有四个自由度——书自己说后者是特意挑小的;
  • 正文没有报误差数值。 两个走查的结果都只有曲线图;
  • 半逆那一章只评估了训练表现,没有测试集。 书自己承认这是坏做法25;
  • 那个截断阈值怎么定,书没有给方法,也没有做敏感性分析;
  • 「负二分之一次方」为什么是最优的没有论证——书只说它「正则化了这个逆」, 没有和 −1/3、−2/3 之类做过对照;
  • 贝叶斯阻尼那一步引入了两个自己的参数(噪声和信号各假设一个分布的宽度), 书没有说它们怎么定,也没有做敏感性分析;
  • 只反演物理那条路在振子上输给了 Adam,而书给的归因(物理太简单、成本更高) 没有被实验分开验证;
  • 三种方法的对比跨了两个框架、两套实现,而书自己在别处说过跨实现的比较要打折扣;
  • 这一章没有任何概率模型。 求逆这条线和第 11–16 章那条线,全书没有交叉过。

18. 可带走的

  1. 把求逆装进训练只有三步: 对损失做一个牛顿步得到「中间空间该往哪走」→ 对物理那一半用逆求解器换算回输入空间 → 网络那一半照常用梯度更新;
  2. 第 ③ 步有个关键细节:那个「修正后的候选」被当成常数—— 反向传播只走向网络,不再往物理那边走;
  3. 所以这套训练在网络那一侧和监督训练长得一模一样,只是标准答案是当场算出来的;
  4. 两个学习率相乘才是权重的有效学习率; 书建议把中间那一步的步长设得尽可能大;
  5. 病态 = 正向把某些方向压得极扁。 反过来就要指数级放大,而噪声被一起放大;
  6. 全书最反直觉的一句:可微仿真器的梯度等于把正向物理再施加一次。 正向在扩散,反传又做了更多扩散;
  7. 后果要分清:不是信息没了,是这个更新方式用不上它;
  8. 修法是概率的:假设观测含一定量噪声,用贝叶斯定理估「这个值来自信号的概率」, 据此阻尼逆物理的放大;
  9. 对照做得很干净:两个变体用同一套权重更新,改进纯粹来自逆求解器那一步;
  10. 它的三条限制:要有一个近似尺度不变的求解器 · 只反演了物理这一半 · 对所有样本一视同仁(曲率过大或过小时会扭曲样本的重要性);
  11. Adam 救得了尺度差,救不了耦合。 对角近似丢掉的正是「参数之间怎么互相影响」;
  12. 第二条路把整条链的雅可比一起反演:做奇异值分解, 小于阈值的奇异值设成零,剩下的取负二分之一次方;
  13. 要设成零,不要夹到一个小值——因为求逆之后越小的奇异值贡献越大, 而那些方向恰恰最不可信;
  14. 「开方」这个动作在 Adam 那里是被逼出来的妥协,在这里是主动选的正则化;
  15. 它跨整批求最优方向,而不是对方向取平均——所以它反而受益于更大的批次;
  16. 在四个自由度的振子上,它的精度比另外两种好约四个数量级;
  17. 账怎么算得回来:训练更贵,但训好的网络运行时和别人完全一样、精度却显著更好; 当它被当代理模型执行大量次时,省下的算力更多;
  18. 这条线把全书缝上了: 逆求解器那套「其实很像监督训练」, 只是更新在训练时即时算出、并且避开了多模态解的平均——也就是第 01 章那条抛物线。

19. 原文地图

主题原书章原文位置
这一章做的是反问题、网络的输入是观测38 Scale Invariant Physics Trainingtext/20-p381-400.txt:680(搜「we are targeting inverse」)
三段式算法38.1 NN trainingtext/20-p381-400.txt:698(搜「we perform the following update step」)
两个学习率与它们的乘积38.1 同上text/20-p381-400.txt:708(搜「effective learning rate」)
一组消融、Adam 救不了耦合38.4text/21-p401-420.txt:42(搜「3 times as long as Adam」) · text/21-p401-420.txt:58(搜「diagonal approximation of the Hessian」)
三条限制38.5.1 Limitationstext/21-p401-420.txt:77(搜「approximately scale-invariant physics solver」) · text/21-p401-420.txt:85(搜「weighs all examples equally」)
「很像监督训练」的那段回收38.5.2 Similarities to supervised trainingtext/21-p401-420.txt:93(搜「resembles the supervised approaches」) · text/21-p401-420.txt:100(搜「not properly inverted」)
反向热传导为什么难、雅可比接近奇异39.1 Problem Statementtext/21-p401-420.txt:123(搜「Exactly inverting this system」)
扩散强度 8、64×6439.2 Implementationtext/21-p401-420.txt:136(搜「on a domain consisting of」)
「梯度等于把正向物理再施加一次」39.4text/21-p401-420.txt:199(搜「from the differentiable simulator applies」) · text/21-p401-420.txt:204(搜「recovering high-frequency details」)
解析逆会炸39.5 Stable SIP gradientstext/21-p401-420.txt:217(搜「exponentially large factors」)
贝叶斯阻尼39.5 同上text/21-p401-420.txt:227(搜「Bayes」) · text/21-p401-420.txt:231(搜「as much high-frequency information」)
切断梯度那个实现细节39.6text/21-p401-420.txt:300(搜「taken」) · text/21-p401-420.txt:290(搜「set_global_precision(64)」)
「同一套权重更新,改进只来自那一步」39.8 Evaluationtext/21-p401-420.txt:401(搜「purely caused by the better signal」)
半逆的定位:不需要解析逆、联合反演40 Half-Inverse Gradientstext/21-p401-420.txt:456(搜「do not require an analytical inverse solver」)
从 Gauss-Newton 出发、小奇异值和物理相关40.1 Derivationtext/21-p401-420.txt:486(搜「typically non-square」) · text/21-p401-420.txt:488(搜「the small singular」)
半逆的定义与截断40.1 同上text/21-p401-420.txt:497(搜「half-inverse」)
截断 vs 夹紧40.1 的 Note 框text/21-p401-420.txt:504(搜「Truncation versus Clamping」)
为什么是 −1/2、灵感来自 Adam40.1 同上text/21-p401-420.txt:510(搜「instead of a full inversion」)
跨批求最优方向、受益于更大的批40.2 Constructing the Jacobiantext/21-p401-420.txt:522(搜「not only jointly takes into」) · text/21-p401-420.txt:525(搜「concatenated from the individual Jacobians」)
耦合振子:四个自由度、24 步 RK441.1 Inverse problem setuptext/22-p421-440.txt:14(搜「two mass points」) · text/22-p421-440.txt:18(搜「fourth-order Runge-Kutta」)
网络:四个全连接层、每层 20 个神经元41.4text/22-p421-440.txt:153(搜「four dense layers」)
开头那个台阶包含框架初始化41.6 Evaluationtext/22-p421-440.txt:498(搜「big linear step right at the start」)
最终排名与四个数量级41.6 同上text/22-p421-440.txt:546(搜「don」) · text/22-p421-440.txt:551(搜「four order of magnitudes」)
「不能简单地丢掉其中两个」42 Discussion of Improved Gradientstext/22-p421-440.txt:570(搜「simply discard two of them」)
「这些算子没有自由参数,因此可以被反演」42.1 Addressing scaling issuestext/22-p421-440.txt:578(搜「additional, highly non-linear operators」)
这笔账怎么回本、减阻形状优化42.2 Computational Resourcestext/22-p421-440.txt:587(搜「assuming that we can re-use a」) · text/22-p421-440.txt:594(搜「drag reduction」)
最终带走点42.3 Summarytext/22-p421-440.txt:597(搜「importance of the inversion」)

Footnotes

  1. 出处:第 38 章开头的提示框(p.389)第 680 段 (text/20-p381-400.txt:680,搜「we are targeting inverse」)。 原文提醒:和前面那些章节不同,这里瞄准的是反问题, 所以观测是网络的输入,网络输出的是我们要反推的那个量。

  2. 出处:第 38.1 节 NN training(p.389–390)第 698 段 (text/20-p381-400.txt:698,搜「we perform the following update step」) 与第 708 段(text/20-p381-400.txt:708,搜「effective learning rate」)。 书把这套流程命名为 scale-invariant physics(SIP)训练, 并建议把中间那一步的步长设得尽可能大,很多情况下取 1 是可以的。 2 3

  3. 出处:第 39.6 节(p.398)第 300 段(text/21-p401-420.txt:300,搜「taken」)。 原文:代理损失定义成「预测值和修正值的平方误差」,而修正值被当成常数; 代码里靠一句 field.stop_gradient 实现。

  4. 出处:第 39.1 节 Problem Statement(p.395)第 123 段 (text/21-p401-420.txt:123,搜「Exactly inverting this system」)。 原文明说:雅可比因此接近奇异。 「奇异 = 某些方向被压扁到零」这个解释是我们补的 (补充,不在书里,来自通用知识)。 2

  5. 出处:第 39.2 节 Implementation(p.395)第 136 段 (text/21-p401-420.txt:136,搜「on a domain consisting of」)。 原文对这个扩散程度的评价是「challenging」:它扩散掉了大部分细节,只留下大尺度结构完好。

  6. 出处:第 39.3 节(p.396)第 185 段 (text/21-p401-420.txt:185,搜「generated on-the-fly」) 与第 39.8 节(p.400)第 388 段(text/21-p401-420.txt:388,搜「on-the-fly generation」)。 因为样本是现造的、都没见过,所以书直接用训练曲线下结论。

  7. 出处:第 39.4 节(p.396–397)第 199 段 (text/21-p401-420.txt:199,搜「from the differentiable simulator applies」) 与第 204 段(text/21-p401-420.txt:204,搜「recovering high-frequency details」)。 原文那句是:「This is not because the information is fundamentally missing but because GD cannot adequately process high-frequency details.」 2 3

  8. 出处:第 39.5 节 Stable SIP gradients(p.397)第 217 段 (text/21-p401-420.txt:217,搜「exponentially large factors」) 与第 219 段(text/21-p401-420.txt:219,搜「also occur when computing the gradients in real space」)。

  9. 出处:第 39.5 节(p.397)第 224 段 (text/21-p401-420.txt:224,搜「taking a probabilistic viewpoint」)、 第 227 段(text/21-p401-420.txt:227,搜「Bayes」) 与第 231 段(text/21-p401-420.txt:231,搜「as much high-frequency information」)。 两边的先验都取二分之一。

  10. 出处:第 39.6 节(p.398)第 290 段 (text/21-p401-420.txt:290,搜「set_global_precision(64)」) 与第 39.8 节(p.400)第 401 段 (text/21-p401-420.txt:401,搜「purely caused by the better signal」)。 原文明说两个变体用的是同一套基于反向传播的权重更新, 改进纯粹来自逆求解器在中间空间算出的那一步。 ⚠️ 书只给了对数坐标的曲线图,正文没有报出最终误差数值。 2 3

  11. 出处:第 38.5.1 节 Limitations(p.392–393)第 77 段 (text/21-p401-420.txt:77,搜「approximately scale-invariant physics solver」)、 第 81 段(text/21-p401-420.txt:81,搜「traditional first-order optimizers」) 与第 85 段(text/21-p401-420.txt:85,搜「weighs all examples equally」)。 原文明说「我们应该把对神经网络也求逆记为一个目标」。 2

  12. 出处:第 38.4 节(p.391–392)第 42 段 (text/21-p401-420.txt:42,搜「3 times as long as Adam」) 与第 58 段(text/21-p401-420.txt:58,搜「diagonal approximation of the Hessian」)。 原文还说这个每次迭代的耗时「很可能可以通过优化实现大幅降低」。 2 3 4 5 6

  13. 出处:第 38.5.2 节 Similarities to supervised training(p.393)第 93 段 (text/21-p401-420.txt:93,搜「resembles the supervised approaches」) 与第 100 段(text/21-p401-420.txt:100,搜「not properly inverted」)。 这一段是全书最重要的一次回收:它同时指回开篇那个抛物线例子 和讲可微物理那一部分的困难。 2 3

  14. 出处:第 40 章开头(p.403)第 456 段 (text/21-p401-420.txt:456,搜「do not require an analytical inverse solver」) 与第 40.1 节第 486 段(text/21-p401-420.txt:486,搜「typically non-square」)、 第 488 段(text/21-p401-420.txt:488,搜「the small singular」) 和第 497 段(text/21-p401-420.txt:497,搜「half-inverse」)。 「奇异值分解 = 转一下、沿主轴各拉伸一个倍数、再转一下」这个解释是我们补的 (补充,不在书里,来自通用知识);书直接用了这个名字。 2 3 4 5

  15. 出处:第 40.1 节的 Note 框(p.404)第 504 段 (text/21-p401-420.txt:504,搜「Truncation versus Clamping」)。

  16. 出处:第 40.1 节(p.405)第 510 段 (text/21-p401-420.txt:510,搜「instead of a full inversion」)。 原文明说:对 Adam 来说这个妥协是因为对角近似太粗糙才必须的, 而这里用的是完整的雅可比,本来可以做真正的求逆。

  17. 出处:第 40.2 节 Constructing the Jacobian(p.405–406)第 522 段 (text/21-p401-420.txt:522,搜「not only jointly takes into」) 与第 525 段(text/21-p401-420.txt:525,搜「concatenated from the individual Jacobians」)。 原文明说这条路「常常受益于更大的 mini-batch」,和常规优化相反。 2 3

  18. 出处:第 41.1 节 Inverse problem setup(p.409)第 14 段 (text/22-p421-440.txt:14,搜「two mass points」) 与第 18 段(text/22-p421-440.txt:18,搜「fourth-order Runge-Kutta」)。 书拿来作对照的是「哪怕只有 32×32 的小流体仿真也有 32×32×2 个未知量」。 「Runge-Kutta 是一种每步用四次求值提高精度的经典积分法」这个解释是我们补的 (补充,不在书里,来自通用知识)。 2

  19. 出处:第 41.4 节(p.412)第 153 段 (text/22-p421-440.txt:153,搜「four dense layers」)。

  20. 出处:第 41.6 节 Evaluation(p.421)第 546 段 (text/22-p421-440.txt:546,搜「don」) 与第 551 段(text/22-p421-440.txt:551,搜「four order of magnitudes」)。 原文对只反演物理那条路的归因是:线性振子这个物理太简单,加上它更高的每次运行成本; 并说跑更久它会反超 Adam,但会开始受完整求逆的数值问题困扰。 2 3

  21. 出处:第 41.6 节(p.419–420)第 498 段 (text/22-p421-440.txt:498,搜「big linear step right at the start」)。 原文:为公平起见测的是全部运行时,而第一步包含了框架的全部初始化。

  22. 出处:第 42 章开头(p.423)第 570 段 (text/22-p421-440.txt:570,搜「simply discard two of them」) 与第 42.1 节第 578 段(text/22-p421-440.txt:578,搜「additional, highly non-linear operators」)。 原文那句是:负面看多了来自 PDE 模型的高度非线性算子, 正面看这些算子在学习期间通常没有自由参数,因此可以被特别对待。 2 3

  23. 出处:第 42.2 节 Computational Resources(p.423–424)第 587 段 (text/22-p421-440.txt:587,搜「assuming that we can re-use a」) 与第 594 段(text/22-p421-440.txt:594,搜「drag reduction」)。

  24. 出处:第 42.3 节 Summary(p.424)第 597 段 (text/22-p421-440.txt:597,搜「importance of the inversion」) 与第 610 段(text/22-p421-440.txt:610,搜「go back to first order information」)。

  25. 出处:第 41.7 节 Next steps(p.421)第 557 段 (text/22-p421-440.txt:557,搜「bad practice」)。 原文自己写着:到目前为止只看了训练表现,这「不得不承认是坏做法」, 并把「分出真正的测试样本、对三种方法重跑评估」列为下一步。 2