您的位置:首页 > 编程语言 > MATLAB

Matlab中CNN工具包简介(一)

2018-04-09 17:14 246 查看
       之前对自己的数据运用了SVM,KNN,BP神经网络的分类方法,那接下来想尝试一下用CNN来处理自己的数据,虽然对CNN早有耳闻,但是从来没有真正去了解过,所以打算先从Matlab里的神经网络的toolbox开始了解一下CNN。只是大概的做一个了解,并不涉及误差传递公式等的推导,只是一个简易的笔记而已。       卷积神经网络(CNN)相信大家都不陌生,它是多层感知机(MLP)的一个变种,它通过加强神经网络总相邻层之间节点的局部连接模式来挖掘自然图像的空间局部关联信息。在CNN中,每一个稀疏滤波器在整个感受野中是重复叠加的,如此重复的节点形成了一种特征图(featuremap),这个特征图可以共享相同的参数,比如相同的权值矩阵和偏置向量。      CNN主要包括3个过程:    (1)Feedforward pass(向前传播)    (2)Calculate cost(误差计算)    (3)Backpropagation(误差反向传播)      其实,卷积神经网络依然是层级网络,只是层的功能和形式发生了变化。卷积神经网络主要包括的层级结构有:数据输入层(Input layer),卷积层(Conv layer),ReLU激励层(ReLU layer,简单的CNN好像没有涉及这一层),池化层(Pooling layer,又可以称为是下采样层),全连接层(FC layer,同BP神经网络一样)。典型的CNN中,开始几层都是卷积和下采样层(池化层)的交替,然后在最后一些层(靠近输出层的),都是全连接的一维网络。    (1)  数据输入层      该层主要做的处理是对原始图像数据进行预处理,其中包括:去均值,把输入数据各个维度都中心化为0,如果样本有非零的均值,而且与测试部分的非零均值不一致,可能就会导致识别率的下降;归一化,幅度归一化到同样的范围,这里的归一化是广义的,不一定要归到0和1,但要是相同的一个区间范围,一般我们的灰度图为0-255;PCA/白化,用PCA降维,白化是对数据各个特征轴上的幅度归一化。    (2)  卷积层      卷积层是卷积神经网络的核心,通过不同的卷积核,来获取图片的特征。卷积指的是用一组固定的权重和不同窗口内数据做内积。卷积核相当于一个滤波器,不同的滤波器提取不同的特征。所以卷积层有两个关键操作,一个是局部关联(每个神经元看做是一个滤波器filter),另一个是窗口滑动(利用filter对局部数据进行计算)。      卷积层的重要特征是参数共享:在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,卷积层的每个滤波器都会有自己所关注的一个图像特征,这些所有神经元加起来就好比是整张图像的特征提取集合。   (3)  激励层      把卷积层输出结果做非线性映射。CNN采用的激励函数一般为ReLU(TheRectified Linear Unit修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。  (4)  池化层      池化层夹在连续的卷积层中间,用于压缩数据和参数的量,减小过拟合。基本上每个卷积层后边都会接一个池化层,目的是为了降维。一般都是将原来的卷积层的输出矩阵大小变为原来的一半,方便运算。而且,池化层增加了系统的鲁棒性,把原来的准确描述变为了概略描述。 (5)  全连接层      两层之间的所有神经元都有权重连接,通常全连接层在卷积神经网络尾部,也就是跟传统的神经网络神经元的连接方式是一样的。    关于机器学习,有一个被玩坏的数据集,它就是MNIST,是英文Mixed National Institute of Standards and Technology database的简称。它是一个计算机视觉的数据集,包含70000张手写数字的灰度图片,其中每一张图片包含28×28个像素点,每一张图片都有对应的标签,就是图片对应的数字。      数据集被分为两部分:60000行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test)。其中60000行的训练集分拆为55000行的训练集和5000行的验证集。      60000行的训练数据集是一个形状为[60000,784]的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间。      说了那么多,卷积神经网络在本质上就是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出之间的映射能力。CNN一个非常重要的特点就是越靠近数据输入层权值越小,越靠近输出层权值越多,呈现出一个倒三角的状态,这就很好地避免了BP神经网络中反向传播的时候梯度损失得太快。      CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;而且由于同一特征映射面上的神经元权值相同,网络也可以并行学习,这也是卷积网络相对于全连接神经网络的一大优势。      卷积神经网络以其局部权值共享的特殊机构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。在下一篇博客中,我会针对toolbox中CNN的代码进行简单的注释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab cnn