Press "Enter" to skip to content

深度学习之 10 卷积神经网络1

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

上一篇我们了解了前馈神经网络的基础概念知识之后,本文是接着上一篇 深度学习之 9 前馈神经网络2:实现前馈神经网络,模型调优_水w的博客-CSDN博客

 

目录

 

2 卷积网络的动机:参数共享,稀疏交互,平移不变性

 

把连接稀疏化:参数变少,模型变简单,降低过拟合可能性

 

平移不变性:由卷积+池化共同实现

 

3 池化,最大池化,平均池化

 

前言

 

在用全连接前馈网络来处理图像时, 存在以下两个问题:

 

① 参数太多

 

:black_circle: 假设输入一个100×100×3的图像;

 

:black_circle: 隐藏层只有一个神经元,则它与输入层之间有30,000个互相独立的连接,每个连接都对应一个权重参数;

 

:black_circle: 随着隐藏层神经元数量的增多,参数的规模也会急剧增加。 这会导致整个神经网络的训练效率非常低,也很容易出现过拟合。

 

 

② 局部不变性特征难以提取

 

:black_circle: 自然图像中的物体都具有 局部 不变性 特征,缩放、平移、旋转等操作不影响其语义信息;

 

:black_circle: 全连接前馈网络很难提取这些局部不变性特征,一般需要进行 数据增强 来提高性能;

 

感受野(Receptive Field) 机制主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。

 

:black_circle: 卷积神经网络( Convolutional Neural Network , CNN)是 受生物学上感受野机制的启发而提出的;

 

:black_circle: 卷积神经网络有 三个结构上的特性: 局部连接 、 权重共享 以及 池化;

 

:black_circle: 卷积神经网络一般是由 卷积层、池化层 和 全连接层 交叉堆叠而成的前馈神经网络;

 

:black_circle: 卷积神经网络具有一定程度上的 平移、缩放和旋转不变性;

 

:black_circle: 与全连接神经网络相比,卷积神经网络的 参数更少;

 

1 卷积运算

 

(1)一维卷积

 

:black_circle: 卷积(Convolution) 是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维(离散)卷积。

 

:black_circle: 一维卷积 经常用在 信号处理 中,用于计算信号的 延迟累积。

 

 

➢ 假设一个 信号发生器 每个时刻 푡 产生一个信号 푥 푡 ,其信息的衰减率为 푤 푘( 随着时间的推移衰减的越厉害 )  ,即在 푘 − 1 个时间步长后,信息为原来的푤 푘 倍,假设 푤 1 = 1, 푤 2 = 1/2 , 푤3 = 1/4 ,即 푤 1 , 푤 2 , 푤 3 = (1,1/2 , 1/4);

 

➢ 时刻 푡 收到的信号 푦 푡 为 当前时刻产生的信息和以前时刻延迟信息的叠加 。

 

 

➢ 设滤波器长度为 퐾 ,它和一个信号序列 푥 1 , 푥 2 , ⋯ 的卷积为:

 

 

➢ 以向量的形式表示为:

 

➢ 滤波器其实是(局部)特征提取器,设计不同的滤波器用于提取信号序列的不同局部特征。

 

卷积运算

 

 

:black_circle: 增加卷积的多样性,可以更灵活地进行特征处理;

 

:black_circle: 在卷积的标准定义基础上,引入滤波器的 滑动步长 푆 和 零填充 푃;

 

➢ 步长 푆 (Stride)是指卷积核在滑动时的时间间隔。

 

➢ 零填充 푃 (Zero Padding)是在输入向量两端进行补零。

 

 

:black_circle: 假设卷积层的输入神经元个数为 푀 ,卷积大小为 퐾 ,步长为 푆 ,在输入两端各填补 푃 个 0

 

(zero padding),那幺该卷积层的神输出经元数量为 (푀 − 퐾 + 2푃)/푆 + 1

 

:black_circle: 卷积的结果按输出长度不同可以分为三类(퐾表示卷积核长度):

 

➢ 窄卷积 :步长 푆 =1,两端不补零 푃 =0 ,卷积后输出长度为 푀 − 퐾 + 1;

 

➢ 宽卷积 :步长 푆 =1,两端补零 푃 = 퐾 − 1 ,卷积后输出长度 푀 + 퐾 − 1;

 

➢ 等宽卷积 :步长 푆 =1,两端补零 푃 =( 퐾 − 1)/2 ,卷积后输出长度 푀;

 

• 在早期的文献中,卷积一般默认为窄卷积。

 

• 而目前的文献中,卷积一般默认为等宽卷积。

 

(2) 二维卷积

 

二维卷积 经常用在图像处理中。因为图像为一个二维结构,所以需要将一维卷积进行扩展。

 

➢ 给定一个图像 푿 ∈ 푹 푴×푵 和一个滤波器 푾 ∈ 푹 푼×푽 ,一般 푈 << 푀 , 푉 << 푁 ,其卷积为:

 

 

➢ 输入信息 푿 和滤波器 푾 的二维卷积定义为: 二维卷积   풀 = 푾 ∗ 푿

 

 

(3)特征映射

 

:black_circle: 一幅图像在经过卷积操作后得到结果称为 特征映射 ( Feature Map )。

 

:black_circle: 输入图像经过一个卷积核处理后的输出为一个Feature Map.

 

:black_circle: 在图像处理中常用的 均值滤波(Mean Filter) , 将当前位置的像素值设为滤波器窗口中所有像素的平均值,即

 

:black_circle: 右图给出在图像处理中几种常用的滤波器,以及其对应的特征映射。

 

:black_circle: 最上面是 高斯滤波器 ,对图像进行平滑去噪;

 

:black_circle: 中间和最下面的滤波器用来提取边缘特征。

 

 

 

(3)互相关运算

 

:black_circle: 根据卷积运算的原始定义 ,计算卷积的过程中,需要进行 卷积核翻转 。

 

:black_circle: 在具体实现上 ,一般会以 互相关操作 来代替 卷积 ,从而会减少不必要的翻转操作。

 

:black_circle: 互相关(Cross-Correlation) 是一个衡量两个序列相关性的函数,通常是用滑动窗口的

 

点积计算来实现。

 

:black_circle: 在神经网络中使用卷积是为了进行特征抽取, 卷积核是否进行翻转和其特征抽取的能力无关 。

 

:black_circle: 特别是当卷积核是 可学习的参数 时, 卷积和互相关在能力上是等价的 。

 

:black_circle: 为了实现上的方便起见,很多深度学习工具中卷积操作其实都是互相关操作。

 

互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。

 

给定一个图像 푿 ∈ 푹 푴×푵 和一个卷积核 푾 ∈ 푹 푼×푽 ,它们的 互相关 为

 

给定一个输入信息푿 ∈ ℝ푀×푁 和滤波器 푴 ∈ ℝ푈×푉 的 二维互相关 定义为:

 

其中 ⊗ 表示互相关运算,rot180( ⋅ ) 表示旋转180 度, 풀 ∈ ℝ 푀−푈+1,푁−푉 +1 为输出矩阵

 

2 卷积网络的动机:参数共享,稀疏交互,平移不变性

 

在全连接前馈神经网络中,如果第 푙 层有 푀 푙 个神经元,第 푙 − 1 层有 푀 푙−1 个神经元,则连接边有푀푙 × 푀 푙−1 个,也就是权重矩阵有 푀 푙 × 푀 푙−1 参数。当 푀 푙 和 푀푙−1 都很大时,权重矩阵的参数非常多,训练的效率会非常低。

 

那幺,

 

把连接稀疏化:参数变少,模型变简单,降低过拟合可能性

 

在卷积层(假设是第 푙 层)中的每一个神经元都只和下一层(第 푙 − 1 层)中某个局部窗口内的

 

神经元相连,构成一个局部连接网络。这样,卷积层和下一层之间的连接数大大减少,由原

 

来的 푀 푙 × 푀 푙−1 个连接变为 푀 푙 × 퐾 个连接, 퐾 为卷积核大小

 

 

参数共享

 

➢给定1000×1000像素的图像,假设神经网络具有1百万个隐藏层神经元,则全连接需要1012个权值参数;

 

➢局部感受野是10×10,隐藏层每个感受野只需要和这10×10的局部图像相连接, 所以1百万个隐藏层神经元就只有一亿个连接,即108 个参数。

 

 

➢每个隐藏层神经元存在10×10=100个连接权重参数。 如果我们让每个神经元的这100个参数相同 呢?也就是说,每个神经元用的是同一个卷积核去卷积图像。一种只需100个参数。

 

这样的后果是什幺呢? ——这样只提取了一种特征

 

一种滤波器(也就是一种卷积核)可以提取图像的一种特征,那幺我们如需要提取不同的特征,怎幺办?  方案:使用多几种滤波器。

 

假设有100种滤波器,每种滤波器的参数不一样,表示它提取输入图像的不同特征。所以100种卷积核就有100个Feature Map。

 

这时我们这一层有多少个参数?  ——100种卷积核(不同特征)x每种卷积核共享的100个参数=100×100=10K,也就是1万个参数。

 

 

平移不变性: 由 卷积+池化 共同实现

 

:black_circle: 卷积网络具有 平移不变性 ,它是由 卷积+池化 共同实现的。

 

卷积: 图像经过平移后,通过卷积运算仍然能够捕捉到同样的特征。

 

池化: 图像经过平移后,通过池化操作仍然能够产生相同的输出。

 

 

:black_circle: 平移是一种几何变换 ,表示把一幅图像或一个空间中的每个点在相同方向移动相同距离。

 

:black_circle: 例如:对图像分类任务来说,图像中的目标不管被移动到哪个位置,分类结果(标签)

 

应该是相同的。

 

平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的。

 

 

➢输入图像的左下角有一个人脸,经过卷积,人脸的特征(眼睛,鼻子)也位于特征图的左下角。

 

 

➢假如人脸特征在图像的左上角,那幺卷积后对应的特征也在特征图的左上角。

 

 

3 池化,最大池化,平均池化

 

:black_circle: 池化层(Pooling Layer) 也叫 子采样层(Subsampling Layer) ,其作用是进行 特征选择 , 降低特征数量,从而 减少参数数量 。

 

:black_circle: 卷积层虽然可以显着减少网络中连接的数量,但 特征映射组中的神经元个数并没有显着减少 。

 

如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。 为了解决这个问

 

题,可以在卷积层之后加上一个池化层,从而降低特征维数,避免过拟合。

 

卷积层的输入神经元个数为 푀 ,卷积大小为 퐾 ,步长为 푆 ,在输入两端各填补 푃 个 0 (zero padding),那幺该卷积层的神输出经元数量为 (푀 − 퐾 + 2푃)/푆 + 1

 

➢假设池化层的输入特征映射组为퓧 ∈ 푅 푀×푁×퐷 ,输出为 퓨 ∈ 푅 푀 ′ ×푁 ′ ×퐷;

 

➢对于其中每一个特征映射푿 푑 ∈ 푅 푀×푁 , 1 ≤ 푑 ≤ 퐷 ,将其划分为很多区域 푅 푚,푛 푑 , 1 ≤ 푚 ≤ 푀′, 1 ≤ 푛 ≤ 푁 ′,这些区域可以重叠,也可以不重叠;

 

 

:black_circle: 池化(Pooling) 是指对每个区域进行 下采样(Down Sampling) (原来有很多个样本,在多个样本中选一个或几个)得到一个值,作为这个区域的概括。

 

➢ 可以有效减少神经元的个数,提升计算效率;

:black_circle:
最大池化(Maximum Pooling 或Max Pooling)
:对于一个区域

푅푚,푛 푑 ,选择这个区域内所有神经元的最大活性值作为这个区域的表示。

 

➢ 不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。

 

:black_circle: 平均池化(Mean Pooling) :一般是取区域内所有神经元活性值的平均值

 

➢ 主要用来抑制邻域值之间差别过大造成的方差过大。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。