导航:首页 > 网络问题 > 卷积神经网络中什么是池化

卷积神经网络中什么是池化

发布时间:2022-10-15 02:34:33

① 卷积神经网络的 卷积层、激活层、池化层、全连接层

数据输入的是一张图片(输入层),CONV表示卷积层,RELU表示激励层,POOL表示池化层,Fc表示全连接层

全连接神经网络需要非常多的计算资源才能支撑它来做反向传播和前向传播,所以说全连接神经网络可以存储非常多的参数,如果你给它的样本如果没有达到它的量级的时候,它可以轻轻松松把你给他的样本全部都记下来,这会出现过拟合的情况。

所以我们应该把神经元和神经元之间的连接的权重个数降下来,但是降下来我们又不能保证它有较强的学习能力,所以这是一个纠结的地方,所以有一个方法就是 局部连接+权值共享 ,局部连接+权值共享不仅权重参数降下来了,而且学习能力并没有实质的降低,除此之外还有其它的好处,下来看一下,下面的这几张图片:

一个图像的不同表示方式

这几张图片描述的都是一个东西,但是有的大有的小,有的靠左边,有的靠右边,有的位置不同,但是我们构建的网络识别这些东西的时候应该是同一结果。为了能够达到这个目的,我们可以让图片的不同位置具有相同的权重(权值共享),也就是上面所有的图片,我们只需要在训练集中放一张,我们的神经网络就可以识别出上面所有的,这也是 权值共享 的好处。

而卷积神经网络就是局部连接+权值共享的神经网络。

现在我们对卷积神经网络有一个初步认识了,下面具体来讲解一下卷积神经网络,卷积神经网络依旧是层级结构,但层的功能和形式做了改变,卷积神经网络常用来处理图片数据,比如识别一辆汽车:

在图片输出到神经网络之前,常常先进行图像处理,有 三种 常见的图像的处理方式:

均值化和归一化

去相关和白化

图片有一个性质叫做局部关联性质,一个图片的像素点影响最大的是它周边的像素点,而距离这个像素点比较远的像素点二者之间关系不大。这个性质意味着每一个神经元我们不用处理全局的图片了(和上一层全连接),我们的每一个神经元只需要和上一层局部连接,相当于每一个神经元扫描一小区域,然后许多神经元(这些神经元权值共享)合起来就相当于扫描了全局,这样就构成一个特征图,n个特征图就提取了这个图片的n维特征,每个特征图是由很多神经元来完成的。

在卷积神经网络中,我们先选择一个局部区域(filter),用这个局部区域(filter)去扫描整张图片。 局部区域所圈起来的所有节点会被连接到下一层的 一个节点上 。我们拿灰度图(只有一维)来举例:

局部区域

图片是矩阵式的,将这些以矩阵排列的节点展成了向量。就能更好的看出来卷积层和输入层之间的连接,并不是全连接的,我们将上图中的红色方框称为filter,它是2*2的,这是它的尺寸,这不是固定的,我们可以指定它的尺寸。

我们可以看出来当前filter是2*2的小窗口,这个小窗口会将图片矩阵从左上角滑到右下角,每滑一次就会一下子圈起来四个,连接到下一层的一个神经元,然后产生四个权重,这四个权重(w1、w2、w3、w4)构成的矩阵就叫做卷积核。

卷积核是算法自己学习得到的,它会和上一层计算,比如,第二层的0节点的数值就是局部区域的线性组合(w1 0+w2 1+w3 4+w4 5),即被圈中节点的数值乘以对应的权重后相加。

卷积核计算

卷积操作

我们前面说过图片不用向量表示是为了保留图片平面结构的信息。 同样的,卷积后的输出若用上图的向量排列方式则丢失了平面结构信息。 所以我们依然用矩阵的方式排列它们,就得到了下图所展示的连接,每一个蓝色结点连接四个黄色的结点。

卷积层的连接方式

图片是一个矩阵然后卷积神经网络的下一层也是一个矩阵,我们用一个卷积核从图片矩阵左上角到右下角滑动,每滑动一次,当然被圈起来的神经元们就会连接下一层的一个神经元,形成参数矩阵这个就是卷积核,每次滑动虽然圈起来的神经元不同,连接下一层的神经元也不同,但是产生的参数矩阵确是一样的,这就是 权值共享

卷积核会和扫描的图片的那个局部矩阵作用产生一个值,比如第一次的时候,(w1 0+w2 1+w3 4+w4 5),所以,filter从左上到右下的这个过程中会得到一个矩阵(这就是下一层也是一个矩阵的原因),具体过程如下所示:

卷积计算过程

上图中左边是图矩阵,我们使用的filter的大小是3 3的,第一次滑动的时候,卷积核和图片矩阵作用(1 1+1 0+1 1+0 0+1 1+1 0+0 1+0 0+1 1)=4,会产生一个值,这个值就是右边矩阵的第一个值,filter滑动9次之后,会产生9个值,也就是说下一层有9个神经元,这9个神经元产生的值就构成了一个矩阵,这矩阵叫做特征图,表示image的某一维度的特征,当然具体哪一维度可能并不知道,可能是这个图像的颜色,也有可能是这个图像的轮廓等等。

单通道图片总结 :以上就是单通道的图片的卷积处理,图片是一个矩阵,我们用指定大小的卷积核从左上角到右下角来滑动,每次滑动所圈起来的结点会和下一层的一个结点相连,连接之后就会形成局部连接,每一条连接都会产生权重,这些权重就是卷积核,所以每次滑动都会产生一个卷积核,因为权值共享,所以这些卷积核都是一样的。卷积核会不断和当时卷积核所圈起来的局部矩阵作用,每次产生的值就是下一层结点的值了,这样多次产生的值组合起来就是一个特征图,表示某一维度的特征。也就是从左上滑动到右下这一过程中会形成一个特征图矩阵(共享一个卷积核),再从左上滑动到右下又会形成另一个特征图矩阵(共享另一个卷积核),这些特征图都是表示特征的某一维度。

三个通道的图片如何进行卷积操作?

至此我们应该已经知道了单通道的灰度图是如何处理的,实际上我们的图片都是RGB的图像,有三个通道,那么此时图像是如何卷积的呢?

彩色图像

filter窗口滑的时候,我们只是从width和height的角度来滑动的,并没有考虑depth,所以每滑动一次实际上是产生一个卷积核,共享这一个卷积核,而现在depth=3了,所以每滑动一次实际上产生了具有三个通道的卷积核(它们分别作用于输入图片的蓝色、绿色、红色通道),卷积核的一个通道核蓝色的矩阵作用产生一个值,另一个和绿色的矩阵作用产生一个值,最后一个和红色的矩阵作用产生一个值,然后这些值加起来就是下一层结点的值,结果也是一个矩阵,也就是一张特征图。

三通道的计算过程

要想有多张特征图的话,我们可以再用新的卷积核来进行左上到右下的滑动,这样就会形成 新的特征图

三通道图片的卷积过程

也就是说增加一个卷积核,就会产生一个特征图,总的来说就是输入图片有多少通道,我们的卷积核就需要对应多少通道,而本层中卷积核有多少个,就会产生多少个特征图。这样卷积后输出可以作为新的输入送入另一个卷积层中处理,有几个特征图那么depth就是几,那么下一层的每一个特征图就得用相应的通道的卷积核来对应处理,这个逻辑要清楚,我们需要先了解一下 基本的概念:

卷积计算的公式

4x4的图片在边缘Zero padding一圈后,再用3x3的filter卷积后,得到的Feature Map尺寸依然是4x4不变。

填充

当然也可以使用5x5的filte和2的zero padding可以保持图片的原始尺寸,3x3的filter考虑到了像素与其距离为1以内的所有其他像素的关系,而5x5则是考虑像素与其距离为2以内的所有其他像素的关系。

规律: Feature Map的尺寸等于

(input_size + 2 * padding_size − filter_size)/stride+1

我们可以把卷积层的作用 总结一点: 卷积层其实就是在提取特征,卷积层中最重要的是卷积核(训练出来的),不同的卷积核可以探测特定的形状、颜色、对比度等,然后特征图保持了抓取后的空间结构,所以不同卷积核对应的特征图表示某一维度的特征,具体什么特征可能我们并不知道。特征图作为输入再被卷积的话,可以则可以由此探测到"更大"的形状概念,也就是说随着卷积神经网络层数的增加,特征提取的越来越具体化。

激励层的作用可以理解为把卷积层的结果做 非线性映射

激励层

上图中的f表示激励函数,常用的激励函数几下几种:

常用的激励函数

我们先来看一下激励函数Sigmoid导数最小为0,最大为1/4,

激励函数Sigmoid

Tanh激活函数:和sigmoid相似,它会关于x轴上下对应,不至于朝某一方面偏向

Tanh激活函数

ReLU激活函数(修正线性单元):收敛快,求梯度快,但较脆弱,左边的梯度为0

ReLU激活函数

Leaky ReLU激活函数:不会饱和或者挂掉,计算也很快,但是计算量比较大

Leaky ReLU激活函数

一些激励函数的使用技巧 :一般不要用sigmoid,首先试RELU,因为快,但要小心点,如果RELU失效,请用Leaky ReLU,某些情况下tanh倒是有不错的结果。

这就是卷积神经网络的激励层,它就是将卷积层的线性计算的结果进行了非线性映射。可以从下面的图中理解。它展示的是将非线性操作应用到一个特征图中。这里的输出特征图也可以看作是"修正"过的特征图。如下所示:

非线性操作

池化层:降低了各个特征图的维度,但可以保持大分重要的信息。池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个下采样(数据压缩)。下采样有 两种 常用的方式:

Max pooling :选取最大的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。

Average pooling :平均的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图算出平均值

Max pooling

我们要注意一点的是:pooling在不同的depth上是分开执行的,也就是depth=5的话,pooling进行5次,产生5个池化后的矩阵,池化不需要参数控制。池化操作是分开应用到各个特征图的,我们可以从五个输入图中得到五个输出图。

池化操作

无论是max pool还是average pool都有分信息被舍弃,那么部分信息被舍弃后会损坏识别结果吗?

因为卷积后的Feature Map中有对于识别物体不必要的冗余信息,我们下采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。

我们来看一下卷积之后的冗余信息是怎么产生的?

我们知道卷积核就是为了找到特定维度的信息,比如说某个形状,但是图像中并不会任何地方都出现这个形状,但卷积核在卷积过程中没有出现特定形状的图片位置卷积也会产生一个值,但是这个值的意义就不是很大了,所以我们使用池化层的作用,将这个值去掉的话,自然也不会损害识别结果了。

比如下图中,假如卷积核探测"横折"这个形状。 卷积后得到3x3的Feature Map中,真正有用的就是数字为3的那个节点,其余数值对于这个任务而言都是无关的。 所以用3x3的Max pooling后,并没有对"横折"的探测产生影响。 试想在这里例子中如果不使用Max pooling,而让网络自己去学习。 网络也会去学习与Max pooling近似效果的权重。因为是近似效果,增加了更多的参数的代价,却还不如直接进行最大池化处理。

最大池化处理

在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。

四分类问题

我们从卷积神经网络的输入层、卷积层、激活层、池化层以及全连接层来讲解卷积神经网络,我们可以认为全连接层之间的在做特征提取,而全连接层在做分类,这就是卷积神经网络的核心。

② PART 4 W1 卷积神经网络介绍

一个是图像分类:如猫脸识别等;一个是目标检测:如无人驾驶技术中的各种交通信号检测技术

1. 卷积操作及过滤器/卷积核的概念

如上图所示:最左侧矩阵是一个灰度图像,中间是一个3*3的小矩阵,称为“卷积核”或“过滤器”。

卷积:先把卷积核放到灰度图像左上角(绿色框),盖住灰度图像上一个3*3的矩阵区域,然后9对对应的元素相乘,然后求和(得到0),然后把卷积核逐渐移动一行一行的“扫描”,最终得到最右侧矩阵。上述操作叫做“卷积”,最右侧矩阵是卷积的输出。

2. 垂直边缘检测

仍以上图为例,可以看到3*3的卷积核具体的数值构成为“左边一列1,中间一列0,右边一列-1”,这种卷积核在“扫描”灰度图像时,可以检测到灰度图像的垂直边缘。分析如下:

1)假设正在扫描的灰度区域没有垂直边缘,意味着区域内的值在左右方向上分布差不多,与卷积核做完运算后,左边的乘1,右边的乘-1,相加正好有一定的抵消作用,其实计算出来的结果会接近0。即:卷积结果接近0代表没有边缘。

2)有垂直边缘分为两种情况:目标区域“左边值较大,右边值较小” 或“左边值较小,右边值较大”。前一种情况在卷积操作后会得到一个较大的正值,后一种情况卷积操作后会得到一个较大的负值。

可以看出,较大的正值代表着目标区域的变化趋势与卷积核相同,即检测到的是与卷积核相同的边缘,而较大的负值代表目标区域的变化趋势与卷积核相反,即检测到的是与卷积核相反的边缘。

3. 卷积应用在卷积神经网络中

卷积操作如何应用于神经网络中?简言之,卷积核本身就是网络要学习的参数。如上图所示,我们并不是事先设定好要检测垂直边缘或水平边缘或其它什么边缘,而是要网络去学习要检测什么东西。

1. padding的原因

在上节展示的卷积操作中,可以看出,假设输入图像的大小为n*n,而卷积核的大小为f*f,那么卷积核从输入图像的左上角扫描到右下角,最终得到的结果大小为(n-f+1)*(n-f+1),意味着如果一次次进行卷积,那么结果的尺寸会越来越小

另外,显然输入图像边缘的像素被使用的较少(最边缘的像素仅被使用一次),这显然会造成信息的丢失。

2. 如何进行padding

非常简单:把输入图像的四周补充p = (f-1)/2 圈的0,这样输入的图像尺寸变成了(n+2p)*(n+2p),因此卷积后的大小变成了(n+2p -f + 1)*(n+2p -f + 1)=n*n,即与原始的图像有了相同的大小,且原始图像边缘的像素也被较多的利用到。

3. 几点补充

(1)卷积核的尺寸设置为 奇数 :因为① 这样(f-1)/2就恰好是整数了,方便进行padding,② 有中心像素,便于表征卷积核的位置,等。

(2)根据是否进行padding,分为 普通卷积(valid) 和 同尺寸卷积(same)

1. 步长概念

在上文中讲到卷积,即使用一个卷积核对输入图像进行“扫描”并进行相应计算时,提到这个“扫描”是逐个像素逐个像素的迈进的。但是,并不一定非得这样,也可以每次跨越两个或更多个像素,这就是“步长”的概念,一般用s表示

2. 卷积结果尺寸与步长的关系

前文提到,若输入图像尺寸为n*n,卷积核尺寸为f*f,则卷积结果尺寸为(n+f-1)*(n+f-1),若算上padding操作,则结果为(n+2p -f + 1)*(n+2p -f + 1)。这是在步长s=1的前提下成立。若步长不为1,则结果为floor((n+2p-f)/s+1)**2

3. 其它:数学中的卷积和神经网络中的卷积

需要说明的是,神经网络中所说的卷积和数学中说的卷积不是一回事,但数学中的卷积是啥就不追究了。

神经网络中的卷积操作,在数学的描述上,更像是一种“交叉相关性”的计算,可以看出,若目标区域与卷积核有类似的分布,则会计算出较大的正值(正相关),若有相反的分布,则会计算出较大的负值(负相关),若没什么关系,则会计算出接近0的值(不相关)。卷积操作的确很像一种相关性的计算。

1. RGB图像的数学构成

灰度图像是一个n*n的二维矩阵,彩色图像则是n*n*3 的三维矩阵,最外围的三个维度分别代表了RGB三原色的值,其中数字“3”在卷积神经网络中被称为通道数或信道数

2. 对RGB图像进行卷积

在对灰度图像进行卷积时,使用的是f*f的二维卷积核。在对RGB图像进行卷积时,则卷积核的维度也+1,变成了f*f*3。一次卷积的结果仍然是把所有的值加起来输出一个值。即: 一个三维的图像,和一个三维的卷积核,在进行完卷积操作后,输出的是一个二维的矩阵(如上图) 。

3. 当使用多个卷积核时的输出

如上图所示,可以使用多个卷积核(一个亮黄色,一个屎黄色)。根据前文描述,一个立体的卷积核在一个立体的矩阵上扫描完,结果是一个二维的。但当使用多个卷积核时,则输出了多个二维矩阵,这些二维矩阵沿着第三个维度排列到一起,使得结果重新变成了三维。此时,第三个维度的尺寸,反应的是卷积核数,也就是说 卷积核数就是信道数 。直观理解,每一个卷积核代表着检测了某一种特征,多个卷积核就是同时检测了多种特征,传递了多种信息。

1. 一个卷积层的数据的基本流

如上图所示,由于卷积核本身就是一堆待学参数w,所以卷积操作本质还是“加权求和”,之后会加入偏置值,然后进行非线性变换,然后输出(到下一层),可见还是那一套。

需要提一下的是,卷积的输入不一定是原始图像构成的矩阵,还有可能是上一个卷积的结果。原始图像是彩色的,有多个通道。卷积时可以用多个卷积核,最终产生的结果也是立体的。因此原始的输入与中间卷积层的输出,在数学形式上是统一的。因此可以“输入->卷积层->卷积层->...”这样操作。

2. 卷积层的参数规模

一个卷积层总的参数规模(包括w,不包括b)为: ,即:卷积核的大小的平方*上层输出的通道数)*本层所用的卷积核数。与上层输入的大小无关(但与通道数有关)

3. 一个卷积层涉及到的超参

卷积核的大小、是否padding、步长、卷积核数。

1. 一个示例

上图为一个简单的卷积神经网络示例: 一层一层的卷积,最后把所有的元素展开成一个一维向量,然后加一个全连接层。

2. 注意以下几点:

1⃣️ 实际上CNN会有卷积层、池化层、全连接层,而非仅有卷积和全连接;

2⃣️ 从数据的构成形式上看,按照网络从前往后的顺序,图片尺寸不断减小,信道数量不断增加。一般遵从这个趋势。

1. 池化

如上图所示,假设输入是一个4*4的矩阵,现在我们把它分割成2*2四个子矩阵(或者说使用一个2*2的核以2为步长扫描矩阵),对四个子区域分别求最大值,最终得到一个值为9、2、6、3的2*2的矩阵输出。这种操作就叫池化,具体为最大值池化。

2. 池化的作用

1⃣️ 一般来说,较大的值往往代表学到了一个重要或典型的特征,把原始输入以某种方式滤除掉一些不重要的值,只保留一些较大的值,相当于 强化了一些重要信息的表达 。2⃣️ 降低图片的尺寸,可以节省空间、加速运算等。

3. 池化的特点

并没有需要学习的参数(w、b之类的),也因此“池化层”一般并不被称为单独的一层。在卷积神经网络中,通常把一个卷积层+一个池化层的组合叫一层。

4. 池化的超参数及经验值

池化层没有要学习的参数,只有核心的两个超参:池化核的大小、池化步长。此外还有池化所用的rece操作:最大或者平均(没有其它选项)。

一般把池化核的大小设置为3或2,步长为2。注意:步长为2意味着把图片减小到原来的一半。

rece操作最常用最大池化,偶尔用平均池化,不会用其它操作。

上图为一个典型的卷积神经网络示例,描述如下:

输入层 :彩色的手写数字图片,数学构成为32*32*3的矩阵,其中3为通道数。

Layer 1-卷积层 :1)使用6个5*5*3的卷积核,以步长为1对输入层进行卷积,输出28*28*6的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出14*14*6的矩阵。其中14为图片尺寸,6为信道数。

Layer2-卷积层 :1)使用16个5*5*3的卷积核以步长1对上层输出进行卷积,输出10*10*16的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出5*5*16的矩阵。

Layer3-全连接层: 把上层输出的5*5*16矩阵展开成1*400的一维向量,以120*400的权重矩阵送入本层120个神经元,激活后输出。

Layer4-全连接层: 120->84,激活后输出

输出层 :84 -> 10,然后softmax后输出。

1. 参数少

假如原始图片尺寸为100*100*3,假设使用全连接,即使第二层仅用100个神经元,那也已经产生了100*100*3*100 = 300w个参数,难以想象。

假设使用卷积层,使用10个10*10*3的卷积核,那就是只有3000个参数,而能输出的矩阵规模是91*91*10=81000

2. 参数少的原因

1)稀疏连接:卷积核扫描矩阵产生输出,这个过程就从“神经元连接”的角度看,输入的左上角只连着输出的左上角,右上角只连右上角,而非“全连接”,参数就会少很多。2)参数共享:这么稀疏的连接,还是使用了同一套参数,进一步减少了参数的量。

3. 参数共享的其它好处

如果图片上有一只猫,那么不管这个猫在图片的什么位置,都不改变“这是一张猫的照片”。使用参数共享时,相当于用同样的特征提取作用到整个图片的各个区域,适应平移不变性,增强鲁棒性。

③ 卷积神经网络

卷积神经网络 (Convolutional Neural Networks,CNN)是一种前馈神经网络。卷积神经网络是受生物学上感受野(Receptive Field)的机制而提出的。感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。比如在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。

卷积神经网络又是怎样解决这个问题的呢?主要有三个思路:

在使用CNN提取特征时,到底使用哪一层的输出作为最后的特征呢?

答:倒数第二个全连接层的输出才是最后我们要提取的特征,也就是最后一个全连接层的输入才是我们需要的特征。

全连接层会忽视形状。卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。

CNN中,有时将 卷积层的输入输出数据称为特征图(feature map) 。其中, 卷积层的输入数据称为输入特征图(input feature map) 输出数据称为输出特征图(output feature map)。

卷积层进行的处理就是 卷积运算 。卷积运算相当于图像处理中的“滤波器运算”。

滤波器相当于权重或者参数,滤波器数值都是学习出来的。 卷积层实现的是垂直边缘检测

边缘检测实际就是将图像由亮到暗进行区分,即边缘的过渡(edge transitions)。

卷积层对应到全连接层,左上角经过滤波器,得到的3,相当于一个神经元输出为3.然后相当于,我们把输入矩阵拉直为36个数据,但是我们只对其中的9个数据赋予了权重。

步幅为1 ,移动一个,得到一个1,相当于另一个神经单元的输出是1.

并且使用的是同一个滤波器,对应到全连接层,就是权值共享。

在这个例子中,输入数据是有高长方向的形状的数据,滤波器也一样,有高长方向上的维度。假设用(height, width)表示数据和滤波器的形状,则在本例中,输入大小是(4, 4),滤波器大小是(3, 3),输出大小是(2, 2)。另外,有的文献中也会用“核”这个词来表示这里所说的“滤波器”。

对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。这里所说的窗口是指图7-4中灰色的3 × 3的部分。如图7-4所示,将各个位置上滤
波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。

CNN中,滤波器的参数就对应之前的权重。并且,CNN中也存在偏置。

在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充(padding),是卷积运算中经常会用到的处理。比如,在图7-6的例子中,对大小为(4, 4)的输入数据应用了幅度为1的填充。“幅度为1的填充”是指用幅度为1像素的0填充周围。

应用滤波器的位置间隔称为 步幅(stride)

假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S。

但是所设定的值必须使式(7.1)中的 和 分别可以除尽。当输出大小无法除尽时(结果是小数时),需要采取报错等对策。顺便说一下,根据深度学习的框架的不同,当值无法除尽时,有时会向最接近的整数四舍五入,不进行报错而继续运行。

之前的卷积运算的例子都是以有高、长方向的2维形状为对象的。但是,图像是3维数据,除了高、长方向之外,还需要处理通道方向。

在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值。

因此,作为4维数据,滤波器的权重数据要按(output_channel, input_channel, height, width)的顺序书写。比如,通道数为3、大小为5 × 5的滤
波器有20个时,可以写成(20, 3, 5, 5)。

对于每个通道,均使用自己的权值矩阵进行处理,输出时将多个通道所输出的值进行加和即可。

卷积运算的批处理,需要将在各层间传递的数据保存为4维数据。具体地讲,就是按(batch_num, channel, height, width)的顺序保存数据。

这里需要注意的是,网络间传递的是4维数据,对这N个数据进行了卷积运算。也就是说,批处理将N次的处理汇总成了1次进行。

池化是缩小高、长方向上的空间的运算。比如,如图7-14所示,进行将2 × 2的区域集约成1个元素的处理,缩小空间大小。

图7-14的例子是按步幅2进行2 × 2的Max池化时的处理顺序。“Max池化”是获取最大值的运算,“2 × 2”表示目标区域的大小。如图所示,从
2 × 2的区域中取出最大的元素。此外,这个例子中将步幅设为了2,所以2 × 2的窗口的移动间隔为2个元素。另外,一般来说,池化的窗口大小会和步幅设定成相同的值。比如,3 × 3的窗口的步幅会设为3,4 × 4的窗口的步幅会设为4等。

除了Max池化之外,还有Average池化等。相对于Max池化是从目标区域中取出最大值,Average池化则是计算目标区域的平均值。 在图像识别领域,主要使用Max池化。 因此,本书中说到“池化层”时,指的是Max池化。

池化层的特征
池化层有以下特征。
没有要学习的参数
池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。
通道数不发生变化
经过池化运算,输入数据和输出数据的通道数不会发生变化。如图7-15所示,计算是按通道独立进行的。

对微小的位置变化具有鲁棒性(健壮)
​ 输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。比如,3 × 3的池化的情况下,如图
​ 7-16所示,池化会吸收输入数据的偏差(根据数据的不同,结果有可能不一致)。

经过卷积层和池化层之后,进行Flatten,然后丢到全连接前向传播神经网络。

(找到一张图片使得某个filter响应最大。相当于filter固定,未知的是输入的图片。)未知的是输入的图片???

k是第k个filter,x是我们要找的参数。?这里我不是很明白。我得理解应该是去寻找最具有代表性的特征。

使用im2col来实现卷积层

卷积层的参数是需要学习的,但是池化层没有参数需要学习。全连接层的参数需要训练得到。

池化层不需要训练参数。全连接层的参数最多。卷积核的个数逐渐增多。激活层的size,逐渐减少。

最大池化只是计算神经网络某一层的静态属性,没有什么需要学习的,它只是一个静态属性

像这样展开之后,只需对展开的矩阵求各行的最大值,并转换为合适的形状即可(图7-22)。

参数
• input_dim ― 输入数据的维度:( 通道,高,长 )
• conv_param ― 卷积层的超参数(字典)。字典的关键字如下:
filter_num ― 滤波器的数量
filter_size ― 滤波器的大小
stride ― 步幅
pad ― 填充
• hidden_size ― 隐藏层(全连接)的神经元数量
• output_size ― 输出层(全连接)的神经元数量
• weitght_int_std ― 初始化时权重的标准差

LeNet

LeNet在1998年被提出,是进行手写数字识别的网络。如图7-27所示,它有连续的卷积层和池化层(正确地讲,是只“抽选元素”的子采样层),最后经全连接层输出结果。

和“现在的CNN”相比,LeNet有几个不同点。第一个不同点在于激活函数。LeNet中使用sigmoid函数,而现在的CNN中主要使用ReLU函数。
此外,原始的LeNet中使用子采样(subsampling)缩小中间数据的大小,而现在的CNN中Max池化是主流。

AlexNet

在LeNet问世20多年后,AlexNet被发布出来。AlexNet是引发深度学习热潮的导火线,不过它的网络结构和LeNet基本上没有什么不同,如图7-28所示。

AlexNet叠有多个卷积层和池化层,最后经由全连接层输出结果。虽然结构上AlexNet和LeNet没有大的不同,但有以下几点差异。
• 激活函数使用ReLU。
• 使用进行局部正规化的LRN(Local Response Normalization)层。
• 使用Dropout

TF2.0实现卷积神经网络

valid意味着不填充,same是填充
or the SAME padding, the output height and width are computed as:

out_height = ceil(float(in_height) / float(strides[1]))

out_width = ceil(float(in_width) / float(strides[2]))

And

For the VALID padding, the output height and width are computed as:

out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))

out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
因此,我们可以设定 padding 策略。在 tf.keras.layers.Conv2D 中,当我们将 padding 参数设为 same 时,会将周围缺少的部分使用 0 补齐,使得输出的矩阵大小和输入一致。

④ 卷积神经网络中的池化是什么意思

理论在于,图像中相邻位置的像素是相关的。对一幅图像每隔一行采样,得到的结果依然能看。

⑤ (7)卷积神经网络的基本结构

    卷积神经网络主要结构有:卷积层、池化层、和全连接层。通过堆叠这些层结构形成一个卷积神经网络。将原始图像转化为类别得分,其中卷积层和全连接层拥有参数,激活层和池化层没有参数。参数更新通过反向传播实现。

(1)卷积层

    卷积核是一系列的滤波器,用来提取某一种特征

    我们用它来处理一个图片,当图像特征与过滤器表示的特征相似时,卷积操作可以得到一个比较大的值。

    当图像特征与过滤器不相似时,卷积操作可以得到一个比较小的值,实际上,卷积的结果特征映射图显示的是对应卷积核所代表的特征在原始特征图上的分布情况。

        每个滤波器在空间上(宽度和高度)都比较小,但是深度和输入数据保持一致(特征图的通道数),当卷积核在原图像滑动时,会生成一个二维激活图,激活图上每个空间位置代表原图像对该卷积核的反应。每个卷积层,会有一整个集合的卷积核,有多少个卷积核,输出就有多少个通道。每个卷积核生成一个特征图,这些特征图堆叠起来组成整个输出结果。

    卷积核体现了参数共享和局部连接的模式。每个卷积核的大小代表了一个感受野的大小。

    卷积后的特征图大小为(W-F+2*P)/s+1 ;P 为填充 s 为步长

(2)池化层

    池化层本质上是下采样,利用图像局部相关性的原理(认为最大值或者均值代表了这个局部的特征),对图像进行子抽样,可以减少数据处理量同时保留有用信息。这里池化有平均池化,L2范式池化,最大池化,经过实践,最大池化的效果要好于平均池化(平均池化一般放在卷积神经网络的最后一层),最大池化有利于保存纹理信息,平均池化有利于保存背景信息。实际上(因为信息损失的原因)我们可以看到,通过在卷积时使用更大的步长也可以缩小特征映射的尺寸,并不一定要用池化,有很多人不建议使用池化层。32*32在5*5卷积核步长为1下可得到28*28。

    池化操作可以逐渐降低数据体的空间尺寸,这样的话就能减少网络中参数的数量,使得计算资源耗费变少,也能有效控制过拟合。

(3)全连接层

    通过全连接层将特征图转化为类别输出。全连接层不止一层,在这个过程中为了防止过拟合会引入DropOut。最新研究表明,在进入全连接层之前,使用全局平均池化可以有效降低过拟合。

(4)批归一化BN——Batch Normal

    随着神经网络训练的进行,每个隐层的参数变化使得后一层的输入发生变化,从而每一批的训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练复杂度和过拟合的风险,只能采用较小的学习率去解决。

    通常卷积层后就是BN层加Relu。BN已经是卷积神经网络中的一个标准技术。标准化的过程是可微的,因此可以将BN应用到每一层中做前向和反向传播,同在接在卷积或者全连接层后,非线性层前。它对于不好的初始化有很强的鲁棒性,同时可以加快网络收敛速度。

(5)DropOut

    Dropout对于某一层神经元,通过定义的概率来随机删除一些神经元,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新,下一次迭代中,重新随机删除一些神经元,直至训练结束。

(6)softmax层

    Softmax层也不属于CNN中单独的层,一般要用CNN做分类的话,我们习惯的方式是将神经元的输出变成概率的形式,Softmax就是做这个的:  。显然Softmax层所有的输出相加为1,按照这个概率的大小确定到底属于哪一类。

⑥ 下采样和池化的区别是什么

有部分同学,在学习初期,会认为下采样和池化是指同样的事情,只是叫法不同而已,其实这是一种错误的认知。

下采样(subsampled),或称为降采样(downsampled),指缩小图像。其主要目是使得图像符合显示区域的大小,生成对应图像的缩略图。

而池化(Pooling)则是卷积神经网络中一个重要的概念,它是降采样的一种形式。它会压缩输入的特征图,一方面减少了特征,导致了参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。

池化的方法:

max-pooling:对邻域内特征点取最大值;

mean-pooling:对邻域内特征点求平均。

池化的作用:

降维,减少网络要学习的参数数量;

防止过拟合;

扩大感受野;

实现不变性(平移、旋转、尺度不变性)

关于池化的解释:

池化 = 涨水

池化的过程 = 升高水位(扩大矩阵网格)

池化的目的是为了得到物体的边缘形状。

下采样和池化应该是包含关系,池化属于下采样,而下采样不局限于池化,如果卷积 stride=2,此时也可以把这种卷积叫做下采样。

⑦ 34-卷积神经网络(Conv)

深度学习网络和普通神经网络的区别

全连接神经网络的缺点

卷积神经网络的错误率

卷积神经网络的发展历程

卷积神经网络的结构

结构特点:
神经网络(neural networks)的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层(pooling layer,又叫下采样层)。

卷积过程

纠正:卷积层的过滤器,就是一个矩阵,里面的元素是对应扫描时每个像素点的权重

即:每个过滤器会产生一张feature map

0填充的两种方式
卷积核在提取特征映射时的动作称之为padding(零填充),由于移动步长不一定能整出整张图的像素宽度。其中有两种方式,SAME和VALID

彩色图片的卷积过程

由于彩色图片有3个通道,即3张表,所以filter需要分3次去分别观察,每次观察的结果直接相加作为最后的结果

过滤器的个数

有几个过滤器,就会生成几张表。eg:
对于[28, 28, 1]的图片,如果有32个过滤器,就会卷积的结果就为[28, 28, 32],相当于图片被“拉长”了

观察结果大小的计算

面试可能考

注意:如果计算结果出现小数,需要结合情况具体考虑,而不是说直接四舍五入

卷积的api

在卷积神经网络中,主要使用Relu函数作为激活函数

即在这里使用relu函数去掉了像素中小于0的值

神经网络中为什么要使用激活函数

为什么使用relu而不再使用sigmoid函数?

api

卷积就是进行特征的提取,观察更加仔细,然而,观察仔细就意味着数据多,运算量增加,这就需要使用池化层以减少计算量

Pooling层主要的作用是特征提取,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。

池化层也有一个窗口大小(过滤器)

即:池化过程让图片变得更“窄”

即:卷积层使得图片变长,池化层使得图片变窄,所以经过卷积,图片越来越“细长”

api

池化中SAME的计算方式与卷积过程中SAME的计算方式一样。eg:
[None, 28, 28, 32]的数据,经过2x2,步长为2,padding为SAME的池化,变成了[None, 14, 14, 32]

分析:前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。最后的全连接层在整个卷积神经网络中起到“分类器”的作用。

所以神经网络也相当于是一个特征选择的方式

⑧ cnn里面池化的作用是什么,为什么对于同样的神经网络,我们把sample层去掉之后反而正确率下降了

cnn里面池化的作用:

增大感受野。

所谓感受野,即一个像素对应回原图的区域大小,假如没有pooling,一个3*3,步长为1的卷积,那么输出的一个像素的感受野就是3*3的区域,再加一个stride=1的3*3卷积,则感受野为5*5。

假如我们在每一个卷积中间加上3*3的pooling呢?很明显感受野迅速增大,这就是pooling的一大用处。感受野的增加对于模型的能力的提升是必要的,正所谓“一叶障目则不见泰山也”。

正确率下降的原因:

池化层往往跟在卷积层后面。通过平均池化或者最大池化的方法将之前卷基层得到的特征图做一个聚合统计。假设L层的卷积层得到的某一特征图有100*100这么大的尺寸。

选一个2*2的区域做不重叠的最大池化,池化层会输出50*50那么大的图,达到降低数据量的目的。

采样层的作用可以等效为正则化,可以降低模型的耦合度,所以去掉的话准确率降低是正常的。

如果不加池化层应该保留原始数据,只影响模型训练速度是不影响性能的。




总结如下:

因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。例如,卷积层输出的特征图中两个相连的点的特征通常会很相似,假设a[0,0],a[0,1],a[1,0],a[1,1]都表示颜色特征是红色,没有必要都保留作下一层的输入。

池化层可以将这四个点做一个整合,输出红色这个特征。可以达到降低模型的规模,加速训练的目的。




⑨ 如何理解卷积神经网络中的卷积和池化

简单谈谈自己的理解吧。
池化:把很多数据用最大值或者平均值代替。目的是降低数据量。
卷积:把数据通过一个卷积核变化成特征,便于后面的分离。计算方式与信号系统中的相同。

阅读全文

与卷积神经网络中什么是池化相关的资料

热点内容
网络共享中心没有网卡 浏览:521
电脑无法检测到网络代理 浏览:1374
笔记本电脑一天会用多少流量 浏览:576
苹果电脑整机转移新机 浏览:1376
突然无法连接工作网络 浏览:1059
联通网络怎么设置才好 浏览:1224
小区网络电脑怎么连接路由器 浏览:1034
p1108打印机网络共享 浏览:1212
怎么调节台式电脑护眼 浏览:695
深圳天虹苹果电脑 浏览:932
网络总是异常断开 浏览:612
中级配置台式电脑 浏览:991
中国网络安全的战士 浏览:630
同志网站在哪里 浏览:1413
版观看完整完结免费手机在线 浏览:1459
怎样切换默认数据网络设置 浏览:1110
肯德基无线网无法访问网络 浏览:1286
光纤猫怎么连接不上网络 浏览:1474
神武3手游网络连接 浏览:965
局网打印机网络共享 浏览:1000