深度学习1——卷积神经网络CNN

什么是CNN?

深度学习1——卷积神经网络CNN_第1张图片

  • 卷积层
  • 池化层
  • 全连接层
  • 非线性层,例如:ReLU
  • 其他层,例如:RNN

为什么CNN是有意义的?

动机(motivation)

卷积利用了下面4个想法来机器学习系统:

1.稀疏交互

  • 稀疏交互的概念:指卷积网络最后的全连接层与输入层之间的“间接连接”是非全连接的,多次卷积可以找出一种合理的连接,使输入图片分成各种“小区域”,这种小区域再成为全连接层的输入
  • 稀疏交互的实现:通过使用比输入更小的核(kernel)
  • 稀疏交互的作用:只需要存储更少的参数,在计算输出时,需要更少的运算 $O(m \times n) v.s.O(k \times n) $

深度学习1——卷积神经网络CNN_第2张图片
上图为没有稀疏交互的全连接网络,可以看到计算 h 3 h_3 h3 时需要 x 1 x_1 x1 x 6 x_6 x6 的所有值。
深度学习1——卷积神经网络CNN_第3张图片
上图为有稀疏交互的卷积层,此时 kernel 的大小为3,移动的步长(stride)为1, h 3 h_3 h3 只依赖于 x 2 , x 3 , x 4 x_2, x_3, x_4 x2,x3,x4.
深度学习1——卷积神经网络CNN_第4张图片
要注意的一点是,CNN的链接是稀疏的,但是随着层数的加深,更深层数的节点将与所有的输入节点相连(如上图所示),也就是说更深层次的节点有着更大的感受野。

  1. 参数共享
  • 在CNN中,参数是相互关联的:应用于一个输入的权重与应用于其他输入的权重值相关联

  • 在整个图像中使用相同 kernel,因此不是为每个位置学习一个参数,而是只学习一组参数

  • 向前传播的过程没有改变,仍然为 O ( k × n ) O(k \times n) O(k×n)

  • 存储的容量提高, k < < m , n k << m, n k<<m,n
    深度学习1——卷积神经网络CNN_第5张图片3. 等变性(Equivariance)

  • 卷积的定义:
    s ( t ) = ( x ∗ w ) ( t ) = ∫ x ( a ) w ( t − a ) d a s(t) = (x *w)(t) = \int x(a)w(t-a)da s(t)=(xw)(t)=x(a)w(ta)da

  • 在卷积网络中, x x x 相当于输入, w w w 是权值,也就是卷积核, s s s 是特征图

  • 离散卷积:
    S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) S(i, j) = (I * K)(i, j) = \sum_m \sum_n I(m,n)K(i-m, j-n) S(i,j)=(IK)(i,j)=mnI(m,n)K(im,jn)

  • 卷积是可交换的:
    S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) S(i, j) = (I * K)(i, j) = \sum_m \sum_n I(i-m, j-n)K(m, n) S(i,j)=(IK)(i,j)=mnI(im,jn)K(m,n)
    上面两个式子, K ( i − m , j − n ) K(i-m, j-n) K(im,jn) 变为 K ( m , n ) K(m, n) K(m,n) ,相当于对卷积核进行了翻转和平移。
    但需要注意的是,对于图像的卷积与数学上的卷积是不一样的。这里对于图像的卷积其实是互相关的操作。

综上所述,

  • 函数 f f f g g g是等变的,是指满足:
    f ( g ( x ) ) = g ( f ( x ) ) f(g(x)) = g(f(x)) f(g(x))=g(f(x))

  • 参数共享的形式使得CNN的每一层都满足变换的不变性。也就是说, g g g可以对输入图像进行的任何变换(翻转和平移),那么卷积函数与 g g g是等变的

  • 在处理时间序列数据时,卷积产生一个时间线,显示不同特征出现的时间(如果事件在输入中发生时间偏移,则相同的表示将出现在输出中)

  • 对于图像:如果在图像中移动一个对象,它的表示将在输出中移动相同的量

  • 这个性质可以用在边缘探测中

  • 需要注意的是,卷积对于其他的运算,例如改变规模或旋转,是不具有不变性的

  • 能够处理大小可变的输入

卷积层

卷积的过程

深度学习1——卷积神经网络CNN_第6张图片深度学习1——卷积神经网络CNN_第7张图片深度学习1——卷积神经网络CNN_第8张图片
从左到右,从上到下依次移动卷积核,直到将image 全部走完,得到特征图。
深度学习1——卷积神经网络CNN_第9张图片

卷积的参数

以上述过程为例进行分析。上述过程,步长(stride)为1,卷积核(kernel)的大小为 3 × 3 3 \times 3 3×3.

  • Output Size
    O = N − K S + 1 O = \frac{N-K}{S} +1 O=SNK+1
    这里, N N N 是输入图像的边长, K K K 是卷积核的大小, S S S为步长。
    例如, N = 6 , K = 3 , S = 1 N=6, K=3, S=1 N=6,K=3,S=1, 那么 O = 4 O = 4 O=4 ; N = 8 , K = 3 , S = 1 N=8, K=3, S=1 N=8,K=3,S=1, 那么 O = 6 O = 6 O=6 .
  • Zero Padding(补零)
    如果我们希望经过卷积后的输出与输入大小相等,一般会使用补零的操作。
    深度学习1——卷积神经网络CNN_第10张图片

如果步长S为1,卷积核大小为K,为保持输入输出大小相同,需要补 K − 1 2 \frac{K-1}{2} 2K1 层零。

多个卷积核

对于一幅图像,我们使用1个卷积核,将得到一张特征图;使用100个卷积核,将得到100张特征图。
深度学习1——卷积神经网络CNN_第11张图片

我们只考虑2维图像,彩色图像为RGB三通道,那么卷积核也是3通道(即卷积核深度为3)。
深度学习1——卷积神经网络CNN_第12张图片1. Output Size

  • 输入图像大小为: W 1 × H 1 × D 1 W_1 \times H_1 \times D_1 W1×H1×D1

  • 卷积核大小: K K K , 步长大小: S S S

  • 输出特征图大小为: W 2 × H 2 × D 2 W_2 \times H_2 \times D_2 W2×H2×D2

  • 那么有:
    W 2 = W 1 − K S + 1 W_2 = \frac{W_1-K}{S} +1 W2=SW1K+1
    H 2 = H 1 − K S + 1 H_2 = \frac{H_1-K}{S} +1 H2=SH1K+1

  • 卷积核的深度与输入图像深度一致

  • Parameters

  • Example Volume: 28 × 28 × 3 28 \times 28 \times 3 28×28×3 (RGB)

  • 100个 3 × 3 3 \times 3 3×3 的卷积核,步长为1

  • 如果想保持输入输出大小相同,需要补0多少层?
    答案: K − 1 2 = 3 − 1 2 = 1 \frac{K-1}{2} = \frac{3-1}{2} = 1 2K1=231=1

  • 这一层有多少个参数:
    答案:对于每一个卷积核,参数个数为: 3 × 3 × 3 + 1 = 28 3 \times 3 \times 3+1 = 28 3×3×3+1=28 ,包含一个偏置项;
    总的参数量为: 100 × 28 = 2800 100 \times 28 = 2800 100×28=2800

非线性层

深度学习1——卷积神经网络CNN_第13张图片

严格的说,这并不是神经网络的一层,只是对卷积结果进行非线性运算,上述激活函数使用的是ReLU函数。

池化层

对于输入图像的微小变换,池化后大多数输出的值并不发生改变。池化过程是下采样的一种方法。如果有多张特征图,经过池化后,得到的子图数量与原特征图数量相同。

池化过程

深度学习1——卷积神经网络CNN_第14张图片
与卷积类似,从左到右,从上到下移动,得到最终池化结果。
深度学习1——卷积神经网络CNN_第15张图片### 池化的作用

  • 如果我们只关心特征是否存在,而不是特征的精确位置,那么这种局部的变换时有用的
  • 由于池用于下采样,所以它可以用于处理不同大小的输入。

全连接层

深度学习1——卷积神经网络CNN_第16张图片

  • 全连接层将高维的卷积图转换为一个向量。

CNN的几个主要网络结构

LeNet-5

深度学习1——卷积神经网络CNN_第17张图片

  • 平均值池化
  • 非线性激活函数为:sigmoid 和 tanh
  • 最后使用了全连接层
  • 训练MINISE数据集
  • 卷积核: 5 × 5 5\times 5 5×5 , 步长为1
  • 池化: 2 × 2 2\times 2 2×2 ,步长为2
  • 参数个数:LeNet 参数的计算
  • 原文:Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, Gradient-based learning applied to document recognition, Proc. IEEE 86(11): 2278–2324, 1998.

AlexNet

深度学习1——卷积神经网络CNN_第18张图片

  • Max pooling, ReLU nonlinearity
  • 7 hidden layers, 650K units, 60M params
  • GPU implementation, trained on 2 GPUs for a week
  • Dropout regularization
  • 输入图像: 227 × 227 × 3 227\times 227\times 3 227×227×3
  • 第一层卷积:96个卷积核,K =11,S =4,输出图像的宽和高为: 227 − 11 4 + 1 = 55 \frac{227-11}{4} +1 =55 422711+1=55
  • 第一层总的参数量: 11 × 11 × 3 × 96 + 96 × 1 = 34944 11\times 11\times 3 \times 96 + 96\times 1 = 34944 11×11×3×96+96×1=34944
  • 第二层池化:1个kernel,K = 3, S = 2 , 输出图像的大小为: 55 − 3 2 + 1 = 27 \frac{55-3}{2} +1 = 27 2553+1=27
  • 第二层总的参数量:0
  • 特色:使用ReLU,数据增强技术(翻转,随机采样),dropout技术
  • 超参数: Dropout rate 0.5, Batch size = 128, Weight decay term: 0.0005 ,Momentum term = 0.9, learning rate = 0.01, manually reduced by factor of ten on monitoring validation loss
  • 原文:A. Krizhevsky, I. Sutskever, and G. Hinton, ImageNet Classification with Deep Convolutional Neural Networks, NIPS 2012

VGGNet

  • 参见VGGNet
  • 原文:K. Simonyan and A. Zisserman, Very Deep Convolutional Networks for Large-Scale Image Recognition, ICLR 2015

GoogLeNet

  • 参见GoogLeNet
  • 原文:C. Szegedy et al., Going deeper with convolutions, CVPR 2015

ResNet

  • 参见ResNet
  • 原文:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun, Deep Residual Learning for Image Recognition, CVPR 2016 (Best Paper)

致谢

•Shubhendu Trivedi and Risi Kondor, University of Chicago, Deep Learning Course
• Hung-yi Lee, National Taiwan University, Machine Learning and having it Deep and Structured course
• Xiaogang Wang, The Chinese University of Hong Kong, Deep Learning Course
• Fei-Fei Li, Standord University, CS231n Convolutional Neural Networks for Visual Recognition course

你可能感兴趣的:(DL,深度学习,神经网络)