跳到主要内容

神经网络基础

问题

神经网络的基本结构是什么?感知机、多层网络(MLP)和前向传播的原理是什么?权重初始化为什么重要?

答案

一、从感知机到多层网络

感知机(Perceptron) 是最简单的神经网络——一个线性模型加一个阈值函数:

y=sign(w1x1+w2x2++wnxn+b)y = \text{sign}(w_1x_1 + w_2x_2 + \cdots + w_nx_n + b)

感知机只能解决线性可分问题。1969 年 Minsky 证明它连 XOR(异或)都做不了——这直接导致了第一次 AI 寒冬。

多层感知机(MLP) 通过堆叠多个层和引入非线性激活函数来解决这个问题:

二、前向传播

前向传播就是数据从输入层逐层流向输出层的计算过程:

z[l]=W[l]a[l1]+b[l]\mathbf{z}^{[l]} = \mathbf{W}^{[l]} \mathbf{a}^{[l-1]} + \mathbf{b}^{[l]} a[l]=f(z[l])\mathbf{a}^{[l]} = f(\mathbf{z}^{[l]})

其中 W[l]\mathbf{W}^{[l]} 是第 ll 层的权重矩阵,b[l]\mathbf{b}^{[l]} 是偏置,ff 是激活函数,a[l]\mathbf{a}^{[l]} 是第 ll 层的输出(激活值)。

整个前向传播就是矩阵乘法 + 激活函数的反复嵌套,这也是为什么 GPU(擅长矩阵运算)能极大加速神经网络训练。

三、权重初始化

权重初始化决定了训练能否顺利开始。错误的初始化可能导致梯度消失或爆炸。

初始化方法公式适用激活函数
零初始化全部为 0❌ 不可用——所有神经元输出相同,对称性无法打破
随机初始化小随机数可用但不够好
Xavier(Glorot)WN(0,2nin+nout)W \sim \mathcal{N}(0, \frac{2}{n_{in}+n_{out}})Sigmoid、Tanh
He(Kaiming)WN(0,2nin)W \sim \mathcal{N}(0, \frac{2}{n_{in}})ReLU 及其变体
为什么不能全部初始化为 0?

如果所有权重都是 0,每个神经元的输出都相同,反向传播时梯度也相同,所有权重会同步更新——等价于只有一个神经元。这叫对称性问题(Symmetry Breaking)。随机初始化是打破对称性的最简单方式。

四、万能逼近定理

万能逼近定理(Universal Approximation Theorem) 证明:一个包含至少一个隐藏层(且隐藏层足够宽)的前馈神经网络,可以逼近任何连续函数到任意精度。

但这是存在性定理,不等于实际训练能找到这个逼近——实践中需要合适的优化算法、正则化和足够的数据。

五、现代网络的基本构建块

组件功能
Linear / Dense 层线性变换 y=Wx+by = Wx + b
激活函数引入非线性(ReLU、GELU 等)
Batch Normalization层间归一化,稳定训练
Dropout正则化,随机丢弃神经元
残差连接(Residual)y=F(x)+xy = F(x) + x,缓解退化
Layer Normalization在 Transformer 中替代 BN

常见面试问题

Q1: 神经网络为什么需要非线性激活函数?

答案:如果没有非线性激活函数,多层线性变换的组合仍然是线性变换——W2(W1x+b1)+b2=Wx+bW_2(W_1x + b_1) + b_2 = W'x + b',多层网络退化为单层。非线性激活函数让网络能学习任意复杂的非线性映射。

Q2: 深层网络比宽网络好在哪里?

答案

  • 特征层次化:浅层学习低级特征(边缘),深层学习高级特征(物体部件)
  • 参数效率:深层网络用更少参数就能表达复杂函数
  • 组合爆炸:每层可以组合前一层的特征,深度 n 的网络可以表达指数级的特征组合

Q3: Batch Normalization 和 Layer Normalization 的区别?

答案

Batch NormalizationLayer Normalization
归一化维度在 batch 维度上归一化在特征维度上归一化
依赖 batch 大小是(小 batch 不稳定)否(与 batch 无关)
适用场景CNNTransformer、RNN
推理时行为使用训练时的移动平均与训练完全一致

Transformer 使用 Layer Normalization 是因为 NLP 中 batch 内的序列长度不同,batch 统计量不够稳定。


相关链接