内容简介:网络更深带来的一个非常大的好处,就是逐层的抽象,不断精炼提取知识,如下图第一层学习到了边缘,第二层学习到了简单的形状,第三层开始学习到了目标的形状,更深的网络层能学习到更加复杂的表达。如果只有一层,那就意味着要学习的变换非常的复杂,这很难做到。
在一定的程度上,网络越深,性能越好。这一次我们来考虑另一个维度, 宽度,即通道(channel)的数量 。注意我们这里说的和宽度学习一类的模型没有关系,而是特指深度卷积神经网络的宽度。
1 为什么需要足够的宽度
网络更深带来的一个非常大的好处,就是逐层的抽象,不断精炼提取知识,如下图第一层学习到了边缘,第二层学习到了简单的形状,第三层开始学习到了目标的形状,更深的网络层能学习到更加复杂的表达。如果只有一层,那就意味着要学习的变换非常的复杂,这很难做到。
而宽度就起到了另外一个作用,那就是让每一层学习到更加丰富的特征,比如不同方向,不同频率的纹理特征。
下面是AlexNet模型的第一个卷积层的96个通道,尽管其中有一些形状和纹理相似的卷积核(这将成为优化宽度的关键),还是可以看到各种各种的模式。
因为该卷积层的输入是RGB彩色图,所以这里就将其可视化为3通道的彩色图,每一个大小是11*11。
有的是彩色有的是灰色,说明有的侧重于提取纹理信息,有的侧重于提取颜色信息。
可以发现卷积核可视化之后和Gabor特征算子其实很像。 Gabor特征算子就是使用一系列不同频率的Gabor滤波核与图像卷积,得到图像上的每个点和附近区域的频率分布。通常有8个方向,5个尺度。
太窄的网络,每一层能捕获的模式有限,此时网络再深都不可能提取到足够的信息往下层传递。
2 网络到底需要多宽
那么一个网络是越宽越好吗?我们又该如何利用好宽度呢?
2.1、网络宽度的下限在哪?
就算一个网络越宽越好,我们也希望效率越高越好,因为宽度带来的计算量是成平方数增长的。我们知道对于一个模型来说,浅层的特征非常重要,因此网络浅层的宽度是一个非常敏感的系数,那么发展了这么久,那些经典的网络第一个卷积层的宽度都是多少呢?
从AlexNet的96层到Vgg,Resnet等多数网络使用的64层,到高效网络Mobilenet的32层和Shufflenet的24层,似乎已经探到了下限,再往下性能就无法通过其他的方法来弥补了。
前次我们说过有许多的研究都验证了网络必须具有足够的深度才能逼近一些函数,比如文[1]中构造的3层网络,如果想要2层网络能够逼近表达能力,宽度会是指数级的增加。
那么反过来,是不是也有一些函数只有足够宽才能够表达呢?
针对网络宽度的研究虽不如网络深度多,但是也有学者做了相关研究。文[2]中就提出了任何Lebesgue-integrable函数,不能被一个宽度小于n的ReLU网络逼近,n是输入的维度,Lebesgue-integrable函数就是满足下面积分条件的函数。
不过与深度不同的是,这样的一些函数宽度减少后,用于补偿模型性能的深度不是呈指数级增长,而是多项式增长,这似乎反应了宽度并没有深度那么重要。
不过不管怎么样,当前研究者们都从理论上探索了宽度和深度的下限,表明宽度和深度是缺一不可的。
2.2、网络宽度对模型性能的影响
网络的宽度自然也不是越宽越好,下面我们看看网络的宽度带来的性能提升。
我们看一下Mobilenet网络的结果,Mobilenet研究了网络的宽度对性能的影响,通过一个乘因子来对每一层的宽度进行缩放,它们试验了 1, 0.75, 0.5和0.25共4个值。
从上面结果可以看得出来,性能是持续下降的。
那么,是不是网络越宽越好呢?下面我们还是通过几个实验来证明就是了。公开论文中使用的ImageNet等数据集研究者已经做过很多实验了,我们另外选了两个数据集和一个全卷积模型。
第一个数据集是GHIM数据集,第二个数据集是从Place20中选择了20个类别,可见两者一个比较简单,一个比较困难。
使用全卷积模型的基准结构,包含5层卷积和一个全连接层, 因此我们称其为allconv6吧,表示深度为6的一个卷积网络。
对这个网络的各个卷积层,我们也设置了不同的参数配置如下,每一个卷积层的stride都等于2。
首先我们比较Allconv6_1,Allconv6_2,Allconv6_3,Allconv6_4这4个模型和基准模型的结果,它们是以Allconv6_1为基础的模型。
Allconv6_1是各个通道数为baseline的四分之一的网络 ,而Allconv6_2,Allconv6_3,Allconv6_4分别是将Allconv6_1的第1,2层,第3,4层,第5层卷积通道数加倍的网络。
在GHIM数据集上的收敛结果如下:
从上图结果可以看出,基准模型allconv6的性能最好,allconv6_2,allconv6_3,allconv6_4的模型性能都超过allconv6_1,说明此时增加任何一个网络层的通道数都有益于模型性能的提升,而且性能仍旧未超过基准模型。
然后我们再看allconv6_5,allconv6_6,allconv6_7,allconv6_8与基准模型的对比, allconv6_5的各层的通道数只有baseline模型的一半 。
从上图可以看出,模型的性能相差不大,这说明allconv6_5已经有足够好的宽度,再增加无益于性能的提升。这一点可以通过Place20上的实验结果进行证明,结果如下:
2.3、网络宽度和深度谁更加重要?
这个问题目前没有答案,两者都很重要,不过目前的研究是模型性能对深度更加敏感,而调整宽度更加有利于提升模型性能。
Mobilenet的作者们将深层更窄的网络和浅层更宽的网络进行了对比,去掉了conv5_2到conv5_6这5层不改变分辨率的depth seperable卷积块,结果对比如下:
更窄的网络拥有了更少的参数和更好的性能,这似乎也验证了增加网络的深度比增加网络的宽度更有利于提升性能。
在Wide Resnet网络中,作者们在CIFAR10和CIFAR100上用参数只是稍微增加的一个16层的宽网络 取得了比1000层的窄网络更好的性能,而且计算代价更低。在ImageNet上50层的宽Resnet在参数增加少量的基础上,也比相应的ResNet152层的性能更好。
另一方面,宽度相对于深度对GPU也更加友好,因为GPU是并行处理的,许多研究也表明加宽网络比加深网络也更加容易训练。
没有谁更重要,根据笔者的经验,我们应该优先调整网络的宽度。
3 如何更加有效地利用宽度?
从前面的结果我们可知,网络的宽度是非常关键的参数,它体现在两个方面: (1) 宽度对计算量的贡献非常大。 (2)宽度对性能的影响非常大。
我们的追求当然是越窄同时性能 越高的网络,确实很贪婪,不过这是要实现的目标,可以从以下几个方向入手。
3.1、提高每一层通道的利用率
宽度既然这么重要,那么每一个通道就要好好利用起来,所以,第一个发力点,便是 提高每一层的通道利用率。
文[3]研究表明网络中存在参数互补现象,如果将减半后的通道补上它的反,会获得相当于通道减半前原有模型的表达能力。 基于这个原理,通过输入通道取反和输入通道进行concat的方式来扩充通道。 这样仅仅以原来一半的计算量便维持了原来的网络宽度和性能。
3.2、用其他通道的信息来补偿
这个思想在DenseNet[4]网络中被发挥地淋漓尽致。DenseNet网络通过各层之间进行concat,可以在输入层保持非常小的通道数的配置下,实现高性能的网络。
总结
深度学习成功的关键在于深,但是我们也不能忘了它的宽度,即通道数目,这对于模型性能的影响不亚于深度,在计算量上的影响甚至尤比深度更加重要。
送书福利
《深度学习之模型设计:核心算法与案例实践》
➤ 章节目录:
第1章 神经网络和计算机视觉基础
第2章 深度学习的基础
第3章 数据集、评测指标与优化目标
第4章 加深网络,提升模型性能
第5章 1×1卷积,通道维度升降的利器
第6章 加宽网络,提升模型性能
第7章 残差连接,深层网络收敛的关键
第8章 分组卷积与卷积拆分,移动端高效率经典模型
第9章 多尺度网络与非正常卷积,更丰富的感受野与不变性
第10章 多输入网络,图像检索和 排序 的基准模型
第11章 时序神经网络,有记忆的网络更聪明
第12章 卷积从二维变成三维,实现升维打击
第13章 动态推理与注意力机制,网络因样本而异
第14章 生成对抗网络
本书得到了依图科技CTO、新加坡工程院院士、IEEE Fellow颜水成教授,新智元创始人、CEO 杨静,中国科学院半导体研究所研究员鲁华祥,知识星球CEO吴鲁加4位业内大咖的鼎力推荐,是一本非常优质,适合任何深度学习领域从业者学习的好书。
➤ 获取方式
点击 阅读原文 前往 极市社区 ,在 文末留言 自己 深度学习 的心得感悟, 7月21日20点 ,极小东将选取 10条优质留言赠送此书 (共10本)。没有被抽到的开发者可以通过扫描下方二维码进行购买。
参考文献
[1] Eldan R, Shamir O. The power of depth for feedforward neural networks[C]//Conference on learning theory. 2016: 907-940.
[2] Lu Z, Pu H, Wang F, et al. The expressive power of neural networks: A view from the width[C]//Advances in Neural Information Processing Systems. 2017: 6231-6239.
[3] Shang W, Sohn K, Almeida D, et al. Understanding and improving convolutional neural networks via concatenated rectified linear units[C]//international conference on machine learning. 2016: 2217-2225.
[4] Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 谷歌开源Neural Tangents:简单快速训练无限宽度神经网络
- 测试图片宽度
- <input> 宽度自适应变化
- 零宽度字符:和谐?屏蔽?不存在的
- Android 自定义DialogFragment宽度控制
- html – 为什么忽略表宽度?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript语言精粹
Douglas Crockford / 赵泽欣、鄢学鹍 / 电子工业出版社 / 2009-4 / 35.00元
本书通过对JavaScript语言的分析,甄别出好的和坏的特性,从而提取出相对这门语言的整体而言具有更好的可靠性、可读性和可维护性的JavaScript的子集,以便你能用它创建真正可扩展的和高效的代码。 雅虎资深JavaScript架构师Douglas Crockford倾力之作。 向读者介绍如何运用JavaScript创建真正可扩展的和高效的代码。一起来看看 《JavaScript语言精粹》 这本书的介绍吧!