【卷积神经网络】

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

问题引出

分类猫和狗的图片

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

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

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

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

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

  • 之前我们要表示某个全连接层之间的参数,只需要两个位置信息i,ji,ji,j,那么wi,jw_{i,j}wi,j就表示前一层iii位置的特征与后一层jjj位置的输出;但对于矩阵而言我们将需要4个位置参数:
    hi,j=∑k,lwi,j,k,lxk,l=∑a,bvi,j,a,bxi+a,j+bh_{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

    • 这里hi,jh_{i,j}hi,j表示输出层的具体一个点,xk,lx_{k,l}xk,l表示输入层的具体一个点,wi,j,k,lw_{i,j,k,l}wi,j,k,l表示连接这两个点的参数
    • 其中k、lk、lkl可以看作是绝对位置,而a、ba、bab是基于i、ji、jij的相对位置

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

平移不变性

  • 对于上面的hi,jh_{i,j}hi,jxxx的平移必然会导致hhh的变化

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

  • 解决方案:vi,j,a,b=va,bv_{i,j,a,b}=v_{a,b}vi,j,a,b=va,bhi,j=∑a,bva,bxi+a,j+bh_{i,j}=\sum\limits_{a,b}v_{a,b}x_{i+a,j+b}hi,j=a,bva,bxi+a,j+b

  • 这就是二维交叉相关

局部性

  • 当评估hi,jh_{i,j}hi,j时,我们不应该用远离xi,jx_{i,j}xi,j的参数
  • 解决方案:当∣a∣,∣b∣>△|a|,|b|>△a,b>时,使得va,b=0v_{a,b}=0va,b=0hi,j=∑a=−△△∑b=−△△va,bxi+a,j+bh_{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

总结

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

卷积层

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

在这里插入图片描述

  • 输入XXXnh×nwn_h\times n_wnh×nw
  • WWWkh×kwk_h\times k_wkh×kw
  • 偏差b∈Rb\in RbR
  • 输出YYY(nh−kh+1)×(nw−kw+1)(n_h-k_h+1)\times(n_w-k_w+1)(nhkh+1)×(nwkw+1)Y=XW+bY=XW+bY=XW+b
  • WWWbbb都时可学习的参数

总结

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

填充和步幅

填充

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

步幅

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

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

    • 例:高度3宽度2的步幅
      在这里插入图片描述
      在这里插入图片描述
  • 给定高度shs_hsh和宽度sws_wsw的步幅,输出形状是
    ⌊(nh−kh+ph+sh)/sh⌋×⌊(nw−kw+pw+sw)/sw⌋\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

  • 如果ph=kh−1p_h=k_h-1ph=kh1pw=kw−1p_w=k_w-1pw=kw1,那么可以简化为:
    ⌊(nh−1+sh)/sh⌋×⌊(nw−1+sw)/sw⌋\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

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

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

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

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

多输入输出通道

  • 彩色图像可能有RGB三个通道
  • 转换为灰度会丢失信息
    在这里插入图片描述
    多个输入通道
  • 每个通道都有一个卷积核,结果是所有通道卷积结果的和
    在这里插入图片描述
  • 输入XXXci×nh×nwc_i\times n_h\times n_wci×nh×nw
  • WWWci×kh×kwc_i\times k_h\times k_wci×kh×kw
  • 输入XXXmh×mwm_h\times m_wmh×mw
    Y=∑i=0ciXi,:,:Wi,:,:Y=\sum\limits_{i=0}^{c_i}X_{i,:,:}W_{i,:,:}Y=i=0ciXi,:,:Wi,:,:

多个输出通道

  • 无论有多少输入通道,到目前为止我们只用到单输出通道
  • 我们可以有多个三维卷积核,每个核生成一个输出通道
  • 输入XXXci×nh×nwc_i\times n_h\times n_wci×nh×nw
  • WWWco×ci×kh×kwc_o\times c_i\times k_h\times k_wco×ci×kh×kw
  • 输入XXXco×mh×mwc_o\times m_h\times m_wco×mh×mw
    Yi,:,:=XWi,:,:,:i=1,...,oY_{i,:,:}=XW_{i,:,:,:}\quad i=1,...,oYi,:,:=XWi,:,:,:i=1,...,o

意义

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

1X1卷积层

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

池化层

二维最大池化

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

平均池化层

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

总结

  • 池化层返回窗口中最大或平均值
  • 缓解卷积层会位置的敏感性
  • 同样有窗口大小、填充、和步幅作为超参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟炼丹师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值