本篇文章4771字,读完约12分钟
雷锋。(公开号码:雷锋。这篇文章的作者,何教授,最初发表在智湖和雷锋的主页上。网站被授权发布它。
自2012年alexnet开发以来,科学家们已经发明了各种cnn模型,它们更深、更精确、更轻。我将对近年来一些革命性的工作做一个简短的盘点,并从这些创新的工作中讨论cnn未来的转型方向。
注:由于水平有限,以下意见可能有偏差。我希望丹尼尔能纠正我。此外,只介绍有代表性的模型,一些著名的模型将不会介绍,因为同样的原则。如有遗漏,请指出。
一、卷积只能在同一组中进行?——群卷积群卷积,最早出现在alexnet。由于当时有限的硬件资源,在训练alexnet时,所有的卷积运算不能在同一个gpu上处理。因此,作者将特征映射分别分配给多个图形处理器进行处理,最终融合多个图形处理器的结果。
alexnet
包卷积的思想影响深远。目前,一些轻量级sota(最先进的)网络使用包卷积运算来节省计算。但是,主题所有者有一个问题:如果在不同的gpu上划分组卷积,那么每个GPU的计算量将减少到1/组,但是如果仍然在同一个GPU上计算,那么总的计算量会保持不变吗?在pytorch上寻找群卷积运算的介绍,希望读者能回答我的问题。
pytroch github
编辑:
在这个问题上,智虎的网友@蔡冠宇提出了自己的看法:
我觉得conv集团本身的参数应该大大降低。例如,当输入通道为256时,输出通道也为256,内核大小为3*3,不带组conv的参数为256*3*3*256。如果组是8,每组的输入通道和输出通道都是32,参数是8*32*3*3*32,这是原来的8点,这是我的理解。我的理解是,每组的输出特征映射应该以连接的方式组合,而不是以元素方式相加,所以每组的输出通道是输入通道/#组,这大大减少了参数的数量。
第二,卷积核必须尽可能大?-3× 3卷积核alexnet使用一些非常大的卷积核,例如11×11和5×5卷积核。以前,人们认为卷积核越大,感受野越大,你看到的图像信息越多,你得到的特征就越好。然而,较大的卷积核会导致计算量的爆炸,不利于模型深度的增加,计算性能也会下降。因此,在vgg(第一次使用)和初始网络中,两个3×3卷积核的组合优于一个5×5卷积核,并且参数量(3×3×2+1 vs 5×5×1+1)减少,因此3×3卷积核在以后的各种模型中被广泛使用。
3.每层卷积只能使用一种大小的卷积核?-初始结构传统的分层网络基本上是一堆卷积层,每一层只使用一种大小的卷积核。例如,在vgg结构中使用了大量的3×3卷积层。事实上,同一层特征图可以使用不同大小的多个卷积核来获得不同尺度的特征,然后将这些特征组合起来以获得比使用单个卷积核更好的特征。谷歌的谷歌网络,或称初始系列网络,使用多重卷积核的结构:
初始结构的初始版本
如上图所示,输入的特征图分别用1×1、3×3和5×5的卷积核进行处理,将得到的特征组合起来得到更好的特征。然而,这种结构有一个严重的问题:参数的数量远远大于单个卷积核的数量,并且如此巨大的计算量将使模型效率低下。这导致了一种新的结构:
4.如何减少卷积层的参数?发明googlenet的瓶颈团队发现,如果只引入多种大小的卷积核,将会带来很多额外的参数,这是受网络中1×1卷积网络的启发。为了解决这个问题,他们在初始结构中添加了一些1×1卷积核,如图所示:
具有1×1卷积核的初始结构
根据上图,让我们做一个比较计算,假设要素图的输入维度是256个维度,输出维度也是256个维度。有两种操作:
256维输入直接通过3×3×256卷积层输出256维特征图,因此参数量为256×3×3×256 = 589,824
256维输入首先经过1×1×64卷积层,然后经过3×3×64卷积层,最后经过1×1×256卷积层,256维输出为256×1×1×64+64×3×64+64×1×1×1。将第一次操作的参数数量完全减少到九分之一!
1×1卷积核也被认为是一种意义深远的运算,它将被应用于大规模网络,以减少未来的参数。
5.网络越深,训练就越难吗?- resnet剩余网络
resnet跳过连接
传统的卷积逐层网络会遇到问题。随着层数的加深,网络的性能越来越差,这主要是因为随着层数的加深,梯度消散越来越严重,使得反向传播很难训练浅层网络。为了解决这个问题,提出了一种“剩余网络”,使得梯度流更容易进入浅层网络,而这种“跳过连接”可以带来更多的好处。在这里,我们可以参考一篇ppt: resnet/densenet:为什么skip connection和其他有效,以及我的文章:resnet和densenet为什么能如此深入?本文详细解释了为什么剩余块可以解决梯度弥散问题。你可以结合下面的评论来思考。
6.在卷积运算中,你必须考虑通道和区域吗?深度操作
上面可以看到标准的卷积过程。当卷积一个2×2的卷积核时,相应图像区域中的所有通道被同时考虑。问题是,为什么必须同时考虑图像区域和通道?为什么我们不能把通道和空之间的区域分开考虑?
异常网络就是基于上述问题而发明的。首先,我们对每个通道执行卷积运算,并且有多少个通道就有多少个滤波器。在获得新的通道特征图之后,对这些新的通道特征图执行标准的1×1跨通道卷积运算。该操作称为“深度方向卷积”,缩写为“dw”。
这种操作非常有效,在imagenet 1000类分类任务中已经超过了inceptionv3的性能,同时也减少了大量的参数。让我们做一个计算,假设输入通道的数量是3,输出通道的数量是256。有两种方法:
1.直接连接一个3×3×256的卷积核,参数量为3×3×3×256 = 6,912
2.dw操作分两步完成。参数数量为3×3×3+3×1×1×256 = 795,参数数量减少到九分之一!
因此,与标准卷积运算相比,深度运算减少了很多参数,指出该模型具有更好的分类效果。
编辑:2017.08.25
这篇文章发表后12个小时,一位智虎用户给我发了一封私人信件,向我介绍了深度方向和点方向的历史工作,exception和mobilenet也引用了他们16年的工作,即王敏等人的因子卷积神经网络。在本文的深度方向,每个通道可以输出一个以上的特征图(称为“基础层”),而exception的深度方向可分离卷积就是这篇工作中的“单个基础层”的情况。建议感兴趣的读者注意他们的工作。这是一篇介绍性的博文:[深度学习]卷积层加速了因子卷积神经网络。作者提到的可分离卷积的第一个介绍应该追溯到lau- rent sifre 2014第6.2章的图像分类的刚性运动散射。
7.分组卷积可以随机分组通道吗?- shufflenet在alexnet的组融合中,特征的通道被均匀地分成不同的组,最后特征通过两个完全连通的层进行融合,使得不同组之间的特征只能在最后时刻进行融合,这对于模型的推广是非常不利的。为了解决这个问题,shufflenet在堆叠该组conv层之前执行一次信道混洗,并且混洗的信道被分配给不同的组。经过一组conv后,频道再次洗牌,然后分成下一层组卷积,从而循环播放。
来自shufflenet的论文
经过通道洗牌后,conv组的输出特性可以考虑更多通道,输出特性自然更具代表性。此外,alexnet的包卷积实际上是标准卷积运算,而shufflenet中的包卷积运算是深度卷积。因此,shufflenet结合了信道混洗和包深度方向的卷积,可以得到少量的参数,其精度优于mobilenet和alexnet!
此外,值得一提的是微软亚洲研究院的微软亚洲研究院最近也做了类似的工作。他们提出了一个igc单元,即一般的卷积神经网络交错卷积,它在形式上类似于两个卷积。例外模块可视为交错卷积的一种特殊情况。特别推荐阅读这篇文章:王敬东详细讲解了iccv 2017的论文选编:通用卷积神经网络交织卷积。
应该注意的是,组conv是一种信道分组方法,而深度+点态是一种卷积方法,但两者都适用于洗牌。因此,conv群和深度+点态不能等同。
八、渠道的特征是平等的吗?- senet无论是在盗梦空间、densenet还是shufflenet中,所有通道生成的特征都是直接组合在一起的,与权重无关,那么我们为什么要认为所有通道的特征对模型的影响是相同的呢?这是一个很好的问题,所以imagenet2017冠军赛内特出来了。
塞内加尔结构
上层输出一组要素,分为两条路线。第一条路径直接通过,第二条路径首先执行挤压操作(全局平均汇集),以将每个通道的二维特征压缩为一维,从而获得特征通道向量(每个数字代表相应通道的特征)。然后,执行激励操作,并且这一列特征通道向量被输入到两个完全连接的层和sigmoid中,并且特征通道之间的相关性被建模。获得的输出实际上是每个通道对应的权重,这些权重通过尺度倍增通道被加权到原始特征(第一种方式),从而完成特征通道的权重分配。作者可以详细解释这篇文章:专栏| momenta details imagenet 2017获奖架构senet
9.一个固定大小的卷积核能看到更宽的区域吗?-扩张卷积标准的3×3卷积核只能看到3×3对应区域的大小,但扩张Conv使得卷积核可以看到更大的范围。放大了的conv的原始论文的结构如图所示:
从上图b可以理解,卷积核的大小仍然是3×3,但是在每个卷积点之间有一个空洞,即在绿色的7×7区域中,只有9个红色的点被卷积,其他点的权重为0。这样,即使卷积核的大小不变,它看到的区域也会变大。在这个答案中可以找到一个详细的解释:如何理解空洞卷积?
十、卷积核的形状必须是矩形吗?-可变形卷积
图片来自微软亚洲研究院的公开号码
传统的卷积核一般为矩形或正方形,但msra提出了一个相当反直觉的观点,即卷积核的形状可以改变,变形后的卷积核只能看到感兴趣的图像区域,这样识别的特征更好。
图片来自微软亚洲研究院的公开账户。为此,可以直接在原滤波器前增加一层滤波器,学习下一层卷积核的偏移量,所以只增加一层滤波器,或者直接将原网络中的某一层滤波器作为学习偏移量的滤波器,这样实际增加的计算量相当小,但是可以实现可变形卷积核,特征识别效果更好。msra的详细解释可以在以下链接中找到:可变换卷积网络:计算机的新视野。
灵感与思考现在,越来越多的cnn模型正在从巨型网络向轻量级网络逐步演进,模型的准确性也越来越高。现在,行业的焦点不是精度的提高(因为它已经很高了),而是速度和精度的权衡,希望模型能够快速准确。因此,从最初的alexnet和vggnet,到更小的initiative和resnet系列,再到目前可以移植到移动终端的mobilenet和shufflenet(体积可以减少到0.5mb!),我们可以看到这样的一些趋势:
卷积核:
大卷积核被几个小卷积核代替;
用多尺度卷积核代替单尺度卷积核;
固定形状卷积核倾向于使用可变形卷积核;
使用1×1卷积核(瓶颈结构)。
卷积层通道:
标准卷积被深度卷积代替;
使用包卷积;
使用频道洗牌;分组卷积之前;
频道加权计算。
卷积层连接:
使用跳过连接使模型更深;
密集连接,使每一层与其他层的特征输出融合(densenet)
鼓舞
与信道加权运算相比,卷积层的跨层连接也可以加权吗?瓶颈+群组conv+频道洗牌+深度组合会成为未来减少参数数量的标准配置吗?
如果你有更多的想法或意见,请发表评论并留言。好主意值得交流。另外,我的小书号是:人工智慧-小书。一些技术文章,如gpu冷却,将发表在这本小书,一些理论见解将发表在智湖。请注意。
雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。
标题:变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。
地址:http://www.hcsbodzyz.com/hcxw/6391.html