文章目录
网络结构总结
Resnet → Densenet → Senet → ResNeXt
1、Resnet
ResNet模型的核心是通过建立前面层与后面层之间的“短路连接”,这有助于训练过程中梯度的反向传播,从而能训练出更深的CNN网络。
更多的层不一定有更好的acc,会出现两个问题:
- 梯度消失和梯度爆炸:对输入数据和中间层的数据进行归一化操作即可
- 退化问题:网络层深度开始增加时候,acc达到饱和状态然后迅速下降。也就是说,在我们的网络达到某一个深度的时候,咱们的网络已经达到最优状态了,再加深网络就会出现退化问题。
但是使用残差网络就能很好的解决这个问题。假设当前网络的深度能够使得错误率最低,如果继续增加咱们的ResNet,为了保证下一层的网络状态仍然是最优状态,咱们只需要令F(x) = 0即可。真实情况虽很难达到最优,但是总会有那么一个时刻它能无限接近,采用resnet的话,也只用小小的更新F(x)部分的权重值就行了,不用像一般的卷积层一样大动干戈。
2、Densenet
与Resnet相比,没有采用合并之前所有层的特征到一层的方法,densenet是连接起来结合所有层的特点。DenseNet模型建立的是前面所有层和后面层的密集连接,通过特征在channel上的连接来实现特征重用(Feature reuse)。这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能。相比ResNet,DenseNet提出了一个更激进的密集连接机制,即互相连接所有的层,具体来说就是每个层都会接受其前面所有层作为其额外的输入。下面两张图可以看出其区别。
上图是ResNet网络的短路连接机制(其中+代表的是元素级相加操作)
上图是DenseNet网络的密集连接机制(其中c代表的是channel级连接操作)
在Densenet中,会连接前面所有层作为输入。比如下图中h3的输入不仅包括来自h2的x2,还包括前面两层的x1和x2,它们是在channel维度上连接在一起的。