通过简单代码回顾卷积块

2019年04月11日 来源:

本文为 AI 研习社编译的技术博客,原标题 History of Convolutional Blocks in simple Code,作者为 Paul-Louis Pröve。

翻译 | 孟凡 校对 | Lamaric 审核 | Lamaric

我会努力定期去阅读机器学习和人工智能相关的论文。这也是能够持续跟进进展的途径。作为一名计算机科学家,我经常在翻阅科学描述文本或者公式的数学符号时碰壁。我发现在普通代码中理解它要容易的多。因此在本文中,我想引导你通过 Keras 实现精选的架构的重要卷积块。

当你在 GitHub 上查阅受欢迎的架构实现的时候,你一定会惊讶于他们怎么会包含这么多代码。这是一个很好的包含足够数量的注释并且使用额外参数来增强模型的实践橡胶轴承
,但是与此同时这会分散架构本质的注意力。为了更加简化和缩短代码,我将使用一些别名函数:

我发现当删除模版代码时更具有可读性。当然,这只有在您理解我的首字母缩写后才有效,让我们开始吧!

瓶颈块

卷积层的参数数量取决于卷积核大小、输入滤波器和输出滤波器的的数量。你的络越宽,3x3 卷积就会付出更大的代价。

瓶颈块背后的思想是通过一个确定的比率 r 采用代价小的 1x1 卷积来减少通道数,以便随后的 3x3 卷积具有更少的参数。,我们在再使用一个 1x1 的卷积拓宽络。

Inception 模块

Inception 模块引入了并行使用不同操作并且合并结果的思想。因此络可以学习不同类型的滤波器。

这里我们使用卷积核大小为 1、3 和 5 的卷积层和 MaxPooling 层进行合并。这段代码展示了inception模块的原始实现。实际的实现是将它与上述瓶颈的思想结合起来,这使得它稍微复杂了一些。

Residual 块

ResNet 是一个被来自微软的研究者推出的架构,它允许神经络拥有他们希望得到的层数,同时仍能够提高模型的准确度。到现在你或许已经习惯它了了,但是在ResNet 之前情况并非如此。

这个想法是将初始的激活添加到卷积块的输出。因此络可以通过学习过程决定用于输出的新卷积的数量。做的注意的是Inception模块串联输出,而Residual模块是求和。

ResNeXt 块

基于它的名字你就能够猜到ResNeXt与ResNet的密切联系。作者将基数一词云如到另一个维度,比如宽度(通道数)和深度(层数)。

基数(cardinality)是指出现在模块中的平行路径数。这听起来像inception块并行发生的四个操作。然而,并非并行使用不同类型的操作,基数为4时是简单的使用相同操作四次。

如果它们做的是同样的事情为什么还要把他们并列?好问题。这个概念也被称作分组卷积而且可以追溯到原始的AlexNet论文。虽然,当时它主要被用做分解训练过程到多个GPU,而ResNeXt则用他们来增加参数的利用效率。

这个想法是将所有的输入通道分成几个组。卷积只会在它们专属的通道组中进行而不会影响到所有通道组。发型每个组将会学到不同类型的特征,同时提高了权重的效率。

想象一个瓶颈块,首先使用一个为4的压缩率将256个输入通道减少到64个,然后将它们恢复到256个通道作为输出眼镜布加工定制厂家
。如果我们想引入基数32和压缩率2,我们将使用32个平行的1x1的卷积层,其每个的输出通道为4(256/(32*2))个。之后我们使用32个拥有4个输出通道的3x3的卷积层,紧接着是32个1x1层,每个层有256个输出通道。一步包含将32个平行路径相加,使得在加上初始输入作为一个残差连接之前为我们提供单个输出。

左侧:ResNet块 右侧:参数复杂度大致相同的ResNeXt块

这里有很多东西需要消化。利用上图可以直观了解其如何起作用的,也可以直接复制这些代码,以便自己用Keras构建一个小型络。我的复杂描述可以用这9行简单的代码总结出来电动调节阀
,难道不是很棒吗?

顺便提一下,如果基数与通道的数量相同我们会得到一个称为深度可分离卷积的东西。自从引入了Xception架构以来,得到了广泛的使用。

Dense 块

一个dense块是一个residual块的极端版本,其中每个卷积层都会这个块中之前所有卷积层的输出。首先,我们将输入激活到列表中,之后我们进入一个循环,循环遍历块的深度。以便后续的迭代的到越来越多的输入特征映射。这个方案会持续进行直到达到所需要的深度为止。

虽然的到一个能够像DenseNet一样的出色的架构需要花费数月的研究,但实际的构建模块就是这么简单,令人着迷。

Squeeze-and-Excitation 块

SENet在短时间内是ImageNet的很杰出的架构。它建立在ResNext之上,而且专注于对络逐个通道的信息进行建模。在常规的卷积层中每个通道对于点积运算中的加法操作有着相同的权重。

Squeeze- and-Excitation块

SENet引入了一个非常简单的模块,它能够加入任何已经存在的架构。它创造了一个小的神经络,能够根据输入学习每个滤波器的权重。你可以看到它本身并不是卷积块,但是因为它能够添加到任何卷积块中而且能够提高性能,所以我想要将它添加到混合架构中。

每个通道被压缩成一个单值并馈入两层神经络。根据分布的通道,这个络会基于重要性加权这些通道,这些权重会与卷积激活相乘。

SENet引入了一个很小的计算开销,但是却可能改进任何卷机模型。在我看来,这个块并没有得到应有的重视。

NASNet 标准单元

这就是事情开始变得丑陋的地方。我们正在离开人们的空间,提出简单而有效的设计决策并且进去一个设计神经络架构的算法世界。NASNet在设计方面令人难以置信,但是他的实际架构却相对复杂。我们知道,在他ImageNet的表现是相当的好。

通过手工,作者定义了不同类型的卷积和池化层的搜索空间,每个层都有不同的可能性设置。他还定义了这些层如何平行排列,排列顺序以及怎样加或者串联这些层。一定这样定义,他们就建立了一个基于递归神经络的强化学习(RL)算法,如果特定的方案设计在CIFAR-10数据集上表现的良好,那么就会得到奖励。

由此产生的架构不仅再在CIFAR-10上表现良好,它也在ImageNet得到了杰出的结果。NASNet由标准单元和还原单元组成,它们彼此重复。

这是你如何在Keras中使用标准单元的代码。除了层的组合和设置非常好用之外没有什么新的东西。

倒置残差块

......

想要继续阅读,请移步至我们的AI研习社社区:

更多精彩内容尽在 AI 研习社。雷锋雷锋(公众号:雷锋)

不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。

雷锋雷锋

相关文章
  • 澳元美元12月5日交易策略澳元澳洲联
    澳元美元12月5日交易策略澳元澳洲联

    FX168财经报社(香港)讯 周二(12月5日)亚市早盘,/美元位于0.7605附近水平徘徊。日内外汇网站FX Charts分析师Jim Langlands撰文对澳元/美元作出简要分析,并提出交易策略。主要内容如下:上一交易日澳元/春天里美元开盘下跌,且当日大部分时间于0.7600一线下方震荡盘整,...

  • 市委政法委召开2016年次全体扩大会议黄冈新闻网
    市委政法委召开2016年次全体扩大会议黄冈新闻网

    市委政法委召开2016年次全体(扩大)会议添加时间 : 14:24:46作者 : 吴爱春 王欣 曾辉 来源 : 黄冈  黄冈(黄冈)消息(吴爱春通讯员王欣曾辉)2月23日,市委政法委召开2016年次全体(扩大)会议,贯彻落实党的十八大、十八届三中、四中、五中全会和习总...

  • 消防宣传月福清做好六个方面消防宣传活动
    消防宣传月福清做好六个方面消防宣传活动

    本资料复制自看福清: 本报讯 11月7日,我市在红星美凯龙全球家居生活广场举办主题为“找火灾隐患,保家庭平安”的消防宣传月活动启动仪式暨大型消防趣味互动活动(如图),共同守护美丽家园。 启动仪式后,消防趣味互动活动随即展开。活动现场设置了消防...

  • 韩国沉船事故死亡人数升至262人仍有40人失踪
    韩国沉船事故死亡人数升至262人仍有40人失踪

    - 国际 - 舜摘 要:据韩联社报道,韩国救援人员5日在沉没的“岁月”号客轮中再找到12具遇难者遗体,使得这次事故造成的死亡人数上升到262人,失踪人数下降到40人。据韩联社报道,韩国救援人员5日在沉没的岁月号客轮中再找到12具遇难者遗体,使得这次事故造成...

  • 不爱喝水吃太多肉5种饮食习惯伤透你的肾六安新闻
    不爱喝水吃太多肉5种饮食习惯伤透你的肾六安新闻

    原标题:哪些饮食习惯会伤肾呢?很多人都在通过各种药物保护肾脏,其实,在生活中形成的各种不良饮食和生活习惯在不停地伤害你的肾。专家指出,不爱喝水将是的伤肾举动。五种饮食习惯伤害你的肾(1)不爱喝水体内新陈代谢的废物主要是由肝脏和肾脏处理,...

  • 巴萨2600万买中卫谁成幸运儿为阿费莱标价千万
    巴萨2600万买中卫谁成幸运儿为阿费莱标价千万

    易体育6月30道:在26日的发布会上,罗塞尔明确指出,巴萨今夏的转会预算为4000万欧元。比拉诺瓦在首次以巴萨主帅身份出席发布会时就说过,巴萨今夏只需要收购左后卫和中后卫。这也就意味着。除了里尔之外,拉齐奥和其老东家埃因霍温,近也都与荷兰人传出...