深度学习笔记1(卷积神经网络)

深度学习笔记1(卷积神经网络)

在看完了UFLDL教程之后,决定趁热打铁,继续深度学习的学习,主要想讲点卷积神经网络,卷积神经网络是深度学习的模型之一,还有其它如AutoEncoding、Deep Belief Network、Restricted Boltzmann Machine和sparse coding等。

在UFLDL教程中提到了针对大型图像的处理,使用卷积和池化的概念。原因主要对于全连接网络,需要的参数就有很多。比如对于一副1000*1000的图像,hidden layer也为1000000个神经元,那么需要学习的参数就是10^12,这样从计算的角度来说,将会变得非常耗时;此外全连接,将会忽略掉图像内部的拓扑结构。因此我们采用部分连接网络,这就是卷积神经网络的要点之一—局部感受野,卷积神经网络还有两个卖点,就是权值共享和时空亚采样。

局部感受野

每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。比如我们每个隐含单元只与10*10的区域相连接,那么我们参数的个数就变为了10^8,降低了10000倍,这样训练起来就没有那么费力了。这一思想主要受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激),此外图像的像素也是局部时空相关的。

如下图所示,左边就是全连接网络,每个隐藏神经元与每个像素进行连接。右边就是部分连接网络,每个隐神经元只与一部分区域相连接。

权值共享

部分连接以后,参数降低了很多,但是感觉参数还是有很多,怎么办呢?我们进行权值共享,权值共享的意思是每个隐神经元连接的100个参数都是相同,那么训练参数就降低到110*10=100个了。参数真的是极大的简化了啊!这个思想主要来源于:自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

如果隐神经元与其连接的100个输入单元具有相同的100个参数,那么就相当于是一个10*10的模板在原始的输入图像上做卷积(当然需要加上一个偏置参数b),这样相当于得到一个新的图像,新图像的大小为(1000-100+1)*(1000-100+1),因此也得名卷积神经网络。这样的10*10的模板,我们也把它称为一个卷积核。此外只用一个卷积核提取得到的特征往往是不充分的,只能算作是一种类型的特征(比如某个方向的边缘),如果我们要提取其它方向的边缘,那就多弄几个卷积核呗,这样就变成了多卷积核了。假设有k个卷积核,那么可训练的参数的个数就变为了k*10*10。注意没有包含偏置参数。每个卷积核得到一副特征图像也被称为一个Feature
Map。

卷积的过程也被称为特征提取的过程,通常该层用Cx来标记,其中C是convolution的意思,x表示是第几层。

时空亚采样

降低图像的分辨率,可以减少输出对于变形和扭曲的敏感性。此外,在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 ? 8 + 1) * (96 ? 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例(example)
都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化
(取决于计算池化的方法)。

池化的过程通常也被称为特征映射的过程,通常该层用Sx表示,S就是sumsampling的意思,x表示第几层。

多层卷积网络—典型的例子

下面我们用一个典型的数字识别系统LeNet-5来讲解挫等卷积网络。以下是其leNet-5多层网络的示意图,总共包含了7层,不包含输入层。

输入原始图像的大小是32*32,卷积层用Cx表示,亚采样层用Sx表示,全连接层用Fx表示,x表示第x层。

C1层是卷积层,用了6个卷积核,这样就得到了6个feature map,其中每个卷积核的大小为5*5,用每个卷积核与原始的输入图像进行卷积,这样feature map的大小为(32-5+1)* (32-5+1)= 28*28,所需要的参数的个数为(5*5+1)*6= 156(其中5*5为卷积模板参数,1为偏置参数),连接数为(5*5+1)*28*28*6=122304(其中28*28为卷积后图像的大小)。

S2层为采样层,也可以说是池化或者特征映射的过程,拥有6个feature maps,每个feature map的大小为14*14,每个feature map的隐单元与上一层C1相对应的feature map的2*2单元相连接,这里没有重叠。计算过程是:2*2单元里的值相加然后再乘以训练参数w,再加上一个偏置参数b(每一个feature
map共享相同w和b),然后取sigmoid值,作为对应的该单元的值。所以S2层中每个featuremap的长宽都是上一层C1的一半。S2层需要2*6=12个参数,连接数为(4+1)*14*14*6
= 5880.【这里池化的过程与ufldl教程中略有不同。】

C3层也是一个卷积层,有16个卷积核,卷积模板的大小为5*5,因此具有16个feature maps,每个featuremap的大小为(14-5+1)*(14-5+1)= 10*10。每个feature map只与上一层S2中部分feature maps相连接,下表给出了16个feature maps与上一层S2的连接方式(行为S2层feature map的标号,列为C3层feature map的标号,第一列表示C3层的第0个feature map只有S2层的第0、1和2这三个feature
maps相连接,其它解释类似)。为什么要采用部分连接,而不采用全连接呢?首先就是部分连接,可计算的参数就会比较少,其次更重要的是它能打破对称性,这样就能得到输入的不同特征集合。以第0个feature map描述计算过程:用1个卷积核(对应3个卷积模板,但仍称为一个卷积核,可以认为是三维卷积核)分别与S2层的3个feature
maps进行卷积,然后将卷积的结果相加,再加上一个偏置,再取sigmoid就可以得出对应的feature map了。所需要的参数数目为(5*5*3+1)*6 +( 5*5*4+1)*9 +5*5*6+1
= 1516(5*5为卷积参数,该卷积核有3个卷积模板),连接数为1516*10*10= 151600(98论文年论文给出的结果是156000,个人认为这是错误的,因为一个卷积核只有一个偏置参数)。

同理,S4层也是采样层,有16个feature maps,每个featuremap的大小为5*5,计算过程和S2类似,需要参数个数为16*2 = 32个,连接数为(4+1)*5*5*16 = 2000.

C5为卷积层,有120个卷积核,卷积核的大小仍然为5*5,因此有120个feature maps,

每个feature map的大小都与上一层S4的所有feature maps进行连接,这样一个卷积核就有16个卷积模板。Feature map的大小为1*1,这样刚好变成了全连接,但是我们不把它写成F5,因为这只是巧合。C5层有120*(5*5*16+1) = 48120(16为上一层所有的feature maps个数)参数,连接数也是这么多。

F6层有86个神经单元,每个神经单元与C5进行全连接。它的连接数和参数均为86*120= 10164。这样F6层就可以得到一个86维特征了。后面可以使用该86维特征进行做分类预测等内容了。

大体的多层神经网络卷积和采样的过程基本讲完。如有问题欢迎留言交流!注意:这里卷积和池化的计算过程和ufldl教程中的计算略有不同。

参考文献

1:UFLDL教程:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial

2:1998年论文:Gradient-BasedLearning Applied to Document Recognition

3:http://blog.csdn.net/stdcoutzyx/article/details/41596663卷积神经网络

4:http://blog.csdn.net/zouxy09/article/details/8781543 Deep Learning(深度学习)学习笔记整理系列之(七)

时间: 2024-08-25 09:05:55

深度学习笔记1(卷积神经网络)的相关文章

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点

第一天<CNN基础知识点>From:Convolutional Neural Networks (LeNet) 神经认知机. CNN的灵感来源在诸多论文中已经讲得很全面了,就是伟大的生物发现Receptive Field(感受野细胞).根据这个概念提出了神经认知机.它的主要作用就是Recept部分图像信息(或特征),然后通过分层递交相连,将各个局部特征组合成整个图像特征. 需要仔细阅读的论文包括: (1) 第一篇关于感受野功能的论文Receptive fields and functional

学习笔记TF027:卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN),可以解决图像识别.时间序列信息问题.深度学习之前,借助SIFT.HoG等算法提取特征,集合SVM等机器学习算法识别图像. SIFT,缩放.平移.旋转.视角转变.亮度调整畸变的一定程度内,具有不变性.有局限性,ImageNet ILSVRC比赛最好结果错误率在26%以上,常年难以突破. 卷积神经网络提取特征效果更好,分类训练时自动提取最有效特征.卷积神经网络CNN,降低图像数据预处理要求,避免复杂特征工程.CNN使用

深度学习笔记(五):LSTM

深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记(四):循环神经网络的概念,结构和代码注释 深度学习笔记(五):LSTM 看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的

科普-深度学习中的卷积

卷积的目的是为了从输入中提取有用的特征.在图像处理中,有很多滤波器可以供我们选择.每一种滤波器帮助我们提取不同的特征.比如水平/垂直/对角线边缘等等.在CNN中,通过卷积提取不同的特征,滤波器的权重在训练期间自动学习.然后将所有提取到的特征“组合”以作出决定. 卷积的优势在于,权重共享和平移不变性.同时还考虑到了像素空间的关系,而这一点很有用,特别是在计算机视觉任务中,因为这些任务通常涉及识别具有空间关系的对象.(例如:狗的身体通常连接头部.四肢和尾部). 单通道版本 单个通道的卷积 在深度学习

深度学习笔记(一)卷积神经网络(Convolutional Neural Networks)

一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张"薄饼",其中包括了图片的高度.宽度和深度(即颜色,用RGB表示). 在不改变权重的情况下,把这个上方具有k个输出的小神经网络对应的小块滑遍整个图像,可以得到一个宽度.高度不同,而且深度也不同的新图像. 卷积时有很多种填充图像的方法,以下主要介绍两种,一种是相同填充,一种是有效填充. 如图中

神经网络与深度学习笔记 Chapter 6之卷积神经网络

深度学习 Introducing convolutional networks:卷积神经网络介绍 卷积神经网络中有三个基本的概念:局部感受野(local receptive fields), 共享权重( shared weights), 混合( pooling). 与前面的神经网络不同,在这里我们用下图中的矩阵来表示输入神经元. 在cnn中,输入层的一个区域(例如,5 * 5)对应下一层隐含层中的一个神经元,这个区域就是一个局部感受野.如下图所示: 通过在输入矩阵中滑动局部感受野来对应隐含层中的

【深度学习笔记】第 6 课:卷积神经网络简介

到目前为止,我们已经大致地介绍了一些新网络 但是,如果你对数据已有一些了解,比如它是一张图片,或者一系列事物,你可以做得更好 颜色 想法非常简单,如果你的数据是某种结构,则你的网络没有必要从零开始学习结构,它会表现得更好 例如,假设你想尝试分类这些字母,你知道颜色并不是让A成为A的重要因素 你认为怎么样会使得你的分类器更容易学习? 一个使用彩色照片的模型还是只使用灰度的模型 直观地说,如果一个字母表现为你从未见过的颜色,当你尝试分类字母时,忽略颜色的特性将使得模型变得更加容易 统计不变性 这是另

深度学习笔记(六) 卷积神经网络

1.通常神经认知机包含两类神经元,即承担特征抽取的S-元和抗变形的C-元.S-元中涉及两个重要参数,即感受野与阈值参数,前者确定输入连接的数目,后者则控制对特征子模式的反应程度.在传统的神经认知机中,每个S-元的感光区中由C-元带来的视觉模糊量呈正态分布,也就是说如果眼睛感受到物体是移动的,即已感受到模糊和残影,S-感光区会调整识别模式,这时它不会完整地提取所有的特征给大脑而是只获取一部分关键特征,屏蔽其他的视觉干扰.也就是说,眼睛看到移动物体时,先通过C-元决定整体的特征感受控制度,再由S-感

DeepLearning (六) 学习笔记整理:神经网络以及卷积神经网络

神经网络 神经网络模型 前向传播 反向传播 Neural Networds Tips and Tricks Gradient Check Regularization 激活函数 sigmoid 函数 Tanh Relu 稀疏编码 卷积神经网络 卷积 局部感知 权值共享 多通道卷积 卷积输出大小计算公式 池化pooling后的平移不变性 Dropout Learning rate AdaGrad python 实现 caffe 中的学习率 参考文献 [原创]Liu_LongPo 转载请注明出处[C