# Ml Neural Training

> 神经网络训练决策纪律：何时用 NN、结构怎么定、训不动怎么救。用户说"神经网络不收敛/loss 不下降""该几个隐藏层""learning rate 怎么调""梯度消失"，或训练振荡、不同种子结果差异巨 大、纠结早停时机时激活。动作：判可分性定结构下限(非线性可分必须加隐层)→按 loss 曲线分 诊病因→多组初值/模拟退火/SGD 跳局部极小(无理论保障)→早停+正则化两手。不适用于：横向选 型(ml-task-matching)、训练正常但泛化差的归因(ml-diagnosis)。trigger: neural network not training, backpropagation, hidden layer, local minimum, early stopping, 梯度消失。

- Skill: `fieldlu/ml-neural-training` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add fieldlu/ml-neural-training`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fieldlu/ml-neural-training/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: fieldlu (https://skillmd.com/u/fieldlu)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/fieldlu/ml-neural-training

---


# NN 训练决策纪律 — 先问结构够不够，再怪训练不给力

## R — 原文 (Reading)

> "BP 算法基于梯度下降(gradient descent)策略，以目标的负梯度方向对参数进行调整。"
>
> — 周志华，《机器学习》第5章 5.3节 "误差逆传播算法"

> "学习率η∈(0,1)控制着算法每一轮迭代中的更新步长，若太大则容易振荡，太小则收敛速度又
> 会过慢。有时为了做精细调节，可令式(5.11)与(5.12)使用 η₁，式(5.13)与(5.14)使用 η₂，
> 两者未必相等。"
>
> — 周志华，《机器学习》第5章 5.3节

> "如果误差函数具有多个局部极小，则不能保证找到的解是全局最小。……需注意的是，上述用于
> 跳出局部极小的技术大多是启发式，理论上尚缺乏保障。"（边注："但是也会造成'跳出'全局
> 最小"）
>
> — 周志华，《机器学习》第5章 5.4节 "全局最小与局部极小"

---

## I — 方法论骨架 (Interpretation)

把神经网络当成"若干光滑函数相互嵌套代入、内含大量待定参数的数学模型"，训练就是一个参数寻优过程。于是"训不动"永远要先分三层排查，而不是上来就怪数据或怪玄学：

1. **结构层（容量够不够）**：单层功能神经元只能解线性可分问题，非线性可分问题（典型如 XOR）必须引入隐层——这不是调参能绕过的数学边界。
2. **优化层（走得动不走得动）**：梯度下降的步伐由学习率控制，太大振荡、太小龟速；误差曲面常有多个局部极小，梯度一旦为零更新即停，收敛点未必是全局最优。
3. **泛化层（该不该停）**：训练误差持续下降可能正在过拟合，需要早停和正则化（对连接权与阈值平方和施罚）来管理风险。

三层各有专属旋钮，混着拧等于掷硬币。正确的顺序永远是：先确认结构配得上问题，再治优化，最后管泛化。

---

## A1 — 书中的应用 (Past Application)

### 案例 1: 感知机解决与/或/非、却倒在异或门前 (c16)
- **问题**: 单层感知机的能力边界到底在哪？
- **方法论的使用**: 作者手工给出权重演算——w₁=w₂=1,θ=2 得"与"、θ=0.5 得"或"、w₁=-0.6,θ=-0.5 得"非"：三者线性可分，感知机能学；但异或非线性可分，学习过程必然振荡、w 无法稳定。
- **结论**: 线性可分 ⇔ 感知机必收敛；非线性可分 ⇔ 永不收敛。出路是加一层功能神经元（两层感知机即可解异或）。
- **结果**: 由此引出多层前馈网络与 BP 算法的必要性；章末小故事补充历史教训——闵斯基《感知机》(1969) 把这一局限过度推广，让整个神经网络研究进入"冰河期"。

### 案例 2: BP 在迷你西瓜数据上的训练可视化 (c17)
- **问题**: "误差逆传播逐步调整连接权与阈值"究竟是怎样一个动态过程？
- **方法论的使用**: 在 2 属性 5 样本的西瓜子集上跑标准 BP，抓拍第 25/50/100 轮的网络参数与分类边界：第 25 轮输出杂乱（0.14/0.63/0.06/0.66），第 50 轮出现大权重，第 100 轮边界清晰分开好瓜坏瓜。
- **结论**: 分类边界是随训练轮数逐渐"成形"的；配套给出累积误差 vs 单样本更新之分，以及过拟合的两手缓解——早停与 λ 折中的正则化项。
- **结果**: 确立了"看曲线形态做训练诊断"的观察方式，而非只盯最终公式。

---

## A2 — 触发场景 (Future Trigger) ★

### 用户会在什么情境下需要这个 skill?

1. 用户报告"NN 不收敛 / loss 不降 / 来回震荡"，说不清是该改结构、改学习率还是换优化器。
2. 用户问"几个隐藏层合适 / 该不该加深 / 神经元怎么定"这类结构设计问题。
3. 用户在学习率上反复横跳：调大就炸、调小就慢，缺乏诊断依据。
4. 用户发现不同随机种子训练出的模型性能天差地别，怀疑撞上了局部极小。
5. 训练误差一直降、验证误差开始爬升，用户拿不准什么时候停、要不要加正则。

### 语言信号 (用户的话里出现这些就应激活)

- "神经网络不收敛" / "loss 不下降" / "training loss 降不下去"
- "该用几个隐藏层？" / "hidden layers 怎么定？"
- "learning rate 太大太小都不行" / "学习率两难"
- "梯度消失" / "vanishing gradient" / "是不是局部极小 / local minimum"
- "neural network not training" / "early stop 该什么时候停？"

### 与相邻 skill 的区分

- 与 `ml-diagnosis` 的区别: diagnosis 做偏差-方差归因（效果不好的三种病），前提是训练过程本身正常收敛；本 skill 处理训练动力学层面——不收敛、振荡、卡局部极小。训练正常但验证差 → 移交 diagnosis；训练本身就训不动 → 本 skill。
- 与 `ml-task-matching` 的区别: "要不要用 NN"的横向选型比较归 task-matching（NFL 匹配）；已决定用 NN 之后的所有训练决策归本 skill。
- 与 `ml-svm-playbook` 的区别: 两者是非线性建模的平行路线——NN 靠层级结构逐层加工特征，SVM 靠核技巧一步升维；用户在两条路之间犹豫时归 task-matching，选定后的训练细节各归各的 playbook。

---

## E — 可执行步骤 (Execution)

当 skill 被激活后, agent 应按以下步骤执行:

1. **判非线性，定结构下限**
   - 完成标准: 明确回答"任务是否线性可分"。线性可分 → 单层即可且学习必收敛；非线性可分（XOR 型、同类多区域）→ 至少一层隐层功能神经元，否则权重永不稳定。
   - 判停条件: 若用户当前用单层/纯线性模型而数据非线性可分 → 直接建议加隐层，跳到步骤 3。

2. **定激活函数，算参数账**
   - 完成标准: 激活函数排除阶跃函数（不连续、不光滑、不可微），选用 Sigmoid 类光滑函数（其 f′=f(1−f) 性质支撑链式求导）；数清待定参数总数（d×q 输入-隐层权 + q×l 隐层-输出权 + q+l 个阈值），与样本量对照，判断容量是否已经失控。

3. **训练诊断：三种"训不动"分诊**
   - 完成标准: 按 loss 曲线形态归类——锯齿剧烈振荡 → 学习率过大，先减半；平坦几乎不动 → 学习率过小、或已陷局部极小（梯度为零则迭代停止）、或容量不足；不同种子结果差异巨大 → 多局部极小的直接证据。每种病因给出对应处方。
   - 判停条件: 诊断为容量不足（欠拟合）→ 加宽/加深后回到步骤 3 重诊，不必动优化策略。

4. **跳出局部极小的三启发式**
   - 完成标准: 实施至少其一并向用户如实声明局限——(a) 多组不同初值训练后取误差最小者；(b) 模拟退火：以一定概率接受次优解，接受概率随时间衰减保稳定；(c) 随机梯度下降：梯度注入随机因素，局部极小处梯度仍可能非零。最终报告必须是多次运行的分布，而非单次最好成绩。
   - 注意事项: 向用户明示三者皆为启发式、理论无保障，且可能把已到达的全局最小"跳出去"。

5. **早停 + 正则化两手**
   - 完成标准: (a) 早停——监控验证表现，训练误差仍在降而验证误差回升即停止（停止条件的设置要与缓解过拟合挂钩）；(b) 正则化——误差目标中加入连接权与阈值平方和项，λ∈(0,1) 折中经验误差与网络复杂度（偏好小权重 → 输出更光滑），λ 通过交叉验证估计。
   - 判停条件: 验证误差连续回升 → 执行早停并输出当前最优参数，结束流程。

---

## B — 边界 (Boundary) ★

### 不要在以下情况使用此 skill

- 还没决定用什么模型，处于横向选型阶段 → 用 `ml-task-matching`，NFL 原则要求先刻画问题再匹配归纳偏好。
- 训练收敛正常、只是验证集表现差 → 用 `ml-diagnosis` 做偏差-方差归因，这里没有训练动力学故障可修。
- 小样本表格数据想"试试深度网络" → 先过选型关：书中明确指出神经网络试错性强、充斥 trick，样本不足时简单模型常更稳。

### 作者在书中警告的失败模式

- **单层感知机解不了 XOR (x22)**: 非线性可分问题上学习过程振荡、w 难以稳定——这是数学边界不是耐心问题。附带的历史教训：正确的局限性论断被过度推广，曾让整个领域进入冰河期。
- **学习率两难 (x24)**: 太大振荡、太小龟速。固定一个拍脑袋的学习率跑到底，不收敛怪数据、太慢怪机器，是最常见的浪费。补救方向：对不同参数组用不同 η、自适应缩小（先大后小）。
- **局部极小无解药 (x23)**: BP 误差曲面可有多个局部极小，梯度为零即停；多组初值、模拟退火、SGD、遗传算法全是启发式、理论缺保障，还有可能跳出全局最小。把某次运行的最低 loss 当全局最优是自欺。

### 作者的盲点 / 时代局限

- 成书于 2015-2016：Transformer、预训练-微调、scaling law 完全缺失；书中 Sigmoid + BP trick 体系需外推到 ReLU/自适应优化器/归一化时代——映射保留的是纪律（学习率诊断、多种子择优、早停正则），具体器件已换代。
- 书中转引"深度学习热潮大过实际贡献"的争议观点，对深度学习态度偏保守，读者需自行校准；黑箱可解释性问题仅一笔带过。
- i.i.d. 假设贯穿，无分布漂移下的训练讨论。

### 容易混淆的邻近方法论

- **局部极小 vs 欠拟合**: 都表现为 loss 下不去，但前者换优化策略（多初值/SGD）有效，后者必须增容量——分诊错了白忙。
- **"前馈"与"反向传播"**: 前馈指拓扑结构无环，BP 指误差信号逆向传播更新参数，二者不矛盾——别把"反向"理解成网络里有回路。
- **正则化 λ vs 学习率 η**: 一个管"偏好什么解"，一个管"每次走多远"，拧错旋钮是高频事故。

---

## 相关 skills

- depends-on: ml-task-matching（先用 NFL 匹配决定"用不用 NN"，再做训练决策）
- contrasts-with: ml-pitfall-audit（审计只报警，本 skill 给修复路径）, ml-svm-playbook（平行非线性路线）
- composes-with: ml-diagnosis（训练正常后移交偏差-方差归因）, ml-ensemble-design（NN 属不稳定学习器，是 Bagging 的主场成员）

---

## 审计信息

- **验证通过**: V1 ✓ / V2 ✓ / V3 ✓
- **素材单元**: c16, c17 / x22, x23, x24（扩充批A 新增单元，阶段 1.5 池外补充）
- **skill_version**: 0.0.1
- **蒸馏时间**: 2026-08-24

