第 1 章:什么是神经网络
1.1 从一个问题出发
给你看这张图(来自我们实际使用的 MNIST 数据集,28×28 像素):

你一眼就能认出这是数字 "8"。注意它是倾斜的,两个圈大小不一,笔画粗细也不均匀——这才是真实世界里人类写的 8。
但如果让你用代码写出"怎么判断一张图是8",你会怎么写?
传统方法很难——每个人写的 "8" 笔画粗细不同、倾斜角度不同、位置不同。规则太多、太复杂,很难穷举。
神经网络的思路完全不同: 它不需要你写规则,而是从大量例子中自动学习规律。给它看一万张带标签的手写数字图片,它自己找出"什么样的像素组合对应数字几"的规律。
这种"从数据中学习"的过程就叫做机器学习,而神经网络是机器学习中最强大的方法之一。
1.2 生物神经元 → 人工神经元
人脑有约 860 亿个神经元。每个神经元从其他神经元接收信号,当信号强度超过某个阈值时,它就会被激活,向下一个神经元发出信号。
信号输入
x₁ ——→ [权重 w₁] ——→
x₂ ——→ [权重 w₂] ——→ [求和 + 阈值判断] ——→ 激活/不激活 ——→ 输出
x₃ ——→ [权重 w₃] ——→人工神经元模仿这个结构:
- 接收多个输入 x₁, x₂, ..., xₙ
- 每个输入乘以对应权重 w₁, w₂, ..., wₙ(权重越大,这个输入越"重要")
- 求和 z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b(b 是偏置,相当于阈值的调节)
- 通过激活函数 决定输出多少信号
用数学公式写就是:
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
输出 = 激活函数(z)1.3 层:神经元的组织方式
一个神经元能做的事情很有限。真正强大的是把很多神经元组织成层:
输入层 隐藏层 输出层
x₁ ——→ [神经元 1] ——→ [神经元 A]
x₂ ——→ [神经元 2] ——→ [神经元 B] ——→ 最终输出
x₃ ——→ [神经元 3] ——→ [神经元 C]
x₄ ——→ [神经元 4]
[神经元 5]输入层(Input Layer)
- 不做任何计算,只负责把原始数据"喂"进来
- 对于 MNIST 手写数字,每张图片是 28×28 像素的灰度图
- 把 28×28 的二维图片拉直成一维向量:784 个像素值
- 所以输入层有 784 个节点,每个节点对应一个像素
原始图片 (28×28): 展平后 (784,):
┌───────────────┐ [0.0, 0.0, 0.1, 0.8, 0.9, ..., 0.0]
│ ░░░░░░░░ │ ↑ ↑ ↑
│ ░ ░ │ 像素₁ 像素₂ 像素₃ ... 像素₇₈₄
│ ░░░░░░░░ │
│ ░ ░ │ → 这 784 个数就是神经网络的"眼睛看到的东西"
│ ░░░░░░░░ │
└───────────────┘隐藏层(Hidden Layer)
- 位于输入层和输出层之间,"对外不可见",故称隐藏层
- 真正做特征提取的地方
- 每个隐藏层节点从所有输入层节点接收信号,计算出一个激活值
- 本项目隐藏层有 50 个节点
隐藏层学到的东西难以用人类语言描述,但可以理解为:
- 前几个节点可能学会"识别横线"
- 其他节点可能学会"识别圆弧"
- 还有节点可能学会"识别竖线"
- 这些基础特征组合后就能识别数字
输出层(Output Layer)
- 给出最终的分类结果
- 对于 0-9 十个数字,输出层有 10 个节点
- 每个节点输出一个概率值(0到1之间),表示"输入图片是这个数字的概率"
- 10 个概率值之和 = 1
输出层示例(输入图片是数字 "7"):
节点 0 → 0.02(是0的概率:2%)
节点 1 → 0.01(是1的概率:1%)
...
节点 7 → 0.91(是7的概率:91%) ← 最高,预测为7
节点 8 → 0.03(是8的概率:3%)
节点 9 → 0.03(是9的概率:3%)1.4 "两层"神经网络是什么意思?
一个重要的概念:层数的计数方式
"两层神经网络"中的"两层",指的是有权重(参数)的层,即执行计算的层:
输入层(784) ——[第一层权重]——> 隐藏层(50) ——[第二层权重]——> 输出层(10)
W1, b1 W2, b2
↑ ↑
第1层(权重层) 第2层(权重层)- 输入层不算一层(它不做计算)
- 隐藏层 + 它左边的权重矩阵 = 第 1 层
- 输出层 + 它左边的权重矩阵 = 第 2 层
所以:两层神经网络 = 一个隐藏层 + 一个输出层
1.5 本项目网络结构全貌
输入层 隐藏层 输出层
(784节点) → (50节点) → (10节点)
每张图片 中间特征 0-9的概率
784个像素值 50个特征值 分布
参数数量:
W1: 784×50 = 39,200 个权重
b1: 50 个偏置
W2: 50×10 = 500 个权重
b2: 10 个偏置
─────────────────────────
合计:39,760 个参数训练的过程,就是不断调整这 39,760 个参数,使得网络对训练数据的预测越来越准确。
1.6 小结
| 概念 | 记忆方法 |
|---|---|
| 神经元 | 接收输入 → 加权求和 → 激活函数 → 输出 |
| 输入层 | 原始数据的入口,不做计算(784个节点) |
| 隐藏层 | 特征提取,对外不可见(50个节点) |
| 输出层 | 给出最终概率分布(10个节点) |
| 两层网络 | 指两个有权重的层(隐藏层+输出层) |
下一章,我们来解决一个关键问题:神经网络实际上是怎么用矩阵来高效计算的?维度是怎么变化的?