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)
把神经网络当成"若干光滑函数相互嵌套代入、内含大量待定参数的数学模型",训练就是一个参数寻优过程。于是"训不动"永远要先分三层排查,而不是上来就怪数据或怪玄学:
- 结构层(容量够不够):单层功能神经元只能解线性可分问题,非线性可分问题(典型如 XOR)必须引入隐层——这不是调参能绕过的数学边界。
- 优化层(走得动不走得动):梯度下降的步伐由学习率控制,太大振荡、太小龟速;误差曲面常有多个局部极小,梯度一旦为零更新即停,收敛点未必是全局最优。
- 泛化层(该不该停):训练误差持续下降可能正在过拟合,需要早停和正则化(对连接权与阈值平方和施罚)来管理风险。
三层各有专属旋钮,混着拧等于掷硬币。正确的顺序永远是:先确认结构配得上问题,再治优化,最后管泛化。
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?
- 用户报告"NN 不收敛 / loss 不降 / 来回震荡",说不清是该改结构、改学习率还是换优化器。
- 用户问"几个隐藏层合适 / 该不该加深 / 神经元怎么定"这类结构设计问题。
- 用户在学习率上反复横跳:调大就炸、调小就慢,缺乏诊断依据。
- 用户发现不同随机种子训练出的模型性能天差地别,怀疑撞上了局部极小。
- 训练误差一直降、验证误差开始爬升,用户拿不准什么时候停、要不要加正则。
语言信号 (用户的话里出现这些就应激活)
- "神经网络不收敛" / "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 应按以下步骤执行:
判非线性,定结构下限
- 完成标准: 明确回答"任务是否线性可分"。线性可分 → 单层即可且学习必收敛;非线性可分(XOR 型、同类多区域)→ 至少一层隐层功能神经元,否则权重永不稳定。
- 判停条件: 若用户当前用单层/纯线性模型而数据非线性可分 → 直接建议加隐层,跳到步骤 3。
定激活函数,算参数账
- 完成标准: 激活函数排除阶跃函数(不连续、不光滑、不可微),选用 Sigmoid 类光滑函数(其 f′=f(1−f) 性质支撑链式求导);数清待定参数总数(d×q 输入-隐层权 + q×l 隐层-输出权 + q+l 个阈值),与样本量对照,判断容量是否已经失控。
训练诊断:三种"训不动"分诊
- 完成标准: 按 loss 曲线形态归类——锯齿剧烈振荡 → 学习率过大,先减半;平坦几乎不动 → 学习率过小、或已陷局部极小(梯度为零则迭代停止)、或容量不足;不同种子结果差异巨大 → 多局部极小的直接证据。每种病因给出对应处方。
- 判停条件: 诊断为容量不足(欠拟合)→ 加宽/加深后回到步骤 3 重诊,不必动优化策略。
跳出局部极小的三启发式
- 完成标准: 实施至少其一并向用户如实声明局限——(a) 多组不同初值训练后取误差最小者;(b) 模拟退火:以一定概率接受次优解,接受概率随时间衰减保稳定;(c) 随机梯度下降:梯度注入随机因素,局部极小处梯度仍可能非零。最终报告必须是多次运行的分布,而非单次最好成绩。
- 注意事项: 向用户明示三者皆为启发式、理论无保障,且可能把已到达的全局最小"跳出去"。
早停 + 正则化两手
- 完成标准: (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