深度学习理论篇之 ( 十二) -- 降维之池化

2022-06-01 19:51:46 浏览数 (1)

科普知识

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

它是人工智能核心,是使计算机具有智能的根本途径。

前言

前面几期的文章中,我们学习了卷积操作,了解到它的作用在于更好的提取特征和降维,是推动深度学习进一步发展的原因之一,它的发展也促使了许多优秀的以卷积为基本构成的卷积神经网络的诞生,例如,Vgg,Densenet,Resent等网络。然而,卷积操作虽然不错,但也有不太好的地方,也就是我们今天的主角--池化操作。

一、池化操作

还是先来熟悉一下卷积操作:

如上如所示,卷积操作在于对卷积核大小的区域内的像素值进行加权求和(每个元素对应乘积后求和),我们知道卷积核中的每一个元素都是网络要学习的权重(初始训练的时候会随机初始化,随后经过梯度计算进行权重更新),因此,如果一个网络的构成都是卷积的话,那么这个网络虽然比全连接网络需要学习的参数或者说计算的参数较少,但卷积神经网络的参数量依旧很多,于是,是否有新的一种能够对卷积提取后的特征进行更好的保留,同时进行一定的降维,那么就可以在整个网络的的训练过程中减少计算的参数量,同时也许还能提高网络的效果。因此,池化操作就闪亮登场了。

池化操作通常紧跟在卷积操作之后(或者多层卷积操作之后),某些论文中也称之为下采样操作(之一),其作用是对上一层的输出特征图进行特征保留和降维,池化操作与卷积操作一样也具有自己的核,这个核只有大小,却不具有可训练的参数(如果有我们可以默认为是1,且不允许训练),这个核主要是用来对特征图的像素值进行操作,在当前池化核框住的像素值中取最大或者最小或者平均值,即为池化操作 ,池化操作最常用的三种方式分别是:最大值池化(maxpooling)、平均值池化(avgpooling)、最小值池化(minpooling)。这三种方式也正是前面所说的特征保留,最大值池化操作是在当前池化核内包围的特征图的像素中取最大值,最小值池化即为取最小值,依次类推,如下图,最大值池化操作:

最大值池化操作:池化核大小为2x2,步长为1

如上图所示,最大值池化操作时,在池化核对应于特征图的区域内取出其最大值作为输出特征图的第一个元素,然后根据步长将池化核进行下一次滑动,随后进行取出最大值作为这一次池化的输出值,直到整个特征图都滑动完毕即可生成最终的输出特征图,输入特征图与池化核与输出特征图大小之间的关系可以表示为:

设输入特征图的尺寸为WXH,深度为D,池化核大小为FxF,步长为S,则输出特征图的大小为:

因此,根据这个公式,我们就可以直接计算出输出特征图的大小,从而可以从后往前来推出我们需要多大的池化核才能保证输出的特征图的大小才是我们想要的,从这个公式可能大家也发现了值得注意的地方,池化的公式与卷积的公式非常的相似,不同的地方在于没有填充p,另外,公式与图像的深度似乎没有关系,池化操作后的输出特征图的通道数与输入通道数一样,不发生改变,而卷积操作后输出通道数与卷积核自身通道数有关,初始化卷积核的通道数为多少则卷积操作后的输出特征图的通道数则为多少。举个例子,如果是池化操作,输入特征图是32x32x128(128为通道数),不管池化核如何设置,则输出后图像的通道数还是128,然而如果是卷积操作,如果卷积核为3x3x256, 则输出特征图的通道数为256,是的,输出特征图的通道数与卷积核的设置有关,但是通常来说不能太大(一般为64,128,256,512等等),太大了你的显卡估计就玩完啦。

以上实例图虽然是maxpolling操作,但其余的池化操作都是类似的,从中可以明显的看到输出特征图相对于输入特征图变为了1/2,也就是实现了降维的效果,为之后的网络层减小输入尺寸,最终实现加速训练的效果。

但是此处有一个问题在于,经过池化操作后是否损失了本来卷积输出特征图的精度或者说有效信息呢?经过很多大神的验证,似乎这一点影响较小,原因之一在于,池化操作本身就是对特征的进一步提取,举个例子,如果是最大值池化,那么用最大值来代替这一个区域的特征不也是可以的吗,最大值或许就是特征最突出的地方啊,相反,最小值也一样的原理,当然平均池化一般用的比较少,对于特征的突出并不是很明显。

总结起来一句话,池化操作的作用在于在一定程度上减少模型的计算量(达到压缩模型的效果),提高计算速度,同时提升模型的鲁棒性。

池化操作通常放置于卷积操作之后,如此可以减少卷积输出特征图的大小,再传递到下一层进行计算的时候才会实现训练加速的效果。

END

结语

本周我们学习了池化操作,很简单,但是其提出的思想却不简单,希望大家好好回顾一下卷积和池化的相同与不同以及其使用的意义,目前为止,我们已经讲了全连接,卷积,池化,似乎已经可以构建一个完整的神经网络模型啦,小编大概计算了一下,下周可能回家写不了文章,之后会补上,至于怎么补,会不会就是大家期待已久的实战呢?我们敬请期待!

周末愉快,我们下期再见!

编辑:玥怡居士|审核:小圈圈居士

0 人点赞