购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 全连接神经网络的问题

根据第2章的内容不难发现,无论是用于解决何种问题的全连接神经网络,获得一个全连接神经网络模型的步骤都是基本相似的。如图3.1所示,第一步是建立模型,也就是确定这个未知函数的集合;第二步就是设计损失函数,针对不同的任务需要设计出能够完美反映任务完成情况的损失函数。这两步都是需要模型的创建者来选定的,建立模型主要是为了构建出函数集合的基本形态,这组函数内部的参数是可以有很多不同的组合的,而设计损失函数就是为了后续能够准确而快速地确定参数。至于究竟哪组参数能够取得最好的效果,这就是第三步的参数学习,这一步就不是人类来完成的了,而是由机器来进行学习。

图3.1 DNN模型确定步骤

全连接神经网络的关键在于“全连接”,指每一个神经元都与上一层每个神经元的输出相连。全连接神经网络具有网络结构简单、网络组成直观等优点,但是它也具有不可忽视的缺点。从全连接神经网络建立的三个步骤来看,每个步骤都存在着一定的问题,比如参数学习步骤,一般采用的优化方法都是梯度下降法,但是梯度下降法极易导致只能得到局部最优值,而到达不了全局最优。对于此问题,现在也有了很多改进方法,例如随机梯度下降法、动量法等。而对于损失函数设计这一步来讲,损失函数现在常用的有两类:一类是平方差损失函数,常用于回归任务;另一类是交叉熵损失函数,常用于分类任务。这两种损失函数都是根据不同的任务来确定,相对来讲是比较确定的。

在模型建立这一步,存在的问题就较大一些。如图3.2所示,以全连接神经网络解决手写数字识别项目为例,全连接神经网络的建立一般都是根据输入来确定需要多少层网络,每一层网络有多少个神经元,类似于搭积木的过程,从下至上,每一层神经元都需要铺满,最终才能得到想要的神经网络模型,这样就会导致神经网络模型的结构不够灵活。假设对一张16×16的图片进行分类,那么就需要设计一个包含256个神经元的输入层、一个包含10个神经元的输出层以及隐藏层。如果想要对64×64的图片做相同的分类任务,就只能通过增加每层神经元的个数以及增加网络层数来完成这个任务,这样整个网络的结构就显得不够灵活。

图3.2 手写数字识别DNN网络结构

DNN模型的第二个问题就是参数量过大。仍旧以手写数字识别项目为例,输入为16×16的图片,那么输入层就需要有256个神经元,数字总共有10个,则输出层就需要有10个神经元,假设隐藏层每层有1000个神经元,共有3个隐藏层,那么需要学习的参数就有256×10 3 +10 3 ×10 3 +10 3 ×10 3 +10 3 ×10个偏置 w 再加上1000+1000+1000+10个权重 b ,总计2269010个参数,这仅仅只是一个简单网络针对小输入所需要计算的参数量。倘若输入的图片大小为128×128甚至更大,网络的层数为10层乃至更多,那么就会造成参数量过大,甚至发生参数爆炸的问题。这是由于全连接神经网络每个神经元都与上一层所有神经元都连接导致的,这种连接方式会使得参数量随着网络规模的增大呈现指数级的增长。如果参数规模过大,将会使得整个网络模型的训练过程都变得更加复杂、更加消耗时间,也因此造成对计算资源以及计算机内存的要求极高。

全连接神经网络参数量巨大,容易带来参数量爆炸的问题,也使得全连接神经网络模型的自由度增加。这种较高的自由度使得全连接神经网络极其容易过拟合,从而导致模型泛化能力较差,在训练数据不充分或者有噪声数据存在的情况下,模型就会容易表现出过度的行为。

为了克服全连接神经网络的这些缺点,学者们提出了大量的改进方法,例如稀疏连接、卷积神经网络、循环神经网络、注意力机制等,这些改进方法都可以有效地减少神经网络参数量,进而增强神经网络的表达能力。 LNmA7Qcx6YK0/jqS7FPZCkBm2ryFKgpVoxFqUbDx3qmHMhW68cNmA+zGyR0282jK



3.2 卷积神经网络理论基础

3.2.1 卷积神经网络基本结构

卷积神经网络(Convolutional Neural Networks,CNN),是一类包含卷积计算并且具有深度结构的神经网络,是深度学习领域最具代表性的算法之一,常用于处理计算机视觉和图像处理任务。卷积神经网络具有表征学习的能力,能够按照其层级结构对输入的信息进行平移不变分类,可以进行监督学习和非监督学习,隐藏层的卷积核参数共享以及层间连接的稀疏特性都使得卷积神经网络能够以比较小的计算量对格点化的特征(比如图像像素点)进行特征学习、分析等。

图3.3所示为卷积神经网络的基本结构,包括卷积层、池化层、全连接层以及输出层。从卷积神经网络的整体架构来讲,卷积神经网络是一种多层神经网络,其隐藏层中的卷积层和池化层是实现卷积神经网络特征提取功能的核心,整个网络模型同样可通过参数优化方法最小化损失函数的方式对网络中的权重参数进行逐层反向调节,通过大量的迭代训练来提高整个网络模型的精度。全连接层的输入就是由卷积层和池化层提取到的特征。而最后一层则一般来讲是一个分类器,可以使用逻辑回归、Softmax甚至支持向量机等来对输入实现分类。

图3.3 卷积神经网络基本结构

相较于全连接神经网络,卷积神经网络的主要特征就是参数量大大减少。其主要原因就在于卷积神经网络具备三大特点——局部连接、权重共享、下采样。提到局部连接,就必须了解局部感受野(Local Receptive Fields)的概念。感受野指的是神经网络中每一层输出特征图(Featuremap)上的像素点映射回输入图像上的对应区域。对于全连接神经网络来讲,神经网络往往会将输入图像上的每一个像素点都连接到每一个神经元上,每个神经元对应的感受野大小就是整个输入图像的大小。但是卷积神经网络则不一样,卷积神经网络中的每一个隐藏层的节点,也就是每一个隐藏层的神经元都只会连接到图像中的局部区域。如图3.4所示,对于一张640×480的输入图像,如果用全连接的方式,那么感受野的大小就是640×480,而对应需要更新的参数就会有640×480=307200个;如果采用局部连接的方式,每次连接只取一小块16×16的区域,那么所需要更新的参数就只有256个了,当然能够用局部连接的方式进行处理的原因在于,在进行图像识别的时候,不需要对整个图像都进行处理,一张图像中会有很大一部分区域是无用或者说用处很小的,实际上需要关注的仅仅只是图像中包含关键特征的某些特殊区域,如图3.4中,通过猫鼻子这一块区域就能识别出图片中是猫。

图3.4 局部连接

当然,仅仅靠局部连接减少参数还不够,在卷积神经网络中还采用了权重共享(Shared Weights),如图3.5所示。对于每个神经元来讲,其连接的区域比较小,因此采用多个神经元分别连接一个小区域。合在一起就能够覆盖比较大的区域了。而每个神经元连接的区域基本都是不同的,但是每个神经元的权重参数都设置成一样,这样就可以使用尽可能少的参数覆盖尽可能多的图像区域。

图3.5 权重共享

第三种减少参数量的方法是下采样,形象地理解,下采样就是将图像缩小,如图3.6所示。对图像进行下采样操作并不会对图像中的物体进行实质性的改变,尽管下采样之后的图像尺寸变小了,但是并不会影响度图像中物体的识别。目前使用比较广泛的下采样方式有两种:一种是使用步长(stride)大于1的池化(pooling);另一种是使用步长(stride)大于1的卷积(convolution)。池化实际上提供的是一种非线性变换,池化所提供的非线性变换是固定的,是不可学习的,可以看作是一种先验运算,而这种非线性变换也可以通过一定深度的卷积来实现。当卷积神经网络比较小、网络比较浅的时候,使用池化进行下采样效果可能会更好,而当网络比较深的时候,使用多层叠加的卷积来进行下采样可以学习到池化下采样所提供的非线性变换,甚至能够通过不断的训练学习到比池化更好的非线性变换,因此在网络比较深的时候使用多层卷积来替代池化进行下采样效果可能会更好。

图3.6 下采样 LNmA7Qcx6YK0/jqS7FPZCkBm2ryFKgpVoxFqUbDx3qmHMhW68cNmA+zGyR0282jK

点击中间区域
呼出菜单
上一章
目录
下一章
×