一、前言:为什么要自己实现神经网络?
很多人刚接触深度学习时,会直接用 TensorFlow、PyTorch 等框架。
但如果没有理解背后的数学原理,很容易出现'只会调库不会调脑'的情况。
因此,从零实现一个简单的神经网络,是入门深度学习最重要的一步。
在本文中,我们将一步步手写一个可以学习 XOR(异或)问题 的神经网络。 不借助任何高级框架,只用 Python + NumPy,彻底理解神经网络的计算过程。
二、神经网络的核心思想
1. 神经元模型的启发
神经网络的灵感来源于人脑的神经元(Neuron)结构。 一个神经元会接收输入信号,通过加权求和后再经过激活函数产生输出:
y = f(w1*x1 + w2*x2 + ... + b)
其中:
xi:输入特征wi:权重(决定输入的重要性)b:偏置项(Bias,控制整体偏移)f:激活函数,用来增加非线性能力
激活函数相当于'非线性开关',让网络能学习复杂关系。
2. 网络结构:三层神经网络
我们要构建一个最简单的网络:
输入层 (2 个神经元) ↓ 隐藏层 (3 个神经元) ↓ 输出层 (1 个神经元)
输入是两个值(例如 XOR 的两个比特),输出是一个值(0 或 1)。
3. 前向传播 (Forward Propagation)
数据从输入层传向输出层,计算公式如下:
-
隐藏层输入:
Z1 = XW1 + b1 -
隐藏层输出(经过激活函数):
A1 = f(Z1) -
输出层输入:
Z2 = A1W2 + b2 -
输出层输出:
A2 = f(Z2)
这里的 A2 就是最终预测结果。
4. 误差计算(Loss Function)
我们使用最常见的平方误差函数:
L = 1/2 * (y - y_hat)^2
其中:
y:真实值y_hat:预测值
5. 反向传播 (Backpropagation)
核心目标:让误差越来越小。 我们通过梯度下降算法(Gradient Descent)调整权重。
梯度计算公式如下:
W = W - η * ∂L/∂W
其中:
η:学习率(learning rate)∂L/∂W:误差对权重的导数(梯度)

