Addition VS Concatenate

Addition VS Concatenate

背景介绍

  (Feature fusion)特征融合:VGG网络提出以后,给人们一种印象,深度学习越复杂,参数越多,会有越强的表达能力。但是在深度神经网络的研究过程中,发现到达一定深度后,一味地增加网络的深度并不能带来效果的提升,反而会导致网络收敛变慢。这时需要引入一些其他的方法既能提高网络的表达能力,也不会使网络收敛速度大大降低。两种特征融合方法**(Addition和Concatenate)**随着时代的发展产生了。相信小伙伴们也已经有所了解,在这里我系统的整理一下它们之间的区别。

addition

Addition

  Addition,即残差相加,最经典的模型就是ResNet。关于ResNet的有关代码解析可以参考特征提取网络中的一篇博客[ResNet](https://ustccoder.github.io/2020/03/09/feature_extraction ResNet/)
ResNet
优点:

  1. 使用残差结构,使得深层网络包含浅层网络的信息,因此反向传播时可以通过不同的分支到达浅层网络。并且梯度中包含常数项,增加了梯度值,解决了梯度消失的问题
  2. 增加了网络的泛化能力,和VGG这种串行的网络相比,删除一层可能严重破坏网络结构,而ResNet删除一层,性能不会产生很大的退化。
  3. 浅层网络代表浅层特征,深层网络代表深层特征,浅层特征可能指代一些纹理信息,深层特征可能指代一些轮廓信息。残差结构将浅层特征与深层特征进行相加,实现特征互补,因此网络的表达能力更强

Concatenate

  Concatenate,即通道合并,最经典的模型就是DenseNet。关于DenseNet的有关代码解析可以参考特征提取网络中的一篇博客[DenseNet](https://ustccoder.github.io/2020/03/16/feature_extraction DenseNet/)
DenseNet
优点:

  1. 使用通道合并,使得深层网络包含浅层网络的信息,因此反向传播时可以通过不同的分支到达浅层网络解决了梯度消失的问题
  2. 增加了网络的泛化能力,和VGG这种串行的网络相比,删除一层可能严重破坏网络结构,而DenseNet删除一层,性能不会产生很大的退化。
  3. 浅层网络代表浅层特征,深层网络代表深层特征,浅层特征可能指代一些纹理信息,深层特征可能指代一些轮廓信息。通道合并可以理解为从不同的角度观察特征图,使重要的细节信息从多方位角度保存下来,然后与深层特征结合互补,因此网络的表达能力更强

Addition与Concatenate的区别

  1. 最明显的区别是数据维度的变化Addition操作要求数据维度完全相同,并且*相加后的维度和之前相同Concatenate操作要求数据可以有一个维度不相同,一般是通道数维度,即batch_size,图像的高和宽都是相同的,并且合并后的通道数是参与合并的数据通道数之和**。
  2. Addtion是在保持特征维度的情况下,增加了特征的信息量,而Concatenate是通过增加特征维度的情况下,增加了特征的信息量,但是每一维特征的信息量没有变化
  3. 因为Addition和Concatenate在数据维度上的差异,当后面加入卷积层时,导致Addition的计算量比Concatenate小得多,更加节省参数和计算量
  4. Concatenate将原始特征直接拼接,让网络自己学习如何融合特征,信息不会丢失,而且更加体现出多角度融合的概念,而Addition则将特征进行相加,相当于指定了一种特征融合的方式,因此可以认为Addition是Concatenate的一种特殊形式

小结

  在这个博客中简单直白的讲述了两种特征融合方法的区别,在使用中根据小伙伴们的需要,如果参数量较小,则可以使用多角度Concatenate来增加信息量,并让网络自我学习更新参数如果参数量较大,则可以使用Addition来增加信息量,给网络指定一个方向,让网络学习更新参数

-------------本文结束感谢您的阅读-------------
0%