您好,欢迎访问一九零五行业门户网

resnet网络结构

resnet是在2015年有何凯明,张翔宇,任少卿,孙剑共同提出的,通过使用residual unit成功训练152层深的神经网络,在ilsvrc 2015比赛中获得了冠军,取得3.57%的top5错误率,同时参数量却比vggnet低,效果非常突出。resnet的结构可以极快地加速超深神经网络的训练,模型的准确率也有非常大的提升。
resnet最初的灵感出自这个问题:在不断增加神经网络的深度时,会出现一个degradation(退化)的问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为不光在测试集上误差增大,训练集本身误差也会增大。(推荐学习:php视频教程)
resnet使用了一个新的思想,resnet的思想是假设我们涉及一个网络层,存在最优化的网络层次,那么往往我们设计的深层次网络是有很多网络层为冗余层的。那么我们希望这些冗余层能够完成恒等映射,保证经过该恒等层的输入和输出完全相同。具体哪些层是恒等层,这个会有网络训练的时候自己判断出来。将原网络的几层改成一个残差块.
假设有一个比较浅的网络达到了饱和的准确率,那么后面再加上几个y=x的全等映射层,起码误差不会增加,即更深的网络不应该带来训练集上误差上升。而这里提到的使用全等映射直接将前一层输出传到后面的思想,就是resnet的灵感来源。假定某段神经网络的输入是x,期望输出是h(x),如果我们直接把输入x传到输出作为初始结果,那么此时我们需要学习的目标就是f(x) = h(x) - x。如图所示,这就是一个resnet的残差学习单元(residual unit),
resnet相当于将学习目标改变了,不再是学习一个完整的输出h(x),只是输出和输入的差别h(x)-x,即残差。
可以看到x是这一层残差块的输入,也称作f(x)为残差,x为输入值,f(x)是经过第一层线性变化并激活后的输出,该图表示在残差网络中,第二层进行线性变化之后激活之前,f(x)加入了这一层输入值x,然后再进行激活后输出。在第二层输出值激活前加入x,这条路径称作shortcut连接。
在使用了resnet的结构后,可以发现层数不断加深导致的训练集上误差增大的现象被消除了,resnet网络的训练误差会随着层数增加而逐渐减少,并且在测试集上的表现也会变好。在resnet推出后不久,google就借鉴了resnet的精髓,提出了inception v4和inception resnet v2,并通过融合这两个模型,在ilsvrc数据集上取得了惊人的3.08%的错误率。可见,resnet及其思想对卷积神经网络研究的贡献确实非常显著,具有很强的推广性。
更多php相关技术文章,请访问php图文教程栏目进行学习!
以上就是resnet网络结构的详细内容。
其它类似信息

推荐信息