MENU

AlexNet论文阅读

May 31, 2019 • Read: 6607 • Deep Learning阅读设置

论文下载

这篇论文的背景作者在参加2010年的ILSVRC比赛,取得了冠军


摘要主要介绍了其神经网络的结构——5个卷积层(每个卷积层($convolutional\ layers$)后面都跟有池化层($max-pooling\ layers$))和三个全连接层,最后是一个1000维的softmax。然后作者还提到一个比较有意思的想法:"为了避免全连接层的过拟合,我们采用一种名为$dropout$的正则化方法"

引言和数据集的部分都不重要,这里就略过了


第三部分开始简略介绍了AlexNet的架构,其实就和摘要说的是一样,然后作者说他会把他网络中新奇的点接下来按照重要程度(重->轻)依次说明


首先作者认为他网络最重要的部分是激励函数的选取。传统的激励函数是$tanh(x)$,他认为$tanh(x)$模型收敛太慢,所以改用收敛更快的$Relu$函数,右边的图中虚线是$tanh(x)$函数,实线是$Relu$函数。使用$Relu$的四层神经网络比$tanh$在达到25%的误差时快6倍


接着作者认为他们多CPU并行计算很重要,这一块主要是硬件,我个人感觉不是很重要,所以略过


局部响应归一化。"Relu不需要将输入层的数据进行归一化防止其饱和"(这里我暂时不是很懂,先放一放)


重叠池化。传统池化的窗口大小$z*z$中的$z$等于池化的步长$s$。作者设置$z<s$,这样每次滑动窗口的时候,总有一部分是重叠的(这次池化窗口的内容包含部分上次池化窗口的内容)。与重叠相比,两者的输出维度是相同的,但是采用重叠池化更难过拟合。关于重叠池化,当时作者提出来可能还算比较新颖,但其实目前(到2019年)大部分CNN都用的这种方法



整体架构。文章中GPU部分我就直接略过了,直接看这个图很好理解。

第1卷积层使用96个核对224 × 224 × 3的输入图像进行卷积,核的大小是11 × 11 × 3,步长是4

第2卷积层使用用第1卷积层的输出(响应归一化和池化)作为输入,并使用256个核进行卷积,核的大小是5 × 5 × 48

第3,4,5卷积层互相连接,中间没有接入池化层或归一化层

第3卷积层有384个核,核大小为3 × 3 × 256,与第2卷积层的输出(归一化的,池化的)相连

第4卷积层有384个核,核大小为3 × 3 × 192

第5卷积层有256个核,核大小为3 × 3 × 192

每个全连接层有4096个神经元

最后一层输出是一个softmax,用于产生1000类标签的概率


减少过拟合



数据增强。原本一张图是256 × 256的,但是作者把一张图当作十张图来用。在测试时,网络会提取5个224 × 224的图像块(四个角上的图像块和中心的图像块)和它们的水平翻转(因此总共10个图像块)进行预测,然后对网络在10个图像块上的softmax层进行平均。

第二种数据增强的方法包括改变训练图像的RGB通道的强度。具体地说就是,对整个ImageNet训练集上对RGB像素值集合执行PCA(降维),之后对于每个训练图像,添加多个找到的主成分,其大小与相应的特征值成正比,乘以一个随机变量,这个随机变量服从高斯分布,平均值为零,标准差为0.1。因此对于每幅RGB图像像素$I_xy = [I^R_{xy} , I^G_{xy} , I^B_{xy} ]^T$,加上下面的数量:

$$ [p_1, p_2, p_3][\alpha_1\lambda_1, \alpha_2\lambda_2, \alpha_3\lambda_3]^T $$

$p_i$、$\lambda_i$分别是RGB像素值3 × 3协方差矩阵的第$i$个特征向量和特征值,$α_i$是前面提到的随机变量。对于某个训练图像的所有像素,每个$α_i$只获取一次,直到图像进行下一次训练时才重新获取。这个方案近似抓住了自然图像的一个重要特性,即光照的颜色和强度发生变化时,目标身份是不变的


失活。"以0.5的概率对每个隐层神经元的输出设为0。那些“失活的”的神经元不再进行前向传播并且不参与反向传播。因此每次输入时,神经网络会采样一个不同的架构,但所有架构共享权重。这个技术减少了复杂的神经元互适应,因为一个神经元不能依赖特定的其它神经元的存在。因此,神经元被强迫学习更鲁棒的特征,它在与许多不同的其它神经元的随机子集结合时是有用的。在测试时,我们使用所有的神经元,但将它们的输出乘以0.5,对指数级的许多失活网络的预测分布进行几何平均,这是一种合理的近似。"



学习细节。作者使用的梯度下降模型是SGD,batch size为128,动量(momentum)为0.9,权重衰减为0.0005,权重$w$的更新规则是

$$ v_{i+1} := 0.9 · v_i - 0.0005 · \varepsilon · w_i - \varepsilon · \langle \frac{\partial L} {\partial w} |_{w_i}\rangle _{D_i} \\ w_{i+1} := w_i + v_{i + 1} $$

$i$是迭代索引,$v$是动量变量,$ε$是学习率(learning rate),$\langle \frac{\partial L} {\partial w} |_{w_i}\rangle _{D_i}$是目标函数对$w$,在$w_i$上的第$i$批微分$D_i$的平均

"我们使用均值为0,标准差为0.01的高斯分布对每一层的权重进行初始化。我们在第2,4,5卷积层和全连接层将神经元偏置(biases)初始化为常量1。这个初始化通过为ReLU提供正输入加速了早期的学习阶段。我们在剩下的层将神经元偏置初始化为0"

以上就是这篇论文的重点部分

Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment

6 Comments
  1. AsTheStarsFall AsTheStarsFall

    请问你是如何理解原文中LRN可以在神经元之间建立竞争关系,使得其中通道响应较大的值变得相对更大,并抑制其他反馈较小的通道

  2. yqyang yqyang

    在整体架构中,为啥卷积核的大小是5×5×48?上一个输出的通道数是96。感觉这部分通道数对不上,不知道是不是我理解错了。

    1. mathor mathor

      @yqyang因为他是分成上下两条卷积并行处理的

    2. yqyang yqyang

      @yqyang奥奥,不好意思,我知道了,文章用的两个GPU。

    3. yqyang yqyang

      @mathor恩?我的理解是放在两个GPU上,所以减半了。

    4. yqyang yqyang

      @mathor一个GPU提取一半的特征,所以通道数减半,最后输出合并就行?