第一天《CNN基础知识点》From:Convolutional Neural Networks (LeNet)
- 神经认知机。
CNN的灵感来源在诸多论文中已经讲得很全面了,就是伟大的生物发现Receptive Field(感受野细胞)。根据这个概念提出了神经认知机。它的主要作用就是Recept部分图像信息(或特征),然后通过分层递交相连,将各个局部特征组合成整个图像特征。 需要仔细阅读的论文包括:
(1) 第一篇关于感受野功能的论文Receptive fields and functional architecture of monkey striate cortex,1968
(2) the NeoCognitron A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position,1980
(3) HMAX Robust object recog-nition with cortex-like mechanisms,2007
(4) 非常重要的LeNet-5 Gradient-based learning applied to document recognition,1998 - 稀疏连接。
CNN层与层之间的连接并不全是全连接,而是局部连接,它的作用就是大幅度减少参数。
图1 层间连接示意图 - 权值共享。
滤波器(filter)是图2第m层中每个小圆圈对应的一个神经元,它们的weight和bias是相同的(就是共享相同的参数),然后每个神经元与输入图像数据进行卷积运算,就得到了m层 –特征图层(feature map,每一层可以包含多个特征图),此特征图包含3个隐藏节点(hidden units)。(以上是我个人理解,如有错误,欢迎指出,初学者,见谅)。梯度下降法仍然可以用来训练它们所共享的参数,不过需要在原算法基础上进行小的改动。weight的梯度就是简单的对每个weight中的参数的梯度求和得到。
图2 权值共享图 - 注解说明。
定义 hk代表某层的第k个特征图。
公式 hkij=tanh((Wk∗x)ij+bk) 用来计算hk 。
为了更丰富的表示数据特征,每个隐藏层会包含多个特征图。以下图为例:
图3 举例,一层中含4个特征图
图3中的CNN含有2层,m−1层包含4个特征图,m层包含2个特征图,记为h0和h1,h0和h1中的每个像素值是由前一层的每个特征图通过2∗2的感受野计算得出。其中,h0和h1的权值W0和W1是一个3维张量(在这里或许等同于矢量,求解释),第一维表示前一层特征图的下标,后两维表示该特征图的坐标。综合起来,Wklij表示m层第k个特征图的每一个像素点的权重与m−1层第l个特征图的(i,j)像素点的权重相连接。 - 卷积运算。
用的是著名的Python库Theano. ConvOp。具体如何使用见原网页,讲的很详细。 - 最大池化。
CNN中另外一个很重的概念就是最大池化。它是一种非线性的下采样(个人理解其作用类似于降维)方法。最大池化把输入图像划分不相重叠的图像矩阵块,每一个子区域输出其最大值。最大池化方法在视觉处理问题中非常有效的两个原因是:
(1) 通过减少非最大值来降低对上层的计算复杂度。
(2) 池化结果支持平移不变性。在卷积层中,每个像素点有8个方向可以平移。当最大池化窗口为2∗2区域时,其中有3个方向会产生相同结果;当最大池化窗口为3∗3区域时,则会有5个方向会产生相同的结果。
在Theano中的应用举例就不介绍了。 - 至此,CNN的基本知识点基本介绍完毕。下一节学习一个完整的CNN模型–LeNet-5
参考资料
(1) http://deeplearning.net/tutorial/lenet.html
(2) Deep Learning(深度学习)学习笔记整理系列之(七)
(3) Deep learning with Theano 官方中文教程(翻译)(四)—— 卷积神经网络(CNN)
版权声明:本文为博主原创文章,水平有限,欢迎批评指正。欢迎转载,但请注明转载出处,谢谢。QQ:371073260
时间: 2024-10-14 15:00:14