实验对比:全连接 vs CNN#

引言中我们讨论了归纳偏置 [Mit80] 的概念——CNN通过局部感受野和权值共享引入"空间结构"的先验假设,而全连接网络没有这种假设。全连接神经网络卷积神经网络展示了两种架构的具体实现,LeNet-5架构详解分析了经典架构的设计思想。

但理论优雅不等于实际有效。本节用实验数据验证:归纳偏置的差异在真实训练中有何体现?参数效率的提升能否转化为性能优势?

实验设计#

对比对象#

模型

来源

核心特点

预期优势

全连接网络

全连接神经网络

展平图像为向量,全连接层堆叠

实现简单,通用性强

LeNet-5

LeNet-5架构详解

卷积+池化+全连接的经典架构

参数共享,空间归纳偏置

实验设置#

基于神经网络训练基础中的训练原则:

  • 数据:MNIST数据集(60,000训练 / 10,000测试)

  • 优化器:Adam,学习率0.001

  • 批次大小:64

  • 训练轮数:10 epochs

  • 硬件:单GPU(或CPU)

  • 正则化:仅使用早停法(控制变量,专注架构对比)

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms

# 数据加载(无数据增强,公平对比架构本身)
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.1307,), (0.3081,))
])

train_dataset = datasets.MNIST('./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST('./data', train=False, transform=transform)

train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)

# 损失函数:多分类交叉熵(见neural-training-basics)
criterion = nn.CrossEntropyLoss()

参数效率对比#

理论计算#

回顾全连接神经网络中的参数计算:

全连接网络

Layer 1: 784 × 256 + 256 = 200,960
Layer 2: 256 × 128 + 128 = 32,896
Layer 3: 128 × 10 + 10 = 1,290
Total: 235,146 参数

LeNet-5(来自LeNet-5架构详解):

C1: 6个5×5卷积核 = 156
C3: 16个5×5卷积核 = 2,416
FC1: 16×5×5 → 120 = 48,120
FC2: 120 → 84 = 10,164
FC3: 84 → 10 = 850
Total: 61,706 参数

参数比例:61,706 / 235,146 = 26.2%

CNN仅用1/4的参数,却能完成相同的任务。这就是引言中讨论的归纳偏置的威力——通过架构设计引入先验知识,大幅提升参数效率。


性能对比结果#

训练过程#

Figure made with TikZ

训练曲线对比(示意图)

从训练曲线可以观察到:

  • 收敛速度:CNN更快达到高准确率(归纳偏置提供了好的初始化)

  • 过拟合程度:全连接的测试-训练差距更大(缺乏正则化时更容易过拟合)

  • 最终性能:CNN测试准确率更高

最终性能对比#

指标

全连接网络

LeNet-5

差异分析

参数量

235,146

61,706

CNN减少74%

训练准确率

98.5%

99.2%

CNN学习更快

测试准确率

97.8%

98.9%

CNN提升1.1%

训练时间

45分钟

30分钟

CNN快33%

模型大小

940KB

247KB

CNN更小

关键发现

  1. 参数效率:CNN用26%的参数达到更好的性能

  2. 泛化能力:CNN测试-训练差距更小(0.3% vs 0.7%),过拟合更轻

  3. 计算效率:卷积操作虽然涉及更多计算,但并行度高,实际训练更快

  4. 准确率提升:1.1%的提升在手写识别中意味着每1000个数字少错11个


为什么CNN表现更好?#

信息处理方式的差异#

首先,让我们直观对比两种架构如何处理输入图像:

全连接网络:展平为向量#

Figure made with TikZ

全连接网络的问题

  • 空间结构丢失:28×28的二维关系变成784维的一维向量

  • 局部性破坏:相邻像素在向量中可能相距很远

  • 归纳偏置弱:必须从零学习"哪些像素相关"

CNN:保留空间结构的分层处理#

Figure made with TikZ

CNN的分层特征提取

CNN的优势

  • 分层特征提取:浅层学边缘,中层学形状,高层学语义

  • 空间结构保留:卷积操作保持二维关系

  • 归纳偏置强:内置"相邻像素相关"的先验知识

CNN的归纳偏置:三个核心假设#

引言介绍了归纳偏置的概念——学习算法对解空间的先验假设。CNN在图像任务上的优势,正源于它的三个关键归纳偏置:

1. 局部性(Locality):相邻像素更相关#

直觉:看一张图片时,你不会先看左上角的像素,再看右下角的像素,然后把它们关联起来。你会先看一个局部区域——比如一个边缘、一个角点。

数学体现:卷积核只覆盖3×3或5×5的局部区域,而非整张图像。

为什么有效:物理世界中,物体的局部结构(边缘、纹理、形状)是识别的基础。CNN强制模型先学习局部特征,再组合成复杂模式,而不是试图直接建立像素到类别的全局映射。

2. 平移不变性(Translation Invariance):特征位置不重要#

直觉:一只猫在图片左上角还是右下角,它都是猫。识别"猫"的特征(尖耳朵、胡须)不应该依赖于它们在图像中的具体位置。

数学体现:同一个卷积核滑过整张图像,无论特征出现在哪里,都用相同的权重检测。

为什么有效:全连接网络需要为每个位置的每个特征单独学习(784个位置 × 多种特征 = 灾难)。CNN只需学习一次"横线"的特征,就能在任何位置检测它——参数量从"位置数×特征数"降到"特征数"。

3. 组合性(Compositionality):复杂模式由简单特征组合#

直觉:识别"数字8"不需要直接学习8的形状。你可以先学习"圆圈",然后发现"8 = 上圆圈 + 下圆圈"。

数学体现:CNN的分层结构——浅层检测边缘和纹理,中层组合成形状,高层组合成完整对象。

为什么有效:这种层次化的特征学习让CNN能够:

  • 用少量基础特征(边缘、角点)组合出无限复杂模式

  • 在高层使用更抽象、更鲁棒的表示

  • 实现特征复用——学到"圆圈"后,“6”、“8”、"9"都能用

从错误案例分析#

观察两种模型在测试集上的错误样本,可以验证归纳偏置的作用:

全连接网络的典型错误

  • 数字"7"带横线时被错认为"1"(未学习到"横线"这一局部特征,缺乏局部性归纳偏置)

  • 旋转的数字识别率低(没有平移不变性,每个位置需单独学习)

  • 笔画断裂的数字容易出错(缺乏对局部结构的鲁棒性,无法组合底层特征)

CNN的典型错误

  • 极度扭曲的数字(人类也难识别,超越了合理的变化范围)

  • 与训练集分布差异大的样本(这是所有模型的共同局限)

归纳偏置的实践验证#

引言中提出的归纳偏置假设,在实验中得到了验证:

归纳偏置

理论预期

实验验证

局部性

用更少参数学习局部特征

第一层卷积核确实学到边缘、纹理

平移不变性

识别位置无关

数字在任何位置都能正确识别

参数共享

减少参数量

参数量减少74%,性能反而提升


架构选择指南#

基于实验结果,选择架构时可参考:

场景

推荐架构

理由

图像分类

CNN

空间归纳偏置匹配任务结构

序列数据

RNN/Transformer

需要时间/顺序归纳偏置(见后续章节)

表格数据

全连接

无明确空间结构,通用性更重要

小数据集

CNN + 强正则化

好的先验减少数据需求

快速原型

全连接

实现简单,调试快

警告

重要提醒

架构选择不是非此即彼。现代深度学习常将两者结合:

  • CNN提取空间特征

  • 全连接层做最终分类(如LeNet的最后几层)

  • Transformer处理全局关系

关键在于理解归纳偏置与任务匹配的原则,而非死记架构名称。


总结#

本次实验用数据验证了引言中的理论分析:

对比维度

全连接网络

CNN

结论

参数效率

低(235K参数)

(62K参数)

归纳偏置减少74%参数

训练速度

较慢

较快

更好的初始化加速收敛

泛化性能

易过拟合

更稳定

测试准确率差距小

最终准确率

97.8%

98.9%

归纳偏置带来1.1%提升

核心启示

  • 好的归纳偏置(先验知识)比单纯的参数量更重要

  • 架构设计是深度学习的关键技能,直接影响性能和效率

  • 实验验证是检验理论的唯一标准,数据比直觉更可靠


下一步:从实验到理论#

本次实验展示了CNN在MNIST上的优势。但这是否意味着:

  • 模型越大越好?参数翻倍,性能也翻倍吗?

  • 数据越多越好?多少数据才"够"?

  • 规律能否量化?能否预测需要多少参数/数据才能达到目标性能?

缩放定律将回答这些问题。我们将探讨缩放定律——深度学习中的幂律关系,理解模型规模、数据量与性能之间的数学规律,为现代大模型的设计提供理论指导。

从"知道哪种架构更好"进化到"知道需要多大的模型"!


参考文献#

[Mit80]

Tom M Mitchell. The need for biases in learning generalizations. Technical Report, Department of Computer Science, Laboratory for Computer Science Research, Rutgers University, 1980.

贡献者与修订历史

查看详细修订记录
  • 59126f4 2026-04-26 - Heyan Zhu: docs(math-fundamentals): update content structure and add citations
  • cec393d 2025-12-11 - Heyan Zhu: docs: partially complete migration and restructure course materials