CNN卷积神经网络学习笔记1:背景介绍

Convolutional Neural Network 卷积神经网络是基于人工神经网络提出的。人工神经网络模拟人的神经系统,由一定数量的神经元构成。在一个监督学习问题中,有一组训练数据(xi,yi),x是样本,y是label,把它们输入人工神经网络,会得到一个非线性的分类超平面hw,b(x),在这篇笔记中先梳理一下传统人工神经网络的基本概念,再基于传统人工神经网络简单介绍卷积神经网络。

1,神经元neuron

一个神经元是神经网络中的一个运算单元,它实质上就是一个函数。下图是一个神经元的示意图:

有3个输入x1,x2,x3,+1是一个偏置值(bias),输出hw,b(x)=f(wTx)=f(∑3i=1wixi+b),f是激活函数(activation function),这里的激活函数用的是sigmoid函数:

f(z)=11+exp(?z).

sigmoid函数图像如图:

激活函数是以0.5为分界,让大值更逼近1,小值更逼近0,因为人的神经元就是有分“激活”和“不激活”两种状态,刺激达到一定程度,就被激活,传播信号,达不到就不激活,不传播信号,人工神经网络中激活函数的设计,应该是为了模拟这个过程。

2,人工神经网络Neural Network

人工神经网络就是由多个上述的神经元组合成的,下图是一个小型的人工神经网络的示意图:

有3个输入单元,这个输入单元的个数一般由样本向量的维度决定,比如输入的样本是sift特征点,那么就有128个输入单元。+1是偏置,a(l)i是指第l层的激活函数。这个神经网络的参数是(W(1),b(2),W(2),b(2)),其中W(1)是指第1层到第2层之间的连接的权值,是一个矩阵,b(1)是指它们之间的连接偏置,是一个向量。W(l)i,j指的是第l层的unit j和第l+1层的unit i之间的连接的权值,它是一个数值,b(l)i是连接到第l+1层unit i的偏置,所有连接unit i的连接都使用这同一个偏置值,在图中连接到第2层的三个unit的偏置值都是+1。在图中,L1是输入层(input layer),L2是隐层(hidden layer),因为这一层每个unit的值是无法观测到的,L3是输出层(output layer)。

当然输出层也可以有多个unit,如下图,在label y是向量的情况下,这个unit个数一般和y的维度一致。

3,卷积神经网络

卷积神经网络中,输入就是一幅幅的图像,权值W就是卷积模板,一般是卷积层和下采样层交替,最后是全连接的神经网络,也就是上述经典的人工神经网络。如下是一个简单的卷积神经网络示意图:

C是卷积层,S是下采样层。输入的一幅图像,在C1层,通过和3个卷积模板做卷积运算,然后加上偏置值,再经过sigmoid激活函数,得到3幅输出图像,在S2层,对C1层输出的3幅图像做下采样,假设采样因子是2,也就是图中每2*2的patch中的4个像素进行求和,再加偏置,再通过激活函数,得到3张尺寸减小了的输出图像。同样的,再经过C3,S4。将S4的输出拉成一个向量,输入传统的神经网络中,并得到输出。

如下图是有人对卷积神经网络每一层输出的特征图像做的可视化:

可以看到,第1层输出的特征图像还是很简单的形状和颜色信息,随着层数增多,到第3层的输出特征图,已经包含了相当复杂的丰富的细节信息,能够初步辨别目标了。

4,感受野(receptive field)和权值共享

除了增加卷积层和采样层,在传统人工神经网络的基础上,卷积神经网络还通过感受野和权值共享大大地减少了参数,降低了训练难度,也避免了参数过多引起过拟合(overfitting)。

卷积神经网络的输入是一幅幅的图像,根据传统的人工神经网络,在第2层的每个unit都要和输入层图像的每个像素连接,这里我们假设第2层有1M个hidden units,输入图像大小1000*1000,那么这一层要训练的权值w就是1M *1000*1000=10^12个,如下图左:

而人们发现人是通过一个局部的感受野去感受图像的,且图像的空间联系是局部的,每一个神经元并不需要对全局图像感受,每个神经元只用感受局部的图像区域,然后在更高层将这些神经元的信息综合起来得到全局信息。这样,我们就可以减少连接数目了,假设感受野是10*10大小,那么第2层的每个unit只用和一个10*10的感受野连接,这样的感受野有100*100个,那么这一层要训练的权值w是1M*10*10=10^8个,如上图右。可以看到,通过感受野,隐层的权值个数已经从10^12降到了10^8个,每个hidden unit有10*10=100个参数。

人们认为对于不同的感受野区域,要提取的特征是相似的,比如边缘,颜色变化等等,这样,我们可以在不同的感受野用同样的方式去感受特征,也就是说,用一个卷积核去卷积全部的感受野。这就是权值共享,就是让这1M个hidden units共享同一组参数(100个权值),那么隐层权值个数就降到了100个。下图左中的红色,黑色,绿色,蓝色的感受野区域使用相同的参数来做卷积。

如果一种卷积核(也就是滤波器)可以提取图像的某一方面的特征,那么我们在这里使用100种卷积核,每个卷积核的参数都不一样,提取出来的特征也就不一样,这样,就可以输出100种特征图。上图右是红色和黑色两种卷积核,在卷积层会输出2中特征图。



Reference

http://ufldl.stanford.edu/wiki/index.php/Neural_Networks

http://blog.csdn.net/zouxy09/article/details/8781543

《Visualizing and Understanding Convolutional Networks》

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 11:24:50

CNN卷积神经网络学习笔记1:背景介绍的相关文章

CNN卷积神经网络学习笔记2:网络结构

在上篇笔记<CNN卷积神经网络学习笔记1:背景介绍>中已经介绍过CNN的结构,这篇笔记中,通过一个简单的CNN的例子,梳理一下CNN的网络结构的细节. 以下是一个6层的CNN网络,这个简单的CNN网络是DeepLearning Toolbox里面CNN的一个例子,后面要通过DeepLearning Toolbox中CNN的代码来进一步理解CNN的整个过程.我们输入的是1张大小为28*28的图片. 需要注意的有: 1,这里输入的是一张图片,如果我们输入了50张图片,那么下图中的每一个方框(代表一

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇<CNN卷积神经网络学习笔记2:网络结构>中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数. CNN本质上就是人工神经网络的一种,只是在前几层的处理上有所不同,我们可以把卷积核看成是人工神经网络里的权值W,而采样层实质上也是一种卷积运算.所以可以基于人工神经网络的权值更新的方法来推导CNN里的权值更新公式.人工神经网络里是用反向传播算法将误差层层回传,利用梯度下降法更新每一层的权值,C

卷积神经网络学习笔记与心得(3)卷积

数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值. 从卷积的效果来看,在二维图像上进行卷积时,卷积核对所在区域上符合某种条件的像素赋予较多的权重,其他的像素赋予的权重较少,这可以看作是一种滤波行为,因此卷积神经网络的卷积核有时也被称为滤波器,卷积核所在区域被称为局部感知域.若局部感知域中存在像素符合加较大权重的条件,称这些像素具有某种特

卷积神经网络学习笔记与心得(2)数据集

机器学习领域有很多现成的数据集,它们由个人或组织制作.整理,且向外界公开下载,比如在字符识别领域有mnist数据集等,数据挖掘领域有Iris,Adult数据集等.这些数据集为相关技术研究者提供了很大的便捷,有了这些资源,研究者就可以把更多的精力放在模型的研究上,可以说这些数据集的制作整理者对推动数据挖掘和机器学习的发展做出了巨大的贡献. 不过,在不少情况下,这些数据集未必能满足我们的需求,这时就要我们自己制作数据集了.不得不说,这次的字符识别项目中制作数据集的经历着实让我感受到了那些数据整理者的

卷积神经网络学习笔记与心得(4)池化

图片经过卷积.激活后的结果一般带有大量原图信息. 上图中卷积核提取的是竖直方向上的连续像素,但是,被增强的像素只占了结果的1/3,对于多层网络,其余重要性较低的信息也被传入了下一层网络,造成了不必要的浪费,因此需要用池化对卷基层得到的结果做聚合统计.池化的理论基础是:图像相邻位置的像素是相关的,即使间隔一段尺寸对图像进行采样,得到的结果依旧能保持大部分信息.常用的池化方式有最大池化和均值池化.池化的另一个重要作用是为卷积神经网络带来一定的平移.旋转和透视不变性. 上图展示了池化如何为模型带来平移

个人卷积神经网络学习笔记(我的理解)

学习过程相当于使用一个滤波器,定义滤波器大小和深度步长,在原图像上滑动,滤波器上每一个深度的点对原图像上特征点响应的量化值都是不同的,响应过程是一个卷积过程,原图像如果是3 7*7(3是原来的depth),滤波器定义为10 3*3 stride=1则获得的输出为10 5*5,在学习过程中卷积层的大小会不断变小,所以针对高深度的可能会循环上千次的卷积神经网络,需要在每次输出的卷积层外加(size_of_fliter-1)的pad,来防止尺度缩减或者缩减过快的问题,针对我列举出的数据,训练一次之后的

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

1.卷积操作实质: 输入图像(input volume),在深度方向上由很多slice组成,对于其中一个slice,可以对应很多神经元,神经元的weight表现为卷积核的形式,即一个方形的滤波器(filter)(如3X3),这些神经元各自分别对应图像中的某一个局部区域(local region),用于提取该区域的特征.如果该slice对应的神经元参数共享,那么相当于只有一个卷积核作用于所有的局部区域(类似于图像滤波了).一个局部区域可以称为一个block,如果将所有的block拉成一个个列向量(

【转】Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

原作者:zouxy09 原文链接:http://blog.csdn.net/zouxy09/article/details/9993371 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不