问题引出
分类猫和狗的图片
- 使用一个还不错的相机采集图片(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,l∑wi,j,k,lxk,l=a,b∑vi,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、lk、l可以看作是绝对位置,而a、ba、ba、b是基于i、ji、ji、j的相对位置
我们再来看上面的两个原则:
平移不变性
-
对于上面的hi,jh_{i,j}hi,j,xxx的平移必然会导致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,b∑va,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
总结
- 对全连接层使用平移不变性和局部性得到卷积层
卷积层
下面是一个简单的二维卷积层


- 输入XXX:nh×nwn_h\times n_wnh×nw
- 核WWW:kh×kwk_h\times k_wkh×kw
- 偏差b∈Rb\in Rb∈R
- 输出YYY:(nh−kh+1)×(nw−kw+1)(n_h-k_h+1)\times(n_w-k_w+1)(nh−kh+1)×(nw−kw+1)Y=XW+bY=XW+bY=XW+b
- WWW和bbb都时可学习的参数
总结
- 卷积层将输入和核矩阵进行交叉相关,加上偏移后得到输出
- 核矩阵和偏移是可学习的参数
- 核矩阵的大小是超参数
填充和步幅
填充
- 在输入周围添加额外的行/列

- 如果我们填充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)(nh−kh+ph+1)×(nw−kw+pw+1) - 如果我们选择ph=kh−1p_h=k_h-1ph=kh−1,pw=kw−1p_w=k_w-1pw=kw−1,那么输入输出的纬度将相同
- 当khk_hkh为奇数:在上下两侧填充ph/2p_h/2ph/2
- 当khk_hkh为偶数:在上侧填充多一行,下侧填充少一行

步幅
-
填充减小的输出大小与层数线性相关
- 给定输入大小224×224,在使用5×5卷积核的情况下,需要44层将输出降低到4×4
- 需要大量计算才能得到较小输出
-
步幅是指行/列的滑动步长
- 例:高度3宽度2的步幅


- 例:高度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⌊(nh−kh+ph+sh)/sh⌋×⌊(nw−kw+pw+sw)/sw⌋ -
如果ph=kh−1p_h=k_h-1ph=kh−1,pw=kw−1p_w=k_w-1pw=kw−1,那么可以简化为:
⌊(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⌊(nh−1+sh)/sh⌋×⌊(nw−1+sw)/sw⌋ -
更进一步,如果输入的高度和宽度刚好能被对应的步幅整除:
(nh/sh)×(nw/sw)(n_h/s_h)\times(n_w/s_w)(nh/sh)×(nw/sw)
总结 -
填充和步幅是卷积层的超参数
-
填充在输入周围添加额外的行/列,来控制输出形状的减少量
-
步幅是每次滑动核窗口时的行/列的步长,可以成倍的减少输出形状
多输入输出通道
- 彩色图像可能有RGB三个通道
- 转换为灰度会丢失信息

多个输入通道 - 每个通道都有一个卷积核,结果是所有通道卷积结果的和

- 输入XXX:ci×nh×nwc_i\times n_h\times n_wci×nh×nw
- 核WWW:ci×kh×kwc_i\times k_h\times k_wci×kh×kw
- 输入XXX:mh×mwm_h\times m_wmh×mw
Y=∑i=0ciXi,:,:Wi,:,:Y=\sum\limits_{i=0}^{c_i}X_{i,:,:}W_{i,:,:}Y=i=0∑ciXi,:,:Wi,:,:
多个输出通道
- 无论有多少输入通道,到目前为止我们只用到单输出通道
- 我们可以有多个三维卷积核,每个核生成一个输出通道
- 输入XXX:ci×nh×nwc_i\times n_h\times n_wci×nh×nw
- 核WWW:co×ci×kh×kwc_o\times c_i\times k_h\times k_wco×ci×kh×kw
- 输入XXX:co×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的全连接层
池化层
二维最大池化
- 返回滑动窗口的最大值

填充、步幅和多个通道 - 池化层与卷积层类以,都具有填充和步幅
- 没有可学习的参数
- 在每个输入通道应用池化层以获得相应的输出通道
- 输出通道数=输入通道数
平均池化层
- 平均池化层:将最大池化层中的“最大”操作替换为“平均”
总结
- 池化层返回窗口中最大或平均值
- 缓解卷积层会位置的敏感性
- 同样有窗口大小、填充、和步幅作为超参数

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

被折叠的 条评论
为什么被折叠?



