我是靠谱客的博主 腼腆悟空,最近开发中收集的这篇文章主要介绍神经网络模型之CNNCNN(卷积神经网络),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

CNN(卷积神经网络)



神经网络(NN)



神经网络包括输入层、输出层、隐藏层,结构如下:





卷积神经网络(CNN)



其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。比如下图中就多了许多传统神经网络没有的层次。





卷积神经网络层级结构一般包括以下几层:


1.  数据输入层:Input layer;


2.  卷积计算层: CONV layer;


3.  ReLU激励层:ReLU layer;


4.  池化层:Pooling layer;


5.  全连接层:FC layer;



数据输入层




该层要做的处理主要是对原始图像数据进行预处理,其中包括:


  • 去均值:把输入数据各个维度都中心化为0


  • 归一化:幅度归一化到同样的范围


  • PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化


去均值与归一化效果图:




  去相关和白化效果图:





卷积层



这一层就是卷积神经网络最重要的一个层次,也是“卷积神经网络”的名字来源。


在这个卷积层,有两个关键操作:


  • 局部关联。每个神经元看做一个滤波器(filter)


  • 窗口(receptive field)滑动, filter对局部数据计算


先介绍卷积层遇到的几个名词:


  • 深度/depth(解释见下图)


  • 步长/stride (窗口一次滑动的长度)


  • 填充值/zero-padding





填充值是什么呢?以下图为例子,比如有这么一个5*5的图片(一个格子一个像素),我们滑动窗口取2*2,步长取2,那么我们发现还剩下1个像素没法滑完,那怎么办呢?




那我们在原先的矩阵加了一层填充值,使得变成6*6的矩阵,那么窗口就可以刚好把所有像素遍历完。这就是填充值的作用。





卷积的计算



注意:下面蓝色矩阵周围有一圈灰色的框,那些就是上面所说到的填充值




这里的蓝色矩阵就是输入的图像,粉色矩阵就是卷积层的神经元,这里表示了有两个神经元(w0,w1)。

绿色矩阵就是经过卷积运算后的输出矩阵,这里的步长设置为2。





蓝色的矩阵(输入图像)对粉色的矩阵(filter)进行矩阵内积计算并将三个内积运算的结果与偏置值b相加(比如上面图的计算:2+(-2+1-2)+(1-2-2) + 1= 2 - 3- 3 + 1 = -3),计算后的值就是绿框矩阵的一个元素。






下面的动态图形象地展示了卷积层的计算过程:




参数共享机制



  • 在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性

  • 需要估算的权重个数减少: AlexNet 1亿 => 3.5w

  • 一组固定的权重和不同窗口内数据做内积: 卷积




激励层


把卷积层输出结果做非线性映射。




CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下。



激励层的实践经验


  ① 不要用sigmoid!不要用sigmoid!不要用sigmoid!


  ② 首先试RELU,因为快,但要小心点


  ③ 如果2失效,请用Leaky ReLU或者Maxout


  ④ 某些情况下tanh倒是有不错的结果,但是很少



池化层



池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减小过拟合。

简而言之,如果输入是图像的话,那么池化层的作用就是压缩图像




池化层用的方法有Max pooling 和 average pooling,而实际用的较多的是Max pooling


这里就说一下Max pooling,其实思想非常简单。




对于每个2*2的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个2*2窗口中最大的数是6,那么输出矩阵的第一个元素就是6,如此类推。



全连接层



两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的:




一般CNN结构依次为:


  1. INPUT


  2. [[CONV -> RELU]*N -> POOL?]*M 


  3. [FC -> RELU]*K


  4. FC










最后

以上就是腼腆悟空为你收集整理的神经网络模型之CNNCNN(卷积神经网络)的全部内容,希望文章能够帮你解决神经网络模型之CNNCNN(卷积神经网络)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部