首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

深度学习笔记(七):网络宽度(卷积核个数)的一些想法

  • 25-03-03 18:01
  • 2725
  • 7383
blog.csdn.net

文章目录

  • 一、前言
  • 二、网络深度的意义
  • 三、宽度的意义
  • 四、 网络宽度设计
    • 4.1 网络宽度的下限在哪?
    • 4.2 网络宽度对模型性能的影响
    • 4.3 网络宽度和深度谁更加重要?
  • 五、如何加有效地利用宽度?
    • 5.1 提高每一层通道的利用率
    • 5.2 用其他通道的信息来补偿
  • 总结
  • 参考文献

一、前言

网络结构的设计中有几个比较重要的问题:

网络的深度(卷积层的个数)

网络的宽度(通道的数量,企事业就等价于网络中同层卷积层中卷积核的个数)

网络的感受野(卷积核的大小)

在一定的程度上,网络越深,感受野越大性能越好。这一次尝试学习一下深度学习网络宽度的影响。

PS。主要文字图片来源于参考文献【1】 的中间加入了一些自己的想法和错误修改所以没有添加为转载

二、网络深度的意义

在一定范围内,网络更深,一般效果更好(在没有过拟合的情况下)。较深的网络可以做到逐层的抽象,不断精炼提取知识,其实也可以理解为完成了一个在较大感受野下实现高纬度的非线性的任务,同时也就是说完成了更高维更复杂更具体的函数拟合或者知识概括或者特征提取。

如下图第一层学习到了边缘,第二层学习到了简单的形状,第三层开始学习到了目标的形状,更深的网络层能学习到更加复杂的表达。(其实这里的第几层学到什么只是我们表述成这样更方便理解,针对计算机他学习到的只是不同形式上的分类滤波器,而我们把它抽象成边缘简单形状目标形状等任务,黑盒网络中在可视化之前其实我们是没有办法做到定向控制每一层学习到什么的)。

言归正传,如果只有一层,那就意味着要学习的变换非常的复杂,这很难做到。

在这里插入图片描述

三、宽度的意义

宽度是为了实现另外一个功能,那就是让每一层学习到当前知识概括,特征提取情况下更加丰富的特征,比如不同方向,不同频率,不同颜色,不同性状等的纹理特征。

下面是AlexNet模型的第一个卷积层的96个通道,尽管其中有一些形状和纹理相似的卷积核(这将成为优化宽度的关键such as ghostnet),还是可以看到各种各种的模式。
在这里插入图片描述

因为该卷积层的输入是RGB彩色图,所以这里每个卷积核都有三通道对应,可以将其可视化为3通道的彩色图,每一个大小是11*11。

有的是彩色有的是灰色,说明有的侧重于提取纹理信息,有的侧重于提取颜色信息。

可以发现卷积核可视化之后和Gabor特征算子其实很像。Gabor特征算子就是使用一系列不同频率的Gabor滤波核与图像卷积,得到图像上的每个点和附近区域的频率分布。通常有8个方向,5个尺度。

太窄的网络,每一层能捕获的模式有限,此时网络再深都不可能提取到足够的信息往下层传递。

四、 网络宽度设计

4.1 网络宽度的下限在哪?

就算一个网络越宽越好,我们也希望效率越高越好,因为宽度扩充会带来计算量的庞大增长。对于一个模型而言,相较于深层网络所提取的特征,浅层的特征非常重要,因此网络浅层的宽度是一个非常敏感的系数。罗列一下经典网络第一个卷积层的宽度:

在这里插入图片描述

从AlexNet的96层到Vgg,Resnet等多数网络使用的64层,到高效网络Mobilenet的32层和Shufflenet的24层,似乎已经探到了下限,再往下性能就无法通过其他的方法来弥补了。

有许多的研究都验证了网络必须具有足够的深度才能逼近一些函数(相对于卷积神经网络而言如此,相较于mlp理论上只要有足够的宽度可以用三层拟合出任意函数),想要通过扩充宽度已达到降低深度的目的,并且能够有足够的逼近表达能力,宽度会是指数级的增加。

那么反过来,是不是也有一些函数只有网络足够宽才能够表达呢?

针对网络宽度的研究虽不如网络深度多,但是也有学者做了相关研究。参看文献[2]中就提出了任何Lebesgue-integrable函数,不能被一个宽度小于n的ReLU网络逼近,n是输入的维度,Lebesgue-integrable函数就是满足下面积分条件的函数。

在这里插入图片描述

不过与深度不同的是,这样的一些函数宽度减少后,用于补偿模型性能的深度不是呈指数级增长,而是多项式增长,这似乎反应了宽度并没有深度那么重要。

不过不管怎么样,当前研究者们都从理论上探索了宽度和深度的下限,表明宽度和深度是缺一不可的。

4.2 网络宽度对模型性能的影响

网络的宽度自然也不是越宽越好,下面我们看看网络的宽度带来的性能提升。

我们看一下Mobilenet网络的结果,Mobilenet研究了网络的宽度对性能的影响,通过一个乘因子来对每一层的宽度进行缩放,它们试验了1, 0.75, 0.5和0.25共4个值。

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ey76UXt5-1595213753441)(https://raw.githubusercontent.com/ZhouziqunZZQZZQ/picBed/master/image-20200720103418751.png)]

从上面结果可以看得出来,性能是持续下降的。

那么,是不是网络越宽越好呢?下面我们还是通过几个实验来证明就是了。公开论文中使用的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上的实验结果进行证明,结果如下:

在这里插入图片描述

4.3 网络宽度和深度谁更加重要?

这个问题目前没有答案,两者都很重要,不过目前的研究是模型性能对深度更加敏感,而调整宽度更加有利于提升模型性能。

Mobilenet的作者们将深层更窄的网络和浅层更宽的网络进行了对比,去掉了conv5_2到conv5_6这5层不改变分辨率的depth seperable卷积块,结果对比如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1VvTmut-1595213753463)(https://raw.githubusercontent.com/ZhouziqunZZQZZQ/picBed/master/image-20200720103706568.png)]

更窄的网络拥有了更少的参数和更好的性能,这似乎也验证了增加网络的深度比增加网络的宽度更有利于提升性能。

在Wide Resnet网络中,作者们在CIFAR10和CIFAR100上用参数只是稍微增加的一个16层的宽网络取得了比1000层的窄网络更好的性能,而且计算代价更低。在ImageNet上50层的宽Resnet在参数增加少量的基础上,也比相应的ResNet152层的性能更好。

在这里插入图片描述

另一方面,宽度相对于深度对GPU也更加友好,因为GPU是并行处理的,许多研究也表明加宽网络比加深网络也更加容易训练。

没有谁更重要,根据笔者的经验,我们应该优先调整网络的宽度。

五、如何加有效地利用宽度?

从前面的结果我们可知,网络的宽度是非常关键的参数,它体现在两个方面:(1) 宽度对计算量的贡献非常大。(2)宽度对性能的影响非常大。

我们的追求当然是越窄同时性能越高的网络,确实很贪婪,不过这是要实现的目标,可以从以下几个方向入手。

5.1 提高每一层通道的利用率

宽度既然这么重要,那么每一个通道就要好好利用起来,所以,第一个发力点,便是提高每一层的通道利用率。

参考文献[3]研究表明网络中存在参数互补现象,如果将减半后的通道补上已有通道通过线性变换(取反)得到的新的通道,会获得相当于通道减半前原有模型的表达能力。基于这个原理,通过输入通道取反和输入通道进行c拼接的方式来扩充通道。这样仅仅以原来一半的计算量便维持了原来的网络宽度和性能。

ghostnet中的也有类似的操作。

5.2 用其他通道的信息来补偿

这个思想在DenseNet[4]网络中被发挥地淋漓尽致。DenseNet网络通过各层之间进行concat,可以在输入层保持非常小的通道数的配置下,实现高性能的网络。(虽然看似效果如此,同时我觉得他的真实目的不仅仅是为了减少宽度而是高维度特征和低纬度特征的统一考量,并且还有一些减少梯度消失的思想在里面)

img

总结

深度学习成功的关键在于深,但是我们也不能忘了它的宽度,即通道数目,这对于模型性能的影响不亚于深度,在计算量上的影响甚至尤比深度更加重要。

参考文献

[1] 深入探讨深度学习模型性能与神经网络宽度之间关系

[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.

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览416623 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/107459047"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top