卷积神经网络通俗讲解

概念

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。

对比:卷积神经网络、全连接神经网络
在这里插入图片描述
左图:全连接神经网络(平面),组成:输入层、激活函数、全连接层

右图:卷积神经网络(立体),组成:输入层、卷积层、激活函数、池化层、全连接层

在卷积神经网络中有一个重要的概念:深度

主要是以下层次:

  1. 数据输入层/ Input layer
  2. 卷积计算层/ CONV layer
  3. ReLU激励层 / ReLU layer
  4. 池化层 / Pooling layer
  5. 全连接层 / FC layer
  6. Batch Normalization层(可能有)

数据输入层/ Input layer

有3种常见的数据处理方式
a. 去均值 ==> 把输入数据各个维度都中心化到0
b. 归一化 ==> 幅度归一化到同样的范围
c.  PCA/白化 ==> 用PCA降维(白化是对数据每个特征轴上的幅度归一化)

********去均值与归一化
在这里插入图片描述
********去相关与白化
在这里插入图片描述

卷积层

卷积:在原始的输入上进行特征的提取。特征提取简言之就是,在原始输入上一个小区域一个小区域进行特征的提取,稍后细致讲解卷积的计算过程。

在这里插入图片描述
上图中,左方块是输入层,尺寸为3232的3通道图像。右边的小方块是filter,尺寸为55,深度为3。将输入层划分为多个区域,用filter这个固定尺寸的助手,在输入层做运算,最终得到一个深度为1的特征图。
在这里插入图片描述
上图中,展示出一般使用多个filter分别进行卷积,最终得到多个特征图。
在这里插入图片描述
上图使用了6个filter分别卷积进行特征提取,最终得到6个特征图。将这6层叠在一起就得到了卷积层输出的结果。

在这里插入图片描述
卷积不仅限于对原始输入的卷积。蓝色方块是在原始输入上进行卷积操作,使用了6个filter得到了6个提取特征图。绿色方块还能对蓝色方块进行卷积操作,使用了10个filter得到了10个特征图。每一个filter的深度必须与上一层输入的深度相等。

直观理解卷积
在这里插入图片描述
以上图为例:

第一次卷积可以提取出低层次的特征。

第二次卷积可以提取出中层次的特征。

第三次卷积可以提取出高层次的特征。

特征是不断进行提取和压缩的,最终能得到比较高层次特征,简言之就是对原式特征一步又一步的浓缩,最终得到的特征更可靠。利用最后一层特征可以做各种任务:比如分类、回归等。

卷积计算流程

涉及概念:
深度/depth(像素通道个数)
步长/stride:窗口(卷积核)每次滑动的单元
填充值/zero-padding:两种方式:
1、SAME PADDING(给平面外部补0):
卷积窗口采样后得到一个跟原来平面大小相同的平面
2、VALID PADDING(不会超出平面外部):
卷积窗口采样后得到一个比原来平面小的平面

卷积流程:
在这里插入图片描述
1.左区域的三个大矩阵是原式图像的输入,RGB三个通道用三个矩阵表示,大小为773。

2.Filter W0表示1个filter助手,尺寸为3*3,深度为3(三个矩阵);Filter W1也表示1个filter助手。因为卷积中我们用了2个filter,因此该卷积层结果的输出深度为2(绿色矩阵有2个)。

3.Bias b0是Filter W0的偏置项,Bias b1是Filter W1的偏置项。

4.OutPut是卷积后的输出,尺寸为3*3,深度为2。

计算过程:

输入是固定的,filter是指定的,因此计算就是如何得到绿色矩阵。第一步,在输入矩阵上有一个和filter相同尺寸的滑窗,然后输入矩阵的在滑窗里的部分与filter矩阵对应位置相乘:

在这里插入图片描述在这里插入图片描述对应位置相乘后求和,结果为0。

在这里插入图片描述在这里插入图片描述对应位置相乘后求和,结果为2。

在这里插入图片描述在这里插入图片描述对应位置相乘后求和,结果为0。
第二步,将3个矩阵产生的结果求和,并加上偏置项,即0+2+0+1=3,因此就得到了输出矩阵的左上角的3:
在这里插入图片描述
第三步,让每一个filter都执行这样的操作,变可得到第一个元素:
在这里插入图片描述
第四步,滑动窗口2个步长,重复之前步骤进行计算
在这里插入图片描述
第五步,最终可以得到,在2个filter下,卷积后生成的深度为2的输出结果:
在这里插入图片描述

滑动的步长叫stride记为S。S越小,提取的特征越多,但是S一般不取1,主要考虑时间效率的问题。S也不能太大,否则会漏掉图像上的信息。

②由于filter的边长大于S,会造成每次移动滑窗后有交集部分,交集部分意味着多次提取特征,尤其表现在图像的中间区域提取次数较多,边缘部分提取次数较少,怎么办?
一般方法是在图像外围加一圈0,细心的同学可能已经注意到了,在演示案例中已经加上这一圈0了,即+pad 1。 +pad n表示加n圈0.

激励层(ReLU)

把卷积层输出结果做非线性映射,常见的激励函数有下面这些:

  1. Sigmoid(当加权输入值小于0时,梯度变化太小,无法训练)
  2. Tanh(双曲正切)(同上)
  3. ReLU(收敛快,求梯度简单,较脆弱,当输入小于0的时候,输出全部为0,梯度消失问题)
  4. Leaky ReLU
  5. ELU
  6. Maxout
    图像分别如下:

在这里插入图片描述
激励函数的选取:
首先试RELU, 因为快, 但要小心点,如果失效改用Leaky ReLU或者Maxout

池化层 / Pooling layer

在这里插入图片描述
它是夹在连续的卷积层中间,池化层可以非常有效地缩小矩阵的尺寸。从而减少最后全连接层中的参数。使用池化层既可以加快计算速度也有防止过拟合问题的作用。池化层前向传播的过程中也是通过一个类似过滤器的结构完成的,池化层中的计算不是节点的加权和,而是采用了更加简单的最大值或者平均值计算。使用最大值操作的池化层被称之为最大池化层(max pooling),使用平均值操作的池化层称之为平均池化层(average pooling),总的来说,池化层的作用是可以压缩数据和参数的量, 减小过拟合(我觉得有点像马赛克的感觉。。)
在这里插入图片描述

全连接层 / FC layer

在经过多轮卷积核池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征,在特征提取完成之后,仍然需要使用全连接层来完成分类任务。(有仅有的信息把原来的信息给还原回来)
a. 两层之间所有神经元都有权重连接
b. 通常全连接层在卷积神经网络尾部

总结

上面说了这么多,最后我们来聊一下CNN的优点和缺点:

1)优点
共享卷积核, 对高维数据处理无压力
无需手动选取特征, 训练好权重, 即得特征
深层次的网络抽取图像信息丰富, 表达效果好
2)缺点
需要调参, 需要大样本量, 训练最好要GPU
但是我表示在用GPU做训练的时候,刚开始报错,说是启动程序太多,歇菜了,关掉之后,再次程序启动,电脑声音超级响,感觉电脑随时都要废掉。。。。
物理含义不明确,抽象出来的特征,我们无法确定这些特征到底是哪方面

参考:
https://blog.csdn.net/lazyGril_81/article/details/80641719
https://blog.csdn.net/weixin_42451919/article/details/81381294

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值