【深度学习(Deep Learning)】学习笔记 9-2

本文讨论卷积神经网络(CNN)相比传统全连接神经网络的特点和优势。传统全连接网络参数过多,会增加内存开销、降低计算效率、造成过拟合,且无法处理可变输入。CNN通过稀疏交互、参数共享和等变表示三个思想提升性能,还能处理可变输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本篇我们将继续讨论卷积神经网络(CNN),讨论使用CNN背后的动机,即和传统全连接神经网络相比,CNN有何特点和优势。本篇为《深度学习》(Yoshua Bengio, et al.)第9章学习笔记,主要涵盖第9.2节内容,经本人学习、理解并加以加工。由于水平有限,如有不当之处,欢迎大家指出,一起学习交流。


我们先来回顾一下传统全连接神经网络,如下图所示。传统全连接神经网络每个输入单元和每个输出单元之间都有边相连,每条边对应一个权重参数,也就是权重矩阵的一个元素。从输入(非输入层,此处泛指)到输出(非输出层,此处泛指),相当于做了个矩阵乘法运算。

在这里插入图片描述

这么个结构非常简单,有时候也非常有效,但是只适合解决输入较小的问题。例如,对于MNIST数字识别问题,每张图片的大小是 28 × 28 × 1 28 \times 28 \times 1 28×28×1,其中 28 × 28 28 \times 28 28×28表示图片大小, × 1 \times 1 ×1表示图片是黑白的,只有一个色彩通道。假设第一层隐藏层有500个单元,那么从输入层(将图片展开为一个长度为784的向量作为输入)到第一层隐藏层,有 784 × 500 = 392000 784 \times 500 = 392000 784×500=392000个参数(不考虑偏置),矩阵乘法需要392000次乘法运算和392000次加法运算。但是对于CIFAR-10数据集,每张图片的大小为 32 × 32 × 3 32 \times 32 \times 3 32×32×3,那么从输入层到第一层隐藏层就有 32 × 32 × 3 × 500 ≈ 150 32 \times 32 \times 3 \times 500 \approx 150 32×32×3×500150万个参数以及150万次左右的乘法运算和加法运算。这还仅仅只涉及从输入层到第一层隐藏层。
通过上面的例子,我们可以看出。传统全连接神经网络面临参数过多的问题。参数过多不仅会增加内存开销,降低计算效率,还会造成过拟合问题。而且传统全连接神经网络无法处理大小可变的输入。因此,需要一个更加合理的神经网络结构。

相比传统的全连接神经网络,CNN主要通过以下三个重要的思想来帮助提升机器学习系统 [1]

  1. 稀疏交互(Sparse Interaction)
  2. 参数共享(Parameter Sharing)
  3. 等变表示(Equivariant Representation)

除此之外,CNN还可以处理大小可变的输入。

1. 稀疏交互

稀疏交互也叫做稀疏连接(Sparse Connectivity)或稀疏权重(Sparse Weights)[1],即每个输入单元只和部分输出单元交互(下图1,原图9.2),而每个输出单元也只和部分输入单元交互(下图2,原图9.3),如下图所示。在上一篇介绍卷积运算的时候,我们提到离散卷积可以写成矩阵乘法。我们观察相应的Toeplitz矩阵和双重分块循环矩阵也可以发现其是稀疏矩阵,这说明卷积运算的输入和输出之间是稀疏的交互或连接。

123

图1. 上图为稀疏交互,下图为全连接。每个输入单元只和部分输出单元交互。

 
在这里插入图片描述

图2. 上图为稀疏交互,下图为全连接。每个输出单元只和部分输入单元交互。

 

一般,对于CNN而言,内核的大小要远远小于输入的大小,因此CNN中卷积相关的层之间的交互是相当稀疏的。如上图2,假设输入 x \pmb{x} xxx的长度为 m m m,输出 s \pmb{s} sss的长度为 n n n,稀疏交互中每个输出拥有的连接数为 k k k。那么对于全连接,需要 m × n m \times n m×n个参数,运行时间为 O ( m × n ) O(m \times n) O(m×n),而稀疏交互只需要 k × n k \times n k×n个参数,运行时间也降为 O ( k × n ) O(k \times n) O(k×n)。因此可以大大节省内存开销,提升计算效率。

虽然稀疏交互大大减少了CNN参数数目,但是其并不会影响神经网络的性能。这是因为在CNN中,处在网络深层的单元是能够与绝大部分输入进行间接交互的,这使得CNN能够通过变量间简单的稀疏交互来刻画它们之间复杂的交互,如下图3(原图9.4)所示。

在这里插入图片描述

图3. 网络深层单元可以与绝大部分输入进行间接交互

2. 参数共享

参数共享是指在一个模型的多个函数中使用相同的参数。参数共享也叫绑定的权重(Tied Weights) [1]。在传统全连接神经网络中,当计算某层的输出时,权重参数矩阵中的每个元素只参与计算某输出单元的一次计算,且计算不同层输出时,权重参数矩阵不同。而在CNN中,每个输出单元都使用同一个参数集计算得到,只是使用了不同位置的输入。这使得我们无需对每个位置都学习一个单独的参数集,而只需要学习一个共享的参数集。如图4所示(原图9.5),上面图片中的每个 s i s_{i} si都由三个不同的输入 x i x_{i} xi乘以一个相同的权重参数集再经过其他运算得到。我们也可以回顾上篇卷积运算相关内容,通过观察可以发现Toeplitz矩阵和双重分块循环矩阵实际上都由相同的内核值或者说参数组成,如都由[4, 5]组成。

在这里插入图片描述

图4. 参数共享 vs. 全连接

 
参数共享虽然不会在稀疏交互的基础上改变前向传播的计算效率(仍然为 O ( k × n ) O(k \times n) O(k×n)),但是其可以显著降低内存开销(参数数目由 k × n k \times n k×n降至 k k k)。

3. 等变表示

如果一个函数满足输入改变,输出也以同样的方式改变这一性质,我们就说它是等变(Equivariant)的 [1]。卷积或者说参数共享具有对平移等变的性质。这在数学上可以很容易理解证明。这里,我们借用下面图像处理的例子加以说明 [2]。图5中,输入图像的左下角有一个人脸,经过卷积,人脸的特征(眼睛,鼻子)也位于特征图谱的左下角;图6中,人脸位于输入图像左上角,特征也位于特征图谱的左上角。
在这里插入图片描述

图5. 人脸位于输入图像左下角,特征也位于特征图谱的左下角

 
在这里插入图片描述

图6. 人脸位于输入图像左上角,特征也位于特征图谱的左上角

 
需要指出的是,卷积对除平移之外的其他一些变化并不是天然等变的,如图像的放缩或者旋转。这需要其他一些机制来处理这些变换


注释:
从数学上直观感受,个人认为,由于下采样(卷积核移动步幅和池化)的存在,实际上CNN对平移并不拥有平移等变性质,具体可以参考参考文献 [3][4]


Reference

[1]: Goodfellow I , Bengio Y , Courville A . Deep Learning[M]. The MIT Press, 2016.
[2]: https://zhangting2020.github.io/2018/05/30/Transform-Invariance/
[3]: https://blog.youkuaiyun.com/weixin_41068770/article/details/103868686
[4]: https://blog.tsingjyujing.com/ml/common/conv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值