1. 神经网络参数初始化:打破对称性的艺术
在构建神经网络时,参数初始化是一个看似简单却至关重要的步骤。就像建造房屋需要稳固的地基一样,良好的初始化决定了模型训练的成败。本周课程中,吴恩达教授深入浅出地讲解了为什么逻辑回归不需要特别关注初始化,而神经网络却必须谨慎对待这个问题。
1.1 从逻辑回归到神经网络的演变
逻辑回归可以视为没有隐藏层的神经网络,它只包含一个输出层,使用sigmoid激活函数进行二分类。在这种简单架构中,参数初始化相对不那么关键,因为:
- 损失函数是凸函数:这意味着无论从哪个初始点开始,梯度下降都能找到全局最优解
- 没有隐藏层:不存在多个神经元之间的对称性问题
- 单一优化路径:所有参数都朝着同一个目标调整
然而,当我们引入隐藏层后,情况发生了根本性变化。隐藏层中的每个神经元都有自己的权重和偏置,如果这些参数初始化不当,就会导致所谓的"对称性问题"——所有神经元学习相同的特征,使网络性能大打折扣。
提示:理解对称性问题的关键在于认识到神经网络强大的表示能力来自于不同神经元学习不同的特征。如果所有神经元都相同,就失去了这种多样性。
1.2 对称性问题的数学本质
让我们用数学语言更精确地描述对称性问题。考虑一个简单的双层神经网络:
- 输入层:n个特征
- 隐藏层:4个神经元(如课程示例)
- 输出层:1个神经元
假设我们将所有隐藏层神经元的权重初始化为相同的值W,偏置初始化为相同的值b。在前向传播时:
每个隐藏层神经元j的输出:
a_j = σ(W·x + b)
由于W和b相同,所有a_j也相同。在反向传播时:
每个神经元收到的梯度也完全相同,导致参数更新后依然保持相同。这样,无论训练多久,所有隐藏神经元都保持同步,相当于只使用了一个神经元。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 随机初始化的实现方法
2.1 基本随机初始化策略
最简单的随机初始化方法是从标准正态分布N(0,1)中采样权重值。在实践中,我们通常会将初始权重限制在一个较小的范围内,常见做法是:
W = np.random.randn(n,m) * 0.01
其中0.01是一个缩放因子,确保初始权重足够小。这样做有两个好处:
- 防止激活值过大导致梯度消失(特别是使用sigmoid/tanh时)
- 让模型在训练初期保
