本讲目录

综合项目 01 · 从冷却后的温度倒推初始热场

本项目使用按公开协议构造的模拟数据,不是真实材料测温记录。一根杆已经冷却了 1 秒。你现在能读到 16 个传感器的温度,但真正想知道的是:刚开始时哪里最热?这不是把热方程“倒放”那么简单。扩散会优先抹掉细小、快速起伏的结构;测量噪声却会在逆运算中被放大。本项目把这个物理反问题变成一个可审计的机器学习任务,并要求你说明模型何时失效,而不只是在一张测试表上争夺最低误差。

先明确任务:预测未来准确,不等于还原过去正确

一个反直觉的验收问题

假设两个方法都能准确预测 0.5 秒后的温度。你能否据此断言,它们都正确还原了初始热场?

先写下你的判断与理由,再展开解释。

核对这个判断

高频温度起伏衰减得最快;即使初始时猜错了尖锐热斑,过一会儿以后,两条温度曲线也可能已经被扩散磨得十分相似。因此,“未来预测好”是有价值的证据,却不是“过去细节正确”的证明。这个差别将决定我们为什么同时报告三种指标。

1. 把物理实验翻译成监督学习

我们研究长度为 \(L=1\,\mathrm m\) 的细棒。\(u(x,t)\) 表示相对恒温热浴的超额温度,单位是 K;\(u<0\) 只表示比热浴冷,不是负的绝对温度。两端始终满足 \(u(0,t)=u(L,t)=0\),没有持续热源,也暂不考虑对流和辐射。棒内扩散率固定为

\[ \kappa=0.01\,\mathrm{m^2/s},\qquad u_t=\kappa u_{xx}. \]

16 个内部传感器位于 \(x_j=jL/17\)。项目只保留前 8 个正弦模态:

\[ Q_{jk}=\sqrt{\frac{2}{17}}\sin\!\left(\frac{jk\pi}{17}\right), \quad j=1,\ldots,16, \quad k=1,\ldots,8. \]

这些列满足 \(Q^\top Q=I\)。初始温度向量写成 \(u_0=Qa\),其中 \(a\in\mathbb R^8\) 是我们要恢复的模态系数。这个八模态空间是明确的建模限制,不等于完整的无限维热方程。

经过时间 \(t\) 后,第 \(k\) 个模态乘上衰减因子

\[ s_k(t)=\exp\!\left[-\kappa(k\pi/L)^2t\right]. \]

令 \(S(t)=\operatorname{diag}(s_1,\ldots,s_8)\),传感器数据为

\[ y=QS(t)a+\varepsilon, \qquad \varepsilon\sim\mathcal N(0,\sigma^2I_{16}). \]

左乘 \(Q^\top\) 得到模态观测

\[ b=Q^\top y=S(t)a+Q^\top\varepsilon. \]

因为 \(Q\) 的列正交归一,投影不会改变这 8 个方向上的噪声方差。现在可以逐项对应机器学习术语:

项目对象 机器学习角色 形状 单位
一整条模拟轨迹 一个样本 1 —
模态观测 \(b=Q^\top y\) 输入特征 8 K
初始模态 \(a\) 监督标签 8 K
对角权重 \(w\) 待学习参数 8 无量纲
\(\hat u_0=Q\hat a\) 最终输出 16 K

这里“学到”的只有八个数

模型对每个模态分别使用

\[ \hat a_k=w_k b_k. \]

它没有隐藏层、非线性激活或跨模态连接,因此是监督训练的对角线性逆滤波器,不是神经网络。它的好处是每个参数都能解释;代价是它无法学习模态之间的相互作用,也没有截距项。

2. 数据切分的单位必须是整条轨迹

每一种测试情景都共享同一组 128 条训练、32 条验证轨迹,再配 32 条测试轨迹,共 192 条。完整导出同时包含三个测试情景,因此总共保存 256 条轨迹记录:

切分 轨迹数 起始种子 可以做什么
训练集 128 101 拟合八个 \(w_k\)
验证集 32 202 从固定网格选择 Tikhonov 的 \(\lambda\)
测试集 32 303 冻结所有选择后,只做最终评估

每条轨迹的 16 个传感器读数、真实初始场和独立的未来观测必须留在同一切分。若把传感器行随机拆开,同一根棒、同一个 \(a\) 的局部信息就会同时出现在训练与测试中;这会把“记住同一轨迹”伪装成“推广到新轨迹”。

轨迹 \(i\) 使用 \((\text{split seed}+104729i)\bmod 2^{32}\) 初始化独立伪随机流。即使 \(\sigma=0\),生成器仍抽取全部噪声随机数,使不同噪声设置保持同一条可比较的数据轨迹。改变 \(t\) 或 \(\sigma\) 会按相同种子重新生成全部切分,并重新拟合线性滤波器;改变测试情景只会修改测试轨迹,不能反向改变训练或验证。

3. 八参数线性逆滤波器怎样训练

对固定模态 \(k\),训练目标是 128 条训练轨迹上的平方误差:

\[ J_k(w_k)=\sum_{i\in\mathrm{train}}(w_kb_{ik}-a_{ik})^2. \]

逐步求导:

\[ \frac{\mathrm dJ_k}{\mathrm dw_k} =2\sum_i b_{ik}(w_kb_{ik}-a_{ik}) =2w_k\sum_i b_{ik}^2-2\sum_i b_{ik}a_{ik}. \]

令导数为零,在 \(\sum_i b_{ik}^2>0\) 时得到

\[ \boxed{ w_k=\frac{\sum_{i\in\mathrm{train}}b_{ik}a_{ik}} {\sum_{i\in\mathrm{train}}b_{ik}^2}} \]

八个模态各算一次,训练便结束了。由于 \(Q^\top Q=I\),最小化系数平方误差与最小化 16 个传感器位置上的初始场平方误差只差一个固定比例,不会改变最优 \(w\)。若某模态在全部训练样本中都有 \(b_{ik}=0\),分母为零,数据不能识别这个权重;默认生成数据不会出现这一退化情形,但公式的适用条件必须说清。

一行公式里的“训练分布偏好”

把训练样本数想象成无限多,并令 \(m_{2,k}=\mathbb E[a_k^2]\)。由 \(b_k=s_ka_k+\eta_k\) 且噪声与信号独立可得

\[ w_k^*=\frac{s_km_{2,k}}{s_k^2m_{2,k}+\sigma^2}. \]

无噪声时它趋近 \(1/s_k\),像直接求逆;噪声显著或训练分布中的该模态本来就很弱时,它会把该模态压小。换句话说,平滑训练分布隐含地告诉模型:“高频通常不重要。”这在同分布测试上可能有利,在突然出现尖锐热斑时却可能成为错误的归纳偏置。

上式是无限样本的总体最优值,不是有限训练结果必须严格满足的公式。实际八个权重没有非负约束;弱信号模态的有限样本相关可能为负。例如默认数据的第 8 权重约为 −0.048746,而总体公式约为 0.004231。负权重来自有限样本波动,不能被解释成热扩散的真实逆增益。

三个估计器必须在同一协议下比较

  1. 无正则最小二乘:\(\hat a_k=b_k/s_k\)。它忠实地逆转衰减,也会把高频噪声乘以很大的 \(1/s_k\)。
  2. 零阶 Tikhonov:\(\hat a_k=s_kb_k/(s_k^2+\lambda)\)。这里 \(\lambda\) 直接惩罚 \(\|a\|^2\),没有暗中乘入 \(\sigma^2\),也不是导数平滑惩罚。
  3. 学习的对角滤波器:\(\hat a_k=w_kb_k\)。八个 \(w_k\) 只由训练集监督标签拟合;验证集和测试集标签都不参与拟合。

线性学习基线并不必然优于解析正则化。它只是把“所有模态共享一个 \(\lambda\)”换成“每个模态从训练分布学习一个缩放”。当部署分布改变时,这份灵活性也会成为脆弱性。

4. 验证集只选择 \(\lambda\),测试集禁止调参

Tikhonov 候选网格固定为

\[ \Lambda=\{10^{-6},10^{-5},10^{-4},10^{-3},10^{-2},10^{-1}\}. \]

对每个候选 \(\lambda\),用 32 条验证轨迹的合成真值计算初始场 MSE:

\[ \operatorname{MSE}_{\mathrm{val}}(\lambda) =\frac{1}{32\times16} \sum_{i\in\mathrm{val}} \left\|Q\hat a_i^{(\lambda)}-Qa_i\right\|_2^2. \]

选择平均 MSE 最小的 \(\lambda\);完全并列时取较小者。合成实验允许我们查看验证真值,真实材料实验通常没有这种权限。验证轨迹在 \(t+0.5\,\mathrm s\) 的独立带噪观测不参与逆滤波器拟合或 \(\lambda\) 选择,只保留作预测诊断。

选定 \(\lambda\) 后立即冻结。不得查看测试 RMSE 再换 \(\lambda\),不得根据高频或错误扩散率测试结果重新训练 \(w\),也不得只报告最好看的测试情景。否则“测试集”已经变成第二个验证集。

5. 交互实验:先下注,再看三重压力测试

在操作前写下三条预测

  1. 当 \(t\) 增大时,哪个估计器最容易放大高频噪声?
  2. 在高频分布外测试中,哪一个训练假设会首先暴露?
  3. 为什么错误扩散率可能让未来预测和初始场重建同时出现系统偏差?

无 JavaScript 时的静态读法:默认设置为 \(t=1\,\mathrm s\)、\(\sigma=0.02\,\mathrm K\)、手动探索 \(\lambda=0.001\)。共享实验使用同一组 128/32/32 轨迹、同一八模态前向模型和同一组估计器;可以切换 \(t\in\{0.5,1,1.5\}\)、\(\sigma\in\{0,0.02,0.05\}\)、测试情景与测试轨迹编号 0–31。基准表始终使用验证集选出的 \(\lambda\),手动 \(\lambda\) 只用于观察滤波强弱,不能改写正式测试结果。

默认验证集选择 \(\lambda=0.01\)。以下为默认平滑测试集 32 条轨迹的已计算结果,全部单位为 K;手动探索的默认 \(0.001\) 不用于此表。

方法 初态 RMSE 观测残差 RMS 独立晚时刻 RMSE
无正则最小二乘 3.254382 0.014445 0.022268
Tikhonov,验证 \(\lambda=0.01\) 0.052893 0.024608 0.028316
学习的八参数逆 0.043310 0.017826 0.022202

可见最小残差不对应最小初态误差。第 7 节给出指标定义,第 10 节的完整数据可离线核对全部三种测试场景。

读图时同时检查四件事:当前观测圆点与晚时刻独立观测空心方点分别对应哪个时间;每个方法保留或压掉了哪些模态;初始场 RMSE 是否和未来预测 RMSE 给出相同排序;切换情景后训练得到的八个 \(w_k\) 是否保持不变。

6. 三种测试情景分别在问什么

情景 只改变什么 要诊断的能力 不允许的结论
平滑同分布 测试轨迹来自与训练相同的平滑系数族 在协议匹配且模型正确时的基线表现;噪声与逆放大的权衡 一次同分布胜出不能证明普遍最优
高频 OOD 偶数测试轨迹令 \(a_6\leftarrow a_6+6\,\mathrm K\),奇数轨迹令 \(a_6\leftarrow a_6-6\,\mathrm K\) 训练分布很少出现强高频时,学习滤波器能否外推 不能用该测试标签回头扩充训练后仍称为同一次测试
错误扩散率 测试数据真值改为 \(\kappa=0.016\,\mathrm{m^2/s}\),估计器仍假设 0.01 前向物理模型失配时,数据驱动缩放和解析求逆如何一起偏离 不能把系统误差全归因于随机噪声或“模型容量不足”

平滑同分布不是一种灾难性失效;它是必要的对照条件。高频 OOD 改变的是系数分布,错误扩散率改变的是前向机制。把两者分开,才能知道失败来自“训练数据没见过”还是“物理方程本身用错了”。

7. 三个指标回答三个不同的问题

对 32 条测试轨迹和 16 个传感器位置,统一先汇总平方误差再开根号:

\[ \operatorname{RMSE}_{u_0} =\sqrt{\frac{1}{32\times16}\sum_i\|Q\hat a_i-Qa_i\|_2^2}. \]

还要报告当前观测残差

\[ \operatorname{RMS}_{\mathrm{obs}} =\sqrt{\frac{1}{32\times16}\sum_i \|QS(t)\hat a_i-y_i\|_2^2}, \]

以及对独立未来带噪观测 \(y_i^+\) 的预测 RMSE:

\[ \operatorname{RMSE}_{\mathrm{future}} =\sqrt{\frac{1}{32\times16}\sum_i \|QS(t+0.5)\hat a_i-y_i^+\|_2^2}. \]

不要先算每条轨迹的 RMSE 再取平均;那是另一个聚合量。未来指标的目标含有新噪声,因此即使前向模型和初始场都完美,它也仍有噪声底。当前观测残差小可能只是过度追随噪声,未来预测好也可能是扩散隐藏了高频错误,只有三项并列才形成完整诊断。

8. 实验报告模板

按下面顺序提交。表格中三种估计器、三种情景都必须出现,不得只展示赢家。

A. 问题与预测

  • 用一句话写清要恢复的量、可观测量和为什么问题不稳定。
  • 在运行前预测 \(t\)、\(\sigma\) 与测试情景会怎样改变三种估计器。

B. 可复现配置

字段 你的记录
协议版本 heat-inverse-v1
\(t\)、\(\sigma\)
训练/验证/测试轨迹数 128 / 32 / 32
切分种子 101 / 202 / 303
候选 \(\lambda\) 网格
验证选中的 \(\lambda\)
测试情景 smooth / high-frequency / wrong-diffusivity
代码与数据文件校验 文件名、版本或提交号

C. 验证选择证据

列出六个候选 \(\lambda\) 的验证初始场 MSE,标出胜者和并列规则。单独声明:测试标签未参与选择;学习滤波器只在训练集拟合。

D. 冻结后的测试结果

情景 估计器 初始场 RMSE / K 当前观测残差 RMS / K 未来预测 RMSE / K
smooth 无正则 / Tikhonov / 学习滤波
high-frequency 无正则 / Tikhonov / 学习滤波
wrong-diffusivity 无正则 / Tikhonov / 学习滤波

E. 机制解释与失败审计

  • 用 \(s_k\)、\(1/s_k\)、Tikhonov 滤波因子和学得的 \(w_k\) 解释结果,不用“模型更聪明”代替机制。
  • 指出高频 OOD 与错误扩散率失配的证据分别是什么。
  • 找出至少一个“当前或未来拟合不错,但初始重建仍不可信”的例子。
  • 写出八模态限制、独立高斯噪声、已知边界和无持续热源这些假设中,哪一条最可能妨碍真实部署。

F. 结论边界

只允许写“在本协议、这些种子、这个候选网格和这些测试情景下”的比较。真实实验没有隐藏的初始真值,必须依靠额外传感器、独立成像、重复实验或物理先验获得证据。

9. 迁移题:预测得准,却还原错了

一个部署系统在平滑验证集上选择了 \(\lambda\),未来 0.5 秒预测误差也很低。后来生产线上改用更窄的局部加热器,但扩散率没有改变。系统仍能较好预测稍后的温度,却把初始热斑重建得过宽。

  1. 这更接近哪一种测试情景?
  2. 为什么未来预测没有及时暴露问题?
  3. 应怎样修订验证方案,而不是直接把测试样本拿去调参?
展开参考答案

这更接近高频 OOD:窄热斑需要较强的高频模态,而平滑训练分布会让学习滤波器把这些模态视为低信号、高风险方向。热扩散继续衰减高频,所以过宽的初始估计与真实尖锐热斑在未来可能变得相似;低未来误差不能证明初始细节正确。

应先保留这批生产样本作为一次诚实的分布外评估,记录失效,再另外收集或模拟代表窄加热器的新训练与验证轨迹;扩展验证情景、检查八模态分辨率是否足够,并在独立的新测试集上重新评估。若真实初始场不可见,还需要独立物理测量,而不是把未来预测误差当作替代真值。

10. 项目文件与跨学科入口

这个项目以后会在图像去模糊、地球物理反演、医学成像、系统辨识和科学机器学习中再次出现。对象会变,纪律不会变:先写清前向机制和数据单位,再隔离训练、验证与测试,最后用刻意设计的分布外与模型失配情景检验结论。

项目速查

环节 冻结协议
监督学习任务 输入 \(b=Q^\top y\),标签 \(a\),输出 \(Q\widehat a\);只保留 8 个模态
学习模型 \(\widehat a_k=w_kb_k\),\(w_k=\sum_{\rm train}b_{ik}a_{ik}/\sum_{\rm train}b_{ik}^2\);无截距、无隐藏层
数据划分 128 条训练、32 条验证、每个场景 32 条测试;按完整轨迹划分
参数选择 验证集初态 MSE 选择 Tikhonov 的 \(\lambda\);测试标签不参与选择
三个测试条件 平滑同分布、高频增强、实际扩散率与假设不符
报告指标 初态 RMSE、当前残差 RMS、独立晚时刻预测 RMSE,均为 K

学习模式包含逐步推导、共同实验、报告模板和迁移题。复现下载:协议、NumPy 脚本、默认数据。