首页 > 编程知识 正文

卷积神经网络应用场景,lenet卷积神经网络

时间:2023-05-06 00:16:10 阅读:127472 作者:1489

深度神经网络已经在语音识别、图像识别等领域取得了前所未有的成功。 我也在很多年前接触过神经网络。 本系列文章主要记录自己对深度神经网络的学习心得。

第二篇,谈经典卷积神经网络。 我不打算详细解释卷积神经网络的生物学机制。 因为网上有太多可以参考的教程。 这里主要介绍其数学计算过程,也就是如何自己编程实现的问题。

1 .概述

请记住BP神经网络。 BP网络各层节点呈线性一维排列状态,层与层网络节点之间完全连接。 因此,请考虑BP网络中层与层之间的节点连接是本地连接而不是完全连接的情况。 这样,它是最简单的一维卷积网络。 将上述思路扩展到二维,这就是大多数参考资料中可以看到的卷积神经网络。 具体请参照下图。

上(左)全连接网络。 如果有1000x1000像素的图像,有100万个隐藏层神经元,每个隐藏层神经元连接图像的每个像素点,就会有1000x100000=10^12个连接,即10^12个权重参数。

在上(右)局部连接网络,每个节点连接到与上级节点相同的附件10x10窗口时,100万个隐藏层神经元只有100w100,即10^8个参数。 其权重的连接个数比原来减少了4位。

通过BP网络信号的前向传递过程,我们可以容易地计算网络节点的输出。 例如,上图中标记为红色节点的净输入等于与红线连接的所有高级神经元节点的值与红色线表示的权重的乘积的累积。 这样的计算过程,在很多书里被称为卷积。

实际上,在数字滤波器的情况下,滤波器的系数通常是对称的。 否则,卷积的计算必须先反向对折,再进行累计加法的计算。 上述神经网络的权重是否满足对称性? 我认为答案是否定的! 因此,上述被称为卷积运算,明显存在偏差。 但是,这不重要。 只是名词的称呼。 只是,做信号处理的人在第一次接触卷积神经网络时,带来了理解上的误解。

卷积神经网络的另一个特性是权重的共享。 例如,在上面的右图中,共享权重。 并非所有红线所示的连接权重都相同。 在这一点上,初学者容易产生误解。

虽然上面提到的只是单层网络结构,但原ATShannon Lab的Yann LeCun等人在此基础上提出了基于卷积神经网络的字符识别系统LeNet-5。 这个系统在90年代被用于银行手写数字的识别。

2 .文字识别系统LeNet-5

在经典模式识别中,一般事先提取特征。 提取大量特征后,对这些特征进行相关分析,找出最能表达文字的特征,去除与分类无关的特征和自相关特征。 但是,这些特征的提取过于依赖人的经验和主观,提取的特征差异严重影响分类性能,并且提取的特征顺序也影响最后的分类性能。 另外,图像预处理的好坏也影响提取的特征。 那么,如何将特征提取这一过程作为自适应、自我学习的过程,通过机器学习找出分类性能最好的特征呢?

卷积神经元各隐层单元提取图像的局部特征,将其映射到一个平面上,特征映射函数采用sigmoid函数作为卷积网络的激活函数,使特征映射具有位移不变性。 各神经元与前一层的局部感觉区相连。 如上所述,局部连接的神经元权重不同,同一平面层神经元权重相同,有相同程度的位移、旋转不变性。 在各特征提取之后紧接着是用于求出局部平均和二次提取的子采样层。 这种特有的二次特征提取结构使网络对输入样本具有较高的应变容忍能力。 也就是说,卷积神经网络通过局部感知域、共享权重和子采样,保证了对图像位移、缩放和失真的鲁棒性。

接下来,需要说明用于文字识别的上述LeNet-5深层卷积网络。

1 .输入图像大小为32x32,局部滑动窗口大小为5x5,由于不考虑扩展图像边界,滑动窗口有28x28个不同的位置。 也就是说,C1楼的大小是28x28。 这里设置了6个不同的C1层,每个C1层内的权重相同。

2. S2层为下采样层。 简单地说,从4个点作为1个点,即4个个数的加权平均进行采样。 但是,很明显,在LeNet-5系统中,这四个权重系数也需要学习,因此下采样层变得复杂,模型的复杂性增加。 在斯坦福大学的深度学习教程中,这个过程称为Pool。

3 .根据与前面C1层相同的理解,很容易得到C3层的大小为10x10。 但是,C3层的东西是16个10x10网络。 想想看。 如果S2层只有一个平面,则从S2层得到C3与从输入层得到C1层完全相同。 但是,S2层由多层构成。 那么,把这些层做成一定顺利的组合就可以了。 的具体组合规则在LeNet-5系统中列出。

简单地说,例如对于C3层的第0张特征图,各个节点与S2层的第0张特征图、第1张特征图、第2张特征图、共计3个5x5个节点相连。 以后同样,C3层的各特征图的权重相同。

4. S4层以C3层为基础上下采样,如上所述。 在后面的层中,由于每层的节点数少,所以都是全连接层,但由于这比较简单,所以省略说明。

3 .简化的LeNet-5系统

简化的LeNet-5系统将下采样层与卷积层结合,避免了下采样

样层过多的参数学习过程,同样保留了对图像位移,扭曲的鲁棒性。其网络结构图如下所示:

简化的LeNet-5系统包括输入层的话,只有5层结构,而原始LeNet-5结构不包含输入层就已经是7层网络结构了。它实现下采样非常简单,直接取其第一个位置节点上的值可以了。

1. 输入层。MNIST手写数字图像的大小是28x28的,这里通过补零扩展为29x29的大小。这样输入层神经节点个数为29x29等于841个。

2. 第一层。由6张不同的特征映射图组成。每一张特征图的大小是13x13. 注意,由于卷积窗大小为5x5,加上下采样过程,易得其大小为13x13. 所以,    第二层共有6x13x13等于1014个神经元节点。每一张特征图加上偏置共有5x5+1等于26个权值需要训练,总共有6x26等于156个不同的权值。即总共有1014x156等于26364条连接线。

3. 第二层。由50张不同的特征映射图组成。每一张特征图的大小是5x5. 注意,由于卷积窗大小为5x5,加上下采样过程,易得其大小为5x5. 由于上一   层是由多个特征映射图组成,那么,如何组合这些特征形成下一层特征映射图的节点呢?简化的LeNet-5系统采用全部所有上层特征图的组合。也就是原始LeNet-5 特征映射组合图的最后一列的组合方式。因此,总共有5x5x50等于1250 个神经元节点,有(5x5+1)x6x50等于7800 个权值,总共有1250x26等于32500条连接线。

4. 第三层。这一层是一个一维线性排布的网络节点,与前一层是全连接的网络,其节点个数设为为100,故而总共有100x(1250+1)等于125100个不同的权值,同时,也有相同数目的连接线。

5. 第四层。这一层是网络的输出层,如果要识别0-9数字的话,就是10个节点。该层与前一层是全连接的,故而,总共有10x(100+1)等于1010个权值,有相同数目的连接线。

4. 卷积神经网络的实现问题

网上可以下载到很多关于卷积神经网络的源码,其中有matlab的,也有C++的。如果自己编程,需要注意些什么问题呢?

由于卷积神经网络采用BP网络相同的算法。所以,采用现有BP网络就可以实现。开源的神经网络代码FAAN可以利用。这个开源的实现采用了一些代码优化技术,有双精度,单精度,定点运算三个不同的版本。

由于经典的BP网络是一个一维节点分布排列,而卷积神经网络是二维网络结构。所以,要把卷积神经网络的每一层,按照一定的顺序和规则映射为一维节点分布,然后,按照这个分布创建一个多层反向传播算法的网络结构,就可以按照一般的BP训练算法去学习网络参数。对于实际环境中新样本的预测,也采用BP算法中相同信号前向传递算法进行。具体细节也可以参考网上的一个开源代码,链接如下:

注:这个代码在创建CNN的时候有个明显的BUG,如果你看明白了我上面对简化的LeNet-5的结构描述,一眼就会找出问题所在。

原文:http://www.cnblogs.com/jason-wyf/p/5636936.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。