Resnet

来源:互联网 发布:mac重启卡住了怎么办 编辑:程序博客网 时间:2024/05/05 06:34

再上一偏博文中我们说到越复杂的问题需要越深层的神经网络拟合,但是越深层的神经网络越难训练,原因可能是过拟合以及损失函数的局部最优解过多(鞍点过多?导致经过相同的epoch更深的网络的trainerror大于较浅的网络,因为过鞍点需要更多的epoch,鞍点附近梯度很小,相关文献The Loss Surfaces of Multilayer Networks)导致模型更容易收敛到局部最优解。上一篇博文讲到可以把复杂问题分解成几个较简单的问题,然后分别训练几个较简单的模型,最后讲几个模型的输出连接起来送入FC层分类。
Resnet采用了另一种方法,也就是不分解原问题,而是把神经网络分解来降低拟合函数的复杂度,而损失函数是拟合函数的函数,所以降低拟合函数的复杂度也等同于降低了损失函数的复杂度。假设我们需要拟合的复杂函数为H(x),现在我们把H(x)分解为两个更简单的函数f(x)和g(x),即令H(x) = f(x) + g(x)。(Resnet不考虑过拟合)此处f(x)函数的结构和H(x)其实是一致的,都是几层卷积池化加上最后的fc层,但是因为有g(x)的加入使得f(x)的复杂度小于H(x).具体如下图所示:

这里写图片描述

由于我们并不知道什么样的g(x)最好,所以这里g(x)也需要训练,而一个三层的神经网络可以拟合连续闭区间上的任意函数,我们用一个三层的神经网络代替g(x),但是这样又会因为增加了额外的参数造成过拟合的风险,我们看到图中有两个三层的神经网络,我们可以把它们合并起来,所以一个更好的方法如下:
这里写图片描述

这样一来由于fc层的输入增加为了维持表达能力,fc层的隐层单元势必要增加,这样还是增加了参数,所以Resnet又做了调整:
这里写图片描述

0 0
原创粉丝点击