1. 神经网络BP算法基础解析
在2025年的今天,虽然深度学习领域已经涌现出各种复杂的神经网络架构,但理解基础的BP(反向传播)算法仍然是掌握神经网络原理的重要基石。BP算法最早可以追溯到1970年代,但直到1986年由Rumelhart等人重新发现并推广后才被广泛应用。
BP算法的核心思想是通过前向传播计算输出值,再通过反向传播调整网络参数,使得网络输出与期望输出的误差最小化。这个过程本质上是一个优化问题,通过梯度下降法不断调整权重参数。
1.1 神经网络基本结构
本文使用的示例网络是一个简单的三层前馈神经网络:
- 输入层:2个神经元(a和b)
- 隐藏层:2个神经元(c和d)
- 输出层:1个神经元(e)
网络结构可以用有向图表示,其中每个连接都有一个权重参数。这种结构虽然简单,但已经包含了神经网络的所有关键要素。
1.2 激活函数选择
激活函数是神经网络能够拟合非线性关系的关键。本文选用的是经典的Sigmoid函数:
f(x) = 1 / (1 + e^(-x))
这个函数具有以下特性:
- 输出范围在(0,1)之间
- 处处可导,且导数可以用自身表示:f'(x) = f(x)(1-f(x))
- 在x=0附近变化最明显,两端趋于平缓
虽然现代神经网络中ReLU等激活函数更为常用,但Sigmoid函数在讲解原理时仍具有教学优势。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 前向传播过程详解
2.1 输入层到隐藏层计算
给定输入值:
x0 = 0.35 (对应神经元a)
x1 = 0.9 (对应神经元b)
初始权重随机设置为:
w11 = 0.1 (a到c)
w12 = 0.8 (b到c)
w21 = 0.4 (a到d)
w22 = 0.6 (b到d)
隐藏层神经元的输入计算为加权和:
z0 = w11a + w12b = 0.10.35 + 0.80.9 = 0.755
z1 = w21a + w22b = 0.40.35 + 0.60.9 = 0.68
然后通过激活函数:
y0 = f(z0) = 1/(1+e^(-0.755)) ≈ 0.6803
y1 = f(z1) = 1/(1+e^(-0.68)) ≈ 0.6637
2.2 隐藏层到输出层计算
输出层权重初始值:
w31 = 0.3 (c到
