# K5 · 理解拟合过程实际解决了什么

优化器可以成功停止，但模型仍可能缺乏证据支持。本课解释参数拟合到底最小化什么，初始值和边界会改变什么，以及怎样判断问题来自优化器、数据还是模型结构。

目标不是背优化器名称，而是把一次拟合记录读成证据。

## “收敛”不等于“解释了数据” {#failure}

假设两次运行使用相同的 L0 模型和拟合数据。一次从接近隐藏参数的初始值开始，另一次从很远的地方开始。两次都报告成功，但后一种到达了参数边界且损失更高。我们应该得出什么结论？

先检查目标函数、尺度、停止原因和留出预测。成功状态只表示算法满足了停止条件。它不能证明模型结构足够、实验信息充分或结果唯一。

## 定义残差与目标函数 {#objective}

对预测信号 $y_\text{model}$ 和观测信号 $y_\text{obs}$，采用已声明的残差约定：

$$
r(\theta) = y_\text{model}(\theta) - y_\text{obs}.
$$

加权最小二乘目标可以写成

$$
L(\theta) = \sum_i \left(\frac{r_i(\theta)}{s_i}\right)^2,
$$

其中 $s_i$ 是通道或噪声水平的已声明尺度。尺度会改变位置、速度或力矩误差在数值目标中的贡献，但不会给实验增加信息。

拟合契约需要在最终评估前声明参数 $\theta$、边界、初值、数据划分、残差通道、尺度和停止预算。如果使用验证曲线来选择其中任何一项，这条曲线就是开发数据。

## 一次局部更新怎样使用敏感度 {#derivation}

在当前参数值 $\theta$ 附近，用一阶模型近似残差：

$$
r(\theta + \Delta\theta) \approx r(\theta) + S\Delta\theta,
$$

其中 $S$ 包含残差对各参数的敏感度。拟合步骤会在声明的目标函数和边界下选择能减小尺度化残差的更新。在条件良好的问题中，$S$ 的各列指向数据可以区分的方向。在细长的谷中，多个更新可以互相补偿，损失却变化很小。

这就是 K4 和 K5 相连的原因：优化器只能使用输入已经显露的信息。更复杂的优化器不能凭空制造缺失的敏感度方向。

## 看一条优化路径 {#media}

路径来自 [L0 的冻结迭代记录](../../../reports/l0_inertia_damping/fitting_paths.json)。左边的颜色是该目标函数的损失，箭头连接实际接受的参数点；右边同时更新运动预测。白色真值标记仅用于评估。

<figure class="clip"><video controls="" playsinline="" poster="../../../demos/manim/rendered/l0-fit-walk.png" preload="metadata"><source src="../../../demos/manim/rendered/l0-fit-walk.mp4" type="video/mp4"/><track kind="subtitles" label="English" src="../../site/subtitles/l0-fit-walk.en.vtt" srclang="en"/><track default="" kind="subtitles" label="中文" src="../../site/subtitles/l0-fit-walk.zh-CN.vtt" srclang="zh-CN"/></video><figcaption>拟合是怎样到达这个解的？</figcaption><details><summary>阅读视频说明</summary><p>每个箭头对应记录中的参数更新；更新使用拟合观测，不使用留出输入。</p><p>蓝色最终接近白色轨迹。该路径解释一次运行，预测能力还需 L0 的留出结果。</p></details></figure>

## 阅读拟合记录 {#diagnostics}

本页说明如何阅读拟合记录。除非明确链接到运行及其记录，示例都属于诊断性说明。

拟合看起来不对时，按以下顺序检查：

1. **目标函数：** 残差符号、单位、通道尺度和掩码是否正确？
2. **数据：** 拟合输入是否覆盖了区分参数所需的效应？
3. **结构：** Student 是否缺少延迟、摩擦、饱和或耦合？
4. **优化：** 前三项没有问题时，运行是否过早停止、撞到边界，或强烈依赖初值？

在相同预算下比较多个初始点，再一次只改变一个上游条件。模型变丰富后拟合误差下降，并不能说明新结构能预测新数据；只改变初值后误差下降，说明的是优化行为，不是模型充分性。

## 想一想 {#exercise}

先在一个箭头处暂停：什么在变化，什么保持固定，还缺少哪类证据？

<details><summary>核对观察</summary><p>参数对与预测运动变化；观测、边界、尺度和模型结构固定。仅看路径仍缺少留出预测证据。</p></details>

三条记录有如下结果：

| 记录 | 拟合误差 | 留出误差 | 其他证据 |
|---|---:|---:|---|
| A | 高 | 高 | 多个初始点一致；残差随速度变化 |
| B | 低 | 高 | 参数到达边界；留出残差随频率变化 |
| C | 中 | 中 | 初始点结果不一致；敏感度列几乎平行 |

对每条记录，选择第一步：改进模型结构、重新设计实验，还是调查优化与尺度问题。

<details markdown="1">
<summary>查看参考思路</summary>

A 应先提出模型结构假设，因为多个初始点一致并不能消除系统性残差。B 应先检查模型和辨识边界，再决定是否增加优化预算；边界和频率模式是证据，不应直接归结为优化失败。C 应先寻找更有信息量的实验或增加独立约束，因为近似平行的敏感度表示参数分离较弱。所有情况都应先检查单位和目标函数构造，再解释参数值。
</details>

常见误区是把收敛标志当成模型结论。如果不确定，按顺序检查单位、残差尺度、边界命中和留出划分。当你能说出下一步是改进拟合、改进实验还是增加结构时再继续。

## 拟合不能证明什么 {#limits}

收敛不等于唯一性，小目标函数也不等于验证。边界可能让答案看起来稳定，却掩盖了未建模效应。多个初始点只是对当前问题的稳健性检查，不是对所有输入的证明。

K6 会把留出证据写清楚：如何选择新实验、避免泄漏并描述预测范围。继续阅读 [K6 · 用新实验挑战模型预测](../k6/index.zh-CN.md)。
