Deep Learning——CNN(Convolution Neural Network)

今天学习了http://blog.csdn.net/stdcoutzyx/article/details/41596663关于深度学习卷积神经网络部分,以下为在其基础上个人总结和感悟:

一、深度学习之CNN

深度学习所包含的方法很多,如BP(backpropagation)、前向传播(Feedforewar Propagation)、CNN(Convolution Neural Network)等。现在我们默认的深度学习方法为CNN。这个方法由Facebook的AI实验室Lecun等人提出来,主要应用于语音识别和图像分类方向。


二、神经网络


Deep Learning——CNN(Convolution Neural Network)_第1张图片

Deep Learning——CNN(Convolution Neural Network)_第2张图片

如图所示,输入为x1、x2、x3经过隐层L2得出最后输出。其中第二层的a1、a2、a3都是由第一层各个输入加权得到的。神经网络的训练类似于logistic(不清楚这是什么),训练过程也是对各个隐层节点进行权值的调整。一般采用链式求导法则和梯度下降的原则。又称为反向传播算法(BP)。


三、卷积神经网络(CNN)

具体可以参见lenet的网址:http://deeplearning.net/tutorial/lenet.html   有关于卷积,池化(pooling的具体教程)

卷积神经网络又称为多层感知器(Multi-Layer Perception),卷积神经网络模拟了Hubel和Wiesel等早期对猫的视觉皮层研究工作。他们在猫的头部开了3mm的空洞,通过在猫的眼前展现不同的画面,从而得出猫的脑部神经元反应。我们的大脑中有许多视觉神经元细胞,这些复杂的分布对于外界的输入并不是全局感知,而是对局部输入很敏感。这些细胞成为‘’感受野“,他们以某种方法来覆盖视觉域。这些细胞犹如滤波器,对输入的图像时局部敏感的,因此可以更好地挖掘自然图像中的目标空间关系信息。

此外,视觉皮层存在两类相关的细胞,S细胞(Simple Cell)和C细胞(Complex Cell)。S细胞在自身的感受野内最大限度地对图像中类似边缘模式的刺激作出相应,而C细胞具有更大的感受野,它可以对图像中产生刺激的模式空间位置进行精确地定位。

在进行图像处理时,我们通常将图像的像素信息看成一个向量信息,比如一个1000*1000像素的图像,可以将其转化为一个1000000维度的向量,然后对该向量进行处理。

Deep Learning——CNN(Convolution Neural Network)_第3张图片


如上图所示,左侧为全局感知、右侧为局部感知。

3.1全局感知

局感知就是对于某个节点(神经元),各个图像的像素点与其对应。如果对于一个1000*1000像素的图像,第一层拥有1000000个隐层(感觉和神经元、节点同意)。那么,每个像素都要对应于每个隐层,每个对应关系都要有一个参数,总计需要10^12个参数,这个参数非常巨大。其中隐层个数的决定主要取决于卷积核和步长,比如一个1000*1000像素的图像,采用5*5的卷积核,步长为1,那么需要1000*1000/(1000-5+1)*(1000-5+1)卷积神经网络主打的两个优势就是:局部感知和权值共享。

3.2局部感知

研究发现人和动物的视觉系统都是从局部到全局的感知,而图像的局部像素联系性也是较强的。因此在进行图像识别时利用局部感知优越性就凸显出来了,通过将局部信息整合也可以获取图像的全局信息。局部感知是每个隐层节点对应一部分像素点,比如10*10的像素对应,则该隐层节点需要10*10个参数,如果有1000000个隐层节点,则共计1000000*10*10个参数,相对于10^12少了10000倍。

3.3权值共享

所谓权值共享就是每个隐层节点权值共享,对于局部感知,比如第一个隐层节点对应10*10个参数,则以下各个隐层节点所对应的参数与第一层相同。则共需要100个参数了!这个依据于图像的一个假设(原则):图像各部分的统计特征大致相同,在一个区域学习到的特征可以应用于其他地方。用这100个参数可以提取一种特征,比如边缘特征。那么在卷积过程中需要改变这些参数,每组参数都可以形成一幅图像,累计加权这些图像最终可以输出一种图像特征。

Deep Learning——CNN(Convolution Neural Network)_第4张图片


如上图所示,首先需要在图像的一块区域学习获取提取一种特征的卷积核,然后在图像其他区域进行卷积从而获取特征。如在一幅图像上选取5*5的区域,然后应用3*3的卷积核进行卷积,提取特征如右图所示。

3.4多核卷积

在局部学习一种卷积核可以对图像进行全局操作,从而提取出一类特征。一类特征显然对图像的分类效果不好,通过多种卷积核获取多种卷积特征,然后对多种卷积特征进行加权求和,从而获取一个良好的特征。其中,不同的卷积核卷积出来的图像可以视为一幅图像的不同通道。


Deep Learning——CNN(Convolution Neural Network)_第5张图片

如图所示,左侧图像为10^6个隐层节点,卷积核大小10*10,则需要10^6*10*10个参数(局部感知,参数不共享)。如果权值共享则需要100个参数。右侧为多卷积核,每个卷积核可以获取一幅图像,不同卷积核获取的图像可以视为同一幅图像的不同通道。如1000*1000像素值得图像,采用100个滤波器,每个滤波器大小为10*10。则共计需要100*10*10个参数。

通过多个卷积核获取的多通道图像,需要不断的减少通道数,则需要进一步卷积。下图为将4个通道的图像卷积变成2个通道的图像。

Deep Learning——CNN(Convolution Neural Network)_第6张图片




如上图所示,w1像素点处,由四个通道该处卷积,然后求和,最后取激活函数tanh得到。总计需要4*2*2*2个参数,其中4为4个通道,2为变成的两个通道,2*2为卷积核。

3.5池化层(down-pooling)

容易知道一幅1000*1000像素的图像,经过一个3*3的卷积核进行卷积,假设共有100个卷积核,可以提取100个特征。那么每个卷积核操作之后可以获得一个(1000-3+1)*(1000-3+1)维度的卷积特征向量,100个卷积核就会产生100*(1000-3+1)*(1000-3+1)维特征向量。学习一个如此高维度的特征分类器是非常困难的,而且容易产生过拟合!

Deep Learning——CNN(Convolution Neural Network)_第7张图片


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


此外,对于采用CNN方法的人脸识别可以参见Facebook AI实验室Lecun等DeepFace,Google的FaceNet和香港中文大学的FaceID等。


4 参考资源

  • [1] http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B 栀子花对Stanford深度学习研究团队的深度学习教程的翻译
  • [2] http://blog.csdn.net/zouxy09/article/details/14222605 csdn博主zouxy09深度学习教程系列
  • [3] http://deeplearning.net/tutorial/ theano实现deep learning
  • [4] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
  • [5] Sun Y, Wang X, Tang X. Deep learning face representation from predicting 10,000 classes[C]//Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on. IEEE, 2014: 1891-1898.

你可能感兴趣的:(深度学习,深度学习,cnn,算法)