(3) Deep Learning模型之:CNN卷积神经网络(1)

本文是将两篇文章进行了总结,其中一篇网址为:http://www.jeyzhang.com/cnn-learning-notes-1.html

这里神经网络结构讲的比较细,可能有点难懂,但理解之后其他就迎刃而解了。 本文章后面还有结构的简化描述。

1.简介:卷积神经网络是近年来广泛应用于模式识别、图像处理等领域的一种高效识别算法,它具有结构简单、训练参数少和适应性强等特点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

   卷积神经网络本身可采用不同的神经元和学习规则的组合形式。其中一种方法是采用M-P神经元和BP学习规则的组合,常用于邮政编码识别中。还有一种是先归一化卷积神经网络,然后神经元计算出用输入信号将权值和归一化处理后的值,再单独训练每个隐层得到权值,最后获胜的神经元输出活性,这个方法在处理二值数字图像时比较可行,但没有在大数据库中得到验证。第三种方法综合前两种方法的优势,即采用McCulloch-Pitts神经元代替复杂的基于神经认知机的神经元。在该方法中,网络的隐层和神经认知机一样,是一层一层训练的,但是回避了耗时的误差反向传播算法。这种神经网络被称为改进的神经认知机。

2.卷积神经网络结构
        卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。网络中包含一些简单元和复杂元,分别记为S-元和C-元。S-元聚合在一起组成S-面,S-面聚合在一起组成S-层,用Us表示。C-元、C-面和C-层(Us)之间存在类似的关系。网络的任一中间级由S-层与C-层串接而成,而输入级只含一层,它直接接受二维视觉模式,样本特征提取步骤已嵌入到卷积神经网络模型的互联结构中。一般地,Us为特征提取层(相当与本文下面提及的卷积层),每个神经元的输入与前一层的局部感受野相连(即每个神经元连接上一层图像局部区域的所有像素点,所以说由神经元组成的特征图中每个神经元数值基本不同,但与各个神经元与局部感受野之间对应的权值是相等的),并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来;Uc是特征映射层(相当于本文下面提及的下采样即pooling层),网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(S-层)都紧跟着一个用来求局部平均与二次提取的计算层(C-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。 
        网络中神经元的输出连接值符合“最大值检出假说”,即在某一小区域内存在的一个神经元集合中,只有输出最大的神经元才强化输出连接值。所以若神经元近旁存在有输出比其更强的神经元时,其输出连接值将不被强化。根据上述假说,就限定了只有一个神经元会发生强化。卷积神经网络的种元就是某S-面上最大输出的S-元,它不仅可以使其自身强化,而且还控制了邻近元的强化结果。因而,所有的S-元渐渐提取了几乎所有位置上相同的特征。在卷积神经网络早期研究中占主导的无监督学习中,训练一种模式时需花费相当长的时间去自动搜索一层上所有元中具有最大输出的种元,而现在的有监督学习方式中,训练模式同它们的种元皆由教师设定。
        图1是一个卷积神经网络的典型结构图。将原始图像直接输入到输入层(Uc1),原始图像的大小决定了输入向量的尺寸,神经元提取图像的局部特征,因此每个神经元都与前一层的局部感受野相连。图中使用了4层网络结构,隐层由S-层和C-层组成。每层均包含多个平面,输入层直接映射到Us2层包含的多个平面上。每层中各平面的神经元提取图像中特定区域的局部特征,如边缘特征,方向特征等,在训练时不断修正S-层神经元的权值。同一平面上的神经元权值相同(这里只是个人理解:可能会出错,但机率不大。每一个神经元及其对应局部感受野的权值可以组成一个局部感受野大小的矩阵,若每一个神经元的权值都相等,则矩阵相同,从而保证组成整个图像的所有的多个局部感受野具有相同程度的位移和旋转不变性),这样可以有相同程度的位移、旋转不变性。S-层中每个神经元局部输入窗口的大小均为5x5,由于同一个平面上的神经元共享一个权值向量,所以从一个平面到下一个平面的映射可以看作是作卷积运算,S-层可看作是模糊滤波器,起到二次特征提取的作用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。


如果上面看的不是很明白就看下面的:

概述:

卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN的。CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的前期预处理过程(提取人工特征等),可以直接输入原始图像。

图像处理中,往往会将图像看成是一个或多个的二维向量,如之前博文中提到的MNIST手写体图片就可以看做是一个28 × 28的二维向量(黑白图片,只有一个颜色通道;如果是RGB表示的彩色图片则有三个颜色通道,可表示为三张二维向量)。传统的神经网络都是采用全连接的方式,即输入层到隐藏层的神经元都是全部连接的,这样做将导致参数量巨大,使得网络训练耗时甚至难以训练,而CNN则通过局部连接权值共享等方法避免这一困难,有趣的是,这些方法都是受到现代生物神经网络相关研究的启发。

下面重点介绍下CNN中的局部连接(Sparse Connectivity)权值共享(Shared Weights)方法,理解它们很重要。

局部连接与权值共享

下图是一个很经典的图示,左边是全连接,右边是局部连接。

对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。

尽管减少了几个数量级,但参数数量依然较多。能不能再进一步减少呢?能!方法就是权值共享。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10 × 10的局部图像,因此有10 × 10个权值参数,将这10 × 10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这 10 × 10个权值参数(也就是卷积核(也称滤波器)的大小),如下图。

这大概就是CNN的一个神奇之处,尽管只有这么少的参数,依旧有出色的性能。但是,这样仅提取了图像的一种特征,如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像的不同映射下的特征,称之为Feature Map。如果有100个卷积核,最终的权值参数也仅为100 × 100 = 10^4个而已。另外,偏置参数也是共享的,同一种滤波器共享一个。

卷积神经网络的核心思想是:局部感受野(local field),权值共享以及时间或空间亚采样这三种思想结合起来,获得了某种程度的位移、尺度、形变不变性。

网络结构

下图是一个经典的CNN结构,称为LeNet-5网络

可以看出,CNN中主要有两种类型的网络层,分别是卷积层池化/采样层(Pooling)。卷积层的作用是提取图像的各种特征;池化层的作用是对原始特征信号进行抽象,从而大幅度减少训练参数,另外还可以减轻模型过拟合的程度。

卷积层

卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。如下图所示。

下面的动图能够更好地解释卷积过程:

池化/采样层

通过卷积层获得了图像的特征之后,理论上我们可以直接使用这些特征训练分类器(如softmax),但是这样做将面临巨大的计算量的挑战,而且容易产生过拟合的现象。为了进一步降低网络训练参数及模型的过拟合程度,我们对卷积层进行池化/采样(Pooling)处理。池化/采样的方式通常有以下两种:

  • Max-Pooling: 选择Pooling窗口中的最大值作为采样值;
  • Mean-Pooling: 将Pooling窗口中的所有值相加取平均,以平均值作为采样值;

如下图所示。

LeNet-5网络详解

以上较详细地介绍了CNN的网络结构和基本原理,下面介绍一个经典的CNN模型:LeNet-5网络

LeNet-5网络在MNIST数据集上的结果





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值