何为残差网络?
为什么使用残差结构之后的深度学习网络深度跳跃式?
理解:
原来的网络网络映射的方式是:
z= Z(x)
在实际过程中不加入残差网络的话,网络的深度在达到一定深度后会出现degradation问题,也就是说误差会随着深度增加而增大,这就麻烦了!
(1)先考虑如何加深网络而不导致error增加?
在理论下,如果后面增加的网络映射是 z = x的自身映射,那么增加就不会导致网络的误差增加,这样看没有意义?不
于是就带来了这样的想法:
z = x+F(x);x成为shortcut
假定自身映射是增加的深度网络最优结果,那么,网络至少不会增加原有的网络的训练准确度,于是就考虑让网络学习优化,努力使优化结构取向于自身映射,即F(x)趋于0.
(2)这里面有个理解盲区,为什么不直接让网络优化到在z = x,而非要加一个“shortcut”
首先,实验证明直接增加深度不可行,其次,网络的学习不可控,我们所使用的深度残差网络结构的前提是假定自身映射是最优化,而深度学习网络不知道啊,所以这个网络的优化方向我们根本不知道,或许它永远也找不到目前人们所假定的自身映射呢?或者能找到优化的映射,但是后者已经证明现在这种粗暴的直接添加的方式不可能实现。
于是,网络太笨,没关系,我人工来帮你订立一个标准,就是自身映射,而网络需要学习的就是怎么把F(x)优化到趋于0,相当于给网络增加了一个约束,深度学习的过程中,已经订立了自身映射这个基准,所有的学习都围绕这个基准来,带来的好处就是:
网络总是会趋于最优化的解,而这个最优化是围绕自身映射来的,增加网络深度就不会带来degradation问题,因为优化的迭代会让网络层最差也是不优化,而不会带来更大误差,最差劲也是无限趋近与自身映射,而永远达不到自身映射,这过程中网络会学习到扰动,这种扰动就会使网络能向更好的方向优化,于此,残差网络成为了利器!
网友评论