MENU

AlexNet 论文阅读

May 31, 2019 • Read: 7770 • 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 提取一半的特征,所以通道数减半,最后输出合并就行?