Daily Notes 7.11

  • Very deep convolutional networks for large-scale image recognition

Very deep convolutional networks for large-scale image recognition (VGG)

本文中对数据的预处理也用了 Alexnet 里提到的方法,就是把数据的像素 RGB 值减去整个训练集的平均值。同时还利用了1 x 1的卷积核,文中认为1 x 1的卷积核相当于是对输入的通道做了一次线性变换。文中还提到不是所有的卷积层后面都跟着 max-pooling 层,感觉也是很神奇。

然后作者表示 Alexnet 的 LRN 操作并没有起到多大作用。
作者认为在整个网络里使用3 x 3的卷积核可以让网络获得深度(其中会有更多的 rectification 层来让判别),另一方面通过堆叠(三层)3 x 3来获得7 x 7的感受域的话所需权重的数量要少一些,减少训练过程中的内存占用。文中认为使用1 x 1的卷积(后面跟着 ReLU )可以增强决策函数的非线性性而不对感受域的大小造成影响。本质上可以把1 x 1的卷积看作是在空间中的一次线性变换。

VGG 里面也使用了 dropout。作者表示我们的方案比 Alexnet 需要训练的 epoch 数要少,一是因为更深的网络和更小的卷积核隐式地起到了 regularize 的功能,二是因为一些层进行了参数的初始化。

在训练的时候先预训练一个图片大小固定的(384,训 384 的时候用训 256 的时候的参数初始化),然后再训练的时候用 384 的参数来初始化,每处理一张图的时候,都从$[256, 512]$里随机一个数来表示图片的大小。作者认为这样的操作可以捕捉由于图像中目标大小不一致引入的信息。

文中表示做了数据的水平翻转来增强,但是没有用 Alexnet 里面提到的那个多次取样放到网络里训,因为这里的网络结构用卷积层替换掉了原来的全连接层,就可以直接在整张图上操作了。

实验部分中,作者提到选用多个模型融合(对结果求平均)可以取得更好地结果。

Terms

Stochastic Gradient Descent

考虑到最初的梯度下降对于每次迭代都使用全部的样本,成本较高,SGD 简化了这个过程,在每次迭代的时候只对一个样本计算梯度,可以看做是 online learning 。

Mini-Batch Gradient Descent

SGD 每次只用一个样本,如果遇上了噪声则很容易陷入局部最优解,所以使用 mini-batch 的思想,每次使用一批放进去计算梯度来更新。