【卷积神经网络】

本文探讨了在图像分类任务中,如何从全连接层过渡到卷积层以实现平移不变性和局部性。通过限制权重依赖和使用二维交叉相关,卷积层能够捕捉图像中的关键特征,同时减少了参数数量。此外,介绍了填充和步幅的概念,以控制输出尺寸和减少计算量。多输入输出通道则允许模型处理彩色图像或多模态信息。最后,简要提及了池化层的作用,它们用于缓解位置敏感性并降低计算复杂度。
摘要由CSDN通过智能技术生成

问题引出

分类猫和狗的图片

  • 使用一个还不错的相机采集图片(12M像素)
  • RGB图片有36M元素
  • 使用100大小的单隐藏层MLP,模型有3.6B元素
    • 远多于世界上所有猫和狗总数(900M狗,600M猫)

如果我们想在一张图片中寻找特定元素
在这里插入图片描述
那么它应该满足两个原则:

  • 平移不变性(即无论他出现在图片的哪个部分,其特征应该相同)
  • 局部性(只需要关注目标周围的特征,而不需要记住全局)

从全连接层出发得到卷积层

  • 之前我们的输入是一个1-D的向量,但如果我们对灰度图不进行压缩,他将有两个纬度的信息(Weight and Height),因此我们重新将输入变成一个2-D的矩阵,同时输出也是一个2-D的矩阵

  • 之前我们要表示某个全连接层之间的参数,只需要两个位置信息 i , j i,j i,j,那么 w i , j w_{i,j} wi,j就表示前一层 i i i位置的特征与后一层 j j j位置的输出;但对于矩阵而言我们将需要4个位置参数:
    h i , j = ∑ k , l w i , j , k , l x k , l = ∑ a , b v i , j , a , b x i + a , j + b h_{i,j}=\sum\limits_{k,l}w_{i,j,k,l}x_{k,l}=\sum\limits_{a,b}v_{i,j,a,b}x_{i+a,j+b} hi,j=k,lwi,j,k,lxk,l=a,bvi,j,a,bxi+a,j+b

    • 这里 h i , j h_{i,j} hi,j表示输出层的具体一个点, x k , l x_{k,l} xk,l表示输入层的具体一个点, w i , j , k , l w_{i,j,k,l} wi,j,k,l表示连接这两个点的参数
    • 其中 k 、 l k、l kl可以看作是绝对位置,而 a 、 b a、b ab是基于 i 、 j i、j ij的相对位置

我们再来看上面的两个原则:

平移不变性

  • 对于上面的 h i , j h_{i,j} hi,j x x x的平移必然会导致 h h h的变化

  • 因此 v v v不应该依赖于 ( i , j ) (i,j) (i,j)

  • 解决方案: v i , j , a , b = v a , b v_{i,j,a,b}=v_{a,b} vi,j,a,b=va,b h i , j = ∑ a , b v a , b x i + a , j + b h_{i,j}=\sum\limits_{a,b}v_{a,b}x_{i+a,j+b} hi,j=a,bva,bxi+a,j+b

  • 这就是二维交叉相关

局部性

  • 当评估 h i , j h_{i,j} hi,j时,我们不应该用远离 x i , j x_{i,j} xi,j的参数
  • 解决方案:当 ∣ a ∣ , ∣ b ∣ > △ |a|,|b|>△ a,b>时,使得 v a , b = 0 v_{a,b}=0 va,b=0 h i , j = ∑ a = − △ △ ∑ b = − △ △ v a , b x i + a , j + b h_{i,j}=\sum\limits_{a=-△}^△\sum\limits_{b=-△}^△v_{a,b}x_{i+a,j+b} hi,j=a=b=va,bxi+a,j+b

总结

  • 对全连接层使用平移不变性和局部性得到卷积层

卷积层

下面是一个简单的二维卷积层
在这里插入图片描述

在这里插入图片描述

  • 输入 X X X n h × n w n_h\times n_w nh×nw
  • W W W k h × k w k_h\times k_w kh×kw
  • 偏差 b ∈ R b\in R bR
  • 输出 Y Y Y ( n h − k h + 1 ) × ( n w − k w + 1 ) (n_h-k_h+1)\times(n_w-k_w+1) (nhkh+1)×(nwkw+1) Y = X W + b Y=XW+b Y=XW+b
  • W W W b b b都时可学习的参数

总结

  • 卷积层将输入和核矩阵进行交叉相关,加上偏移后得到输出
  • 核矩阵和偏移是可学习的参数
  • 核矩阵的大小是超参数

填充和步幅

填充

  • 在输入周围添加额外的行/列
    在这里插入图片描述
  • 如果我们填充 p h p_h ph行和 p w p_w pw列,那么输出的形状为:
    ( n h − k h + p h + 1 ) × ( n w − k w + p w + 1 ) (n_h-k_h+p_h+1)\times(n_w-k_w+p_w+1) (nhkh+ph+1)×(nwkw+pw+1)
  • 如果我们选择 p h = k h − 1 p_h=k_h-1 ph=kh1 p w = k w − 1 p_w=k_w-1 pw=kw1,那么输入输出的纬度将相同
    • k h k_h kh为奇数:在上下两侧填充 p h / 2 p_h/2 ph/2
    • k h k_h kh为偶数:在上侧填充多一行,下侧填充少一行
      在这里插入图片描述

步幅

  • 填充减小的输出大小与层数线性相关

    • 给定输入大小224×224,在使用5×5卷积核的情况下,需要44层将输出降低到4×4
    • 需要大量计算才能得到较小输出
  • 步幅是指行/列的滑动步长

    • 例:高度3宽度2的步幅
      在这里插入图片描述
      在这里插入图片描述
  • 给定高度 s h s_h sh和宽度 s w s_w sw的步幅,输出形状是
    ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w + p w + s w ) / s w ⌋ \lfloor (n_h-k_h+p_h+s_h)/s_h\rfloor\times\lfloor (n_w-k_w+p_w+s_w)/s_w\rfloor (nhkh+ph+sh)/sh×(nwkw+pw+sw)/sw

  • 如果 p h = k h − 1 p_h=k_h-1 ph=kh1 p w = k w − 1 p_w=k_w-1 pw=kw1,那么可以简化为:
    ⌊ ( n h − 1 + s h ) / s h ⌋ × ⌊ ( n w − 1 + s w ) / s w ⌋ \lfloor (n_h-1+s_h)/s_h\rfloor\times\lfloor (n_w-1+s_w)/s_w\rfloor (nh1+sh)/sh×(nw1+sw)/sw

  • 更进一步,如果输入的高度和宽度刚好能被对应的步幅整除:
    ( n h / s h ) × ( n w / s w ) (n_h/s_h)\times(n_w/s_w) (nh/sh)×(nw/sw)
    总结

  • 填充和步幅是卷积层的超参数

  • 填充在输入周围添加额外的行/列,来控制输出形状的减少量

  • 步幅是每次滑动核窗口时的行/列的步长,可以成倍的减少输出形状

多输入输出通道

  • 彩色图像可能有RGB三个通道
  • 转换为灰度会丢失信息
    在这里插入图片描述
    多个输入通道
  • 每个通道都有一个卷积核,结果是所有通道卷积结果的和
    在这里插入图片描述
  • 输入 X X X c i × n h × n w c_i\times n_h\times n_w ci×nh×nw
  • W W W c i × k h × k w c_i\times k_h\times k_w ci×kh×kw
  • 输入 X X X m h × m w m_h\times m_w mh×mw
    Y = ∑ i = 0 c i X i , : , : W i , : , : Y=\sum\limits_{i=0}^{c_i}X_{i,:,:}W_{i,:,:} Y=i=0ciXi,:,:Wi,:,:

多个输出通道

  • 无论有多少输入通道,到目前为止我们只用到单输出通道
  • 我们可以有多个三维卷积核,每个核生成一个输出通道
  • 输入 X X X c i × n h × n w c_i\times n_h\times n_w ci×nh×nw
  • W W W c o × c i × k h × k w c_o\times c_i\times k_h\times k_w co×ci×kh×kw
  • 输入 X X X c o × m h × m w c_o\times m_h\times m_w co×mh×mw
    Y i , : , : = X W i , : , : , : i = 1 , . . . , o Y_{i,:,:}=XW_{i,:,:,:}\quad i=1,...,o Yi,:,:=XWi,:,:,:i=1,...,o

意义

  • 每个输出通道可以识别特定模式
    在这里插入图片描述
  • 输入通道核识别并组合输入中的模式

1X1卷积层

  • k w = k h = 1 k_w=k_h=1 kw=kh=1是一个受欢迎的选择。它不识别空间模式,只融合通道
    在这里插入图片描述
  • 相当于输入形状为 n h n w n_hn_w nhnw,权重为 c i × c o c_i\times c_o ci×co的全连接层

池化层

二维最大池化

  • 返回滑动窗口的最大值
    在这里插入图片描述
    填充、步幅和多个通道
  • 池化层与卷积层类以,都具有填充和步幅
  • 没有可学习的参数
  • 在每个输入通道应用池化层以获得相应的输出通道
  • 输出通道数=输入通道数

平均池化层

  • 平均池化层:将最大池化层中的“最大”操作替换为“平均”

总结

  • 池化层返回窗口中最大或平均值
  • 缓解卷积层会位置的敏感性
  • 同样有窗口大小、填充、和步幅作为超参数
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟炼丹师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值