CS231n学习笔记--9.CNN Architectures

来源:互联网 发布:韧带 知乎 编辑:程序博客网 时间:2024/05/20 10:12

1. AlexNet


Tips:

  1. Trained on GTX 580 GPU with only 3 GB of memory.Network spread across 2 GPUs, half the neurons (feature maps) on each
    GPU.所以在CONV1中分为两部分,每部分输出大小为55X55X48!

  2. CONV1, CONV2, CONV4, CONV5: Connections only with feature maps on same GPU

  3. CONV3, FC6, FC7, FC8: Connections with all feature maps in
    preceding layer, communication across GPUs

  4. heavy data augmentation:

    a. 增大训练样本:通过对于图像的变换实现了对于数据集合的enlarge。首先对于输入的图像(size 256*256)随机提取224*224的图像集合,并对他们做一个horizontal reflections。变换后图像和原图像相差了32个像素,因此主体部分应该都包含在训练集合中,相当于在位置这个维度上丰富了训练数据。对horizontal reflections来说,相当于相机在主轴方向做了镜像,丰富了反方向的图像。数据集合增大了2048倍,直接结果就是降低了overfitting同时降低了网络结构设计的复杂层度。

    在测试阶段,取每一个测试样本四个角以及中间区域,一共5个patch然后再镜像后得到10个样本输入到网络中,最后将10个softmax输出平均后作为最后的输出。

    b.使用PCA对于训练数据进行增强:对于每一个RGB图像进行一个PCA的变换,完成去噪功能,同时为了保证图像的多样性,在eigenvalue上加了一个随机的尺度因子,每一轮重新生成一个尺度因子,这样保证了同一副图像中在显著特征上有一定范围的变换,降低了overfitting的概率。

  5. Norm layers:

    更常用的是Local Response Normalization:
    使用ReLU f(x)=max(0,x)后,你会发现激活函数之后的值没有了tanh,sigmoid函数那样有一个值域区间,所以一般在ReLU之后会做一个normalization,LRU就是其中一种方法,在神经科学中有个概念叫“Lateral inhibition”,讲的是活跃的神经元对它周边神经元的影响。


从这个公式中可以看出,原来的激活值a被加一个归一化权重(分母部分)生成了新的激活b,相当于在同一个位置(x,y),不同的map上的激活进行了平滑,平滑操作大概可以将识别率提高1-2个百分点。之后,这一层已经被其它种的Regularization技术,如drop out, batch normalization取代了。知道了这些,似乎也可以不那么纠结这个LRN了。

2. ZFNet



3. VGGNet


Tips:

  1. 用更小的filters的原因是可以大大减少参数的数量,并通过增加depth,达到与较大filters相同的效果(从参考的邻域点考虑Stack of three 3x3 conv (stride 1) layers has same effective receptive field as
    one 7x7 conv layer)!
  2. No Local Response Normalisation (LRN)

VGGNet消耗资源表:


4. GoogLeNet

GoogLeNet架构:


Tips:

“Inception module”: design a good local network topology (network within a network) and then stack these modules on top of each other

初始的Inception module及其存在的问题:


Solution: “bottleneck” layers that use 1x1 convolutions to reduce feature depth:


Tips:

Add 1x1 CONV with 32 filters, preserves spatial dimensions, reduces depth! Projects depth to lower dimension (combination of feature maps).

改进的Inception module:


Full GoogLeNet architecture:


Auxiliary classification outputs可以缓解深度过深导致权重梯度过小而无法优化的现象!

5. ResNet

受到深度的意义的驱使,出现了这样一个问题:是不是更多的堆叠层就一定能学习出更好的网络?这个问题的一大障碍就是臭名昭著的梯度消失/爆炸问题,它从一开始就阻碍了收敛,然而梯度消失/爆炸的问题,很大程度上可以通过标准的初始化和正则化层来基本解决,确保几十层的网络能够收敛(用SGD+反向传播)。

  然而当开始考虑更深层的网络的收敛问题时,退化问题就暴露了:随着神经网络深度的增加,精确度开始饱和(这是不足为奇的),然后会迅速的变差。出人意料的,这样一种退化,并不是过拟合导致的,并且增加更多的层匹配深度模型,会导致更多的训练误差。如下图所示:


  我们通过引入一个深度残差学习框架,解决了这个退化问题。我们不期望每一层能直接吻合一个映射,我们明确的让这些层去吻合残差映射。形式上看,就是用H(X)来表示最优解映射,但我们让堆叠的非线性层去拟合另一个映射F(X):=H(X) - X, 此时原最优解映射H(X)就可以改写成F(X)+X,我们假设残差映射跟原映射相比更容易被优化。极端情况下,如果一个映射是可优化的,那也会很容易将残差推至0,把残差推至0和把此映射逼近另一个非线性层相比要容易的多。

  F(X)+X的公式可以通过在前馈网络中做一个“快捷连接”来实现 ,快捷连接跳过一个或多个层。在我们的用例中,快捷连接简单的执行自身映射,它们的输出被添加到叠加层的输出中。自身快捷连接既不会添加额外的参数也不会增加计算复杂度。整个网络依然可以用SGD+反向传播来做端到端的训练,并且可以很容易用大众框架来实现(比如Caffe)不用修改slover配置(slover是caffe中的核心slover.prototxt)

ResNet结构图:


ResNet结构特点:


更进一步的改进:


Training ResNet in practice:
- Batch Normalization after every CONV layer
- Xavier/2 initialization from He et al.
- SGD + Momentum (0.9)
- Learning rate: 0.1, divided by 10 when validation error plateaus
- Mini-batch size 256
- Weight decay of 1e-5
- No dropout used

各网络架构性能(准确率,耗时,占用内存)比较:


Tips:

  1. Inception-v4: Resnet + Inception!
  2. VGG: Highest memory, most operations
  3. GoogLeNet: most efficient
  4. AlexNet: Smaller compute, still memory heavy, lower accuracy
  5. ResNet: Moderate efficiency depending on model, highest accuracy


6. Other architectures

Network in Network (NiN):


Improving ResNets:


更宽的残差网络:



加入随机概念:


Fractal architecture with both shallow and deep paths to output:


Beyond ResNets


Efficient networks


Summary: CNN Architectures

  • VGG, GoogLeNet, ResNet all in wide use, available in model zoos
  • ResNet current best default
  • Trend towards extremely deep networks
  • Significant research centers around design of layer / skip connections and improving gradient flow
  • Even more recent trend towards examining necessity of depth vs.
    width and residual connections
阅读全文
0 0
原创粉丝点击