Skip to content

Latest commit

 

History

History
91 lines (46 loc) · 8.2 KB

deep-learning-reading-group-squeezenet.md

File metadata and controls

91 lines (46 loc) · 8.2 KB

深度学习阅读小组:SqueezeNet

原文:www.kdnuggets.com/2016/09/deep-learning-reading-group-squeezenet.html

作者:Abhinav Ganesh,Lab41。

下一篇论文来自我们的阅读小组,由 Forrest N. Iandola、Matthew W. Moskewicz、Khalid Ashraf、Song Han、William J. Dally 和 Kurt Keutzer 共同撰写。该论文介绍了一种名为“SqueezeNet”的小型 CNN 架构,在 ImageNet 上实现了与 AlexNet 相当的准确率,但参数数量减少了 50 倍。正如你可能已经注意到的,我们对神经网络架构的压缩非常感兴趣,这篇论文确实很突出。

深度学习的难点之一就是参数调优的地狱。这篇论文提倡增加对卷积神经网络设计领域的研究,以大幅减少你需要处理的参数数量。与我们之前的关于“深度压缩”的帖子不同,这篇论文建议通过从更智能的设计开始来缩小网络规模,而不是使用巧妙的压缩方案。作者概述了减少参数大小而最大化准确性的三种主要策略。我现在将为你介绍这些策略。

策略 1. 通过用 1x1 卷积核替换 3x3 卷积核来缩小网络

这个策略通过将一堆 3x3 卷积核替换为 1x1 卷积核,从而减少了参数的数量,减少了 9 倍。最初这让我感到非常困惑。我以为移动 1x1 卷积核在图像上时,每个卷积核看到的信息会更少,因此性能会更差,但事实似乎并非如此!通常较大的 3x3 卷积核捕捉的是彼此接近的像素的空间信息。另一方面,1x1 卷积核专注于单个像素,并捕捉其通道之间的关系,而不是邻近像素之间的关系。如果你想了解更多关于 1x1 卷积核的使用,可以查看这篇博客文章

策略 2. 减少剩余 3x3 卷积核的输入数量

这个策略通过基本上使用更少的卷积核来减少参数数量。这是通过将“压缩”层输入到他们称之为“扩展”层中系统地完成的,如下所示:

Squeeze

“Fire 模块”。图片来源于论文

现在是定义一些仅在这篇论文中出现的术语的时候了!正如你在上面看到的,“squeeze”层是由仅包含 1x1 滤波器的卷积层组成,“expand”层是包含 1x1 和 3x3 滤波器混合的卷积层。通过减少“squeeze”层中进入“expand”层的滤波器数量,他们减少了进入这些 3x3 滤波器的连接数量,从而减少了总参数数量。论文的作者将这种特定的架构称为“火焰模块”,它作为 SqueezeNet 架构的基本构建块。

策略 3. 在网络的后期进行下采样,以便卷积层具有大的激活图。

现在我们已经讨论了减少我们正在处理的参数数量的方法,那么如何充分利用剩余的较小参数集呢?作者认为,通过在后续卷积层中减小步幅,从而在网络后期创建更大的激活/特征图,分类准确性实际上会提高。在网络末尾拥有更大的激活图,与像 VGG这样的网络形成了鲜明对比,在这些网络中,激活图在接近网络末端时会变得更小。这种不同的方法非常有趣,他们引用了一篇 K. He 和 H. Sun 的论文,该论文类似地应用了延迟下采样,从而提高了分类准确性。

那么,这一切是如何结合在一起的呢?

SqueezeNet 利用上述的“火焰模块”,将这些模块串联在一起,从而实现了一个更小的模型。以下是他们论文中展示的这种串联过程的一些变体:

串联过程变体

左侧:SqueezeNet;中间:带有简单旁路的 SqueezeNet;右侧:带有复杂旁路的 SqueezeNet。图片来自论文。

我发现这个架构令人惊讶的一点是缺乏全连接层。令人吃惊的是,通常在像 VGG这样的网络中,后期的全连接层学习的是 CNN 早期高层特征与网络试图识别的类别之间的关系。也就是说,全连接层学习的是鼻子和耳朵组成一个脸,而车轮和灯光指示车辆。然而,在这个架构中,这一步额外的学习似乎嵌入在不同“火焰模块”之间的转换中。作者从 NiN 架构中获得了这一想法的灵感。

够详细了!这表现如何?

论文的作者展示了一些令人印象深刻的结果。

结果

SqueezeNet 对比其他 CNN 架构的基准测试。图像来自论文。

他们的 SqueezeNet 架构在模型大小上实现了比 AlexNet 减少 50 倍的效果,同时达到了或超过了 AlexNet 的 Top-1 和 Top-5 准确率。但这篇论文最有趣的部分可能是他们将深度压缩(在我们之前的帖子中进行了讲解)应用于他们已经更小的模型。这种深度压缩的应用使得模型比 AlexNet 小了 510 倍!这些结果非常鼓舞人心,因为它展示了结合不同压缩方法的潜力。作为下一步,我很希望看到这种设计思维如何应用于其他神经网络架构和深度学习应用。

如果这篇论文对你有兴趣,绝对要查看他们在 Github 上的开源代码。我只有时间介绍要点,但他们的论文中充满了关于参数减少 CNN 设计的深入讨论。

Abhinav Ganesh 目前是 Lab41 的工程师,致力于将机器学习应用于网络安全。他拥有卡内基梅隆大学电气与计算机工程的学士和硕士学位。

Lab41 是一个“挑战实验室”,美国情报界与学术界、工业界和 In-Q-Tel 的同行汇聚在一起,解决大数据问题。它允许来自不同背景的参与者获取想法、人才和技术,以探索数据分析中的有效性和不足之处。Lab41 提供了一个开放、协作的环境,促进了参与者之间的宝贵关系。

原文。经许可转载。

相关:

  • 深度学习阅读小组:用于图像识别的深度残差学习

  • 深入了解深度学习:七月更新

  • 理解深度学习的 7 个步骤


我们的前 3 名课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业的快车道。

2. Google 数据分析专业证书 - 提升你的数据分析能力

3. Google IT 支持专业证书 - 支持你的组织在 IT 领域


更多相关内容