【第五章:计算机视觉】1.计算机视觉基础-(2)神经网络的前向传播与反向传播原理

发布于:2025-09-13 ⋅ 阅读:(24) ⋅ 点赞:(0)

第五章:计算机视觉(Computer Vision)

第一部分:计算机视觉基础

第二节:神经网络的前向传播与反向传播原理


一、引言

神经网络(Neural Network)是现代计算机视觉的核心算法基础。从图像分类、目标检测到语义分割,都依赖于神经网络的训练与推理。要理解神经网络如何“学习”,必须掌握两个基本过程:

  1. 前向传播(Forward Propagation):输入数据经过神经网络层层运算,生成输出结果(如分类概率)。

  2. 反向传播(Backpropagation):基于预测结果与真实标签之间的误差,利用梯度下降算法更新网络参数。

这两个过程循环迭代,逐步优化模型,使其能够更好地完成任务。


二、前向传播(Forward Propagation)

前向传播是神经网络的“推理”过程。假设我们有一个三层的前馈神经网络(输入层 → 隐藏层 → 输出层),其核心计算公式为:

z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}

a^{[l]} = f(z^{[l]})

其中:

  • l:表示网络的第几层

  • W^{[l]}:第 l 层的权重矩阵

  • b^{[l]}:第 l 层的偏置向量

  • a^{[l]}:第 l 层的输出(激活值)

  • f(\cdot):激活函数(如 ReLU、Sigmoid、Softmax 等)

过程示意:

  1. 输入层:接收图像数据(如 28×2828 \times 28 的手写数字灰度图)。

  2. 隐藏层:进行线性变换和非线性激活。

  3. 输出层:通过 Softmax 得到类别概率分布。

例子:输入一张“猫”的图片,经过前向传播后,网络输出 [猫:0.9, 狗:0.1],表示网络认为这是猫的概率为 90%。


三、损失函数(Loss Function)

前向传播得到输出结果后,需要评估其与真实标签的差异,这一差异由 损失函数 衡量。常见损失函数:

  • 均方误差(MSE):适用于回归任务

L = \frac{1}{n} \sum (y_{true} - y_{pred})^2

  • 交叉熵损失(Cross Entropy Loss):适用于分类任务

L = - \sum y_{true} \cdot \log(y_{pred})

损失值越小,说明模型预测越接近真实结果。


四、反向传播(Backpropagation)

反向传播是神经网络的“学习”过程。其核心思想:

  1. 使用链式法则(Chain Rule),将损失函数对各层参数的偏导数逐层计算出来。

  2. 根据这些梯度,用 梯度下降(Gradient Descent) 更新参数:

W^{[l]} = W^{[l]} - \eta \cdot \frac{\partial L}{\partial W^{[l]}}
b^{[l]} = b^{[l]} - \eta \cdot \frac{\partial L}{\partial b^{[l]}}

其中:

  • η:学习率(Learning Rate),控制更新步长

  • \frac{\partial L}{\partial W^{[l]}}:损失函数对权重的梯度

直观理解

  • 如果网络预测为“狗”,但真实是“猫”,损失函数会较大。

  • 反向传播计算出错误方向和幅度,逐层修正权重,让下一次预测更接近“猫”。


五、数值示例

假设:

  • 输入 x = [1, 2]

  • 权重 W = [0.5, -0.3],偏置 b = 0.1

  • 激活函数:Sigmoid

前向传播:

z = (1 \times 0.5) + (2 \times -0.3) + 0.1 = 0.5 - 0.6 + 0.1 = 0.0

a = \sigma(z) = \frac{1}{1 + e^{-0}} = 0.5

反向传播:
若真实标签 y = 1,则损失函数(交叉熵)为:

L = -[1 \cdot \log(0.5)] = 0.693

计算梯度,更新权重,使输出更接近 1。


六、前向传播与反向传播的整体流程

  1. 输入数据 x

  2. 前向传播:逐层计算 z, a

  3. 输出预测结果 y_{pred}

  4. 计算损失 L

  5. 反向传播:逐层计算梯度

  6. 更新参数 W, b

  7. 重复迭代,直至收敛


七、总结

  • 前向传播:负责“推理”,计算预测值。

  • 损失函数:衡量预测与真实标签的差异。

  • 反向传播:负责“学习”,通过梯度下降更新参数。

掌握这两个核心过程,才能理解深度学习的训练机制,为后续的卷积神经网络(CNN)、循环神经网络(RNN)以及 Transformer 模型打下基础。