您的位置:首页 > 游戏 > 游戏 > 【深度学习基础】关于卷积神经网络你了解多少?

【深度学习基础】关于卷积神经网络你了解多少?

2024/11/16 3:10:59 来源:https://blog.csdn.net/Small___ming/article/details/128453269  浏览:    关键词:【深度学习基础】关于卷积神经网络你了解多少?

文章目录

    • 卷积
    • 稀疏交互
    • 参数共享
    • 池化层
    • 全连接层
    • 转置卷积
    • 空洞卷积
    • 卷积神经网络与全连接神经网络

本篇博客主要是讲解一些本人对于卷积的理解,包括:

  • 为什么会出现卷积操作?
  • 最基本的卷积操作?
  • 卷积的优缺点。
  • 空洞卷积等等。
  • 卷积操作牵扯的分辨率等问题。
  • 灰度值,RGB值等

卷积

参考链接
卷积到底是什么?卷积到底卷了个啥?

  1. 卷积是一个数学概念,公式如下:
    ∫ − ∞ + ∞ f ( τ ) g ( x − τ ) d τ \int_{-\infty }^{+\infty } f(\tau )g(x-\tau )d\tau +f(τ)g(xτ)dτ
  2. 如何理解该公式:举一个例子
    假设 f ( t ) f(t) f(t)表示到 t t t时刻一个人进食量, g ( t ) g(t) g(t)表示t时刻胃对食物的消化率。如果要求下午两点还剩多少食物改怎么求呢?
    ∫ 0 t f ( x ) g ( t − x ) d x \int_{0}^{t} f(x )g(t-x )dx 0tf(x)g(tx)dx
    在这里插入图片描述
    所以卷积其实就是两个函数的积分,一个不稳定的输入函数 f ( x ) f(x) f(x),还有一个相对稳定的输出函数 g ( x ) g(x) g(x),求这两个函数乘积的积分。
    卷积还可以理解为t时刻发生的事件受前面x事件的影响程度。
  3. 图像卷积过程:
    首先有一个卷积核,我们可以理解为g(x),还有一个输入f(x)。卷积核所覆盖的部分对应点相乘再相加。然后输出一个点,填入到中心位置。
    在这里插入图片描述
  1. 如何理解卷积过程?
    第一种理解:周围点对于中心点的影响。例如平滑卷积,一个 3 × 3 3\times 3 3×3的卷积核,数值全部为 1 / 9 1/9 1/9,这样的话就相当于这九个数相加求平均,可以缩小像素点之间的差异,使像素点更加平滑,效果如下:
    在这里插入图片描述
    第二种理解:过滤器,中心点对于周围点的试探。对于卷积核所覆盖的9个点,进行筛选。所以卷积操作可以提取局部特征,具体例子如下:
    在这里插入图片描述
    总结:神经网络中的卷积层可以通过卷积核提取特征。

卷积的特点:
参考链接:卷积神经网络中的稀疏交互和参数共享

稀疏交互

对于全连接网络,任意一对输入与输出神经元之间都产生交互,形成稠密的连接结构。在下图中可以看到, s i s_i si , i = 1 , . . . , 5 i = 1,...,5 i=1,...,5 与输入的所有神经元 x i x_i xi , i = 1 , . . . , 5 i = 1,...,5 i=1,...,5都有连接。

在这里插入图片描述
具体来讲,假设网络中相邻两层分别具有 m m m个输入和 n n n个输出,全连接网络中的权值参数矩阵将包含 m ∗ n m*n mn个参数。对于稀疏交互的卷积网络,如果限定每个输出与前一层神经元的连接数为 k k k,那么该层的参数总量为 k ∗ n k*n kn。在实际应用中,一般 k k k值远小于 m m m就可以取得较为可观的效果;而此时优化过程的时间复杂度将会减小几个数量级,过拟合的情况也得到了较好的改善。

在这里插入图片描述
稀疏交互的物理意义是,通常图像、文本、语音等现实世界中的数据都具有局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来形成更复杂和抽象的特征。

参数共享

参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。全连接网络中,计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次;而在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,从而大大降低了模型的存 储需求。

参数共享的物理意义是使得卷积层具有平移等变性。假如图像中有一只猫, 那么无论它出现在图像中的任何位置,我们都应该将它识别为猫,也就是说神经网络的输出对于平移变换来说应当是等变的。

池化层

  • 为什么要做池化操作

卷积操作的为了提取特征,卷积操作的结果是获取特征图,但是通常 3 × 3 3 \times 3 3×3的卷积核获取的特征图包含的数据量还是很大,计算量很大。例如在自动驾驶的时候要在几毫秒内做出判断,因此为了减少计算量,我们应该在保留特征的前提下降低计算量,也就是降低数据量。这就需要池化操作。
总结:池化可以在不改变特征的情况下降低数据量,减少计算量。

  • 有哪些池化操作?

max pooling: 只保留最大值。
在这里插入图片描述
average pooling: 求平均值保留。
在这里插入图片描述

全连接层

全连接层就是每个节点都与上一个节点相连接。一般是在最后与softmax层一起用。就是计算每个节点的得分,然后判断属于哪一类。
在这里插入图片描述
在这里插入图片描述

转置卷积

参考链接

  • 上面说的卷积层,池化层等都是对于分类问题的。但是对于分割问题,输出图像应该与输入图像一样大,如果只用卷积层和池化层肯定不满足要求,因为卷积不能增大输入的高宽,通常要么不变,要么减半。
  • 转置卷积可以增大输入的高宽。具体计算如下,输入的每个位置的元素与卷积核相乘填在对应位置,最后将他们加在一起。
  • 转置卷积是一对多,一个元素产生多个位置。卷积是多对一,多个元素产生一个位置。
    在这里插入图片描述
    为什么叫转置?
  1. 对于卷积我们可以写成 Y = W ⋅ X Y=W\cdot X Y=WX,其中 " ⋅ \cdot "代表卷积运算,
  2. 这里也可以对 W W W构造一个矩阵 V V V,使得卷积运算等价于矩阵乘法 Y ′ = V X ′ Y'=VX' Y=VX 。其中 Y ′ Y' Y X ′ X' X Y Y Y X X X对应的向量版本。
    假设 X ′ X' X m m m行, Y ′ Y' Y n n n行,矩阵 V V V则是 n × m n\times m n×m。现在要把 Y ′ Y' Y作为输入, X ′ X' X作为输出,即 X ′ = ( ) Y ′ X'=()Y' X=()Y。不难推算()应该是 m × n m\times n m×n V T V^{T} VT
  3. 转置卷积等价于 X ′ = V T Y ′ X'=V^{T}Y' X=VTY,即转置卷积可以将反向放大。

空洞卷积

卷积神经网络与全连接神经网络

  • 全连接神经网络
  1. 由一个一个的感知机组成。
  2. 权重是w,每个感知机的w可能不一样。
  3. 每个感知机与上一层(下一层)的感知机全部相连。
    在这里插入图片描述
  • 卷积神经网络
  1. 由卷积层、池化层、全连接层、激活函数搭积木组成。
  2. 权重是卷积核的数值,但是每一层可以共用同一个卷积核,也就是权重共享。
  3. 由于卷积神经网络不是只有全连接层,因此卷积神经网络是局部连接的。可以理解为如果卷积神经网络全部是全连接层,那么就是全连接的。
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com