一、神经网络到底是什么
神经网络是一类用来学习"输入和输出之间关系"的数学模型。
例如:

神经网络并不是像人一样真正"看懂"猫,而是通过大量图片学习:
- 猫通常有什么形状
- 哪里容易出现耳朵
- 哪些纹理像毛发
- 眼睛、鼻子、轮廓如何组合
- 这些特征同时出现时,图片更可能属于猫
它最终学习到的是一个复杂函数:
y=f(x)
其中:
- x:输入数据
- f:神经网络
- y:预测结果
更准确地说,神经网络是在学习:

这里的 θ 表示网络中的所有参数,例如权重和偏置。
二、人工神经元
神经网络最基本的单位叫人工神经元。
一个神经元接收多个输入:

每一个输入都有一个权重:

神经元首先计算加权求和:

然后经过激活函数:
y=f(z)
可以画成:

1. 权重 Weight
权重表示某个输入的重要程度。
例如预测一个学生是否通过考试:
平时成绩:x1
考试成绩:x2
出勤率:x3
模型可能学到:
考试成绩权重:0.7
平时成绩权重:0.2
出勤率权重:0.1
说明考试成绩对最终结果影响更大。
权重不是人工手动确定的,而是神经网络通过训练自动学出来的。
2. 偏置 Bias
偏置可以理解为一个额外的调整量。
公式:
z=wx+b
即使输入 x=0,神经元仍然可以通过偏置 b输出非零结果。
偏置让模型更加灵活。
可以把权重和偏置理解为:
权重:控制输入有多重要
偏置:控制整体向左或向右调整多少
三、神经网络的基本结构
最普通的神经网络通常包含三部分:

例如识别手写数字:

1. 输入层
输入层负责接收原始数据。
例如一张 28×28的灰度图片,共有: 28×28=784个像素。
可以把图片拉平成一个长度为784的向量:
[0, 0, 12, 35, 255, 200, ...]
因此输入层可以有784个输入节点。
输入层通常不负责复杂计算,只负责把数据传给后面的网络。
2. 隐藏层
隐藏层负责学习数据中的规律。
浅层隐藏层可能学习简单特征:
- 边缘
- 方向
- 亮暗变化
更深的隐藏层会组合简单特征:
- 线条
- 角点
- 圆弧
- 眼睛
- 鼻子
- 人脸
可以理解为:

3. 输出层
输出层根据任务输出结果。
二分类任务,例如判断是否患病:
输出一个概率:
0.92
表示模型认为属于正类的概率约为92%。
多分类任务,例如识别数字0~9:
0:0.01
1:0.02
2:0.03
3:0.90
4:0.01
...
最高概率对应数字3,因此模型预测为3。
四、什么是"层"
一层神经网络本质上完成:
Y=f(WX+b)
其中:
- X:输入
- W:权重矩阵
- b:偏置
- f:激活函数
- Y:输出
多个层叠加就是深度神经网络:

所谓"深度学习"中的"深度",通常就是网络包含较多隐藏层。
五、激活函数

如果神经网络中没有激活函数,那么无论叠加多少层,本质上都只是线性变换。
例如:

展开后仍然可以写成:

这意味着多层网络和一层网络没有本质区别。
激活函数的作用就是引入非线性,让网络能够学习复杂关系。
1. ReLU
ReLU是目前最常用的激活函数之一:

也就是:
x < 0,输出0
x ≥ 0,输出x
示例:
输入:[-2, -1, 0, 3, 5]
输出:[ 0, 0, 0, 3, 5]
优点:
- 计算简单
- 收敛较快
- 缓解梯度消失
- 适合大多数隐藏层
缺点是可能出现"神经元死亡"。
如果一个神经元长期输入为负,它一直输出0,对应梯度也可能一直为0,最后不再更新。
2. Sigmoid
公式:

输出范围:

因此常用于二分类输出层。
例如:
输出0.92
可以解释为属于正类的概率为92%。
缺点:
- 输入过大或过小时梯度很小
- 容易发生梯度消失
- 隐藏层中现在使用较少
3. Tanh
公式:

输出范围:

相比Sigmoid,输出以0为中心。
过去常用于循环神经网络。
4. Softmax
Softmax常用于多分类输出层。
假设模型输出:
[2.0, 1.0, 0.1]
这些数还不是概率。
经过Softmax后可能变成:
[0.66, 0.24, 0.10]
所有概率之和等于1。
因此适合:
- 猫、狗、鸟分类
- 数字0~9分类
- 多个互斥类别分类
六、前向传播
前向传播就是数据从输入层一直传到输出层的过程。
完整过程:

举一个非常小的例子。
输入:
x1=2,x2=3
权重:
w1=0.5,w2=0.8
偏置:
b=0.1
先计算:
z=2×0.5+3×0.8+0.1
z=1+2.4+0.1=3.5
经过ReLU:
ReLU(3.5)=3.5
所以神经元输出3.5。
整个网络中的每一个节点都进行类似运算。
七、损失函数

模型预测完成后,需要判断预测得好不好。
损失函数就是用来计算:
预测值和真实值之间差多少
损失越小,说明模型预测越准确。
1. 均方误差 MSE
常用于回归任务。

例如真实房价为100万元,模型预测90万元:

如果预测99万元:

第二个预测明显更好。
2. 交叉熵损失
常用于分类任务。
假设真实类别是猫。
模型A预测:
猫:0.9
狗:0.1
模型B预测:
猫:0.2
狗:0.8
模型A的损失较小,模型B的损失较大。
二分类交叉熵:

多分类通常使用:

八、反向传播
前向传播得到预测结果,然后计算损失。
接下来需要回答:
每一个权重应该如何调整,才能让损失变小?
这就是反向传播。
流程:

反向传播会根据链式法则,从输出层向前计算每个参数对损失的影响。
例如:

表示权重 w 改变一点时,损失 L 会如何变化。
如果梯度为正,说明增大权重会使损失变大,因此应该减小权重。
如果梯度为负,说明增大权重会使损失变小,因此应该增大权重。
九、梯度下降
参数更新公式:

其中:
- w:权重
- η:学习率
:梯度
可以把损失函数想象成一座山:
高处:损失大
低处:损失小
训练过程就像沿着山坡往最低点走。
梯度告诉我们:
哪个方向是上坡
因此向梯度相反方向移动,就能逐渐降低损失。
十、学习率
学习率控制每次参数更新走多大一步。
学习率太大:
可能一步跨过最低点
甚至来回震荡,无法收敛
学习率太小:
训练速度很慢
需要很多轮才能收敛
示意:
学习率过大:大步乱跳
学习率合理:稳定下降
学习率过小:缓慢移动
常见初始值有:
0.1
0.01
0.001
0.0001
但具体值要根据任务和优化器调整。
十一、卷积神经网络 CNN
普通全连接神经网络可以处理图片,但图片尺寸稍大,参数数量就会非常庞大。
例如一张 100×100 的RGB图片:
100×100×3=30000
如果连接到1000个神经元,权重数量约为:
30000×1000=3000万
参数太多,计算量很大,也容易过拟合。
CNN通过卷积层提取局部特征,大幅减少参数数量。
典型CNN流程:

十二、卷积层
卷积层的主要作用是提取局部特征。
例如:
- 边缘
- 横线
- 竖线
- 斜线
- 纹理
- 角点
- 局部形状
卷积层使用一个小矩阵在图片上滑动,这个小矩阵叫:
卷积核
滤波器
Kernel
Filter
1. 卷积核如何工作
假设输入图片局部区域为:
1 2 1
0 1 0
2 1 2
卷积核为:
1 0 -1
1 0 -1
1 0 -1
逐元素相乘再相加:
1×1+2×0+1×(−1)
+0×1+1×0+0×(−1)+0
+2×1+1×0+2×(−1)
结果:
1−1+0+2−2=01-1+0+2-2=01−1+0+2−2=0
卷积核移动到下一个位置,继续计算。
最终会得到一个新的矩阵,叫特征图:
Feature Map
2. 卷积为什么能提取特征
不同卷积核会对不同结构产生较强响应。
例如:
竖直边缘卷积核:
1 0 -1
1 0 -1
1 0 -1
水平边缘卷积核:
1 1 1
0 0 0
-1 -1 -1
网络训练过程中,不需要人工设置这些卷积核。
卷积核中的数值会像普通权重一样,通过反向传播自动学习。
因此:
第1层卷积:学习边缘和纹理
第2层卷积:学习局部形状
第3层卷积:学习眼睛、耳朵等结构
更深层:学习完整物体特征
十三、卷积的三个重要参数
1. 卷积核大小 Kernel Size
常见:
3×3
5×5
7×7
现在最常见的是 3×3。
卷积核越大,一次能看到的范围越大,但参数和计算量也越大。
多个 3×3卷积叠加,可以获得较大感受野,同时增加非线性表达能力。
2. 步长 Stride
步长表示卷积核每次移动几个格子。
stride=1:
每次移动1格
stride=2:
每次移动2格
步长越大,输出特征图越小。
3. 填充 Padding
卷积时,图片边缘被使用的次数较少,输出尺寸通常会变小。
Padding会在图片外围补0。
例如:
原图:
1 2
3 4
补一圈0:
0 0 0 0
0 1 2 0
0 3 4 0
0 0 0 0
作用:
- 保留边缘信息
- 控制输出尺寸
- 允许网络堆叠更多卷积层
十四、卷积输出尺寸
假设:
- 输入尺寸:N
- 卷积核大小:K
- Padding:P
- Stride:S
输出尺寸:

例如输入为 32×32:
K=3
P=1
S=1
则:

输出仍然是 32×32。
如果:
K=3
P=1
S=2
则:

输出变成 16×16。
十五、通道 Channel
灰度图片只有一个通道:
高度 × 宽度 × 1
RGB图片有三个通道
高度 × 宽度 × 3
分别是:
Red
Green
Blue
假设输入为:
32×32×3
使用64个卷积核,输出就有64个通道:
32×32×64
每个卷积核学习一种不同特征。
因此可以把通道理解为:
不同特征的集合
例如某些通道关注边缘,某些通道关注纹理,某些通道关注颜色变化。
十六、池化层
池化层主要用于缩小特征图尺寸。
典型流程:
卷积:提取特征
池化:压缩特征
池化通常没有需要训练的权重。
1. 最大池化 Max Pooling
假设输入区域:
1 3
2 4
最大池化取最大值:
4
对整个特征图以窗口滑动。
例如:
1 3 2 1
4 6 5 2
7 2 8 3
1 4 2 9
使用 2×2最大池化,步长2:
第一个区域:
1 3
4 6
最大值为6。
第二个区域:
2 1
5 2
最大值为5。
最终得到:
6 5
7 9
2. 平均池化 Average Pooling
平均池化取区域内平均值。
例如:
1 3
2 4
平均值:

最大池化更强调最明显的特征。
平均池化保留区域整体信息。
3. 池化层的作用
池化可以:
- 减少特征图尺寸
- 减少计算量
- 减少后续参数数量
- 提高一定的平移鲁棒性
- 扩大后续神经元的感受野
不过池化也会丢失部分空间信息。
现在一些网络会使用步长卷积代替池化层。
十七、卷积和池化的区别
| 项目 | 卷积层 | 池化层 |
|---|---|---|
| 主要作用 | 提取特征 | 压缩特征 |
| 是否有参数 | 有 | 通常没有 |
| 是否参与训练 | 是 | 通常不学习参数 |
| 输出通道 | 可改变 | 通常不改变 |
| 空间尺寸 | 可保持或缩小 | 通常缩小 |
| 典型操作 | 加权求和 | 最大值或平均值 |
可以记成:
卷积负责看出"有什么"
池化负责保留"最重要的"
十八、展平 Flatten
经过多次卷积和池化后,数据可能是:
7×7×64
为了输入全连接层,需要把它展开成一维向量:
7×7×64=3136
即:
7×7×64 特征图
↓ Flatten
长度3136的一维向量
Flatten本身不改变数值,只改变数据形状。
十九、全连接层
全连接层英文是:
Fully Connected Layer
Dense Layer
Linear Layer
全连接表示上一层的每个节点,都和下一层的每个节点相连。
例如:
输入层3个节点
隐藏层4个节点
权重数量为:
3×4=12
再加4个偏置,总参数为:
12+4=16
全连接层公式:
y=Wx+b
全连接层的作用
卷积层负责提取局部特征:
边缘、纹理、形状、部位
全连接层负责综合这些特征,做最终判断:
这些特征组合起来,到底是猫还是狗?
可以理解为:
卷积层:找证据
全连接层:综合证据并作出决定
二十、一个完整CNN例子
假设输入图片:
32×32×3
网络结构:

这就是典型的图片分类CNN。
二十一、参数量怎么计算
1. 全连接层参数量
输入维度为100,输出维度为50。
权重数量:
100×50=5000
偏置数量:
50
总参数:
5000+50=5050
2. 卷积层参数量
卷积核大小:
3×3
输入通道:
3
输出通道:
64
每个卷积核参数:
3×3×3=27
一共有64个卷积核:
27×64=1728
再加64个偏置:
1728+64=1792
注意,卷积层参数量和图片宽高没有直接关系。
这正是卷积层参数较少的重要原因。
二十二、权重共享
卷积核在整张图片上滑动时,使用的是同一组参数。
例如一个竖直边缘卷积核:
在图片左上角检测竖直边缘
在图片中间仍然使用同一个卷积核
在图片右下角仍然使用同一个卷积核
这叫权重共享。
优点:
- 参数数量显著减少
- 同一个特征可以在不同位置被识别
- 更适合处理图像
二十三、局部感受野
全连接层中,一个神经元会连接所有输入。
卷积层中,一个神经元只观察输入的一小块区域。
例如 3×3 卷积核只观察9个位置。
这叫局部连接。
因为图像中相邻像素通常关系更密切,所以局部连接符合图像数据特点。
随着网络加深,后层神经元能间接看到更大的区域。
这个可见范围叫感受野。
例如:
第一层:看到3×3区域
第二层:看到更大区域
第三层:看到更大范围
因此浅层学习局部特征,深层学习整体结构。
二十四、批次 Batch
训练时通常不会一次只输入一条数据,也不会一次把全部数据放进去。
而是分批训练。
例如有10000张图片,batch size设为32:
每次输入32张图片
计算一次损失
执行一次参数更新
大约需要: 10000÷32≈313次迭代才能完整看完一次数据集。
二十五、Epoch、Batch、Iteration
这三个概念很容易混淆。
Epoch
整个训练集完整学习一遍,叫一个Epoch。
Batch
每次送入网络的一小批数据。
Iteration
网络完成一次前向传播、反向传播和参数更新,叫一次Iteration。
例如:
训练集:1000条
Batch Size:100
则:
1个Epoch = 10个Iteration
如果训练20个Epoch:
总Iteration = 20 × 10 = 200
二十六、优化器
优化器负责根据梯度更新参数。
1. SGD
最基础的随机梯度下降。
w=w−η∇L
优点:
- 原理简单
- 有时泛化性能很好
缺点:
- 收敛可能较慢
- 容易震荡
2. Momentum
Momentum会保留之前更新方向的一部分。
类似小球滚下山坡,有惯性,因此能加速训练并减少震荡。
3. Adam
Adam会根据每个参数的梯度情况自动调整学习步长。
优点:
- 使用方便
- 收敛较快
- 很多任务中表现稳定
因此初学者经常从Adam开始。
但不是所有任务中Adam都一定最好。
二十七、过拟合
过拟合指模型在训练集上表现很好,但在新数据上表现很差。
例如:
训练准确率:99%
验证准确率:70%
说明模型可能记住了训练数据,而没有学会真正规律。
类似学生背下了练习题答案,但遇到新题就不会做。
二十八、如何缓解过拟合
1. 增加数据量
数据越丰富,模型越难只靠死记硬背。
2. 数据增强
图像任务常见操作:
- 随机裁剪
- 水平翻转
- 旋转
- 缩放
- 颜色变化
让模型看到更多变化形式。
3. Dropout
训练时随机让部分神经元暂时失效。
例如Dropout=0.5,训练时大约随机关闭一半神经元。
这样可以防止网络过度依赖某几个节点。
注意:
训练阶段:启用Dropout
测试阶段:关闭Dropout
4. L1和L2正则化
在损失函数中加入对权重大小的惩罚。
L2正则化:

它会限制权重变得过大。
5. Early Stopping
监控验证集损失。
如果训练集损失继续下降,但验证集损失开始上升,就提前停止训练。
二十九、欠拟合
欠拟合指模型连训练数据都没有学好。
例如:
训练准确率:60%
验证准确率:58%
可能原因:
- 网络太简单
- 训练轮数太少
- 学习率不合适
- 特征不足
- 正则化太强
解决方法:
- 增加网络深度或宽度
- 延长训练时间
- 调整学习率
- 减弱正则化
- 使用更合适的模型
三十、Batch Normalization
批归一化常简称BN。
它会对中间特征进行标准化,再通过可学习参数进行调整。
作用通常包括:
- 稳定训练
- 加快收敛
- 允许使用较大学习率
- 一定程度缓解梯度问题
CNN中常见结构:
卷积层
↓
BatchNorm
↓
ReLU
有些网络也采用:
BatchNorm
↓
ReLU
↓
卷积层
具体顺序取决于网络设计。
三十一、梯度消失
深层网络反向传播时,需要连续乘很多导数。
如果这些导数大多小于1,梯度会越来越小。
结果是:
靠近输入端的层几乎无法更新
这叫梯度消失。
Sigmoid在输入很大或很小时导数接近0,因此容易造成梯度消失。
常见缓解方式:
- 使用ReLU
- 合理初始化
- BatchNorm
- 残差连接
- LSTM或GRU
- 更合理的网络结构
三十二、梯度爆炸
如果连续乘积中的数值较大,梯度可能迅速增大。
结果:
- 参数更新过大
- 损失变成NaN
- 训练不稳定
缓解方式:
- 梯度裁剪
- 合理初始化
- 较小学习率
- BatchNorm
- 残差结构
三十三、权重初始化
如果所有权重都初始化为0,同一层的神经元会学到完全相同的内容。
因此通常使用随机初始化。
常见方式:
Xavier初始化
适合Sigmoid、Tanh等。
He初始化
适合ReLU。
初始化的目的不是让模型一开始就准确,而是让信号和梯度在不同层之间保持较稳定范围。
三十四、残差连接 ResNet
网络越深,并不一定越容易训练。
ResNet加入快捷连接:
y=F(x)+x
普通网络学习完整映射:
H(x)
残差网络让某些层学习:
F(x)=H(x)−x
结构:
x ──────────────────┐
↓ │
卷积 → BN → ReLU → 卷积
↓ │
加法 <──────────────┘
↓
输出
残差连接可以:
- 缓解深层网络退化
- 改善梯度传播
- 训练非常深的网络
ResNet是现代深度学习中非常重要的结构。
三十五、感受野
感受野表示某个特征点对应到原始输入中能观察多大的区域。
单层 3×3 卷积只能看到 3×3。
两层连续 3×3卷积,大致可以看到 5×5。
三层大致可以看到 7×7。
网络越深,感受野越大。
因此:
浅层:关注边缘和纹理
中层:关注局部结构
深层:关注物体整体
三十六、常见神经网络类型
1. MLP
多层感知机,主要由全连接层组成。
适合:
- 表格数据
- 简单分类
- 简单回归
缺点是处理图像时参数量大。
2. CNN
卷积神经网络。
适合:
- 图像分类
- 目标检测
- 图像分割
- 人脸识别
- 医学影像
3. RNN
循环神经网络。
适合序列数据:
- 文本
- 语音
- 时间序列
它会保留之前时刻的信息。
4. LSTM和GRU
是RNN的改进,用门控机制缓解长距离依赖和梯度消失。
5. Transformer
基于自注意力机制。
现在广泛用于:
- 大语言模型
- 机器翻译
- 文本分类
- 图像识别
- 多模态模型
Transformer不再依赖传统卷积或循环结构,也能建模远距离关系。
三十七、神经网络完整训练流程
第1步:准备数据
↓
第2步:数据清洗
↓
第3步:划分训练集、验证集、测试集
↓
第4步:数据预处理
↓
第5步:设计网络结构
↓
第6步:定义损失函数
↓
第7步:选择优化器
↓
第8步:前向传播
↓
第9步:计算损失
↓
第10步:反向传播
↓
第11步:更新参数
↓
第12步:重复多个Epoch
↓
第13步:在验证集调参
↓
第14步:在测试集做最终评估
训练循环可以概括为:
预测 → 计算错误 → 分析错误来源 → 调整参数 → 再预测
三十八、训练集、验证集、测试集
训练集
用于更新模型参数。
验证集
用于:
- 选择模型
- 调整超参数
- 判断是否过拟合
- Early Stopping
测试集
只用于训练结束后的最终评估。
测试集不能反复用于调参,否则它实际上就变成了验证集。
常见划分:
训练集:70%
验证集:15%
测试集:15%
或者:
训练集:80%
验证集:10%
测试集:10%
三十九、参数和超参数
参数
模型通过训练自动学习:
- 权重
- 偏置
- 卷积核
超参数
由开发者设置:
- 学习率
- Batch Size
- Epoch数量
- 网络层数
- 卷积核大小
- 通道数量
- Dropout比例
- 优化器类型
区别:
参数:模型自己学
超参数:训练前人工设置
四十、分类任务常用评价指标
1. Accuracy

适合类别较均衡的问题。
2. Precision

关注:
被模型预测为正的样本中,有多少是真的正类
3. Recall

关注:
所有真正正类中,有多少被模型找出来
4. F1

用于平衡Precision和Recall。
医疗筛查中,Recall通常很重要,因为漏掉真正异常者可能带来较大风险。
不过医疗模型不能只看单一指标,还要结合特异度、AUC、校准度及临床场景。
四十一、CNN中各层的直观职责
可以用一个侦探破案的例子理解。
卷积层:
寻找局部线索
激活函数:
保留有价值的非线性响应
池化层:
压缩线索,保留重点
更深的卷积层:
组合线索,形成高级证据
Flatten:
把所有证据整理成一份列表
全连接层:
综合证据
Softmax:
给出每个结论的概率
例如识别猫:
第一层卷积:发现边缘
第二层卷积:发现毛发、圆弧
第三层卷积:发现耳朵、眼睛
更深层:形成猫脸特征
全连接层:综合判断是不是猫
四十二、一个必须记住的总框架
原始数据
↓
输入层
↓
特征提取
├─ 卷积
├─ 激活
├─ 池化
└─ 归一化
↓
高级特征
↓
Flatten或全局平均池化
↓
全连接层
↓
输出结果
↓
损失函数
↓
反向传播
↓
优化器更新参数
↓
重复训练
四十三、几个最容易混淆的问题
卷积层和全连接层都在做乘法,有什么区别?
两者本质上都是线性变换,但连接方式不同。
全连接层:
每个输出连接所有输入
参数多
不保留空间结构
卷积层:
只连接局部区域
参数共享
保留空间结构
适合图像
卷积后为什么还要ReLU?
卷积本身仍是线性运算。
如果没有激活函数,多层卷积最终仍可能等价于一个线性变换。
ReLU引入非线性,让网络能够表示复杂模式。
池化是不是必须的?
不是。
现代网络可以使用:
- 步长卷积
- 全局平均池化
- 注意力下采样
替代传统池化。
全连接层是不是必须的?
也不是。
很多现代CNN在最后使用全局平均池化,直接把每个通道压缩成一个数,再输出类别。
这样可以减少参数和过拟合。
