简化理解:Keras中最新体系结构的卷积块列表

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

我一直保持着定期阅读ML和AI相关论文的习惯,这是了解这一领域最新进展的唯一方法。作为一名计算机科学家,但每当浏览科学著论或数学公式时,我经常会碰壁。在不断的尝试中,我发现简单代码可以降低理解上的难度。因此,在本文中,我希望帮助你了解Keras中最新体系结构的卷积块列表。

简化理解:Keras中最新体系结构的卷积块列表

当你在GitHub上查找最新流行的体系架构时,你会惊讶它们包含了很多代码。因为它包括着很多的注释,并使用额外的参数增强模型。但同时,这可能会分散我们对体系结构本质掌握的注意力。为了进一步简化和缩短代码片段,作者将使用一些alias()函数:

简化理解:Keras中最新体系结构的卷积块列表

简化理解:Keras中最新体系结构的卷积块列表

作者发现当去掉模板码时,代码的可读性要高得多。当然,前提是你得理解了这些代码的缩略语才行。我们开始吧。

Bottleneck块

卷积层的参数数目取决于核大小、输入滤波器的数目和输出滤波器的数目。你的网络越宽,3x3卷积成本越高

简化理解:Keras中最新体系结构的卷积块列表

bottleneck块的核心思想是确保速率r使用更加便宜的1x1卷积以减少信道数,从而使下面的3x3卷积具有更少的参数。最后我们用另一个1x1卷积来扩展网络。

Inception Module

Inception Module介绍了在并行和合并结果中使用不同运算的想法。这样,网络就可以学习不同类型的滤波器。

简化理解:Keras中最新体系结构的卷积块列表

在这里,我们使用核大小为1、3和5的与MaxPooling层合并卷积层。这个片段是对Inception Module的简单应用。现实中,我们更多的是将它bottleneck块结合起来,进行更加复杂的应用。

简化理解:Keras中最新体系结构的卷积块列表

简化理解:Keras中最新体系结构的卷积块列表

残差块(residual block)

简化理解:Keras中最新体系结构的卷积块列表

ResNet是由微软研究人员引入的一种架构,该架构不仅允许神经网络拥有很多层,还能提高模型的准确性。现在你可能已经习惯了ResNet的存在,但在ResNet出现之前,情况就不一样了。

简化理解:Keras中最新体系结构的卷积块列表

其思想是将初始激活添加到卷积块的输出中。这样,网络就可以通过学习过程来决定输出中有多少新的卷积。注意,inception module连接输出,而残差块添加输出。

ResNeXt Block

根据它的名字,你可以猜到ResNeXt和ResNet是密切相关的。作者将"cardinality(基数)"这个术语引入到卷积块中,作为另一个维度,比如指宽度(信道数)和深度(层数)。

基数指的是出现在一个块中的并行路径数。这听起来类似于inception block,它同时包含4种运算。然而,与并行地使用不同类型的运算不同,基数为4表示同一运算运行4次。

如果它们做同样的事情,为什么要让它们并行呢?这就要联系到分组卷积这个概念。它的提出最早可以追溯到AlexNet的论文。尽管当时,它主要用于将训练过程拆分放入多个GPU中,而ResNeXt则使用它们来提高参数的效率。

简化理解:Keras中最新体系结构的卷积块列表

这样做的目的是把所有的输入信道分成几个组。卷积只会在固定的信道中起作用,而不是"跨越"所有信道。研究发现,在提高权重效率的同时,每一组都会学习不同类型的特征。

假设有一个bottleneck block,首先使用速率4将256个输入信道减少到64个,然后将它们恢复到256个信道作为输出。如果我们想引入一个32的基数和一个2的压缩,我们将使用32个1x1的卷积层并与4个(256 /(32*2))输出信道并行。然后我们使用32个3x3的卷积层,4个输出信道,然后是32个1x1的卷积层,每个层有256个输出信道。最后一步是添加32条并行路径,在添加初始输入以创建残差连接之前,给出单个输出。

简化理解:Keras中最新体系结构的卷积块列表

这有很多东西需要消化。通过上面的图像步骤使正在发生的事情以可视化的形式表示出来,或者复制这些代码片段,在Keras中自己构建一个小的网络。把作者这种复杂的描述概括在这9行简单的代码中,这不是很棒吗?

顺便说一下,如果基数等于信道数,我们会得到深度可分离卷积。自引入Xception体系结构以来,它们得到了越来越多人的关注。

稠密块

简化理解:Keras中最新体系结构的卷积块列表

稠密块是残差块的一个极端"版本",每个卷积层都得到块中所有先前卷积层的输出。首先,我们将输入激活添加到一个列表中,然后开始循环,这个循环需要深入到卷积块中。每个卷积输出也被连接到列表中,以便随着迭代得到越来越多的输入特性映射。该方案一直持续到达到预期的深度为止。

简化理解:Keras中最新体系结构的卷积块列表

虽然要花几个月的研究才能找到一个和DenseNet一样的体系架构,但是实际构建中如此简单的确令人欣喜。

Squeeze-and-Excitation块

在短时间内,Senet一直是ImageNet上最先进的技术。它建立在ResNext之上,并专注于对网络的信道信息进行建模。在常规的卷积层中,每个信道在点积运算中对加法操作的权重相同。

简化理解:Keras中最新体系结构的卷积块列表

SENet介绍了一个非常简单的模块,可以添加到任何现有的体系结构中。它创建了一个小的神经网络,它了解了每个滤波器应该如何根据输入来加权。正如你所看到的,它本身并不是一个卷积块,但是因为它可以被添加到任何卷积块中,并可能提高它的性能,所以我们想把它添加到卷积块中。

简化理解:Keras中最新体系结构的卷积块列表

每个信道被压缩成一个单独的值,并输入到一个双层神经网络中。根据信道的分布情况,神经网络会对信道的重要性进行衡量。最后,权重将与卷积激活相乘。

SENets引入了一个微小的计算开销,同时改进了卷积模型。在作者看来,它值得更多人的关注。

NASNet Normal Cell

我们给人们留下了一个简单而有效的设计决策的空间,并进入了一个设计神经网络体系结构的世界。Nasnet给人是一种简单的感觉,但实际的架构是相对复杂的。我们所知道的是,它在ImageNet上运行得非常好。

简化理解:Keras中最新体系结构的卷积块列表

作者着手定义了不同类型的卷积层和池化层的搜索空间,每个层可能设置都各不相同。同时还定义了如何以并行的或依次的方式排列这些层,以及如何添加或连接这些层。一旦定义好了,他们就建立了一个基于递归神经网络的强化学习算法(RL),如果某一个特定的设计方案在CIFAR-10数据集上表现良好,该算法就会得到"奖励"。

由此产生的体系架构不仅在CIFAR-10上表现良好,而且在ImageNet上也取得了最先进的结果。NASNet由Normal Cell和 Reduction Cell 组成,它们相互重复。

简化理解:Keras中最新体系结构的卷积块列表

简化理解:Keras中最新体系结构的卷积块列表

这就是如何在Keras中实现Normal Cell。除了层和设置的完美结合之外,没有什么新东西。

反向残差块

到目前为止,你已经听说过bottleneck block和可分离卷积。让我们把它们放在一起。如果你运行一些测试,你将注意到,由于可分离卷积已经减少了参数的数量,压缩它们可能会损害性能,而不是增加性能。

简化理解:Keras中最新体系结构的卷积块列表

作者提出了与bottleneck residual block相反的想法。它们使用廉价的1x1卷积来增加信道数,因为下面的可分离卷积层已经大大减少了参数的数量。在将其添加到初始激活之前,它会关闭信道。

简化理解:Keras中最新体系结构的卷积块列表

这个难题的最后一部分是可分离卷积后面没有激活函数。相反,它直接添加到输入中。这个块在放入架构时非常有效。

AmoebaNet Normal Cell

简化理解:Keras中最新体系结构的卷积块列表

通过AmoebaNet,我们就可以了解到ImageNet上的最新技术,可能还有图像识别技术。和Nasnet一样,它是由一种算法设计的,使用的搜索空间和以前一样。唯一的问题是,他们把强化学习算法换成了遗传算法。深入了解这一工作原理的细节超出了本文的范围。最后,作者找到了一个比NASNet更好的解决方案,而且计算成本更低。它在ImageNet上的准确率达到了97.87%,这在单个架构中还是第一次。

结论

作者希望这篇文章能让你对重要的卷积块有一个深刻的理解,并且实现它们可能比你想象的要容易。要更详细地了解这些架构,请查看各自的论文。你会注意到,一旦你掌握了论文的核心理念,就会更容易理解其余部分。还请注意,现实中通常会将BatchNormalization添加到mix 中,并且在应用激活函数的位置方面会有所不同。

作者:Paul-Louis Pröve

简化理解:Keras中最新体系结构的卷积块列表

编译出品


分享到:


相關文章: