目录
1.3. 并且对于操作图像来说,全连接层并不能利用到图像的空间信息。
1. 背景(全连接层带来的局限性)
1.1. 全连接带来的参数爆炸
我们之前往往用的大部分是全连接层,但是这有一个问题,全连接层一多的话会使得参数数目变得很多。加入我们有一张大小为32*32的彩色图片(已经很小了),那么如果使用全连接层的话,一张图片就有32*32*3=3072个特征。我们用下面由全连接层和激活函数组成的网络作为模型,这个模型显然是很小的。
但是我们看到最后的参数数目竟然有370万个!那如果我们的图片大小为1024*1024的话,我们会有超过30亿个参数!使用 32 位浮 点数,我们就已经需要 12 GB 的内存,更不用说计算和存储梯度了,现在的大多数 GPU 都 不能满足。
1.2. 全连接不具备平移不变性
1.3. 并且对于操作图像来说,全连接层并不能利用到图像的空间信息。
2. 卷积层、池化层
卷积层的参数大小不取决于图像中像素数目,而取决于卷积核的大小以及输出通道数,假设5*5的卷积核且输出通道为7,则参数数目为7*5*5,这显然比线性层的参数少的多。
2.1. 卷积层的局部性和平移不变性
卷积提供局部性和平移不变性。
平移不变性已经说过便不再多说。
局部性:如果我们想要识别出与物体相对应的图案,如天空中的一架飞机,我们可能需要看看附近的像素是如何排列的,但我们对那些彼此相距很远的组合的像素是如何出现的并不那 么感兴趣。事实上,喷火式战斗机的图像角落里有没有树、云或风筝并不重要。
2.2. padding
因为一次卷积操作会使输入图像变小,为了防止我多个卷积后输入图像变小到1*1了那还玩毛?
卷积层的输出通道中每一个通道对应不同的特征,例如一个通道代表平均值,一个通道代表垂直边缘
2.3. 池化层
但是还有一个问题,使用3*3等小的卷积核无法反映整体情况,比如图像中有一个飞机占据了25*25像素,我们难道要用25*25的核吗?显然不是,经验告诉我们用小的卷积核比较好。于是我们采用的方法是在一个卷积后跟着另一个卷积,中间跟已知池化层进行下采样。
上图的卷积都经过了padding所以大小不变,第 2 组卷积核操作的是缩小了一半的 3×3 的邻域,因此它有效地映射回输入的 8×8 的邻域。此外,第 2 组卷积核获取第 1 组卷积核的输出(像平均值、边缘等特征),并在这些输出的基础上提取额外的特征。因此,第 1 组卷积核对一阶、低级特征的小邻域进行操作,而第 2 组卷积核则有效地对更宽的邻域进行操作,生成由先前特征组成的特征。这是一种非常强大的机制,它为卷积神经网络提供了查看非常复杂场景的能力(可以理解为感受野变大了),感受野的理解和计算可以看这篇文章:感受野(Receptive Field)的理解与计算 - 知乎 (zhihu.com)