卷积Convolution

从全连接层到卷积

两个原则

  • 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
  • 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

从全连接层到卷积

  • 将输入和输出变为矩阵
  • 将权重变为4-D张量
    h_{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}
  • V是W的重新索引,令k = i + a, l = l + b即可

原则

1.平移不变性
  • x的平移导致h的平移h_{i, j}= \sum_{a, b}v_{i, j, a, b}x_{i + a, j + b}
  • v不依赖于(i, j)
  • 因此令v_{i,j,a,b}=v_{a,b}h_{i, j}= \sum_{a, b}v_{a, b}x_{i + a, j + b}
2.局部性
  • 当评估h_{i, j}时,不应该用远离x_{i, j}的参数
  • 因此令v_{a, b} = 0, |a|, |b| >\Delta

这样得到了二维卷积(交叉相关)

卷积层

file

二维卷积层

  • 输入X: n_h \times n_w
  • 核(Kernel) W: k_h \times K_w
  • 偏差b \in \mathbb{R}
  • 输出Y: (n_h - k_h + 1) \times (n_w - k_w + 1)
    Y = W * X + b

W和b是可学习的参数

stride和padding

padding 填充

在输入周围添加额外的行和列

file

通常,如果我们添加p_h行填充(大约一半在顶部,一半在底部)和p_w列填充(左侧大约一半,右侧一半),则输出形状将为

(n_h-k_h+p_h+1)\times(n_w-k_w+p_w+1)

这意味着输出的高度和宽度将分别增加p_hp_w

在许多情况下,我们需要设置p_h=k_h-1p_w=k_w-1,使输入和输出具有相同的高度和宽度。

stride 步幅

行列的滑动步长

file

通常,当垂直步幅为s_h、水平步幅为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.

如果我们设置了p_h=k_h-1p_w=k_w-1,则输出形状将简化为\lfloor(n_h+s_h-1)/s_h\rfloor \times \lfloor(n_w+s_w-1)/s_w\rfloor
更进一步,如果输入的高度和宽度可以被垂直和水平步幅整除,则输出形状将为(n_h/s_h) \times (n_w/s_w)

LeNet

本文的最后,我们来介绍早期的卷积神经网络LeNet,最早用于识别支票上的手写数字

file

LeNet的结构比较简单,总体上来看由两部分构成

  • 卷积编码器
  • 全连接稠密层

每个卷积块的的基本单元是: 一个卷积层、一个sigmoid函数、一个平均池化层(当时还没有ReLU和最大池化层)

第一个卷积层有6个输出通道,第二个卷积层有16个输出通道
每个2x2池化层(stride=2)将维数减少四倍。

从卷积层传到全连接层时,我们需要展平样本。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇