深度学习算法实践10---卷积神经网络(CNN)原理

其实从本篇博文开始,我们才算真正进入深度学习领域。在深度学习领域,已经经过验证的成熟算法,目前主要有深度卷积网络(DNN)和递归网络(RNN),在图像识别、视频识别、语音识别领域取得了巨大的成功,正是由于这些成功,能促成了当前深度学习的大热。与此相对应的,在深度学习研究领域,最热门的是AutoEncoder、RBM、DBN等产生式网络架构,但是这些研究领域,虽然论文比较多,但是重量级应用还没有出现,是否能取得成功还具有不确定性。但是有一些比较初步的迹象表明,这些研究领域还是非常值得期待的。比如AutoEncoder在图像、视频搜索领域的应用,RBM对非结构化数据的处理方面,DBN网络在结合人工智能领域两大流派连接主义和符号主义,都具有巨大的前景,有理由期待产生重量级成果。我们在后续会对这些网络逐一进行介绍和实现,除了给出重构后的Theano实现代码外,还会逐步补充这些算法在实际应用的中的实例,我们会主要将这些算法应用在创业公司数据中,从几万家创业公司及投融资数据中,希望能挖掘出哪些公司更可能获得投资,特定公司更有可能获得哪家投资机构的投资。
好了,转入正题。我们今天将要研究的是卷积网络(CNN),这是深度学习算法应用最成功的领域之一,主要用于图像和视频识别领域。

在讨论卷积网络(CNN)之前,我们先来根据我们的常识,来讨论一下怎样可以提高图像识别的准确率。我们以印刷字母识别为例,假设我们需要网络识别大写字母A,我们给网络的训练样本可能是这样的:

但是我们实际需要识别的图片却可能是这样的:

根据我们的经验,如果可以把字母移到视野的中心去,识别的难度将下降很多,有利于提高识别率。

在这种情况下,如果我们能把图像变为标准大小,则可以提高相应的识别率。

对于真识的物体,从不同角度来看,会有不同的表现,即使对于字母识别而言,字母也能出现旋转的情况:

如果可以将图像旋转过来,将可以极大的提高识别率。

以上各种方式,在实际的图像识别领域,通常是以组合形式出现的,即图像中的元素,需要经过一系列的平移、旋转、缩放后,才能得到与训练样本相似的标准图像,因此在传统的图像识别中,需要对图像进行预处理,达到这一目的。在神经网络进行图像识别中,我们也希望神经网络可以自动处理这些变换,用学术术语来讲,就是具有平移、旋转、缩放的不变性,卷积网络(CNN)就是为解决这一问题而提出一种架构。

那么怎样才能让神经网络具有我所希望的这种变换不变性呢?我们知道,神经网络的兴起,很大程度上是仿生学在人工智能领域的应用,我们用人工神经元模型及其连接,来模仿人类大脑,解决一些常规方法不能解决的复杂问题。对于图像识别而言,神经网络的研究人员,也希望通过模拟大脑视觉皮层的处理机制,来提高图像识别的准确率。

根据Hubel and Wiesel对猫的视觉皮层的研究表明,视觉皮层细胞会组成视觉接收域,只负责对一部分图像信号的处理,处理局部的空间信息,例如图像在的边缘识别等。同时视觉皮层中存在两类细胞,一类细胞是简单细胞,主要用于识别图像边缘等基本信息,还有一类复杂细胞,具有位置不变性,可以识别各种高级的图像信息。

以上述发现为指导,研究人员提出了卷积神经网络(CNN)模型,主要包括两大方面特性:第一是层间稀疏连接,第二是共享连接权值。

层间稀疏连接主要是想要模拟大脑视觉皮层的接收域,以具有简单细胞和复杂细胞两类不同细胞,分别处理局部细节和全局空间不变性。首先我们将图像像素分为3*3的区域,所以对于l=1的输入层而言,这9个像素连接到9个输入层神经元,而这9个神经元,只连接到l=2上的一个神经元,如下图所示:注意由于我们画的是二维图,因此只显示面对我们的三个神经元,如图所示:

如上图所示,每上一层,都只与其底层3*3的神经元相连接,这样对最上层神经元,其对应的视觉接收域将变为9*9。利用上述结构,可以采用多层来表示原来的图像信息,底层神经元主要负责边缘等基本信息的识别,而越往高层走,其识别的级别越高,最上层则可以表达为我们希望区分的类别。这其实与传统的数字图像处理中,金字塔模型比较类似,解决的是同一类问题。

卷积网络的第二个特征是共享连接权值,如图所示:

图中不同颜色的连接,具有相同的连接权值。因此,在我们的卷积神经网络(CNN)实现中,考虑到这种情况,需要对原来的算法进行修改,将以单个权值求导变为对三个权值之和进行求导,将在下一篇博文中详述。

通过共享权值模式,可以使卷积神经网络(CNN)识别出图像中的物体,而与物体的空间位置无关,即实现本文开头所提到的旋转、平移、缩放的不变性,这对于在图像识别领域经常出的物体在图像中的位置变化,大小变化,观察角度变化,所造成了识别困难,具有非常好的解决效果。同时,由于权值共享,减少了网络的参数个数,也大提高了网络的学习效率,因此成为卷积神经网络(CNN)的一个事实上的标准。

在讲完了卷积神经网络(CNN)的基本原理之后,自然就是怎么利用Theano这样的平台,来实现自己的卷积神经网络(CNN),对于这一问题,我们将在下一篇博文中进行讨论。

时间: 2024-08-29 03:37:04

深度学习算法实践10---卷积神经网络(CNN)原理的相关文章

深度学习算法实践7---前向神经网络算法原理

总体上来讲,神经网络的算法是比较复杂的,后面有非常精妙的数学原理,而且对这些数学方法,还需要证明其具有收敛性,所以很多神经网络的书籍,绝大部分都是一些数学模型介绍.推导和证明,对于非数学专业的我们来说,感沉像看天书一样.其实神经网络的精髓是将现实中的问题进行抽象,建立适合神经网络表示的模型,然后应用神经网络进行处理,不断调整优化网络结构和参数,直到最终达到满意的效果.所以成功应用神经网络,不需要太过高深的数学基础.但是如果可以适当掌握神经网络背后的数学原理,对于我们理解参数的含义,选择合适的网络

深度学习算法实践12---卷积神经网络(CNN)实现

在搞清楚卷积神经网络(CNN)的原理之后,在本篇博文中,我们将讨论基于Theano的算法实现技术.我们还将以MNIST手写数字识别为例,创建卷积神经网络(CNN),训练该网络,使识别误差达到1%以内. 我们首先需要读入MNIST手写数字识别的训练样本集,为此我们定义了一个工具类: from __future__ import print_function __docformat__ = 'restructedtext en' import six.moves.cPickle as pickle

吴恩达【深度学习工程师】 04.卷积神经网络 第三周目标检测 (1)基本的对象检测算法

该笔记介绍的是<卷积神经网络>系列第三周:目标检测(1)基本的对象检测算法 主要内容有: 1.目标定位 2.特征点检测 3.目标检测  目标定位 使用算法判断图片中是不是目标物体,如果是还要再图片中标出其位置并使用边框标记出来                          我们研究过的问题中,图片分类的思想可以帮助学习分类定位,而分类定位的思想又可以帮助学习对象检测 a.分类定位问题,通常有一个较大的对象位于图片中间位置. b.对象检测问题,图片可以含有多个对象,或一张图片中会有多个不同分

深度学习算法实践15---堆叠去噪自动编码机(SdA)原理及实现

我们讨论了去噪自动编码机(dA),并讨论了Theano框架实现的细节.在本节中,我们将讨论去噪自动编码机(dA)的主要应用,即组成堆叠自动编码机(SdA),我们将以MNIST手写字母识别为例,用堆叠自动编码机(SdA)来解决这一问题. 堆叠自动编码机(SdA)是由一系列去噪自动编码机堆叠而成,每个去噪自动编码机的中间层(即编码层)作为下一层的输入层,这样一层一层堆叠起来,构成一个深层网络,这些网络组成堆叠去噪自动编码机(SdA)的表示部分.这部分通过无监督学习,逐层进行培训,每一层均可以还原加入

SIGAI深度学习第七集 卷积神经网络1

讲授卷积神经网络核心思想.卷积层.池化层.全连接层.网络的训练.反向传播算法.随机梯度下降法.AdaGrad算法.RMSProp算法.AdaDelta算法.Adam算法.迁移学习和fine tune等. 大纲: 卷积神经网络简介 视觉神经网络的核心思想 卷积神经网络的核心思想 卷积运算 卷积层的原理 多通道卷积 池化层的原理 全连接层 卷积网络结构 训练算法简介 卷积层的反向传播 池化层的反向传播 全连接层的反向传播 完整的反向传播算法 随机梯度下降法 参数值初始化 学习率的设定 梯度下降法的改

吴恩达【深度学习工程师】 04.卷积神经网络 第四周特殊应用(2)神经风格转换

该笔记介绍的是<卷积神经网络>系列第四周:特殊应用(2)神经风格转换 主要内容有: 1.神经风格转换 2.卷积网络隐藏单元可视化显示 3.神经风格转换代价函数 4.内容代价函数 5.风格代价函数 *6.数据从一维到三维的推广 神经风格转换 把C(content)内容图片转化为风格类似S(style)风格图片的G(generated)生成图片. 卷积网络隐藏单元可视化显示 通过观察可视化显示的不同隐藏单元的输出结果真正了解卷积网络中深度较大的层真正在做些什么. 可视化图块输出: 从第一层隐藏层第

TensorFlow深度学习实战---图像识别与卷积神经网络

全连接层网络结构:神经网络每两层之间的所有结点都是有边相连的. 卷积神经网络:1.输入层 2.卷积层:将神经网络中的每一个小块进行更加深入地分析从而得到抽象程度更高的特征. 3 池化层:可以认为将一张分别率较高的图片转化为分别率较低的图片,通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中参数的目的. 4全连接层:可以认为图像中的信息已经被抽象成了信息含量更高的特征. 5 softmax层 循环神经网络 原文地址:https://www.cnblogs.com/bju

卷积神经网络CNN原理以及TensorFlow实现

在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下.首先介绍原理部分. 通过一个图像分类问题介绍卷积神经网络是如何工作的.下面是卷积神经网络判断一个图片是否包含"儿童"的过程,包括四个步骤:图像输入(InputImage)→卷积(Convolution)→最大池化(MaxPooling)→全连接神经网络(Fully-ConnectedNeural Network)计算. 首先将图片分割成如下图的重叠的独立小块:下图中,这张照片被分割成了77张大小相同的小图片.

深度学习算法实践8---BP算法详解

BP算法是关于误差的反向传播算法,就是从输出层开始,将结果与预期结果相比较,求出误差,然后按照梯度最大下降方向,调整神经元的联接权值,然后依次逐层调整各层之间的连接权值,对于批量学习方式而言,不断重复上述过程,直到误差达到足够小时为止. 对于输出层而言,我们可以直接使用在上一篇博文中关于感知器模型的算法,BP算法的难点在于,如何处理隐藏层,因为隐藏层没有正确的输出信息用来计算误差. 下面我们将从输出层开始,推导出BP算法.在rwy推导算法之前,我们先来定义一下表示方法,和原来一样,我们用i来表示