这是看了张玉宏的《深度学习之美》做的笔记!这本书写得真的是接地气,通俗易懂,有趣生动!
卷积层的全连接
在 CIFAR-10 训练集中,所有图片的大小都只有 32 x 32 x 3 32x32x3 32x32x3,即32像 素宽, 32像素高, RGE:(红、 绿、蓝) 3 色通道。 对于计算机而言,每张图片都是一个 32 × 32 × 3 32×32×3 32×32×3的数值矩阵。
按照全连接的前馈神经网络的处理模式,在输入层就得有 32x32x3 ( 3072 )个对应的神经元,到了第一个隐含层,由于是全连接,所以每一个神经元都会有3072个权值连接。
于是,在整体上,在不考虑偏置参数的情况下,在 Same padding (等大填充)模式下,隐含层的神经元个数也为 32 x 32 × 3 32x32×3 32x32×3,那么输入层到隐含层之间就会有 ( 32 × 32 × 3 ) × ( 32 × 32 × 3 ) = 9437184 ( 32×32×3) ×( 32×32×3 ) =9437184 (32×32×3)×(32×32×3)=9437184个连接。 这个数字对于计算机而言,似乎是可以接受的,但显然, 全连接模式很难适用于更大的图片以及更深的网络拓扑。
假设我们分析的是高清图片,输入的是 1000×1000x3 的彩色图片,那么对于前馈全连接的神经网络来说,输入层到隐含层的参数权值就达到 ( 3 × 1 0 3 × 1 0 3 ) × ( 3 × 1 0 3 × 1 0 3 ) = 9 × 1 0 12 ( 3×10^3×10^3)×( 3×10^3×10^3 )=9×10^{12} (3×103×103)×(3×103×103)=9×1012个之多。
这还是在只有一个隐含层的情况下,可想而知,如果网络中具有多个隐含层,那全连接就会产生组合爆炸问题。
海量级别的参数训练是极其耗时的。 而事实上,这样的全连接模式也是极其浪费的。 因为有些神经元(比如色彩神经元)对其他神经元(比如轮廓神经元)的影响是微乎其微的,强拉到一起相互影响,就如同你真的用“蝴蝶效应”来预测天气变化问题一样,实际上并没有太大意义。 更何况,调节的参数量过大,也很容易产生过度拟合问题。 因此,如果能有效减少神经网络的参数个数,对提高网络训练效率和泛化能力,都是大有神益的。
卷积层的局部连接
局部连接( Local Connectivity )也称为局部感知或稀疏连接。 让我们再次以CIFAR-10图像集为输入数据,来探究一下局部连接的工作原理。
在卷积神经网络中,具体到每层神经元网络,它可以分别在长( width )、 宽( height )和深度( depth )等三个维度上分布神经元。 请注意,这里的“深度”并不是整个卷积网络的深度(层数),而是在单层网络中神经元分布的三个维度。 因此, width×height×depth 就是单层神经元的总个数。
通过前面的介绍可知,每一幅 CIFAR-10 图像都是 32x32x3 的.RGB 图(分别代表长、 宽和 高,此处的高度就是色彩通道数)。 也就是说,在设计输入层时,共有 32×32×3=3072 个神经元。
对于隐含层的某个神经元,如果还按全连接前馈网络中的设计模式,它不得不和前一层的所有神经元( 3072 )都保持连接,也就是说,每个隐含层的神经元需要有 3072 个权值。 如果隐含层的神经元也比较多,那整个权值总数是巨大的。
但现在不同了。 通过局部连接,对于卷积神经网络而言,隐含层的某个神经元仅仅需要与前层部分区域相连接。 这个局部连接区域有一个特另的名称叫“感知域 的大小(比如 5×5×3 ),如图所示。
对于隐含层的某一个神经元,它的前向连接个数由全连接的
32
×
32
×
3
32 × 32 × 3
32×32×3个减少到稀疏连接的5×5×3个。 连接的数量要比原来的稀疏很多。 因此,局部连接也被称为“稀疏连接( Sparse Connectivity )”。
其实一直很困惑,一张代表图片的像素矩阵和一个卷积核进行卷积,卷积核是在像素矩阵上以此滑过的,那这样的话,再回忆一下CS231课程里的,那个用于猫分类的RGB彩色图片,那张图片把红绿蓝三个通道的像素值拉成了一个( × 1 \times1 ×1)的向量,那既然这样的话,这个卷积核还怎么滑动呢?难道也把卷积核拉成了一个( × 1 \times1 ×1)的向量?
我是这样想的,所有的数据在计算机的存储,都是按照内存地址,有规律的排列的,所以,如果卷积的话,它实际上也会是像我们描述的那样,卷积核会在表示照片的像素矩阵上以此滑过!