resnet思想的提出:大量实验证明,增加神经网络的层数,机器学习效果会更好,但是如果知识单纯的增加神经网络层数,网络的学习能力也会下降,如图:20曾网络训练效果更好,为了解决在不减少训练层数的情况下,误差不会增加,提出了resnet思想。
假定一层网络的输入是x,输出是H(x),如果做到H(x)-x尽可能趋近于0,我们就可以判定x到H(x)为恒等映射。这里我们规定F(x)=H(x)-x,并称F(x)为残差,并且目标就是,将残差尽可能将为0,从而使得网络加深且准确率不降低。
为什么要加深网络层次结构:
这里引入一篇文章:深度 | 周志华:“深”为什么重要,以及还有什么深的网络
里面写到:
但是实际上在学术界大家一直没有想清楚一件事情,就是我们为什么要用这么深的模型,或者说为什么深的模型要比浅的模型表现好那么多?到今天为止,学术界都还没有统一的看法。有很多的论述。我在这里面跟大家讲一个我们前段时间给出的一个论述。这个论述其实主要是从模型的复杂度的角度来讨论。
我们知道一个机器学习模型,它的复杂度实际上和它的容量有关,而容量又跟它的学习能力有关。所以就是说学习能力和复杂度是有关的。机器学习界早就知道,如果我们能够增强一个学习模型的复杂度,那么它的学习能力能够提升。
那怎么样去提高复杂度,对神经网络这样的模型来说,有两条很明显的途径。一条是我们把模型变深,一条是把它变宽。如果从提升复杂度的角度,那么变深是会更有效的。当你变宽的时候,你只不过是增加了一些计算单元,增加了函数的个数,在变深的时候不仅增加了个数,其实还增加了它的嵌入的程度。所以从这个角度来说,我们应该尝试去把它变深。