在全连接前馈神经网络中,如果第 𝑙 层有 𝑀𝑙 个神经元,第 𝑙 − 1 层有 𝑀𝑙−1 个 神经元,连接边有 𝑀𝑙 × 𝑀(𝑙−1) 个,也就是权重矩阵有 𝑀𝑙 × 𝑀(𝑙−1) 个参数。当 𝑀𝑙 和 𝑀(𝑙−1) 都很大时,权重矩阵的参数非常多,训练的效率会非常低。
在卷积神经网络(CNN)中,用卷积层替代全连接层的核心目的是通过保留空间结构信息和减少参数量来提升模型的效率和泛化能力。
一、全连接层的局限性
1. 参数爆炸与过拟合
-
参数数量:假设输入为 H×W×C 的特征图(如 7×7×512),全连接层输出维度为 D,则参数数量为:
参数量=(H×W×C)×D+D例如,输入为 7×7×512,输出为 4096,则参数高达 7×7×512×4096=102,760,448个。
-
过拟合风险:大量参数容易在小数据集上过拟合。
2. 空间信息丢失
-
全连接层将多维特征图展平为一维向量,破坏图像或特征的空间结构,难以建模局部特征间的关联。
3. 输入尺寸固定
-
全连接层要求输入尺寸固定,无法灵活处理不同分辨率的输入。
二、卷积层替代全连接的优势
1. 保留空间结构
-
局部连接:卷积操作直接在二维(或三维)特征图上滑动,保持空间维度。
-
权重共享:同一卷积核扫描全图,捕捉平移不变的特征(如边缘、纹理)。
2. 参数效率
-
参数量公式:假设卷积核大小为 K×K,输入通道 C,输出通道 D:
参数量=K×K×C×D+D例如,K=3, C=512, D=4096,则参数为 3×3×512×4096=18,874,368 个,远低于全连接层。
3. 输入尺寸灵活性
-
卷积层支持任意尺寸的输入(通过调整步长或填充),例如:
-
输入 7×7×512 → 输出 1×1×4096(使用 7×7 卷积核,步长=1)。
-
输入 14×14×512 → 输出 8×8×4096(使用 7×7 卷积核,步长=1)。
-
三、替代全连接的实现方法
1. 全局平均池化(Global Average Pooling, GAP)
-
操作:对每个通道的特征图取平均值,输出 1×1×C 的向量。
-
优势:
-
参数量为 0(无权重参数)。
-
强制网络学习通道级别的语义特征。
-
-
应用:广泛用于ResNet、SENet等网络,直接连接分类器。
示例:
# 输入形状:(batch, 7, 7, 512)
x = GlobalAveragePooling2D()(x) # 输出形状:(batch, 512)
x = Dense(num_classes)(x) # 全连接层参数量:512×num_classes
2. 全卷积网络(Fully Convolutional Network, FCN)
-
设计:所有层均为卷积层,最后一层用 1×1 卷积输出类别概率。
-
优势:
-
支持任意尺寸输入(如语义分割任务)。
-
保持空间分辨率,输出像素级预测。
-
示例:
# 输入形状:(batch, H, W, 512)
x = Conv2D(4096, (7, 7), activation='relu', padding='valid')(x) # 输出:(batch, H-6, W-6, 4096)
x = Conv2D(num_classes, (1, 1))(x) # 输出:(batch, H-6, W-6, num_classes)
3. 用大核卷积模拟全连接
-
操作:使用与输入特征图尺寸相同的卷积核(如 7×7),等效于全连接。
-
公式:输入 H×W×C,使用 H×W 的卷积核 → 输出 1×1×D。
-
优势:参数共享,避免展平操作。
示例:
# 输入形状:(batch, 7, 7, 512)
x = Conv2D(4096, (7, 7), activation='relu')(x) # 输出形状:(batch, 1, 1, 4096)
x = Flatten()(x) # 展平为 (batch, 4096)
四、实际应用场景
1. 图像分类
-
传统方法:VGG16 使用全连接层(参数量占比 >90%)。
-
现代改进:ResNet 用全局平均池化替代全连接,参数量减少 80%。
2. 目标检测
-
Faster R-CNN:用卷积层生成区域建议(RPN),避免全连接层的计算瓶颈。
-
YOLO:全卷积设计直接输出检测框和类别。
3. 语义分割
-
U-Net:全卷积网络保留空间信息,输出逐像素标签。
-
DeepLab:空洞卷积扩大感受野,替代全连接层的全局建模。
五、卷积替代全连接的本质
维度 | 全连接层 | 卷积层替代方案 |
---|---|---|
参数效率 | 高参数,易过拟合 | 参数共享,大幅减少参数量 |
空间保留 | 展平破坏空间结构 | 保持二维/三维特征结构 |
灵活性 | 输入尺寸固定 | 支持任意尺寸输入 |
计算效率 | 密集矩阵乘法,计算量大 | 滑动窗口局部计算,高效并行 |
适用任务 | 简单分类 | 分类、检测、分割等复杂任务 |
用卷积替代全连接的实质是通过局部连接和权重共享,在保留空间信息的同时,实现参数高效的计算。这种设计不仅提升模型效率,还增强了模型对平移、缩放等变化的鲁棒性,是深度学习从“暴力映射”走向“结构化学习”的重要进步。
六、卷积参数量=K*K*C*D+D如何得来?
在卷积神经网络中,卷积层的参数量的计算公式为:
其中:
-
K×K: 卷积核的空间尺寸(如 3×33×3)
-
C: 输入通道数(Input Channels)
-
D: 输出通道数(Output Channels)
以下通过具体示例和分步推导,解释公式的由来:
1. 权重参数的来源(K×K×C×D)
单通道输入(C=1)
假设输入是单通道(如灰度图像),卷积核尺寸为 K×K,输出通道数为 D。
-
每个输出通道需要一个独立的卷积核。
例如,若输出通道数 D=16,则需要 16 个不同的 K×K 卷积核。 -
权重参数总数:K×K×D。
多通道输入(C>1)
当输入是多通道(如 RGB 图像的 C=3)时,每个输出通道的卷积核需要同时处理所有输入通道。
-
每个输出通道的卷积核维度为 K×K×C。
例如,输入是 RGB 图像(C=3),则每个卷积核需要 3 个 K×K 的二维核,分别对应 R、G、B 通道。 -
权重参数总数:K×K×C×D。
图示说明(以 C=3, D=2, K=3 为例):
输出通道1的卷积核:R通道核: 3×3 参数G通道核: 3×3 参数B通道核: 3×3 参数总参数: 3×3×3 = 27输出通道2的卷积核:R通道核: 3×3 参数G通道核: 3×3 参数B通道核: 3×3 参数总参数: 3×3×3 = 27总权重参数 = 27 × 2 = 54 = 3×3×3×2 = K×K×C×D
2. 偏置参数的来源(+D)
每个输出通道有一个独立的偏置项 b,用于调整激活值的基线。
-
输出通道数为 D → 需要 D 个偏置。
例如,若输出通道数 D=16,则有 16 个偏置值 b1,b2,...,b16。
3. 具体示例计算
案例1:经典卷积层(AlexNet 第一层)
-
输入:RGB 图像(C=3)
-
卷积核:K=11×11
-
输出通道数:D=96
参数量计算:
案例2:轻量级卷积层(MobileNet 深度可分离卷积)
-
输入:C=256
-
卷积核:K=3×3
-
输出通道数:D=256
参数量计算:
-
卷积层参数量:
K×K×C×D+D
关键差异:
-
全连接层的权重参数与输入空间尺寸 H×W 成正比,导致参数爆炸(如 H=7,W=7H=7,W=7 时参数量是卷积层的
倍)。
-
卷积层通过权重共享(同一卷积核扫描全图)和局部连接,显著减少参数量。
卷积层的参数量公式 K×K×C×D+D 体现了以下设计特性:
-
通道独立性:每个输出通道需要独立处理所有输入通道(C)。
-
空间局部性:卷积核在空间维度共享权重(K×K)。
-
偏置必要性:每个输出通道需要一个偏置调整激活值。
这种参数共享机制使得卷积层既能高效提取空间特征,又避免了全连接层的参数冗余,是 CNN 成功的核心设计之一。
七、局部连接 & 权重共享
1、局部连接
在卷积层(假设是第 𝑙 层)中的每一个神经元都只和前一层(第 𝑙 − 1 层)中某个局部窗口内的神经元相连,构成一个局部连接网络。如下图所示,卷积层和前一层之间的连接数大大减少,由原来的 𝑀𝑙 × 𝑀(𝑙−1) 个连接变为 𝑀𝑙 × 𝐾 个连接,𝐾 为卷积核大小。
2、权重共享
作为参数的卷积核 𝒘(𝑙) 对于第 𝑙 层的所有的神经元都是相同的。
权重共享可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的卷积核。
由于局部连接和权重共享,卷积层的参数只有一个 𝐾 维的权重 𝒘(𝑙) 和 1 维 的偏置 𝑏(𝑙),共 𝐾 + 1 个参数。参数个数和神经元的数量无关。此外,第 𝑙 层的神经元个数不是任意选择的,而是满足 𝑀𝑙 = 𝑀(𝑙−1) − 𝐾 + 1。
八、第 𝑙 层的神经元数量𝑀𝑙 = 𝑀(𝑙−1) − 𝐾 + 1如何得来?
在卷积神经网络中,第 𝑙 层的神经元数量 是由卷积操作的局部连接和滑动窗口机制决定的。
1. 核心推导(以步长=1、无填充为例)
2. 直观解释
-
滑动窗口机制:
卷积核每次在输入上滑动 1 步,覆盖连续的 K 个输入神经元。
每滑动一次生成 1 个输出神经元,直到无法再完整覆盖输入。 -
覆盖范围:
3. 具体示例
4. 参数与神经元数量的独立性
-
参数数量:仅由卷积核大小 K 和偏置决定(K+1),与输入尺寸无关。(注意这里的输入尺寸,是指输入的变量数,并非输入通道)
例如,无论输入是 5 还是 100,只要 K=3,参数数恒为 3+1=4。 -
5. 扩展情况
总结
-
该公式本质是滑动窗口覆盖输入数据的结果,反映了卷积操作对局部特征的逐段提取特性。
-
参数数量与输入尺寸无关,体现了权重共享的优越性。