全连接层的局限性
多层感知机(MLP)适合处理表格数据,但处理图像时需要将二维数据展平为一维向量,导致空间结构信息丢失。例如,使用3600万像素的RGB图像配合单隐藏层(100个神经元)时,参数量高达36亿,远超实际需求。
### 卷积神经网络的优势
卷积神经网络(CNN)通过参数共享和池化操作大幅减少参数量,同时保留图像的空间特征。其核心原则包括:
1. **平移不变性**:无论目标出现在图像何处,网络对相同特征的响应一致。
2. **局部性**:网络关注局部区域而非全局,通过卷积核提取局部特征。
### 卷积层与池化层
- **卷积层**:通过卷积核与输入的交叉相关计算,提取边缘、纹理等特征。支持多通道输入(如RGB三通道),每个通道的卷积结果求和后输出。
- **填充与步幅**:填充(如补零)可调整输出尺寸;步幅控制卷积核移动间隔,成倍缩小输出尺寸。
- **池化层**:最大池化保留局部显著特征,平均池化平滑特征,两者均降低计算复杂度。
### 经典网络架构
1. **LeNet**
- 用于手写数字识别(MNIST数据集)。
- 结构:2个卷积层(5×5核,Sigmoid激活)+3个全连接层。
- 特点:首个成功应用的CNN,引入卷积编码器与全连接块的结合。
2. **AlexNet**
- 2012年ImageNet竞赛冠军,改进包括:
- 使用ReLU激活函数(缓解梯度消失)。
- 引入Dropout防止过拟合。
- 采用最大池化和数据增强。
- 结构:5卷积层+3全连接层,比LeNet更深更宽。
3. **VGG**
- 通过堆叠重复的卷积块(3×3核,填充1)构建深度网络,如VGG-16、VGG-19。
- 优势:更深的网络结构提升特征抽象能力,3×3卷积叠加等效于大核卷积,但参数更少。
### 视觉分层理论
CNN通过多层非线性变换自动学习特征:
- **浅层**:提取边缘、颜色等底层特征。
- **中层**:识别条纹、形状等纹理特征。
- **高层**:捕获语义特征(如物体部件)。
### 总结
从LeNet到VGG的发展体现了CNN的优化路径:通过更深的网络结构、改进的激活函数(ReLU)、正则化方法(Dropout)及模块化设计(VGG块),不断提升模型性能。这些技术为现代深度学习在图像识别中的应用奠定了基础。
一、传统多层感知机(MLP)的局限性
- 问题:将图像展平为1D向量时丢失空间结构信息
- 参数量爆炸:猫狗分类示例(100神经元 × 36M像素 = 3.6×10⁹参数)
---
二、卷积神经网络(CNN)的核心思想
1. 两个关键原则
- 平移不变性:网络对图像中相同区域的响应一致
- 局部性:网络仅关注局部区域而非全局关联
2. 卷积层公式
输出值计算公式:
\
y_{i,j} = \sum_{k,l} K_{k,l} \cdot x_{i+k,j+l} + b
\
- \( K \): 卷积核(可学习参数)
- \( x \): 输入特征图
- \( b \): 偏置项
---
三、填充(Padding)与步幅(Stride)
1. 填充公式
- 填充后尺寸:\( H' = H + 2P \)(假设上下左右对称填充)
- 常用填充值:0
2. 步幅公式
- 输出尺寸计算:
\
O = \frac{H - K + P}{S} + 1
\
- \( H \): 输入高度,\( K \): 卷积核尺寸,\( P \): 填充,\( S \): 步幅
---
四、池化层(Pooling)
1. 最大池化:取窗口内最大值
2. 平均池化:取窗口内平均值
---
五、经典网络架构演进
架构 关键特点
LeNet5 双卷积层 + 三层全连接<br> 使用Sigmoid激活函数
AlexNet 8层深度网络(5卷积层 + 3全连接层)<br> 引入ReLU、Dropout、数据增强
VGG16/19 重复使用3×3卷积块("小核更深"设计)<br> 采用2×2最大池化层
---
六、关键技术突破
1. ReLU激活函数
\
f(x) = \max(0, x)
\
- 解决梯度消失问题
2. Dropout正则化
- 随机屏蔽部分神经元(概率通常设为0.5),提升泛化能力
3. 数据增强
- 对训练图像进行旋转、裁剪、翻转等操作,扩充数据集
---
七、学习表征理论
- 定义:通过多层非线性变换自动学习有效特征
- 层次性:
\
\text{低层} \xrightarrow{\text{边缘/纹理}} \text{中层} \xrightarrow{\text{物体部件}} \text{高层} \xrightarrow{\text{语义}}
\
---
八、ImageNet数据集影响
- 规模:14M训练图像,1000类
- 推动目标:从"手工设计特征"转向"端到端特征学习"
---
九、公式总结
1. 全连接层参数量:
\
P_{\text{FC}} = (N_{\text{in}} \times N_{\text{out}}) + N_{\text{out}}
\
- \( N_{\text{in}} \): 输入神经元数,\( N_{\text{out}} \): 输出神经元数
2. 卷积层参数量:
\
P_{\text{Conv}} = K^2 \times C_{\text{in}} \times C_{\text{out}} + C_{\text{out}}
\
- \( K \): 卷积核尺寸,\( C_{\text{in/out}} \): 输入/输出通道数
---