NIPS 2012 《ImageNet Classification with Deep Convolutional Neural Networks》
Alex Krizhevsky | Ilya Sutskever | Geoffrey E. Hinton
PaperLink
基本参数
input: 224×224大小的图片,3通道
conv1: 11×11大小的卷积核96个,每个GPU上48个。
max-pooling: 2×2的核。
conv2: 5×5卷积核256个,每个GPU上128个。
max-pooling: 2×2的核。
conv3: 与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
conv4: 3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
conv5: 3×3的卷积核256个,两个GPU上个128个。
max-pooling: 2×2的核。
FullyConnected1: 4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
FullyConnected2: 4096维
Softmax: 输出为1000,输出的每一维都是图片属于该类别的概率。
一些操作
ReLU
使用非线性饱和函数ReLU作为神经元激活函数 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
数据增强
- 随机抓取224x224的小块,以及它的水平翻转:
从256x256的图片中抓取224x224的小块,并用这抓取的小块来训练网络;
使训练集增加了2048倍,但是样本间有高度依赖性;
不使用这个方案时,出现大量的过拟合;
测试阶段时,抓取5个224x224的小块以及它们的水平翻转(共10个)来做预测,并对这10个小块的softmax预测值做平均。 - 改变训练图像中的RGB通道的强度:
遍历ImageNet训练集,在RGB像素值的集合上使用PCA
使已知的主成分加倍
比例为对应特征值乘以一个随机变量
随机变量服从均值为0,标准差为0.1的高斯分布
Dual GPU
使用了两个NVIDIA GTX 580 3GB GPU
每个GPU有一半的kernel,且只在一些特定的层,GPU之间才进行通信:
- 第2、4、5卷积层的输入只连接了位于同一GPU的前一层的kernel;
- 第3层连接了第2层所有kernel(两个GPU的);
- 全连接层是与前一层所有神经元连接的(两个GPU的)。
LRN(Local Response Normalization)局部响应归一化
b x , y i = a x , y i / ( k + α ∑ j = max ( 0 , i − n / 2 )