深度学习——卷积神经网络知识汇总

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

卷积网络资料汇总

卷积神经网络(Convolutional Neural Network)是一种专门用于处理类似网格结构的数据的神经网络。它被广泛地应用到图像识别、语音识别等各种场合,很多基于深度学习的图像识别方法,都是以CNN为基础。

一、卷积运算

通常情况下,卷积是对两个实变函数的一种数学运算。卷积操作也可以达到加权平均的目的。在机器学习的应用中,可以使用卷积操作对有限的数组元素进行处理,该运算也是卷积神经网络的重要操作。

1.1 卷积运算的原因

对于普通的前向反馈网络,当输入为一张图片时,假设大小为1000*1000*3,且第一层隐藏层的神经元为1000个时,此时的权值参数量将为30亿个,这将对计算机的内存产生巨大的挑战,并且在计算过程中,将会使用太多的计算资源,需要的时间将会很大。且在图像中,附近的像素点存在一定的关系,使用普通的前向神经网络,则会忽略这种关系,由此产生多余的计算和参数。由于卷积操作涉及到多个像素点的操作,由此在处理图像的过程中,一般会使用卷积操作,从而提高图像处理的结果。

1.2 卷积运算的特点

卷积运算一般通过三个重要的思想来改进机器学习系统:稀疏交互、参数共享、等变表示。

1.2.1 稀疏交互

传统的神经网络使用矩阵的乘法来建立输入和输出的连接关系,参数矩阵的每一个单独的参数都描述了一个输入单元和一个输出单元之间的交互。而稀疏交互则意味着运算核的大小远远小于输入的大小。例如,当输入的图像可能包含了成千上万的像素点时,运算核的大小可能只有几十或者上百个参数,并且可以利用这样的运算核实现对图像参数的计算。由此就实现了更少的参数、更低的计算量,以及更高的计算效率,且这种应用在机器学习的任务中,仍然能取得很好的表现。

1.2.2 参数共享

参数共享是指在一个模型的多个函数中使用相同的参数。在传统的神经网络

中,当计算一层的输出时,权重矩阵的每一个元素只是用一次,当它乘以输入的一个元素后就再也不会用到了。而在卷积神经网络中,运算核的每一个元素都作用在输入的每一个位置上,并不是只运算一次。卷积运算中的参数共享保证了我们只需要学习一个参数集合,而不是对每一个位置都需要学习一个单独的参数集合。这虽然没有改变前向传播的运行时间,但是参数共享将模型的存储需求进一步降低。

1.2.3 等变表示

对于卷积,参数共享的特殊形式使得神经网络层具有对平移等变的性质。如果一个函数满足输入改变,输出也以相同的方式改变这一性质,那么它可以被称为是等变的。当我们对图像进行平移变化,再进行卷积操作时,得到的结果与我们先进行卷积操作,再进行平移得到的结果一致。这样的性质在我们对图像进行边缘检测时,具有很大的用处。

1.3 卷积运算的过程

卷积运算是指从图像的左上角开始,开一个与模板同样大小的活动窗口,窗口图像与模板像素对应起来相乘再相加,并用计算结果代替窗口中心的像素值。然后,活动窗口向右移动一列,并作同样的运算。以此类推,从左到右、从上到下,即可得到一幅新图像。具体的卷积运算如图1.1所示。

图1.1 卷积运算示意图

图中的卷积核即为式1-1。

[101

010

101

](1-1)

二、池化

卷积网络的一个典型层包括三层,第一层并行计算多个卷积产生一组线性激活响应。在第二层中,每一个线性激活响应通过一个非线性的激活函数。在第三层中,则使用池化函数来进一步调整输出。

2.1 池化函数

池化函数一般是使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。常用的池化函数有:最大池化函数、平均池化函数。最大池化函数输出给定的矩形区域内的最大值。平均池化函数则输出给定矩形区域内所有像素值的平均值。具体的计算过程如图2-1所示。

图2-1 池化过程

2.2 池化意义

由于池化综合了全部相邻像素的反馈,这也让池化单元少于检测单元成为可能。通过综合池化区域的多个像素的统计特征,提高了整个网络的计算效率。因为下一层少了很多倍的数据输入,同时也减少了对参数的存储需求。在很多任务中,池化对于处理不同大小的输入有着很重要的作用,当对于不同大小的图像进行分类时,可以通过调整池化区域的偏执大小来实现分类层输入大小的固定化,池化函数的存在使得一些利用自顶而下信息的神经网络结构更加复杂。池化函数主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。

三、基本卷积函数的变体

应用神经网络的卷积时,通常使用的不是文献中特指的标准卷积。在实际应用时,使用的多为基本卷积函数的变体。

3.1 步幅、填充

在卷积的实际使用时,有时候会希望跳过一些位置,从而减少使用的计算资源,但是相应的,提取特征的效果会受到影响。这个过程也可以看作是卷积函数输出的下采样,即在输出的每个方向上,每隔s个像素进行采样,此时的s即可成为下采样卷积的步幅。

而根据卷积网络的计算过程,可以得知输入的图像经过卷积操作之后,输出的宽度会随着卷积核的增大而减少。此时,面临二选一的局面,要么选择网络空间宽度的快速缩减,要么选择一个较小的核。为了避免上述两种情况带来的限制,由此引出了填充的概念。根据填充的方法,标准的卷积又分成三种不同的卷积。

3.1.1 有效(valid)卷积

无论怎么样都不使用填充,并且卷积核只允许访问那些图像中能够完全包含整个核的位置。在这种情况下,输出的所有像素都是输入中相同数量像素的函数,这样似的输出像素的表示更加规范。但这样的操作一定程度上缩减了每一层的输出大小,也就限制了网络中能够包含的卷积层的层数。

3.1.2 相同(same)卷积

这类卷积则使用足够的0填充来保持输出和输入保持同样的大小,在这种情况下,只要硬件支持,网络即可包含任意多的卷积层,因为卷积运算并不改变下一层的结构,但是由此也会造成,输入像素中靠近边界的部分相比于中间部分对输出的像素影响更小,也就有可能会造成边界像素存在一定程度的欠表示。

3.1.3 全(full)卷积

由于前两种情况都存在一定的缺点,使得全卷积的出现。它使用了足够多的0填充,使得每个像素在每个方向恰好被访问k次。在这种情况下,输出的像素中靠近边界的部分相比于中间部分是更少像素的函数。这也导致了学得一个在卷积特征映射的所有位置都表现不错的单核更为困难。

3.2 其它卷积变体

另外两种基本卷积函数的变种:局部连接,平铺卷积。局部连接层的优点:如果每一个特征都是一小块空间的函数,并且相同的特征不会出现在所有的空间上时,局部连接层对各处的特征都能很好的采集到。平铺卷积层是对局部连接层和卷积层的折衷。既在近邻位置上拥有了不同的过滤器,又不会增加太大的存储开销。参数的存储需求仅会增长常数倍,这个常数就是核的集合的大小。如图3-

相关文档
最新文档