✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
本文目录
- 标题和作者
- 摘要
- 创新点
- ReLU
- 多 GPU
- Dropout
- 其他
- 网络结构
- 输入层(Input layer)
- 卷积层(C1)
- 卷积层(C2)
- 卷积层(C3)
- 卷积层(C4)
- 卷积层(C5)
- 全连接层(FC6)
- 全连接层(FC7)
- 输出层(Output layer)
标题和作者
ImageNet Classification with Deep Convolutional Neural Networks,意为使用深度卷积神经网络在 ImageNet 数据集上进行分类,发表于 2012 年。
作者信息:
- Alex Krizhevsky,本文第一作者,本文提出的网络结构后被称为 AlexNet。
- Ilya Sutskever,本文第二作者,2015 年加入 OpenAI,成为 OpenAI 的联合创始人兼首席科学家。
- Geoffrey E. Hinton,本文第三作者,2018 年图灵奖得主,神经网络之父,前两位作者的导师。
摘要
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 作为激活函数,而非传统的 Tanh、Sigmoid 函数。ReLU 未特别压缩输出值的范围(在文中被称为 non-saturating neurons),且运算简单。
- 将卷积运算置于多 GPU 上进行,大大加快了训练速度(当时的企业普遍还在使用 CPU 或单 GPU 训练模型)。
- 使用了 Dropout 正则化方法,降低了模型的过拟合风险。
ReLU
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 倍。
多 GPU
本文的模型使用两个 GTX 580 3GB GPU 进行训练。
Dropout
Dropout 是一种正则化方法,具体做法是在训练过程中,随机将一些神经元的输出置为 0。
笔者对 Dropout 的理解是:类似于 Bagging,每次的训练数据事实上仅经过了所有的非 Dropout 神经元和一部分 Dropout 神经元,相当于隐式地训练了 2 N 2^N 2N( N N N 为 Dropout 神经元个数) 个子网络(尽管这些模型不是相互独立的),最终的输出是所有节点输出的综合值(也即最终网络是所有子网络的综合)。
其他
除此之外,本文还有一些其他的创新点,比如:
- Local Response Normalization,即局部响应归一化,这是一种对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,这样可以使得模型对于输入的微小变化不敏感,从而提高模型的泛化能力。
- Overlapping Pooling,即重叠池化,池化窗口大于步长,每次池化都有重叠部分,相比传统池化方法有更好效果,能够降低模型的过拟合风险。
- 一些新的数据增强方法。
网络结构
输入层(Input layer)
输入层的输入是 224x224x3 的图片,即 224x224 的彩色图片,其中 3 通道分别为 RGB 三个通道。
卷积层(C1)
卷积(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。
卷积层(C2)
卷积(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。
卷积层(C3)
卷积(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)。
卷积层(C4)
卷积(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)。
卷积层(C5)
卷积(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。
全连接层(FC6)
全连接(卷积)–>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。
全连接层(FC7)
全连接(卷积)–>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。
输出层(Output layer)
全连接(卷积)–>Softmax
全连接(卷积):输入为 1x1x4096,输出为 1x1x1000。
Softmax:将输出转化为概率分布。