初识CNN-卷积神经网络

初识卷积神经网络

  • 卷积神经网络是什么?
  • 卷积层
    • 基本介绍
    • 特征值计算
    • 特征矩阵大小计算
    • 为什么要权重共享
  • 池化层
    • 如何池化
  • 总结

对于卷积神经网络的概念、特点等叙述,百度一搜都有很多,本篇文章主要介绍卷积神经网络中的卷积层以及池化层的基本原理。

卷积神经网络是什么?

卷积神经网络,顾名思义分为卷积和神经网路,传统神经网络的输入层通常是一维的,或者将二维转换成一维,再进行全连接,这样使得神经网络中有大量的权重参数W,迭代效率极低,比如对于图片识别的神经网络训练,不可能达到其实时性。卷积即不再对输入的图片进行逐个像素点特征提取,每一次都是对一片像素点进行处理,同时通过权重共享的方式极大地减少了权重参数的数量。通过不断的卷积、池化,最终得到结果。
注:上面的概念在阅读完整篇文章后,再阅读就容易理解了!

卷积层

基本介绍

初识CNN-卷积神经网络_第1张图片
如上图所示,现在有一张32 * 32 * 3的图片(3是指图片的厚度,如果是灰度图,其值为1,彩色图为3,分别代表R、G、B三个分量),我们需要对其进行特征提取,即对该图片分区域进行处理,这个区域的大小由开发者自己决定,只要保证厚度与图片一致即可。图中右边5 * 5 * 3即为处理区域的大小,可以将这个理解为一个“扫描器”,这个扫描器不停在图片上以指定步长扫描,提取特征。该扫描器学名叫“filter”,filter本质上就是一个权重参数矩阵,代表了该区域上各像素点的重要程度,对于同一个filter,由于图片上每个区域都使用该权重参数,所以也叫权重共享
对于一张图片,如果使用一个filter进行提取,那得到特征会有很大缺失,通常我们会用多个filter来进行特征提取。
初识CNN-卷积神经网络_第2张图片
上图展示了2个filter进行特征提取,每一次filter进行特征提取后,会计算一个值,作为该区域的一个特征值,当扫描完整张图片后,就会得到特征矩阵,即上图右边28 * 28 * 1的矩阵,2个filter得到两个这样的矩阵。
28 * 28 * 1矩阵的由来:图片长为32,filter长为5,步长为1,那么从5移动到32,一共28次(刚开始5就算一次)。
初识CNN-卷积神经网络_第3张图片
上图为连续卷积的示意图:24=28-5+1。filter的深度与前一层输入的厚度必须一致。

特征值计算

上面讲过,filter每次扫描一块区域后,会计算一个值,这个值的计算如下:
初识CNN-卷积神经网络_第4张图片
上图输入图片为7 * 7 * 3 ,filter大小为3 * 3 * 3 ,步长为2,可以看出filter是一个权重参数,其初始值通过初始化得到。Bias为偏执值。output为特征矩阵,其第一个矩阵最左上角的“3”计算过程为:
输入层中3个蓝颜色的矩阵与filter W0的三个矩阵分别对应进行矩阵内积,即对应位置相乘再求和,内积结果依次为:0、2、0,其内积结果求和再加上偏执值,即0+2+0+1 = 3 ,同理三个红颜色的矩阵与W0得到“-5”,三个绿颜色得到“-4”。最终得到两个3 * 3 * 1的特征矩阵
补充:
上面的图中可以看出,最外一圈的值都为0,其实这是人为填充的,如果不填充,那么最外一圈的特征比中间的特征会更容易遗漏,也就是说人为无意识的决定了图片中间的信息更重要,而边缘不重要,这是不符合事实的,因此填充一圈0,既不会增加新的错误特征(0的内积为0),又可以使边缘的特征被最大的提取。

特征矩阵大小计算

初识CNN-卷积神经网络_第5张图片
上图中,W、H、D依次为宽度、长度以及深度,“1”为输入层,“2”为输出层(特征矩阵)
补充:
输入层不一定为正方形,不过在实际项目中,99%的输入均为正方形。

为什么要权重共享

答案:权重共享可以极大的较少神经网络中参数的数量!
初识CNN-卷积神经网络_第6张图片
假如输入信息大小300 * 300,有128个神经元,那么需要的参数为:300 * 300 * 128 = 1000多万。
对于卷积神经网络,选择5 * 5 * 3的filter进行扫描,使用10个filter进行扫描,那么需要的参数为:5 * 5 * 3 * 10 + 10(每个filter的偏执值) = 760
这样一对比发现,卷积神经网络的参数非常少,训练时迭代效率会比传统神经网络高很多。

池化层

池化操作不需要计算,只是将特征矩阵进行压缩。
初识CNN-卷积神经网络_第7张图片
如上图,池化前的特征矩阵大小为224 * 224 * 64,池化后的大小为112 * 112 * 64 ,通过这样可以进一步增加网络迭代的效率。

如何池化

池化主要分为两种方法,AVG池化和MAX池化。首先来看MAX池化
初识CNN-卷积神经网络_第8张图片
如上图,通过2*2的filter,步长为2来进行池化操作。左图左上角四个红色的特征值,取其中最大的特征值作为该区域的代表,即6,这种方法即为MAX池化,同理8、3、4也是这样得来的。
AVG池化由于效果不好,已经被淘汰了,与MAX不同的是,它是选用区域所有特征值的平均值作为该区域的代表。

总结

初识CNN-卷积神经网络_第9张图片
上图为一个图片识别的卷积神经网络完整流程,一般就是卷积、激活、卷积、激活、池化不断重复。

你可能感兴趣的:(神经网络,卷积,神经网络,深度学习)