从全连接层到卷积层:理解卷积神经网络的核心思想
d2l-zh 项目地址: https://gitcode.com/gh_mirrors/d2l/d2l-zh
引言
在深度学习领域,卷积神经网络(CNN)已经成为处理图像数据的标准工具。本文将从全连接层(MLP)的局限性出发,逐步推导出卷积层的设计原理,帮助读者深入理解CNN的核心思想。
全连接层的局限性
全连接神经网络在处理结构化数据(如表格数据)时表现良好,但当面对高维感知数据(如图像)时,会面临严重挑战:
- 参数爆炸问题:对于一张100万像素(1MP)的图片,输入维度高达100万。即使隐藏层只有1000个神经元,也需要10^9个参数。
- 计算资源需求:训练如此庞大的网络需要大量计算资源和时间。
- 数据需求:要学习如此多的参数,需要收集海量训练数据。
然而现实中,人类和计算机都能很好地识别图像中的物体,这表明图像本身具有可以利用的特殊结构。
图像的两个关键特性
平移不变性(Translation Invariance)
物体识别系统不应过度关注物体在图像中的精确位置。无论猪出现在图像顶部还是底部,我们都应该能识别它。这种特性称为平移不变性。
局部性(Locality)
图像的早期特征提取应该关注局部区域,而不需要考虑图像远处区域的内容。这种局部特征最终可以聚合起来进行整体图像预测。
从全连接层到卷积层
数学表达
考虑一个处理二维图像X的MLP,其隐藏表示H也是二维的。我们可以将全连接层的权重表示为四阶张量W:
$$ [\mathbf{H}]{i,j} = [\mathbf{U}]{i,j} + \sum_k \sum_l[\mathsf{W}]{i,j,k,l} [\mathbf{X}]{k,l} $$
通过重新索引,可以改写为:
$$ [\mathbf{H}]{i,j} = u + \sum_a\sum_b [\mathbf{V}]{a,b} [\mathbf{X}]_{i+a,j+b} $$
卷积运算的本质
上述公式实际上定义了一个卷积运算:
- 在位置(i,j)处的隐藏单元值是通过对输入图像中以(i,j)为中心的局部区域进行加权求和得到的
- 权重V[a,b]称为卷积核或滤波器
- 这种操作显著减少了参数数量,同时保留了平移不变性
局部感受野
引入局部性假设后,我们只需要考虑距离(i,j)不超过Δ的区域:
$$ [\mathbf{H}]{i,j} = u + \sum{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} [\mathbf{V}]{a,b} [\mathbf{X}]{i+a,j+b} $$
这就是卷积层的标准定义,参数数量从全连接层的O(n^4)减少到O(Δ^2)。
多通道扩展
实际图像是三维张量(高度×宽度×通道),因此需要扩展卷积操作:
$$ [\mathsf{H}]{i,j,d} = \sum{a=-\Delta}^{\Delta} \sum_{b=-\Delta}^{\Delta} \sum_c [\mathsf{V}]{a,b,c,d} [\mathsf{X}]{i+a,j+b,c} $$
其中d索引输出通道。这种多通道设计允许网络在不同通道中学习不同类型的特征(如边缘、纹理等)。
卷积与互相关的区别
严格来说,深度学习中的"卷积"操作实际上是互相关(cross-correlation):
- 数学卷积:$(f*g)(i,j) = \sum_a\sum_b f(a,b)g(i-a,j-b)$
- 互相关:$(f*g)(i,j) = \sum_a\sum_b f(a,b)g(i+a,j+b)$
这种区别在实践中影响不大,因为通过学习可以自动调整滤波器。
实际应用示例
以"寻找Waldo"游戏为例:
- 设计一个Waldo检测器,对图像每个局部区域评分
- 高评分区域可能包含Waldo
- 通过卷积层实现这种滑动窗口检测
- 多通道设计可以捕捉Waldo的不同特征(红白条纹、帽子等)
总结
- 卷积神经网络通过利用图像的平移不变性和局部性,大幅减少了参数数量
- 卷积层本质上是受限制的全连接层,具有共享权重和局部连接的特点
- 多通道设计允许网络在不同层次上提取多样化特征
- 这种设计使CNN成为处理图像等网格化数据的强大工具
理解这些核心概念对于设计和使用卷积神经网络至关重要。在后续学习中,我们将探讨如何组合多个卷积层、选择适当的激活函数,以及构建高效的CNN架构。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考