文章和代码曾经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 神经网络根底 也可获取。

CNN

卷积神经网络发展史

卷积神经网络(convolutional neural networks, CNN )
CNN 是针对图像畛域工作提出的神经网络,经验数代人的倒退,在2012年之后大部分图像工作被CNN统治,例如图像分类,图像宰割,指标检测,图像检索等。

CNN构造受视觉零碎启发:1962 年,生物学家Torsten WieseI 和 David H. Hubel(1981年的诺贝尔医学奖)对猫的视觉零碎进行钻研,首次发现猫的视觉零碎中存在层级机构,并且发现了两种重要的细胞 simple cells 和 compIex cells,不同类型细胞承当不同抽象层次的视觉感知性能。

猫的视觉零碎试验

  1. 在猫脑上关上 3mm, 插入电极
  2. 让猫看各种形态、地位、亮度和静止的光条
  3. 察看大脑视觉神经元激活状况

神经元存在部分感触区域 ( receptive field),也称感触野

细胞感触区域存在差别:如C细胞和D细胞相同(图中X示意有响应,三角示意无响应)

细胞对角度有选择性。如图所示的该细胞对垂直光条响应最强。

细胞对静止方向有选择性(如图,a种形式感应更加强烈)

对CNN启发:

  1. 视觉零碎是分层、分级的进行解决,从低级到高级的形象过$\to$类比重叠应用卷积和池化
  2. 神经元实际上是存在部分的感触区域的,具体来说,它们是部分敏感$\to$类比神经元部分连贯

第一个卷积神经网络雏形——新认知机(Neocognitron)

1980 年,日本学者福岛邦彦(Kunihiko Fukushima) 借鉴猫视觉零碎试验论断,提出具备层级构造的神经网络一一新认知机,重叠应用相似于S细胞和C细胞的两个构造。S细胞和 C 细胞可类比古代CNN的卷积和池化。

毛病: 没有反向流传算法更新权值,模型性能无限。

福岛邦彦主页 :http://personalpage.flsi.or.jp/fukushima/index-e.html

第一个大规模商用卷积神经网络——Lenet-5

1989 年,Lecun 等人已开始钻研Lenet;1998 年,Lecun等人提出Lenet-5,并胜利在美国邮政零碎中大规模利用于手写邮政编码辨认

毛病:无大量数据和高性能计算资源

第一个技惊四座的卷积神经网络——AlexNet

2012年,AlexNet以超出第二名10.9个百分点的问题夺得ILSVRC分类工作冠军,从此拉开卷积神经网络告诉图像畛域尾声。

  • 算料:ImageNet
  • 算力:GPU(GTX580 * 2)
  • 算法:AlexNet

卷积操作

卷积层(Convolutional Layer)

图像识别特点:

  • 特色具备局部性:例如老虎重要特色“王字”仅呈现在头部区域 —— 卷积核每次仅连贯K*K区域,K*K是卷积核尺寸;

  • 特色可能呈现在任何地位——卷积核参数重复使用(参数共享),在图像上滑动(示例图像起源:https://github.com/vdumoulin/conv_arithmetic)

0×0+1x1+3×2+4×3 =19

  • 下采样图像,不会扭转图像指标

卷积核

卷积核:具可学习参数的算子,用于对输出图像进行特征提取,输入通常称为特色图(feature maps)。

具体的过程能够依据理论状况模仿以下,例如第一个边缘检测的卷积核,如果一个像素差异不大的图像,通过该卷积核卷积过程后,大概率是两头的8份额减去旁边的8个1份额,最初为0,显示为彩色。如果存在边缘非常明显的局部,通过缩小之后数值依然较大,显示为红色,因而能够造成边缘的轮廓。

2012年AlexNet网络第一个卷积层卷积核可视化,卷积核出现边缘、频率和色调上的特色模式。

填充 (Padding):在输出图像的四周增加额定的行/列

作用:

  • 使卷积后图像分辨率不变,不便计算特色图尺寸的变动
  • 补救边界信息“失落"

步幅(Stride) :卷积核滑动的行数和列数称为步幅,管制输入特色图的大小,会被放大1/s倍。

卷积会向下取整,到边界不满足信息的话,会向下取整。(即便存在边缘信息,然而如果不满足步幅,也会舍弃)

输入特色图尺寸计算:

$$\mathrm{F}_{\mathrm{o}}=\left[\frac{\mathrm{F}_{\text {in }}-\mathrm{k}+2 \mathrm{p}}{\mathrm{s}}\right]+1$$

$$\frac{[4-3+2 * 0]}{1}+1=2$$

$$\frac{[6-3+2 * 1]}{2}+1=3$$

$$\frac{[5-3+2 * 1]}{1}+1=5$$

多通道卷积 : RGB图像是3*h*w的三维的数据,第一个维度3,示意channel,通道数

一个卷积核是3-D张量,第一个维与输出通道无关

注:卷积核尺寸通常指高、宽

如上,卷积核的规模为2x3x3x3。实质上还是一个二维卷积。

池化操作

图像识别特点

  • 下采样图像,不会扭转图像指标——升高计算量,缩小特色冗余

池化:一个像素示意一块区域的像素值,升高图像分辨率

一块区域像素如何被一个像素代替:

  • 办法1: Max Pooling,取最大值
  • 办法2: Average Pooling,取平均值
当初的模型中很多都不太用池化操作,而采纳一个步长为2的卷积代替池化,通过它也能够实现升高图像的分辨率。(池化也能够了解为一种非凡的卷积,例如能够将Max pooling了解为一个最大值权值为1,其余权值为0的卷积核,将Average Pooling了解为一个均匀权值的卷积核)。

因而输入尺寸计算与卷积操作相似:(留神:池化层无可学习参数)

$$\mathrm{F}_{\mathrm{o}}=\left\lfloor\frac{\mathrm{F}_{\text {in }}-\mathrm{k}+2 \mathrm{p}}{\mathrm{s}}\right\rfloor+1$$

池化作用

  1. 缓解卷积层对地位的适度敏感

    第一行为原矩阵,第二行为卷积后的矩阵,第三行为池化后的矩阵。左右比照可知,增加扰动后卷积后果受到影响,然而池化后果并未受到影响。参考:https://zhuanlan.zhihu.com/p/103350961

  2. 缩小冗余
  3. 升高图像分辨率,从而缩小参数量

Lenet-5及CNN构造进化史

1998-Lecun-Gradient-Based Learning Applied to Document Recognition

特征提取器:C1、S2、C3、S4

  • C1层: 卷积核K1=(6, 1, 5, 5), p=1, s=1,output=(6, 28, 28)
  • S2层: 最大池化层, 池化窗口=(2,2),s=2,output=(6, 14, 14)
  • C3层: 卷积核K3=(16, 6, 5, 5), p=1, s=1,output=(16, 10, 10)
  • S4层: 最大池化层, 池化窗口=(2,2),s=2,output=(16, 5, 5)

分类器:3个FC层

  • FC层: 3个FC层输入分类

CNN进化史

  1. 1980 Neocognition 福岛邦彦
  2. 1998 Lenet-5 Lecun
  3. 2012 AlexNet Alex
  4. 2014 GoogLenet Google
  5. 2014 VGG-Net VGG
  6. 2015 ResNet Kaiming He
  7. 2017 DenseNet Gao Huang
  8. 2017 SE-Net Jie Hu

参考

所有卷积示例图像的起源:https://github.com/vdumoulin/conv_arithmetic