文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks

本文是对《ImageNet Classification with Deep Convolutional Neural Networks》一文的浅显翻译与理解,如有侵权即刻删除。

更多相关文章,请移步:
文献阅读总结:计算机视觉

文章目录

  • Title
  • 总结
    • 1 整体框架
      • 1.1 ReLU激活函数
      • 1.2 GPU上并行训练
      • 1.3 局部归一化
      • 1.4 有重叠池化
    • 2 减少过拟合
      • 2.1 数据增强
      • 2.2 Dropout
    • 3 回顾

Title

《ImageNet Classification with Deep Convolutional Neural Networks》

——NIPS2012

Author: Alex Krizhevsky

总结

该文是深度学习浪潮的奠基作之一,具体讲解可参考李沐解读视频:https://www.bilibili.com/video/BV1ih411J7Kz?spm_id_from=333.999.0.0

文章将基于CNN的神经网络模型扩展到了多层,提出了AlexNet方法,以增强模型在大规模图像数据集上的效果,同时在有标签数据样本上的实验,也能够超过现有方法。

1 整体框架

AlexNet在结构上包含八层,前五层为卷积层,后三层为全连接层。鉴于GPU的显存受限,文章构建了在双GPU上并行训练的模型,通过中间某些层的通信完成对两个网络的结合。其模型示意图如下所示:

文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks_第1张图片

此外,文章介绍了一些主要的贡献,在下文中简单介绍不再赘述。

1.1 ReLU激活函数

文章指出,使用ReLU这种不饱和非线性函数,模型的收敛速度要快于饱和的非线性函数例如tanh或sigmoid,如图所示:

文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks_第2张图片

1.2 GPU上并行训练

受限于GPU的显存大小,文章将模型搭建在两个GPU上,通过中间层通信完成网络的数据信息交换。

1.3 局部归一化

文章提出了在网络层上的归一化方法,能够提高模型效果,其计算如下所示:

文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks_第3张图片

1.4 有重叠池化

传统意义上的池化是前一层的各个位置对应后一层的各个位置,即层内部的数据量不变。而有重叠的池化,即将池化层的大小调整得小于前一层的输出大小,从而使得池化层的每个位置是经由前一层多个位置聚合得到的。

2 减少过拟合

文章为减少过拟合,在网络模型中加入了正则化的操作,具体可以分为两类,即数据增强和dropout(舍弃)。

2.1 数据增强

数据增强又可分为两种思路,一种是对256256的原始图片,随机在其中取224224大小的内容作为输入,那么一张图片从理论上就可以有2048中输入结果。此外,还可以通过对图片的RGB内容进行修改,以得到数据增强的效果。

2.2 Dropout

该方法可作用于网络的每一层上,对每个位置,按照一定的概率决定是否随机舍弃,这种情况下就意味着模型每一次得到的输入是不同的,但其参数集是共享的,也就避免了对单次输入数据的过拟合学习。

3 回顾

该部分为李沐解读视频中,从2021年眼光回看2012年该论文的一些局限:

  • 整篇论文的写作加入了大量工程技术方面的细节,而对于使用技术的解释有一部分没有展开介绍,更像是一篇技术报告。
  • 当时提到的大型神经网络模型要通过很好的正则化来防止过拟合,现在看来如果模型设计得当,没有明确的正则化项也同样能够达到理想结果。
  • intro部分没有介绍别的神经网络模型,而直接指出要怎样调整CNN。事实上在当时,用CNN搭建模型并非主流,因此这种写作就导致了一个较窄的视角,在写作中应当注意与其他方法相联系。
  • 文章在介绍数据集时提到,送入模型的就是原始图像而非提取后的特征,在当时没有作为一个重点展开,而是一笔带过。但之后大部分端到端的工作,都将原始图像的输入作为一个卖点来提出了。
  • 文章介绍了normalization方法,但这个技巧并不重要,在后续几乎没有人会用到它,现在也有了更好的规范化技巧。
  • 对网络模型结构的示意图表达得较为复杂,将模型分布到两张GPU上进行并行的训练和通讯,从之后几年的眼光来看也是一个非常复杂的技术细节且并非十分必要。但最近的两三年,随着GPT/BERT等大规模模型的出现,研究者们发现在一张GPU上又开始难以训练,开始尝试把模型切成几块做并行化训练。
  • 文章提到的数据增强方面,在CPU上执行,要比在GPU上的模型训练快得多,所以是free的。从当时的视角看来,可能作者的CPU相比GPU性能要更好。但如今来看,GPU的发展速度大幅超过CPU,那么放到如今可能在CPU上做数据增强反而会占据最大一块的训练时间。
  • 文章提到的dropout方面,通过按照一定概率将网络层间的输入部分变为0,可以等价于新的模型,多次dropout就是多个模型的混合。但现在看来,dropout并不是做了模型混合,而只是一个正则化项,基本等价于L2范式。而且现在的CNN设计的全连接不会达到4096这么大的长度,因此dropout也变得不那么重要。不过dropout在全连接层上还是非常有效的,在RNN或者attention上用得比较多。

你可能感兴趣的:(文献阅读,深度学习,cnn,神经网络)