神经网络基础:感知机、激活函数与反向传播

FreeGuideOnline 最新 2026-06-16

神经网络基础:感知机、激活函数与反向传播

1. 什么是神经网络

神经网络是一种模拟人脑神经元连接方式的计算模型,它由大量的节点(神经元)相互连接构成,能够从数据中自动学习复杂的模式和关系。神经网络是深度学习的基础,广泛应用于图像识别、自然语言处理、推荐系统等领域。

本教程将带你从最基本的单元——感知机开始,理解激活函数的作用,并掌握神经网络如何通过反向传播算法进行学习。

2. 感知机:神经网络的起点

2.1 感知机的结构

感知机是最简单的人工神经元模型,它接收多个输入信号,产生一个输出。每个输入对应一个权重,表示该输入的重要程度,神经元将所有加权输入求和,加上一个偏置,然后通过一个阶跃函数来决定是否激活。

  • 输入(x₁, x₂, ..., xₙ):特征向量
  • 权重(w₁, w₂, ..., wₙ):对应每个输入的强度
  • 偏置(b):调节神经元被激活的难易度
  • 加权和(z)z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
  • 输出(y)y = 1z ≥ 0y = 0z < 0(阶跃函数)

2.2 感知机的几何意义

在二维平面上,感知机的决策边界是一条直线:w₁x₁ + w₂x₂ + b = 0。它能解决线性可分的分类问题(如逻辑与、或),但无法处理异或(XOR)这种非线性问题,这直接推动了多层神经网络的发展。

2.3 从感知机到多层神经网络

将多个感知机分层堆叠,并使前一层的输出成为后一层的输入,就构成了多层感知机(MLP)。当网络包含一个或多个隐藏层时,它可以逼近任意复杂的非线性函数,前提是激活函数不能是线性的。

3. 激活函数:引入非线性

如果没有激活函数,无论多少层神经网络都只能做线性变换。激活函数为神经元引入了非线性,使网络能够学习复杂的模式。以下是常见的激活函数:

3.1 Sigmoid 函数

公式:σ(z) = 1 / (1 + e⁻ᶻ)

  • 输出范围:(0, 1),常用于二分类的输出层。
  • 优点:平滑、可微,输出可以解释为概率。
  • 缺点:容易出现梯度消失(当输入绝对值很大时,梯度趋近于0),且输出不以0为中心,可能影响优化效率。

3.2 Tanh 函数

公式:tanh(z) = (eᶻ - e⁻ᶻ) / (eᶻ + e⁻ᶻ)

  • 输出范围:(-1, 1),以0为中心,通常优于 Sigmoid。
  • 缺点:同样存在梯度消失问题。

3.3 ReLU(Rectified Linear Unit)

公式:ReLU(z) = max(0, z)

  • 输出范围:[0, +∞)
  • 优点:计算简单,收敛速度快;在正区间不存在梯度消失,目前最为常用。
  • 缺点:当输入为负时梯度为0,可能导致神经元“死亡”(永远无法激活)。变体如 Leaky ReLU(max(0.01z, z))可缓解此问题。

3.4 Softmax

公式:softmax(zᵢ) = eᶻⁱ / Σⱼ eᶻʲ

  • 用于多分类的输出层,将一组实数转换为概率分布(每个值在0到1之间,且总和为1)。

如何选择激活函数

  • 隐藏层:优先使用 ReLU(或其变体)作为默认选择。
  • 二分类输出层:Sigmoid。
  • 多分类输出层:Softmax。
  • 回归输出层:恒等函数(即无激活)。

4. 反向传播:神经网络的学习算法

反向传播是训练多层神经网络的核心算法。它利用链式法则高效地计算损失函数对每个权重的梯度,然后通过梯度下降更新权重,使网络输出逐渐逼近真实标签。

4.1 前向传播

输入数据从输入层逐层向前计算,经过加权求和与激活函数,最终得到预测值。例如一个简单三层网络(输入层,一个隐藏层,输出层):

  1. 隐藏层加权和:Z¹ = W¹ X + b¹
  2. 隐藏层激活:A¹ = f¹(Z¹)
  3. 输出层加权和:Z² = W² A¹ + b²
  4. 输出层激活:ŷ = A² = f²(Z²)

4.2 损失函数

衡量预测值与真实值之间的差距。常见的有:

  • 均方误差(MSE):用于回归,L = (1/n) Σ (y - ŷ)²
  • 交叉熵损失:用于分类,L = - Σ yᵢ log(ŷᵢ)(其中 y 是真实概率分布)

4.3 反向传播过程

目标:计算 ∂L/∂w∂L/∂b 以便更新参数。以交叉熵损失 + Softmax + Sigmoid 隐藏层的分类网络为例:

  1. 输出层误差δ² = ∂L/∂Z² = ŷ - y (当使用 softmax 和交叉熵时,这个简化是成立的)
  2. 隐藏层误差δ¹ = (W²ᵀ δ²) ⊙ f¹'(Z¹),其中 ⊙ 表示逐元素相乘,f¹' 是激活函数的导数。这一步将输出层的误差逐层反向传递。
  3. 计算梯度
    • 输出层权重梯度:∂L/∂W² = δ² (A¹)ᵀ
    • 输出层偏置梯度:∂L/∂b² = δ²
    • 隐藏层权重梯度:∂L/∂W¹ = δ¹ Xᵀ
    • 隐藏层偏置梯度:∂L/∂b¹ = δ¹

4.4 理解反向传播的关键

  • 链式法则:复合函数的导数可以分解为每一层局部导数的乘积。反向传播就是沿着网络反向计算这种乘积。
  • 误差分配:每个神经元对最终误差的“贡献”由它接收到的误差信号(δ)和其激活的梯度决定。
  • 矩阵形式:实际实现时全程使用矩阵运算,利用向量化加速计算。

4.5 参数更新(梯度下降)

得到梯度后,沿着梯度的反方向更新参数,使损失减小:

  • W := W - α * ∂L/∂W
  • b := b - α * ∂L/∂b

其中 α 是学习率,控制更新步长。

5. 训练神经网络的完整步骤

  1. 准备数据:预处理(归一化、标准化),划分训练集/验证集。
  2. 定义网络结构:输入维度、隐藏层数量及大小、输出维度。
  3. 选择激活函数和损失函数
  4. 初始化参数:常用小随机数初始化,破坏对称性。
  5. 循环多个 epoch
    • 前向传播:计算预测值。
    • 计算损失
    • 反向传播:计算所有参数的梯度。
    • 更新参数(使用优化器,如 SGD、Adam)。
  6. 评估模型:在验证集上监控性能,防止过拟合。

6. 总结

  • 感知机 是基础的计算单元,线性分类器,多层堆叠构成神经网络。
  • 激活函数 赋予网络非线性表达能力,ReLU 是隐藏层的首选。
  • 反向传播 是高效计算梯度的算法,它基于链式法则,使网络能够通过梯度下降自动学习权重。

理解这三者,你就握住了打开深度学习大门的钥匙。在接下来的实践中,你将从零实现一个简单的神经网络分类器,巩固这些核心概念。