小白都能看懂的卷积神经网络分析

在这里插入图片描述
和全连接神经网络一样,卷积神经网络中的每一个节点都是一个神经元。在全连接神经网络中,每相邻两层之间的节点都有边相连,于是一般会将每一层全连接层中的节点组织成一列,这样方便显示连接结构。
而对于卷积神经网络,相邻两层之间只有部分节点相连,为了展示每一层神经元的维度,一般会将每一层卷积层的节点
组织成一个三维矩阵。除了结构相似,卷积神经网络的输入输出以及训练流程与全连接神经网络也基本一致。
以图像分类为例,卷积神经网络的输入层就是图像的原始像素,而输出层中的每一个节点代表了不同类别的可信度。这和全连接神经网络的输入输出是一致的。类似的,损失函数以及参数的优化过程也都适用于卷积神经网络。

卷积神经网络和全连接神经网络的唯一区别就在于神经网络中相邻两层的连接方式。

为什么全连接神经网络无法很好地处理图像数据?

使用全连接神经网络处理图像的最大问题在于全连接层的参数太多。计算速度很缓慢。

对于MNIST 数据,每一张图片的大小是28×28×1,其中28×28 为图片的大小,×1 表示图像是黑白的,只有一个色彩通道。假设第一层隐藏层的节点数为500 个,那么一个全链接层的神经网络将有28×28×500+500=392500 个参数。

当图片更大时,比如在CIFAR-10 数据集中,图片的大小为32×32×3,其中32×32 表示图片的大小,×3 表示图片是通过红绿蓝三个色彩通道(channel)表示的。这样输入层就有3072 个节点,如果第一层全连接层仍然是500 个节点,那么这一层全链接神经网络将有3072×500+500≈150 万个参数。参数增多除了导致计算速度减慢,还很容易导致过拟合问题。

卷积神经网络

卷积神经网络能够有效地减少神经网络中参数个数,降低计算量。

在这里插入图片描述
在卷积神经网络的前几层中,每一层的节点都被组织成一个三维矩阵。看出卷积神经网络中前几层中每一个节点只和上一层中部分的节点相连。

1. 输入层。

输入层是整个神经网络的输入,在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。
最左侧的三维矩阵就可以代表一张图片。其中三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道(channel)。比如黑白图片的深度为1,而在RGB 色彩模式下,图像的深度为3。从输入层开始,卷积神经网络通过不同的神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接层。

在CNN的输入层中,(图片)数据输入的格式 与 全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入格式保留了图片 本身的结构。对于黑白的 28×28 的图片,CNN的输入是一个 28×28 的的二维神经元。
在这里插入图片描述

而对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的三维神经元(RGB中的每一个颜色通道都有一个 28×28 的矩阵)。
在这里插入图片描述

2. 卷积层

卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块常用的大小有3×3 或者5×5。卷积层试图将神经网络中的每一小块进行更加深入地分析从而得到抽象程度更高的特征。一般来说,通过卷积层处理过的节点矩阵会变得更深。从中可以看到经过卷积层之后的节点矩阵的深度会增加。

在卷积层中有几个重要的概念:

  • local receptive fields(感受视野)
  • shared weights(共享权值)

假设输入的是一个 28×28 的的二维神经元,我们定义5×5 的 一个 local receptive fields(感受视野),即 隐藏层的神经元与输入 层的5×5个神经元相连,这个5*5的区域就称之为Local Receptive Fields,如下图所示:
在这里插入图片描述
可类似看作:隐藏层中的神经元具有一个固定大小的感受视野去感受上一层的部分特征。在全连接神经网络中,隐藏层中的神经元的感受 视野足够大乃至可以看到上一层的所有特征。而在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的部分特征,上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元,由同一层其他神经元来看
在这里插入图片描述

可看出 卷积层的神经元是只与前一层的部分神经元节点相连,每一条相连的线对应一个权重w。

一个感受视野带有一个卷积核,我们将感受视野中的权重w矩阵称为卷积核将感受视野对输入的扫描间隔称为步长(stride); 当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad),边界扩充可以设为0 或其他值。

卷积核的大小由用户来定义,即定义的感受视野的大小;卷积核的权重矩阵的值,便是卷积神经网络的参数,为了有一个偏移项,卷积核可附带一个偏移项b ,它们的初值可以随机来生成,可通过训练进行变化。因此感受视野(5X5)扫描时可以计算出下一层神经元的值为:b+∑4i=0∑4j=0wijxij
对下一层的所有神经元来说,它们从不同的位置去探测了上一层神经元的特征。我们将通过一个带有卷积核的感受视野扫描生成的下一层神经元矩阵称为一个feature map (特征映射图),如下图的右边便是一个 feature map:

在这里插入图片描述
在同一个feature map上的神经元使用的卷积核是相同的,因此这些神经元 shared weights,共享卷积核中的权值和附带的偏移。一个 feature map对应一个卷积核,若我们使用 3 个不同的卷积核,可以输出3个feature map:(感受视野:5×5,步长stride:1)
在这里插入图片描述
因此在CNN的卷积层,我们需要训练的参数大大地减少到了 (5×5+1)×3=78个。假设输入的是 28×28 的RGB图片,即输入的是一个 3×28×28 的二维神经元,这时卷积核的大小不只用长和宽来表示,还有深度, 感受视野也对应的有了深度,如下图所示:
在这里插入图片描述

总结一下,卷积层的优点在于局部连接(有助于减少参数量)和权值共享。

  • 局部链接,很容易理解,权值共享的意思,就是在同一层,使用的卷积核都是相同,那么针对这一层,只需要训练这一个卷积核就够了。
  • 权值共享的意思就是训练好的一个卷积核表示了在图像中提取某种特征的能力,例如提取人脸上的眼睛,也就是说卷积核具有了这种能力,无论在图像的哪个地方都可以起作用。这只是一个卷积核的作用,作用肯定是有限的,那么如果我们用100个卷积核来提取特征,那么特征提取能力就会大大增强。
  • 举例来说:以MNIST手写体数字识别为例,无论数字“1”出现在左上角还是右下角,图片的种类都是不变的。因为在左上角和右下角使用的过滤器参数相同,所以通过卷积层之后无论数字在图像上的哪个位置,得到的结果都一样。

3. 池化层

池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。池化操作可以认为是将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中参数的目的。

当输入经过卷积层时,若感受视野比较小,步长stride比较小,得到的feature map (特征图)还是比较大,可以通过池化层来对每一个 feature map进行降维操作,输出的深度还是不变的,依然为 feature map 的个数。

池化层也有一个“池化视野(filter)”来对feature map矩阵进行扫描,对“池化视野”中的矩阵值进行计算,一般有两种计算方式:

  • Max pooling:取“池化视野”矩阵中的最大值
  • Average pooling:取“池化视野”矩阵中的平均值 扫描的过程中同样地会涉及的扫描步长stride,扫描方式同卷积层一样,先从左到右扫描,结束则向下移动布长大小,再从左到右。如下图示例所示:
    在这里插入图片描述
    其中“池化视野”filter: 2×2;步长stride:2。最后可将 3 个 24×24 的 feature map 下采样得到 3 个 12×12 的特征矩阵:
    在这里插入图片描述

总结池化层优点

  • 减少下一层输入的大小,减少计算量
  • 获得定长输出
  • 防止过拟合

4. 全连接层

在经过多轮卷积层和池化层的处理之后,在卷积神经网络的最后一般会是由1 到2 个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看成自动图像特征提取的过程。在特征提取完成之后,仍然需要使用全连接层来完成分类任务。

5. softmax 层(激活层)

Softmax 层主要用于分类问题。通过Softmax层,可以得到当前样例属于不同种类的概率分布情况。

卷积网络的表格表示方式

经常在论文中会发现,卷积神经网络会用表的方式表示,如下图:
VGGNet 模型论文中尝试过的卷积神经网络架构
在这里插入图片描述
其中conv*表示卷积层,maxpool 表示池化层,FC-*表示全连接层,soft-max 为softmax 结构。

其中convX-Y 表示过滤器的边长为X,深度为Y。比如conv3-64 表示过滤器的长和宽都为3,深度为64。从表中可以看出,VGG Net 中的过滤器边长一般为3 或者1。

在LeNet-5 模型中,也使用了边长为5 的过滤器。一般卷积层的过滤器边长不会超过5,但有些卷积神经网络结构中,处理输入的卷积层中使用了边长为7甚至是11 的过滤器。

在过滤器的深度上,大部分卷积神经网络都采用逐层递增的方式。比如在表中可以看到,每经过一次池化层之后,卷积层过滤器的深度会乘以2。虽然不同的模型会选择使用不同的具体数字,但是逐层递增是比较普遍的模式。卷积层的步长一般为1,但是在有些模型中也会使用2,或者3 作为步长。池化层的配置相对简单,用得最多的是最大池化层。池化层的过滤器边长一般为2 或者3,步长也一般为2 或者3。

本文将会持续更新和优化,尽量用最通俗的语言和举例来介绍卷积神经网络的每一个细节。

声明
本博客是个人学习时的一些笔记摘录和感想,不保证是为原创,内容汇集了网上相关资料和书记内容,在这之中也必有疏漏未加标注者,如有侵权请与博主联系。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值