这是一个了解 CNN 主流变化和特点的旅程。
卷积神经网络(或简称 CNN)是提取 “可学习特征” 的常用方法。 CNN 在深度学习和神经网络的发展与普及中发挥了重要作用。
但是,这篇博客中,我将重点放在完整的 CNN 架构上,而不是只关注单个内核。 我们可能无法逐一浏览 CNN 历史上的每个主要发展节点,但是我将尝试带您了解常见的 CNN 架构如何随着时间演变。 您需要对什么是 CNN 有所了解。
卷积神经网络:概述
LeNet 是第一个将反向传播应用于实际应用的 CNN 架构,突然之间,深度学习不再只是一种理论。 LeNet 用于手写数字识别,能够轻松胜过其他所有现有方法。 LeNet 体系结构非常简单,只有 5 个层,有 5 5 卷积和 2 2 池化组成,它为更好,更复杂的模型铺平了道路。
LeNet 架构
AlexNet 是最早在 GPU 上实现的 CNN 模型之一,该模型真正将当时不断增长的计算机计算能力与深度学习联系在一起。 他们创建了一个更深,更复杂的 CNN 模型,该模型具有各种大小的内核(例如 11 11、5 5 和 3 * 3),并且通道数比 LeNet 大得多。 他们还开始使用 ReLU 激活代替 S 型或 tanh 激活,这有助于训练更好的模型。 AlexNet 不仅在 2012 年赢得了 Imagenet 分类挑战的冠军,而且以惊人的优势击败了亚军,这突然使非深度模型几乎被淘汰。
AlexNet 架构
InceptionNet 是 CNN 历史上的一大进步,它解决了多个方面的问题。 首先,与现有模型相比,InceptionNet 具有更深,更多的参数。 为了解决训练更深层模型的问题,他们采用了在模型之间使用多个辅助分类器的思想,以防止梯度消失。 但是,他们的主要主张之一是并行使用各种大小的内核,因此增加了模型的宽度而不是深度。 他们提出,这样的体系结构可以帮助他们同时提取更大或更小的特征。
InceptionNet v1 架构
尽管 CNN 模型的所有先前模型都使用更大的卷积核(例如 AlexNet 具有 11 11 卷积核),但 VGG 提出了将所有这些卷积核分解为 3 3 卷积核的想法。 根据 VGG 架构,堆叠在一起的多个 3 3 卷积能够复制更大的卷积核,并且它们之间存在更多的非线性特征(就激活函数而言),甚至比具有更大卷积核的对应模型表现更好。 他们甚至引入了 1 1 卷积,以进一步增加模型中存在的非线性。 从那时起,VGG 模型就变得非常出名,甚至在今天的各种教程中也使用了 VGG 模型。
VGG-16 架构
由于深度学习中一个非常普遍的问题,即消失的梯度,简单地堆叠多个 CNN 层以创建更深层模型的大趋势很快就停止了。 简而言之,在训练 CNN 时,梯度从最后一层开始,需要在到达初始层之前穿过中间的每一层。 这可能会导致梯度完全消失,从而难以训练模型的初始层。 ResNet 模型引入了残差块连接,该模型为梯度传递创建了替代路径以跳过中间层并直接到达初始层。 这使人们能够训练出性能较好的极深模型。 现在在现代 CNN 架构中具有残留连接已成为一种常见的做法。
ResNet 架构
CNN 在此阶段的总体趋势是创建越来越大的模型以获得更好的性能。 尽管 GPU 提供的计算能力的进步使他们能够做到这一点,但在机器学习世界中也出现了一系列新产品,称为边缘设备。 边缘设备具有极大的内存和计算约束,但是为许多无法应用 GPU 的应用打开了大门。
为了创建可以与现有最新技术相媲美的更轻巧的 CNN 模型,提出了 MobileNet。 MobileNet 引入了可分离卷积的概念。 用更简单的术语来说,它将二维卷积内核分解为两个单独的卷积内核,即深度方向(负责收集每个单独通道的空间信息)和点方向(负责处理各个通道之间的交互)。 后来,还引入了 MobileNetV2,并在体系结构中进行了剩余连接和其他调整,以进一步减小模型的大小。
深度可分离 2D 卷积
随着各种针对性能或计算效率进行改进的独特模型的出现,EfficientNet 模型提出了这样的想法,即可以通过相似的体系结构解决这两个问题。 他们提出了一种通用的 CNN 骨架架构和三个参数,即宽度,深度和分辨率。 模型的宽度是指各层中存在的通道数,深度是指模型中的层数,分辨率是指模型的输入图像大小。 他们声称,通过将所有这些参数保持较小,可以创建一种竞争性强但计算效率高的 CNN 模型。 另一方面,仅通过增加这些参数的值,就可以创建更好的高精度模型。
尽管之前已经提出了 “挤压” 和 “激活” 层,但它们是第一个将这种想法引入主流 CNN 的。 S&E 层跨通道创建交互,这些交互不会改变空间信息。 这可以用来降低不太重要的因素的影响。 他们还介绍了新出现的 Swish 激活函数而不是 ReLU,这是提高性能的重要因素。 在各种计算资源可用性类别下,EfficientNets 是目前性能最好的分类模型。
挤压和激活网络
如今,CNN 模型已在其图像分类性能以及各种其他问题(例如对象检测和分段)的传递学习能力方面进行了测试。 这些问题中的一些已经被认为已经解决。 重点正转向沙漏架构之类的 CNN 模型,它的输出图像分辨率与输入相同。 但是,我在本博客中介绍的骨干结构也可以直接用于各种深度学习任务,因此,即使图像分类问题已基本解决,但该领域的发展在将来仍将具有重要意义。
[1] LeCun, Yann, et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE 86.11 (1998): 2278–2324.
[2] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “Imagenet classification with deep convolutional neural networks.” Advances in neural information processing systems. 2012.
[3] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).
[4] He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
[5] Szegedy, Christian, et al. “Going deeper with convolutions.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
[6] Howard, Andrew G., et al. “Mobilenets: Efficient convolutional neural networks for mobile vision applications.” arXiv preprint arXiv:1704.04861 (2017).
[7] Tan, Mingxing, and Quoc V. Le. “Efficientnet: Rethinking model scaling for convolutional neural networks.” arXiv preprint arXiv:1905.11946 (2019).
作者:Prakhar Ganesh