LESSON 18 · 卷II 神经网络

参数初始化与训练稳定性

打破神经元的对称性,控制激活与梯度的尺度,让网络有机会学得动。

第 1 站

为什么不能把所有隐藏神经元设成一样?

上一课已经会用优化器更新参数。可第一次更新之前,网络里的旋钮该摆在哪儿?最整齐的办法似乎是全部设为零。问题是:同一层的隐藏神经元若以相同权重开始,又在后续路径上保持对称,就会算出相同输出、收到相同梯度、被更新成相同的新值。

本来希望它们分工,结果只是把同一份计算复制了很多遍。随机初始化首先是为了打破这种对称性,让不同神经元有机会学到不同表示。这里说的是多层网络中需要打破对称的权重,不能推广为「所有模型、所有参数都禁止零初始化」。

既然权重不能简单全部设零,偏置也必须随机吗?
第 2 站

随机还不够:信号太小会消失,太大会失控

第 08 课提醒过:函数值的大小和导数的大小不是同一回事。到了深层网络,两件事都要看:前向的激活尺度,以及反向的梯度尺度。

每层都用过小的权重,信号可能越传越弱;过大的权重可能放大数值,也可能把 Sigmoid、tanh 推进饱和区,让导数变小。所以「激活很大」并不一定意味着「梯度很大」。下面固定输入、宽度与随机种子,只改变初始化和层数。

深层信号观察台 · 一样的输入,不一样的起点
把边界说清楚

实验是宽度 24、无偏置的随机隐藏网络;输入 batch 固定为 32。梯度来自标量探针 S = mean(最后一层激活),不是分类损失,也没有执行训练。图中显示激活与 dS/dh 的均方根,逐层表同时给出均值、标准差。对数图的零值仅在绘图时置于下界,表中仍显示真实零值。

第 3 站

Xavier 与 He:让起点配合输入数量和激活函数

假设输入分量的尺度相近,互相近似独立,且权重零均值。一个神经元的加权和累加 fan_in 项,权重的方差若不调整,输入越多,输出尺度越容易改变。初始化因此不是固定写一个「随机小数」,而是根据层宽选择分布。

两种常见的正态初始化尺度
方法权重标准差直觉与适用边界
Xavier / Glorot√(2/(fan_in+fan_out))兼顾前后向,常用于 tanh 等;gain 可另行调整
He / Kaiming√(2/fan_in)补偿 ReLU 截去负半边的尺度损失

这里展示最基本的正态版本:Xavier 的 gain=1,He 使用 fan_in 模式和 ReLU 的增益。框架还提供均匀分布、不同 gain 与 fan_out 模式。合适初始化让网络更容易开始学习,不保证深度增加后每层分布完全不变。

换成 Sigmoid 后,直接照搬 ReLU 的初始化就一定安全吗?
第 4 站

梯度消失、梯度爆炸与裁剪:解决的是不同问题

第 16 课已经看过链式法则:梯度沿路径连乘,分叉路径的贡献相加。这里再加上权重矩阵的尺度,才是完整的信号传播问题。ReLU 正区间导数为 1,也不保证整张网络的梯度不会消失或爆炸。

梯度爆炸时可以做范数裁剪:如果所有参数梯度的总范数超过阈值 c,按同一比例缩小,使总范数回到 c。它限制一次更新前的梯度,不负责恢复已消失的信号。

g_clipped = g × min(1, c / (‖g‖ + ε))

初始化、激活函数、学习率和数据尺度需要共同检查。更深的模型还会使用残差连接与归一化;第 30 课会专门展开,这里先记住它们是训练深层网络的工具,不是成功的保证。

第 5 站

训练稳定性检查:先看数值,再改配方

训练不动,别只盯着最后一个 loss。可以沿数据流找问题:输入特征的量级是否悬殊?各层激活是否全部接近零或饱和?梯度是否消失、爆炸或出现非有限值?参数更新是否相对权重过大?用少量样本能否先拟合下来?

如果输入要标准化,均值与标准差应由训练集估计,再原样应用到验证与测试数据;不能把测试数据提前用来定尺度。一次只调整一种因素,记录种子和配置,才容易复现问题。

💡 章节速记 · 本课核心

初始化解决起点,尺度决定信号能否穿过深层网络;裁剪限制爆炸梯度,不能治疗梯度消失。

💡 用大白话梳理:这一课的核心直觉

  • 随机权重打破对称性,偏置可以初始化为零。
  • 同时监测前向激活和反向梯度,数值大小不能混为一谈。
  • Xavier、He 根据层宽和激活选择尺度,不是万能保证。
  • 输入标准化只拟合训练集;下一课用独立数据检查泛化。
小测验

学习小测验

动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)

Q1多层网络的同一隐藏层全部使用相同权重,可能有什么问题?
Q2梯度范数裁剪主要解决什么问题?