alexnet

接下来本文将一步步对该网络配置结构中各个层进行详细的解读(训练阶段):

1. conv1阶段DFD(data flow diagram):

alexnet_第1张图片

2. conv2阶段DFD(data flow diagram):

alexnet_第2张图片

3. conv3阶段DFD(data flow diagram):


4. conv4阶段DFD(data flow diagram):


5. conv5阶段DFD(data flow diagram):

alexnet_第3张图片

6. fc6阶段DFD(data flow diagram):

alexnet_第4张图片

7. fc7阶段DFD(data flow diagram):

alexnet_第5张图片

8. fc8阶段DFD(data flow diagram):

alexnet_第6张图片



架构

ReLU

一句话概括:不用simgoid和tanh作为激活函数,而用ReLU作为激活函数的原因是:加速收敛。
因为sigmoid和tanh都是饱和(saturating)的。何为饱和?个人理解是把这两者的函数曲线和导数曲线plot出来就知道了:他们的导数都是倒过来的碗状,也就是,越接近目标,对应的导数越小。而ReLu的导数对于大于0的部分恒为1。于是ReLU确实可以在BP的时候能够将梯度很好地传到较前面的网络。

Local Responce Normalization

一句话概括:本质上,这个层也是为了防止激活函数的饱和的。
个人理解原理是通过正则化让激活函数的输入靠近“碗”的中间,从而获得比较大的导数值。
所以从功能上说,跟ReLU是重复的。
不过作者说,从试验结果看,LRN操作可以提高网络的泛化能力,将错误率降低了大约1个百分点。

Overlapping Pooling

一句话概括,从试验结果看,作者认为Overlapping之后,能够减少网络的过拟合。

Overall Architecture

一句话概括,5个卷积层+3个全连接层+1个softmax层。在第1,2,5个卷积层后加了一个LRN和Max Pooling。

Reducing Overfitting

Data Augmentation

用了两种方法:

  1. 随机crop。训练时候,对于256*256的图片进行随机crop到224*224,然后允许水平翻转,那么相当与将样本倍增到((256-224)^2)*2=2048。测试时候,对左上、右上、左下、右下、中间做了5次crop,然后翻转,共10个crop,之后对结果求平均。作者做,不做随机crop,大网络基本都过拟合(under substantial overfitting)。
  2. 对RGB空间做PCA,然后对主成分做一个(0, 0.1)的高斯扰动。结果让错误率又下降了百分一。

dropout

一句话概括,在第1,2个全连接层后面加入了dropout后,能够防止过拟合。不加,也是会under substantial overfitting的。

Detail of learning

  • batch: 128
  • momenttum: 0.9
  • weight decay: 0.0005
  • init the weights: Guassian(0, 0.01)
  • init the bias: constant 1 or constant 0
  • learning rate: 0.01, divide by 10 while valid error rate stopped improving

Result

主要看ILSVRC-2012的结果。
文中模型top1 40.7%,top5 18.2%
五个模型平均出来后是top1 38.1%和top5 16.4%

Discussion

  • 模型没有用到unsupervised pre-training
  • 如果删去任何一个卷积层,top1 error会升高2%左右

你可能感兴趣的:(alexnet)