这是一份指南:教你设计最好的卷积神经网络

yanrumei 2019-06-04

点击上方关注,All in AI中国

如何设计最好的卷积神经网络(CNN)?

尽管深度学习已经存在了好几年,但这仍然是一个悬而未决的问题。

设计一个好的神经网络的许多困难源于它们仍然是黑盒子的事实。我们对它们如何工作有一些高层次的想法,但我们并不真正知道它们如何实现这个结果。

CNN的一些线索

我们可以从一些线索开始。最近的研究为我们提供了一些具体的证据,证明CNN的精度提高了

  • 提高图像分辨率
  • 增加网络深度
  • 增加网络宽度
  • 添加跳过连接(无论是密集还是剩余)

从直观的角度来看,所有这些对深度学习的最新技术的补充都是有意义的。提高图像分辨率可为网络提供更多数据。增加宽度和深度为网络提供了更多的参数。并且添加跳过连接会扩展网络的复杂性,从而扩展代表性能力。

这是一份指南:教你设计最好的卷积神经网络

密集连接(左,DenseNet)和跳过与广域网的连接(右,ResNeXt)

为了发现更强大的网络,Google AI的研究团队开发了一种算法搜索良好网络的技术。这称为神经架构搜索(NAS)。

神经架构搜索

NAS是一种搜索最佳神经网络架构的算法。大多数NAS算法的工作方式都非常相似。

首先定义一组可能用于我们网络的“构建块”。然后尝试通过将这些块的不同组合放在一起来训练网络。通过这种反复试验,NAS算法最终将确定哪些块以及哪些配置最佳。

事实证明,这种方法效果很好,并且达到了最先进的精度。它也发现了一些非常奇特的架构,你可以从下面的官方文件中看到:

这是一份指南:教你设计最好的卷积神经网络

NAS算法发现的NASNet块

关于NAS的伟大之处在于我们可以看到一些我们可能根本不会寻找的神经网络架构。

然而它确实有其自身的局限性。由于我们从一组固定的块中提取样本,因此我们不会发现任何新的块。与跳过连接的情况相同:NASNet仅允许跨越1个下采样级别的跳过连接,但是是否其他类型的连接也可以有效的工作呢?

Facebook的AI研究团队尝试了随机连接神经网络,对NAS进行了新的尝试。直觉是,如果架构搜索的一般思想对于固定块和连接运行良好,那么在更大的搜索空间将会导致一些未知的配置。

随机连接神经网络

由于该论文的作者对网络结构做了一些限制:

  • 输入始终是大小为224x224的图像
  • 这些块总是一个ReLU-Conv-BatchNorm三元组。三元组中的卷积是来自Xception的3x3可分离卷积。
  • 多个Tensor的聚合(例如,当融合跳过连接与其他张量时)总是以相同的方式完成 - 通过加权和。这些权重是可以学习的,总是积极的。
  • 网络的各个阶段始终保持不变。一般的CNN结构是由多个卷积块组成,随后是向下采样,一遍又一遍地重复直到最终得到一个softmax分类器,这已成为最先进的网络设计的标准,这些范例也在这些研究实验中被采用。

这是一份指南:教你设计最好的卷积神经网络

最先进的CNN的一般结构,也适用于这项研究

在ImageNet竞赛中,输入大小为224x224是非常标准的 - ImageNet数据集用于对其他手工网络以及NAS生成的网络进行基准测试。 ReLU-Conv-BatchNorm的三联体块也很常见,并且已经被广泛证明可以在深度CNN重复时提供最先进的结果。

Tensor的聚合方式是一个小小的转折点。大多数最先进的网络都可以直接添加或连接而不需要权重 - 但这是一个不小的补充,不应过于严重影响性能。上表中所示的CNN的分阶段设计也已成为ResNets、DenseNets和NASNets中使用的首选网络结构。

注意这不是一个完全“随机神经网络”,因为没有完全从零开始的随机化。相反,探索了CNN设计的单个组件,而其他组件保持不变。

这是作者试图让读者明白的一个重要的观点。我们还没有做完全随机化神经网络。但我们开始对组件搜索空间进行了一些深入的探索 - 一步一步来。

在这些约束下,各种经典的随机图模型被用来生成了网络的随机布线。

这是一份指南:教你设计最好的卷积神经网络

一些随机连接网络

随机网络打开了深度学习探索的大门

这项研究的意义在于其主要的探索思想:扩展NAS算法的搜索空间,以寻找新的、更好的网络设计。虽然研究人员自己已经发现了一些很棒的设计,但手动遍历整个搜索空间实际上是不可行的。

这也延伸到了另一点:如果我们要扩展我们的搜索空间,我们需要一个算法,在本例中是网络生成器,真正擅长搜索。它必须知道要寻找什么,或者至少有一些倾向于通过设计转向它的趋势,就像梯度下降工作等优化算法一样。

架构搜索是深度学习研究的下一个前沿领域。它允许我们使用算法而不是反复试验来发现最佳体系结构。

目前,在搜索其他网络组件(在这种情况下是连接)时修复一些网络组件是有意义的。这将问题简化为更容易处理的小问题。 NAS算法应该有一定程度的随机性,因为这是我们发现真正新颖架构的唯一方法。

下一步当然是进一步扩大我们的搜索算法的搜索空间和随机性。这意味着扩展到越来越多的网络组件,直到整个系统被算法设计好为止。

当我们释放NAS时会发生什么?它是否选择像2x4这样的非方形卷积?它是否建议使用反馈循环?网络变得更简单还是更复杂?

神经架构搜索提供了一个令人兴奋的新研究领域。我们的希望是让搜索算法松散成为一种利用随机化的方式,从而发现创造性的、以前从未考虑过的架构。

相关推荐