Going Deeper with Convolutions

2014 单 GPU 深度学习 被引用 1.4k 次
下载 PDF

Going Deeper with Convolutions - 中文验证版

英文原始依据卡片:googlenet_2014.md

状态:已翻译。

元数据

  • Slug: googlenet_2014
  • 年份: 2014
  • 会议: CVPR
  • 作者: Christian Szegedy et al.
  • 阅读状态: read complete
  • 计算范式: 单 GPU 深度学习
  • 主要来源: PDF抽取文本

计算设置

论文明确说明训练使用 DistBelief,并采用适度的模型和数据并行,且报告的实现仅基于 CPU。作者还增加了一个 GPU 可行性估计:GoogLeNet 可能可以在少数高端 GPU 上一周内训练至收敛,内存使用是主要限制。这是一个罕见情况:即使架构是为 CPU/GPU 密集 kernel 时代设计的,但已发表结果并不是 GPU 训练结果。

设备依据:报告的训练设置明确采用基于 CPU 的分布式训练;GPU 可行性被讨论过,但未作为主要报告实现使用。

瓶颈

瓶颈是在不让参数、乘加运算和内存失控增长的情况下增大网络容量。论文的系统论点是明确的:非均匀稀疏计算可能减少算术次数,但当时的 CPU/GPU 库对密集矩阵乘法高效得多。查找开销、cache miss 和工程复杂性可能抵消名义上的稀疏节省。卷积已经提供了空间稀疏性,同时在局部 patch 内保持密集,作者指出全连接特征维度重新变得有吸引力,因为它们能更好地优化并行计算。

另一个瓶颈是推理实用性。赢得 ImageNet 的 CNN 正变得更深更宽,但论文认为,如果模型要变得可用而非仅用于学术,功耗和内存使用很重要。因此,GoogLeNet 不仅仅是准确率架构;它是在保持密集运算规则和低内存推理占用的同时增加深度和宽度的尝试。

方法适配

GoogLeNet 通过 Inception 模块适配这一计算结构:

  • 用密集分支近似稀疏多尺度结构。
  • 在昂贵的 3 x 3 和 5 x 5 卷积前使用 1 x 1 投影。
  • 使用平均池化替代大型全连接层。
  • 增加辅助分类器以改善梯度流和正则化。
  • 保持分支结构足够规整,以适配密集 CPU/GPU kernel。

核心适配是 1 x 1 瓶颈。论文指出,1 x 1 卷积被用作昂贵 3 x 3 和 5 x 5 卷积之前的降维,并且它们也包含 rectified linear 激活。这使得每个 Inception 模块能够聚合多尺度视觉信息,同时限制高成本分支的输入通道数。在计算术语中,该架构用廉价的密集投影换取宽度,然后选择性地将计算用于更大感受野。

内存约束塑造了深度布局。论文说明,为了"训练期间的内存效率",最好仅在较高层开始使用 Inception 模块,而将较低层保留在更传统的卷积形式中。分类器之前的平均池化相对于大型全连接头减少了参数数量。附加在 Inception 4a 和 4d 的辅助分类器增加了训练信号,但在推理时被丢弃,因此它们花费训练计算而不增加部署模型的大小。

证据

表 1 是计算证据:它列出了每层的参数和运算次数。早期层主导运算量,如 7 x 7 卷积为 34M ops,3 x 3 卷积为 360M ops,而后期 Inception 模块使用降维分支将运算量保持有界,尽管通道数更大。最终线性分类器在平均池化之后列出的参数量约为 1000K 和 1M ops,远小于 AlexNet 风格系统中常见的全连接头。

网络深度为 22 个带权层,若计入池化则为 27 层。论文说明其设计是为了"计算效率和实用性",以便推理可以在独立设备上运行,包括内存占用低的有限资源设备。在 ILSVRC 分类设置中,最终提交使用了七个训练模型和激进的测试时裁剪:4 个图像尺度,3 个正方形位置,每个正方形 6 个裁剪(含缩放到该正方形的整体),再加上镜像版本,每张图像共 144 个裁剪。单模型、单裁剪验证成本是基准;完整的七模型、144 裁剪集成成本为 1008 相对单位,达到 6.67% top-5 错误率。单个模型单裁剪为 10.07% top-5 错误率,单个模型 10 裁剪为 9.15%,表明获胜数字在高效基础网络之上消耗了可观的推理阶段计算。

检测证据强化了计算权衡。GoogLeNet 的检测方案使用了类似 R-CNN 的管线,以 Inception 模型作为区域分类器,结合了 Selective Search 和 MultiBox 候选,通过增大 superpixel 大小将 Selective Search 候选减半,并添加回 200 个 MultiBox 候选。论文说明这产生了 R-CNN 所用候选数的大约 60%,同时将覆盖率从 92% 提升到 93%,将单模型 mAP 提升 1%。六个 ConvNet 组成的检测集成从约 40% 提升到 43.9% mAP。

历史影响

GoogLeNet/Inception 使计算感知的 CNN 模块成为主流:瓶颈投影、多尺度密集分支和参数约束成为标准架构工具。从历史上看,它位于蛮力 GPU CNN 缩放与后来的高效架构家族之间。它表明,模型可以变得更深、更准确,而不必仅仅乘以全连接参数或使用硬件不友好的稀疏矩阵。

它也记录了一个基础设施的过渡时刻。报告的训练使用了 CPU DistBelief,但架构是围绕 CPU/GPU 密集库效率来写的,并明确讨论了高端 GPU 可行性。因此,该论文捕捉了分布式内部训练系统与消费级 GPU 深度学习重叠的时期,即单一框架 GPU 训练成为默认公开配方之前。

局限

  • 架构含有许多手工设计旋钮。
  • 论文将其设计原则表述为仍需进一步分析。
  • 训练配方随时间演化,难以简化为一个干净的流程。
  • 报告的训练使用 CPU DistBelief,而非后来标准的 GPU 实现。
  • 最佳分类结果使用了昂贵的集成和 144 裁剪测试时流程,因此头条数字不是单次 forward 推理。
  • 精确的 DistBelief 集群规模和 CPU 硬件未在抽取文本中列出。

链接