✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
个人主页:小嗷犬的个人主页
个人网站:小嗷犬的技术小站
个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
ImageNet Classification with Deep Convolutional Neural Networks,意为使用深度卷积神经网络在 ImageNet 数据集上进行分类,发表于 2012 年。
作者信息:
We trained a large, deep convolutional neural network to classify the 1.2 million high-resolution images in the ImageNet LSVRC-2010 contest into the 1000 different classes. On the test data, we achieved top-1 and top-5 error rates of 37.5% and 17.0% which is considerably better than the previous state-of-the-art. The neural network, which has 60 million parameters and 650,000 neurons, consists of five convolutional layers, some of which are followed by max-pooling layers, and three fully-connected layers with a final 1000-way softmax. To make training faster, we used non-saturating neurons and a very efficient GPU implementation of the convolution operation. To reduce overfitting in the fully-connected layers we employed a recently-developed regularization method called “dropout” that proved to be very effective. We also entered a variant of this model in the ILSVRC-2012 competition and achieved a winning top-5 test error rate of 15.3%, compared to 26.2% achieved by the second-best entry.
本文提出了一个大型深度卷积神经网络,该网络在 ImageNet LSVRC-2010 比赛任务(120 万张图片的 1000 分类任务)中,取得了 top-1 准确率 62.5% 和 top-5 准确率 83.0% 的好成绩,超越了以往所有的 SOTA 方法。
该网络有 6000 万个参数和 65 万个神经元,由五个卷积层组成,其中一些后面跟着最大池化层,以及三个全连接层和一个最终的 1000 分类的 softmax 层。
为了使训练更快,作者使用 ReLU 作为激活函数(non-saturating neurons),并使用 GPU 加速卷积运算。
为了减少全连接层的过拟合,作者采用了一种新的正则化方法,即 Dropout,实验证明这一方法非常有效。
作者在 ILSVRC-2012 比赛中使用了这个模型的一个变体,并以 84.7% 的 top-5 准确率的好成绩赢得了比赛,该比赛第二名的 top-5 准确率仅为 73.8%。
笔者认为的几个影响比较大的创新点:
ReLU,即 Rectified Linear Unit,是一种激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。相比传统的 Tanh、Sigmoid 函数,ReLU 运算速度更快。
在一个 4 层的卷积网络中使用 ReLU 函数在 CIFAR-10 数据集上达到 25% 的训练错误率要比在相同网络相同条件下使用 Tanh 函数快 6 倍。
本文的模型使用两个 GTX 580 3GB GPU 进行训练。
Dropout 是一种正则化方法,具体做法是在训练过程中,随机将一些神经元的输出置为 0。
笔者对 Dropout 的理解是:类似于 Bagging,每次的训练数据事实上仅经过了所有的非 Dropout 神经元和一部分 Dropout 神经元,相当于隐式地训练了 2 N 2^N 2N( N N N 为 Dropout 神经元个数) 个子网络(尽管这些模型不是相互独立的),最终的输出是所有节点输出的综合值(也即最终网络是所有子网络的综合)。
除此之外,本文还有一些其他的创新点,比如:
输入层的输入是 224x224x3 的图片,即 224x224 的彩色图片,其中 3 通道分别为 RGB 三个通道。
卷积(11x11)–>ReLU–>局部响应归一化(LRN)–>最大池化
卷积(11x11):卷积核大小为 11x11,步长为 4,输出通道数为 96,即输出为 55x55x96 的特征图,分为两组,每组为 55x55x48,分别位于单个 GPU 上。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
局部响应归一化(LRN):
b x , y i = a x , y i / ( k + α ∑ j = m a x ( 0 , i − n / 2 ) m i n ( N − 1 , i + n / 2 ) ( a x , y j ) 2 ) β b_{x,y}^i=a_{x,y}^i/\left(k+\alpha\sum_{j=max(0,i-n/2)}^{min(N-1,i+n/2)}(a_{x,y}^j)^2\right)^\beta bx,yi=ax,yi/ k+αj=max(0,i−n/2)∑min(N−1,i+n/2)(ax,yj)2 β
其中 a x , y i a_{x,y}^i ax,yi 表示第 i i i 个通道的第 ( x , y ) (x,y) (x,y) 个像素点的输出, N N N 表示总的通道数, n n n 表示归一化的范围, k k k、 α \alpha α、 β \beta β、 n n n 是超参数,本文中取 k = 2 k=2 k=2、 α = 1 0 − 4 \alpha=10^{-4} α=10−4、 β = 0.75 \beta=0.75 β=0.75、 n = 5 n=5 n=5。
最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 27x27x48。
卷积(5x5)–>ReLU–>局部响应归一化(LRN)–>最大池化
卷积(5x5):卷积核大小为 5x5,步长为 1,padding 为 2,每组输出通道数为 128,即每组输出为 27x27x128 的特征图。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
局部响应归一化(LRN): k = 2 k=2 k=2、 α = 1 0 − 4 \alpha=10^{-4} α=10−4、 β = 0.75 \beta=0.75 β=0.75、 n = 5 n=5 n=5。
最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 13x13x128。
卷积(3x3)–>ReLU
卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 192,即每组输出为 13x13x192 的特征图。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
卷积(3x3)–>ReLU
卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 192,即每组输出为 13x13x192 的特征图。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
卷积(3x3)–>ReLU–>最大池化
卷积(3x3):卷积核大小为 3x3,步长为 1,padding 为 1,每组输出通道数为 128,即每组输出为 13x13x128 的特征图。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
最大池化:池化窗口大小为 3x3,步长为 2,每组输出为 6x6x128。
全连接(卷积)–>ReLU–>Dropout
全连接(卷积):输入为 6x6x256,使用 4096 个 6×6×256 的卷积核进行卷积,效果等同于全连接,即输出为 1x1x4096。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
Dropout:在训练过程中,随机将一些神经元的输出置为 0。
全连接(卷积)–>ReLU–>Dropout
全连接(卷积):输入为 1x1x4096,输出也为 1x1x4096。
ReLU:ReLU 激活函数,即 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)。
Dropout:在训练过程中,随机将一些神经元的输出置为 0。
全连接(卷积)–>Softmax
全连接(卷积):输入为 1x1x4096,输出为 1x1x1000。
Softmax:将输出转化为概率分布。