CNN卷积神经网络笔记

来源:互联网 发布:安徽南瑞继远 知乎 编辑:程序博客网 时间:2024/05/22 06:20

来源:CS231n,知乎。

网址:

https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit

https://study.163.com/course/courseMain.htm?courseId=1003223001


1.卷积神经网络的结构

(1) 数据输入层/ Input layer

(2) 卷积计算层/ CONV layer

(3) 激励层 / Activation layer

(4) 池化层 / Pooling layer

(5) 全连接层 / FC layer

(6) Batch Normalization层(可能有)


(图片来源:CS231n)

2. 数据处理方式

(1) 去均值 :把输入数据各个维度都中心化到0

(2) 归一化 :幅度归一化到同样的范围

(3) PCA/白化 :白化是对数据每个特征轴上的幅度归一化




3.卷积层

3.1 概述

卷积层的参数是有一些可学习的滤波器集合构成的。每个滤波器在空间上(宽度和高度)都比较小,但是深度和输入数据一致。举例来说,卷积神经网络第一层的一个典型的滤波器的尺寸可以是5x5x3(宽高都是5像素,深度是3是因为图像应为颜色通道,所以有3的深度)。在前向传播的时候,让每个滤波器都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个滤波器和输入数据任一处的内积。当滤波器沿着输入数据的宽度和高度滑过后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处滤波器的反应。直观地来说,网络会让滤波器学习到当它看到某些类型的视觉特征时就激活,具体的视觉特征可能是某些方位上的边界,或者在第一层上某些颜色的斑点,甚至可以是网络更高层上的蜂巢状或者车轮状图案。

3.2 局部关联

让每个神经元只与输入数据的一个局部区域连接。如图

假设输入数据体尺寸为[32x32x3](比如CIFAR-10的RGB图像),如果感受野(或滤波器尺寸)是5x5,那么卷积层中的每个神经元会有输入数据体中[5x5x3]区域的权重,共5x5x3=75个权重(还要加一个偏差参数)。注意这个连接在深度维度上的大小必须为3,和输入数据体的深度一致。

3.3 卷积核的参数

3个超参数控制着输出数据体的尺寸:深度(depth),步长(stride)零填充(zero-padding)。
深度:如下图所示,深度为5,这里的深度指的是沿着深度方向排列、感受野相同的神经元集合称为深度列。

步长:在滑动滤波器的时候,必须指定步长。当步长为1,滤波器每次移动1个像素。当步长为2(或者不常用的3,或者更多,这些在实际中很少使用),滤波器滑动时每次移动2个像素。
零填充:零填充(zero-padding)的尺寸是一个超参数。零填充有一个良好性质,即可以控制输出数据体的空间尺寸(最常用的是用来保持输入数据体在空间上的尺寸,这样输入和输出的宽高都相等)。
三者的关系:假设输入数组空间是正方形,输出数据体在空间上的尺寸可以通过输入数据体尺寸(W),卷积层中神经元的感受野尺寸(F),步长(S)和零填充的数量(P)的函数来计算。输出数据体的空间尺寸为(W-F +2P)/S+1。比如输入是7x7,滤波器是3x3,步长为1,填充为0,那么就能得到一个5x5的输出。如果步长为2,输出就是3x3。

3.4 参数共享

(1) 假设每个神经元连接数据窗的权重是固定的
(2) 固定每个神经元连接权重, 可以看做模板 ,每个神经元只关注一个特性。
(3) 一组固定的权重和不同窗口内数据做内积: 卷积
(4) 参数大大减少
参数共享的假设是有道理的:如果在图像某些地方探测到一个水平的边界是很重要的,那么在其他一些地方也会同样是有用的,这是因为图像结构具有平移不变性。所以在卷积层的输出数据体的不同位置中,就没有必要重新学习去探测一个水平边界了。

4.激励层

把卷积层输出结果做非线性映射 

4.1 常见的激励函数:

(1)Sigmoid
(2)Tanh(双曲正切)
(3)ReLU
(4)Leaky ReLU
(5)ELU
(6)Maxout

4.2 选择激活函数

(1) CNN慎用sigmoid慎用sigmoid慎用sigmoid
(2) 首先试RELU因为快。
(3)如果2失效请用Leaky ReLU或者Maxout
(4)某些情况下tanh倒是有不错的结果但是很少

5.池化层

通常,在连续的卷积层之间会周期性地插入一个汇聚层。它的作用是逐渐降低数据体的空间尺寸,这样的话就能减少网络中参数的数量,使得计算资源耗费变少,也能有效控制过拟合。汇聚层使用MAX操作,对输入数据体的每一个深度切片独立进行操作,改变它的空间尺寸。最常见的形式是汇聚层使用尺寸2x2的滤波器,以步长为2来对每个深度切片进行降采样,将其中75%的激活信息都丢掉。


5.1 不使用池化层

很多人不喜欢汇聚操作,认为可以不使用它。比如在Striving for Simplicity: The All Convolutional Net一文中,提出使用一种只有重复的卷积层组成的结构,抛弃汇聚层。通过在卷积层中使用更大的步长来降低数据体的尺寸。有发现认为,在训练一个良好的生成模型时,弃用汇聚层也是很重要的。比如变化自编码器(VAEs:variational autoencoders)和生成性对抗网络(GANs:generative adversarial networks)。现在看起来,未来的卷积网络结构中,可能会很少使用甚至不使用汇聚层。

6.全连接层

两层之间所有神经元都有权重连接 ,通常全连接层在卷积神经网络尾部 。

7.典型的CNN结构

INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC





















原创粉丝点击