卷积神经网络CNN基本原理详解

卷积神经⽹络CNN基本原理详解
莺啼山客犹眠CNN基本原理详解
卷积神经⽹络(Convolutional Neural Network,简称CNN),是⼀种前馈神经⽹络,⼈⼯神经元可以响应周围单元,可以进⾏⼤型图像处理。卷积神经⽹络包括卷积层和池化层。
卷积神经⽹络是受到⽣物思考⽅式启发的MLPs(多层感知器),它有着不同的类别层次,并且各层的⼯作⽅式和作⽤也不同。这⾥提供⼀个较好的CNN教程(cs231n.github.io/convolutional-networks/)。⽂章中详细介绍了CNN的计算⽅式和数据的流动过程,这⾥只做简单的介绍。
传统神经⽹络如下图所⽰
CNN⽹络结构
如图所⽰,CNN⽹络⼯作时,会伴随着卷积并且不断转换着这些卷积。
Keras–基于python的深度学习框架
Keras是⼀个⾼层神经⽹络API,Keras由纯Python编写⽽成并基Tensorflow、Theano以及CNTK后端。Keras 为⽀持快速实验⽽⽣,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
简易和快速的原型设计(keras具有⾼度模块化,极简,和可扩充特性)
⽀持CNN和RNN,或⼆者的结合
⽆缝CPU和GPU切换
keras适⽤于python:2.7-3.6
安装需要执⾏:
美国贫困线pip install keras
即可。
九宫算CNN基本原理
<;注>:本⽂主要介绍CNN的基本原理,不会细说传统神经⽹络和神经元的知识,假定你已经了解这些。
1 CNN⽹络层级结构
CNN⽹络⼀共有5个层级结构:
输⼊层
卷积层
激活层
池化层
全连接FC层
输⼊层激光整形
与传统神经⽹络/机器学习⼀样,模型需要输⼊的进⾏预处理操作,常见的3中预处理⽅式有:
去均值
归⼀化
PCA/SVD降维等
卷积层
局部感知:⼈的⼤脑识别图⽚的过程中,并不是⼀下⼦整张图同时识别,⽽是对于图⽚中的每⼀个特征⾸先局部感知,然后更⾼层次对局部进⾏综合操作,从⽽得到全局信息。
卷积层使⽤“**卷积核”**进⾏局部感知。举个例⼦来讲,⼀个32×32×3的RGB图经过⼀层5×5×3的卷积后变成了⼀个
28×28×1的特征图,那么输⼊层共有32×32×3=3072个神经元,第⼀层隐层会有28×28=784个神经元,这784个神经元对原输⼊层的神经元只是局部连接,如下图所⽰:
通过局部感知特性,⼤⼤减少了模型的计算参数。但是仅仅这样还是依然会有很多参数。这就有了权值共享机制:
在上⾯的局部感知中,假设有1m的隐层神经元,每个神经元1010的连接,这样就会有1m10*10个参数。实际上,对于每⼀层来讲,所有神经元对应的权值应该是相等的,也就是说,第⼀个神经元的参数向量为[w1,w2,…,w100],那么其他同层的神经元也是[w1,w2,…,w100],这就是权值共享。
为什么需要权值共享呢?同⼀层下的神经元的连接参数只与特征提取的有关,⽽与具体的位置⽆关,因此可以保证同⼀层中所有位置的连接是权值共享的。例如:第⼀层隐层是⼀般⽤边缘检测,第⼆层是对第⼀层学到的边缘曲线组合得到⼀些特征,⽐如:⾓度、线形等;第三层会学到更加复杂的特征,⽐如:眼睛、眉⽑等。对于同⼀层来说,他们提取特征的⽅式是⼀样的,第三层的神经元都是⽤来提取“眼睛”的特征,因此,需要计算的参数是⼀样的。
激励层
所谓激励,实际上是对卷积层的输出结果做⼀次⾮线性映射。
如果不⽤激励函数(其实就相当于激励函数是f(x)=x),这种情况下,每⼀层的输出都是上⼀层输⼊的线性函数。容易得出,⽆论有多少神经⽹络层,输出都是输⼊的线性组合,与没有隐层的效果是⼀样的,这就是最原始的感知机了。直流放大器
常⽤的激励函数有:
Sigmoid函数
Tanh函数
ReLU
Leaky ReLU
ELU
Maxout
激励层建议:⾸先ReLU,因为迭代速度快,但是有可能效果不加。如果ReLU失效的情况下,考虑使⽤Leaky ReLU或者Maxout,此时⼀般情况都可以解决。Tanh函数在⽂本和⾳频处理有⽐较好的效果。
池化层
池化(Pooling):也称为⽋采样或下采样。主要⽤于特征降维,压缩数据和参数的数量,减⼩过拟合,同时提⾼模型的容错性。主要有:Max Pooling:最⼤池化
Average Pooling:平均池化
通过池化层,使得原本44的特征图压缩成了22,从⽽降低了特征维度。
虽然⼈不太容易分辨出池化后的特征图,但是没关系,机器还是可以识别的。
工业设备输出层
经过前⾯若⼲次卷积+激励+池化后,终于来到了输出层,模型会将学到的⼀个⾼质量的特征图⽚全连接层。其实在全连接层之前,如果神经元数⽬过⼤,学习能⼒强,有可能出现过拟合。因此,可以引⼊dropout操作,来随机删除神经⽹络中的部分神经元,来解决此问题。还可以进⾏局部归⼀化(LRN)、数据增强等操作,来增加鲁棒性,这⾥不做介绍。
当来到了全连接层之后,可以理解为⼀个简单的多分类神经⽹络(如:BP神经⽹络),通过softmax函数得到最终的输出。整个模型训练完毕。
下图展⽰了⼀个含有多个卷积层+激励层+池化层的过程:

本文发布于:2024-09-22 08:33:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/475185.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:神经   特征   卷积
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议