神经网络 - 卷积神经网络
概念
卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种前馈神经网络,通常由以下三种基本层交替堆叠构成:
- 卷积层(Convolutional Layer)
- 池化层(Pooling Layer,也称池化层)
- 全连接层(Fully Connected Layer)
这些层协同工作,实现从原始输入(如图像)到高级语义特征的逐层抽象。
卷积神经网络有三个结构上的特性:局部连接、权重共享以及汇聚。
| 特性 | 说明 | 带来的优势 |
|---|---|---|
| 局部连接(Local Connectivity) | 每个神经元仅与输入数据的一个局部区域相连(感受野) | 减少参数数量,捕捉局部特征 |
| 权重共享(Weight Sharing) | 同一层的所有神经元共享同一个卷积核参数 | 极大降低模型复杂度,增强泛化能力 |
| 汇聚操作(Pooling) | 对局部区域进行下采样(如最大值或平均值) | 降维、减少计算量、提升平移不变性 |
这些特性赋予了CNN一定程度的平移、缩放和旋转不变性,使其对图像中的对象位置变化具有鲁棒性。
卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型。近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。
一维卷积
一维卷积经常用在信号处理中,用于计算信号的延迟累积.假设一个信号发生器每个时刻 𝑡 产生一个信号 𝑥𝑡,其信息的衰减率为 𝑤𝑘,即在 𝑘 − 1 个时间步长后,信息为原来的𝑤𝑘 倍.假设𝑤1 = 1, 𝑤2 = 1/2, 𝑤3 = 1/4,那么在时刻𝑡 收到的信号𝑦𝑡 为当前时刻产生的信息和以前时刻延迟信息的叠加:

我们把𝑤1, 𝑤2, ⋯称为滤波器(Filter)或卷积核(Convolution Kernel)。假设滤波器长度为𝐾,它和一个信号序列𝑥1, 𝑥2, ⋯的卷积为

二维卷积
卷积也经常用在图像处理中.因为图像为一个二维结构,所以需要将一维卷积进行扩展.给定一个图像 𝑿 ∈ ℝ𝑀×𝑁 和一个滤波器 𝑾 ∈ ℝ𝑈×𝑉,一般𝑈 << 𝑀, 𝑉 << 𝑁,其卷积为

输入信息𝑿 和滤波器𝑾 的二维卷积定义为
𝒀 = 𝑾 ∗ 𝑿
示例如下:

| 卷积核类型 | 示例核矩阵 | 效果 |
|---|---|---|
| 边缘检测(水平) | 检测水平边缘 | |
| 边缘检测(垂直) | 检测垂直边缘 | |
| 锐化 | 增强细节 | |
| 高斯模糊 | 平滑去噪 |
互相关
在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征.在计算卷积 的过程中,需要进行卷积核翻转。在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。
互相关(Cross-Correlation)是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现.给定一个图像𝑿 ∈ ℝ𝑀×𝑁 和卷积核𝑾 ∈ ℝ𝑈×𝑉,它们的互相关为

卷积的变种
- 步长(Stride)是指卷积核在滑动时的时间间隔。
- 零填充(Zero Padding)是在输入向量两端进行补零。
假设卷积层的一维输入神经元个数为𝑀,卷积大小为𝐾,步长为𝑆,在输入两端各填补𝑃 个0(zero padding),那么该卷积层的神经元数量为(𝑀 − 𝐾 + 2𝑃)/𝑆 + 1。
常见卷积类型(以一维为例):
| 类型 | 步长 | 填充 | 输出长度 | 特点 |
|---|---|---|---|---|
| 窄卷积(Narrow) | 1 | 0 | 最基础形式,边缘信息损失 | |
| 宽卷积(Wide) | 1 | 扩展输出,用于生成任务 | ||
| 等宽卷积(Equal-width) | 1 | (若K为奇数) | 保持输入输出尺寸一致,常用 |
(二维图像同理,分别在高和宽方向计算)
卷积神经网络各个层的作用
用卷积来代替全连接
在用全连接前馈网络来处理图像时,会存在以下两个问题:
- 参数太多:输入图像大小为100 × 100 × 3 —— 展开后有 3×10^4 ,若第一隐藏层有1000个神经元 —— 参数高达 3×10^7 ,极易过拟合。
- 局部不变性特征:自然图像中的物体都具有局部不变性特征,而全连接前馈网络很难提取这些局部不变性特征,一般需要进行数据增强来提高性能。
而卷积层有两个很重要的性质:
- 局部连接:在卷积层(假设是第𝑙 层)中的每一个神经元都只和前一层(第𝑙 − 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络。如图所示,卷 积层和前一层之间的连接数大大减少,由原来的 𝑀𝑙 × 𝑀𝑙−1 个连接变为 𝑀𝑙 × 𝐾个连接,𝐾 为卷积核大小。
- 权重共享: 作为参数的卷积核𝒘(𝑙) 对于第𝑙 层的所有的神经元都是相同的。
卷积层通过局部连接 + 权重共享,极大减少了参数量。

各个层的作用
卷积层(Convolutional Layer)
- 功能:提取局部特征(如边缘、纹理、角点等)
- 机制:
- 使用多个卷积核(滤波器)扫描输入
- 每个卷积核检测一种特定模式
- 输出称为“特征图(Feature Map)”
- 参数共享:同一卷积核在整个输入上滑动,共享权重 → 参数量大幅减少
池化层(Pooling Layer)
- 功能:
- 进行特征选择,降低特征图的空间维度(高/宽)
- 减少参数数量和计算量
- 增强模型对微小位移、形变的鲁棒性
- 常见类型:
- 最大池化(Max Pooling):取局部区域最大值(最常用)
- 平均池化(Average Pooling):取局部区域平均值
- 典型设置: 窗口,步长为2 → 尺寸减半
⚠️ 注意:池化层没有可学习参数,只有超参数。
例如最大汇聚过程:

全连接层(Fully Connected Layer)
- 功能:整合前面提取的高维特征,完成最终任务(分类、回归等)
- 输入:通常是最后一个池化层或卷积层展平(flatten)后的向量
- 输出:对应类别数的概率分布(常配合Softmax)或回归值
- 位置:一般位于网络末端
例如:在ImageNet分类任务中,最后一层FC输出1000维向量,表示属于每个类别的概率。
综合示例
LetNet-5是一个较简单的卷积神经网络。下图显示了其结构:输入的二维图像(单通道),先经过两次卷积层到池化层,再经过全连接层,最后为输出层。整体上是:input layer->convulational layer->pooling layer->activation function->convulational layer->pooling layer->activation function->convulational layer->fully connect layer->fully connect layer->output layer.
整个 LeNet-5 网络总共包括7层(不含输入层),分别是:C1、S2、C3、S4、C5、F6、OUTPUT。

