623 字
3 分钟
卷积神经网络

两个原则? 平移不变性和局部性

重新考察全连接层#

  1. 将输入和输出变形为矩阵(宽度,高度)

  2. 将权重变形为4-D张量(h,w)(h,w)(h,w)(h',w')

    i,j=k,lwi,j,k,lxk,l=a,bvi,j,a,bxi+a,j+b_{i,j}=\sum_{k,l}w_{i,j,k,l}x_{k,l}=\sum_{a,b}v_{i,j,a,b}x_{i+a,j+b} 权重变形示意图
  3. vvww的重新索引vi,j,a,b=wi,j,i+a,j+bv_{i,j,a,b}=w_{i,j,i+a,j+b}

原则 #1 - 平移不变性#

  • xx的平移导致hh的平移hi,j=a,bvi,j,a,bxi+a,j+bh_{i,j}=\sum_{a,b}v_{i,j,a,b}x_{i+a,j+b}
  • vv不应该依赖于(i,j)(i,j)
  • 解决方案:vi,j,a,b=va,bv_{i,j,a,b}=v_{a,b} i,j=a,bva,bxi+a,j+b_{i,j}=\sum_{a,b}v_{a,b}x_{i+a,j+b}
  • 这就是2维交叉相关

原则 #2 - 局部性#

hi,j=a,bva,bxi+a,j+bh_{i,j}=\sum_{a,b}v_{a,b}x_{i+a,j+b}
  • 当评估hi,jh_{i,j}时,我们不应该用远离xi,jx_{i,j}的参数
  • 解决方案:当a,b>Δ|a|,|b| > \Delta时,使得va,b=0v_{a,b}=0 i,j=a=ΔΔb=ΔΔva,bxi+a,j+b_{i,j}=\sum_{a=-\Delta}^{\Delta}\sum_{b=-\Delta}^{\Delta}v_{a,b}x_{i+a,j+b}

总结#

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

填充#

NOTE

对图像进行一次卷积操作后,输出的矩阵相较于输入的矩阵会变小。假设给定(32×32)(32\times 32)的输入图像,应用5×55\times 5大小的卷积核:

  • 第1层得到输出大小为28×2828 \times 28
  • 第7层得到输出大小为4×44\times 4 如果用更大的卷积核,则输出矩阵的缩小会变得更快,形状会从nh×nwn_h\times n_w减少到(nhkh+1)×(nwkw+1)(n_h-k_h+1)\times (n_w-k_w+1)

为了解决这个缩小的问题,我们选择在输入周围添加额外的行/列 填充php_h行和pwp_w列,输出的形状为(nhkh+ph+1)×(nwkw+pw+1)(n_h-k_h+p_h+1)\times (n_w-k_w+p_w+1) 通常取ph=kh1p_h=k_h-1pw=kw1p_w=k_w-1

  • khk_h为奇数:在上下两侧填充ph/2p_h/2
  • khk_h为偶数:在上侧填充ph/2\lceil p_h/2 \rceil,在下侧填充ph/2\lfloor p_h/2 \rfloor

步幅#

填充减小的输出大小与层数线性相关,给定输入大小224×224224 \times 224,在使用5×55 \times 5卷积核的情况下需要4444层将输出降低到4×44\times 4 需要大量的计算才能得到较小输出

步幅是指行/列的滑动步长,例:高度3宽度2的步幅 当垂直步幅为shs_h、水平步幅为sws_w时,输出形状为(nhkh+ph+sh)/sh×(nwkw+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 如果我们设置了ph=kh1p_h=k_h-1pw=kw1p_w=k_w−1,则输出形状将简化为

(nh+sh1)/sh×(nw+sw1)/sw\lfloor(n_h+s_h-1)/s_h\rfloor \times \lfloor(n_w+s_w-1)/s_w\rfloor

更进一步,如果输入的高度和宽度可以被垂直和水平步幅整除,则输出形状将为

(nh/sh)×(nw/sw)(n_h/s_h) \times (n_w/s_w)

IMPORTANT

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

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

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

卷积神经网络
https://faina.me/posts/rnn/
作者
岁杪二四
发布于
2025-05-04
许可协议
CC BY-NC-SA 4.0