人工智能TensorFlow(十三)读懂CNN卷积神经网络
通过往期文章的分享,我们了解了神经网络的结构,一般分为输入层,隐藏层,输出层
TensorFlow神经网络
那什么是卷积神经网络那,这就要我们追溯一下人类识别图像的原理
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
人类识别图形原理
对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:
我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。CNN卷积神经网络就是来源于此识别过程来实现。
卷积神经网络
卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。比如下图中就多了许多传统神经网络没有的层次。
CNN神经网络
一般卷积神经网络有如下结构:
•数据输入层/ Input layer
•卷积计算层/ CONV layer
•ReLU激励层 / ReLU layer
•池化层 / Pooling layer
•全连接层 / FC layer
当然卷积层,Relu激励层与Pooling层可以多次使用
输入层/ Input layer
该层要做的处理主要是对原始图像数据进行预处理,其中包括:
•去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。
•归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。
•PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化
卷积计算层/ CONV layer
这一层是卷积神经网络最重要的一个层次,也是“卷积神经网络”的名字来源。
在这个卷积层,有两个关键操作:
•局部关联。每个神经元看做一个滤波器(filter)
•窗口(receptive field)滑动, filter对局部数据计算
下图比较简单的介绍了一个卷积的过程,原始数据是5*5 卷积核为3*3 步长为1
CNN卷积计算
ReLU激励层 / ReLU layer
这一层也是我们前期分享的激励函数层
CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下。
Relu
池化层 / Pooling layer
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。池化层用的方法有Max pooling 和 average pooling,而实际用的较多的是Max pooling。
Pooling
对于每个2*2的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个2*2窗口中最大的数是6,那么输出矩阵的第一个元素就是6,如此类推。
全连接层 / FC layer
两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的:
FC layer
下期分享
LeNet 手写数字识别
LeNet
谢谢大家的点赞与转发,关于分享的文章,大家有任何问题,可以在评论区一起探讨学习!!!