第一部分:CNN的基础概念
1. 什么是CNN?
卷积神经网络(Convolutional Neural Networks, CNN)是一种专门用于处理网格状数据(如图像或时间序列)的深度学习神经网络。CNN通过引入卷积操作、池化操作和全连接层,能够高效地提取数据中的空间特征,特别适用于图像分类、目标检测、图像分割等任务。
与传统全连接神经网络相比,CNN的优势在于:
- 参数共享:卷积核在整个输入上滑动,减少了参数量。
- 局部感知:通过感受野(receptive field)捕捉局部特征。
- 平移不变性:对输入的平移具有一定的鲁棒性。
2. CNN的核心思想
CNN的设计灵感来源于生物视觉系统(如猫的视觉皮层)。Hubel和Wiesel的研究发现,视觉神经元对局部区域的刺激敏感,且不同神经元负责检测不同类型的特征(如边缘、纹理)。CNN通过以下机制模拟这一过程:
- 卷积层:提取局部特征(如边缘、角点)。
- 池化层:降低空间维度,保留重要信息,增强鲁棒性。
- 激活函数:引入非线性,增强模型的表达能力。
- 全连接层:将提取的特征整合,用于分类或回归。
3. CNN的典型应用场景
- 图像分类:如ImageNet上的物体识别。
- 目标检测:如YOLO、Faster R-CNN。
- 图像分割:如U-Net、DeepLab。
- 人脸识别:如DeepFace。
- 自然语言处理:如文本分类(通过一维卷积)。
- 时间序列分析:如语音信号处理。
第二部分:CNN的数学与核心组件
1. 卷积操作
卷积是CNN的核心操作,用于提取输入数据的局部特征。数学上,二维卷积定义为: ( I ∗ K ) ( x , y ) = ∑ m ∑ n I ( x + m , y + n ) ⋅ K ( m , n ) (I * K)(x, y) = \sum_{m} \sum_{n} I(x+m, y+n) \cdot K(m, n) (I∗K)(x,y)=∑m∑nI(x+m,y+n)⋅K(m,n),其中:
- I I I:输入图像(或特征图),通常为 H × W × C H \times W \times C H×W×C(高、宽、通道数)。
- K K K:卷积核(kernel/filter),通常为 k h × k w × C k_h \times k_w \times C kh×kw×C。
- ∗ * ∗:卷积运算。
- ( x , y ) (x, y) (x,y):输出特征图的像素位置。
卷积的超参数
- 卷积核大小:如 3 × 3 3 \times 3 3×3、 5 × 5 5 \times 5 5×5。
- 步幅(Stride)