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

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

目录

前言

1 卷积运算

(1)一维卷积

(2) 二维卷积

 (3)特征映射

(3)互相关运算 

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

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

参数共享

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

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


前言

在用全连接前馈网络来处理图像时, 存在以下两个问题:
① 参数太多
        ⚫ 假设输入一个100×100×3的图像;
        ⚫ 隐藏层只有一个神经元,则它与输入层之间有30,000个互相独立的连接,每个连接都对应一个权重参数;
        ⚫ 随着隐藏层神经元数量的增多,参数的规模也会急剧增加。 这会导致整个神经网络的训练效率非常低,也很容易出现过拟合。

 

② 局部不变性特征难以提取
        ⚫ 自然图像中的物体都具有 局部 不变性 特征,缩放、平移、旋转等操作不影响其语义信息;
        ⚫ 全连接前馈网络很难提取这些局部不变性特征,一般需要进行 数据增强 来提高性能;
感受野(Receptive Field) 机制主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。
卷积神经网络( Convolutional Neural Network , CNN)是 受生物学上感受野机制的启发而提出的;
卷积神经网络有 三个结构上的特性: 局部连接 权重共享 以及 池化;
卷积神经网络一般是由 卷积层、池化层 全连接层 交叉堆叠而成的前馈神经网络;
卷积神经网络具有一定程度上的 平移、缩放和旋转不变性;
与全连接神经网络相比,卷积神经网络的 参数更少;

1 卷积运算

(1)一维卷积

卷积(Convolution) 是分析数学中一种重要的运算。在信号处理或图像处理中,经常使用一维或二维(离散)卷积。
一维卷积 经常用在 信号处理 中,用于计算信号的 延迟累积。
       
➢ 假设一个 信号发生器 每个时刻 𝑡 产生一个信号 𝑥 𝑡 ,其信息的衰减率为 𝑤 𝑘(随着时间的推移衰减的越厉害)  ,即在 𝑘 − 1 个时间步长后,信息为原来的𝑤 𝑘 倍,假设 𝑤 1 = 1, 𝑤 2 = 1/2 , 𝑤3 = 1/4 ,即 𝑤 1 , 𝑤 2 , 𝑤 3 = (1,1/2 , 1/4);
 ➢ 时刻 𝑡 收到的信号 𝑦 𝑡 当前时刻产生的信息和以前时刻延迟信息的叠加

 

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

 ➢ 以向量的形式表示为:

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

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

在卷积的标准定义基础上,引入滤波器的 滑动步长 𝑆 零填充 𝑃;
        ➢ 步长 𝑆 (Stride)是指卷积核在滑动时的时间间隔。
        ➢ 零填充 𝑃 (Zero Padding)是在输入向量两端进行补零。

 

假设卷积层的输入神经元个数为 𝑀 ,卷积大小为 𝐾 ,步长为 𝑆 ,在输入两端各填补 𝑃 个 0
(zero padding),那么该卷积层的神输出经元数量为 (𝑀 − 𝐾 + 2𝑃)/𝑆 + 1
卷积的结果按输出长度不同可以分为三类(𝐾表示卷积核长度):
        ➢ 窄卷积 :步长 𝑆 =1,两端不补零 𝑃 =0 ,卷积后输出长度为 𝑀 𝐾 + 1;
        ➢ 宽卷积 :步长 𝑆 =1,两端补零 𝑃 = 𝐾 − 1 ,卷积后输出长度 𝑀 + 𝐾 − 1;
        ➢ 等宽卷积 :步长 𝑆 =1,两端补零 𝑃 =( 𝐾 − 1)/2 ,卷积后输出长度 𝑀;
在早期的文献中,卷积一般默认为窄卷积。
而目前的文献中,卷积一般默认为等宽卷积。

(2) 二维卷积

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

给定一个图像𝑿 𝑹𝑴×𝑵 和一个滤波器𝑾 𝑹𝑼×𝑽 ,一般𝑈<<𝑀, 𝑉<<𝑁,其卷积为:

➢ 输入信息 𝑿 和滤波器 𝑾 的二维卷积定义为: 二维卷积  𝒀 = 𝑾 𝑿

 (3)特征映射

一幅图像在经过卷积操作后得到结果称为 特征映射 ( Feature Map )。
输入图像经过一个卷积核处理后的输出为一个Feature Map.
在图像处理中常用的均值滤波(Mean Filter), 将当前位置的像素值设为滤波器窗口中所有像素的平均值,即
右图给出在图像处理中几种常用的滤波器,以及其对应的特征映射。
最上面是 高斯滤波器 ,对图像进行平滑去噪;
中间和最下面的滤波器用来提取边缘特征。

 

(3)互相关运算 

根据卷积运算的原始定义 ,计算卷积的过程中,需要进行 卷积核翻转
在具体实现上 ,一般会以 互相关操作 来代替 卷积 ,从而会减少不必要的翻转操作。
互相关(Cross-Correlation) 是一个衡量两个序列相关性的函数,通常是用滑动窗口的
点积计算来实现。
在神经网络中使用卷积是为了进行特征抽取, 卷积核是否进行翻转和其特征抽取的能力无关
特别是当卷积核是 可学习的参数 时, 卷积和互相关在能力上是等价的
为了实现上的方便起见,很多深度学习工具中卷积操作其实都是互相关操作。
互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。
给定一个图像 𝑿 𝑹 𝑴×𝑵 和一个卷积核 𝑾 𝑹 𝑼×𝑽 ,它们的 互相关

给定一个输入信息𝑿 ∈ ℝ𝑀×𝑁和滤波器𝑴 ∈ ℝ𝑈×𝑉 的二维互相关定义为:

其中表示互相关运算,rot180() 表示旋转180 度,𝒀 ∈ ℝ𝑀−𝑈+1,𝑁−𝑉 +1为输出矩阵 

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

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

  

那么,

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

在卷积层(假设是第 𝑙 层)中的每一个神经元都只和下一层(第 𝑙 − 1 层)中某个局部窗口内的
神经元相连,构成一个局部连接网络。这样,卷积层和下一层之间的连接数大大减少,由原
来的 𝑀 𝑙 × 𝑀 𝑙−1 个连接变为 𝑀 𝑙 × 𝐾 个连接, 𝐾 为卷积核大小

 


参数共享

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

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

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

一种滤波器(也就是一种卷积核)可以提取图像的一种特征,那么我们如需要提取不同的特征,怎么办?  方案:使用多几种滤波器。
假设有100种滤波器,每种滤波器的参数不一样,表示它提取输入图像的不同特征。所以100种卷积核就有100个Feature Map。
这时我们这一层有多少个参数?  ——100种卷积核(不同特征)x每种卷积核共享的100个参数=100x100=10K,也就是1万个参数。


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

卷积网络具有 平移不变性 ,它是由 卷积+池化 共同实现的。
        卷积:图像经过平移后,通过卷积运算仍然能够捕捉到同样的特征。
        池化:图像经过平移后,通过池化操作仍然能够产生相同的输出。

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

例如:对图像分类任务来说,图像中的目标不管被移动到哪个位置,分类结果(标签)
应该是相同的。
平移不变性意味着系统产生完全相同的响应(输出),不管它的输入是如何平移的。

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

 

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

 

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

池化层(Pooling Layer) 也叫 子采样层(Subsampling Layer) ,其作用是进行 特征选择 , 降低特征数量,从而 减少参数数量
卷积层虽然可以显著减少网络中连接的数量,但 特征映射组中的神经元个数并没有显著减少
如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。 为了解决这个问
题,可以在卷积层之后加上一个池化层,从而降低特征维数,避免过拟合。
卷积层的输入神经元个数为 𝑀 ,卷积大小为 𝐾 ,步长为 𝑆 ,在输入两端各填补 𝑃 个 0 (zero padding),那么该卷积层的神输出经元数量为 (𝑀 − 𝐾 + 2𝑃)/𝑆 + 1
➢假设池化层的输入特征映射组为𝓧 ∈ 𝑅 𝑀×𝑁×𝐷 ,输出为 𝓨 ∈ 𝑅 𝑀 ×𝑁 ×𝐷;
➢对于其中每一个特征映射𝑿 𝑑 ∈ 𝑅 𝑀×𝑁 , 1 ≤ 𝑑 𝐷 ,将其划分为很多区域 𝑅 𝑚,𝑛 𝑑 , 1 ≤ 𝑚 ≤ 𝑀′, 1 ≤ 𝑛 𝑁 ′,这些区域可以重叠,也可以不重叠;

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

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

最大池化(Maximum Pooling 或Max Pooling) :对于一个区域 𝑅𝑚,𝑛 𝑑 ,选择这个区域内所有神经元的最大活性值作为这个区域的表示。
        ➢ 不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。
平均池化(Mean Pooling) :一般是取区域内所有神经元活性值的平均值
        ➢ 主要用来抑制邻域值之间差别过大造成的方差过大。

 

 

 

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值