外观
简单的神经网络(基于NumPy)
约 493 字大约 2 分钟
2025-03-18
1. 基本数学原理
- 矩阵运算:输入数据(图像像素)与权重矩阵的乘法、加法构成线性变换,用于传递信号。
- 激活函数:隐藏层使用 ReLU 函数引入非线性,公式为:
ReLU(z)=max(0,z)
输出层使用 Softmax 函数生成概率分布。 - 损失函数:采用交叉熵损失衡量预测值与真实标签的差异:
L=−∑yilog(pi)
其中 yi 为真实标签,pi 为预测概率。 - 梯度计算:通过链式法则反向传播误差,更新权重矩阵(偏导数计算)。
2. 基本神经网络原理
- 前向传播:
- 输入层 → 隐藏层:
z1=XW1+b1
a1=ReLU(z1)
- 隐藏层 → 输出层:
z2=a1W2+b2
输出概率p=Softmax(z2)
- 反向传播:
- 计算输出层误差
δ2=p−y
- 隐藏层误差
δ1=δ2W2T⊙I(z1>0)
(I 为指示函数,ReLU导数为1当z1>0,否则为0) - 更新权重
W2←W2−η⋅a1Tδ2
W1←W1−η⋅XTδ1
- 计算输出层误差
3. MNIST 数据集
- 定义:包含 0-9 手写数字的灰度图像数据集,共 70,000 张(60,000 训练 + 10,000 测试)。
- 预处理:
- 图像归一化:将像素值从 [0, 255] 缩放到 [-0.5, 0.5]。
- 标签独热编码:将数字标签转为 10 维向量(如“3” → [0,0,0,1,0,0,0,0,0,0])。
4. 神经网络设计
层类型 | 神经元数量 | 激活函数 | 输入维度 | 输出维度 |
---|---|---|---|---|
输入层 | 784 | 无 | 1×784 | 1×784 |
隐藏层 | 10 | ReLU | 1×784 | 1×10 |
输出层 | 10 | Softmax | 1×10 | 1×10 |
5. 权重初始化方法
- 均匀分布初始化:权重矩阵 W1(784×10)和 W2(10×10)从区间 [−0.5,0.5) 随机采样。
- 数学意义:
- 避免全零初始化导致梯度消失。
- 小范围随机值打破对称性,确保神经元学习不同特征。
版权所有
版权归属:NateHHX