Resnet介绍

1.简介

         作者提出了一种深度学习网络框架resnet,用来解决层数过深时,神经网络训练效果变差的情况。按理来说层数越深,模型的效果就会越好。那些在Imagenet上登顶的网络模型它的网络层数都是非常多的,都不是一两层的网络训练出来的模型。深度是非常重要的,高级语义信息在深层网络时才被提取。而网络越深就越有可能出现梯度爆炸/消失,虽然我们可以通过normalizatio来解决,但网络并不是越深越好。作者给出了下面这张图

Resnet介绍_第1张图片

56层神经网络是20层神经网络比较深的版本(即网络结构一样,只是层数更多而已)。可以看到,无论是在训练集(左图)上,还是在测试集上(右图),56层神经网络的表现都要差于20层的神经网络。按理来说, 深的网络不应该比浅的网络训练效果差,因为我们总可以把新加的那些层变成identity mapping(即 若输入为x,则输出也为x,也就是保持原样的意思)。但实际上做不到,用SGD等优化算法找不到这样的解。

2.深度残差学习网络(deep residual learning framework)

Resnet介绍_第2张图片

         这是一个残差学习单元。x是上一层的输入,它经过一个残差函数F,最后的输出为H=F(x)+x。其中F=W2σ(W1x),W1是第一个weight layer。

Resnet介绍_第3张图片

         这是更直观的图。这里的W1和W2都是卷积层,σ是Relu函数。我觉得W是代表卷积核的参数,在56x56的矩阵中,卷积核对每个区域卷积,再把每个区域的输出结果进行Relu。为什么要加入这个残差学习块呢?因为残差学习相比原始特征直接学习更容易。当残差为0时,此时堆积层仅仅做了恒等映射,至少网络性能不会下降。实验证明,这个残差块往往需要两层以上,因为如果只有一层的话,y = W1x + x,相当于一个线性层,并不能起到提升作用。

3.不同层Resnet的结构

         输入是224x224的图片,卷积层、maxpool层都需要padding

Resnet介绍_第4张图片

         34层resnet可视化:

Resnet介绍_第5张图片

         conv1卷积可视化:

Resnet介绍_第6张图片

         maxpool层可视化:

Resnet介绍_第7张图片

参考:

1.https://arxiv.org/abs/1512.03385

2.https://zhuanlan.zhihu.com/p/79378841

3.http://www.atyun.com/40484.html

你可能感兴趣的:(神经网络,深度学习,cnn)