首先,推荐个油管的视频。中文解说,大家关注一波这个小哥哥哈,讲的很清楚。很直观。虽然是用我的解释,但是ppt是这个小哥的。
梯度爆炸,需要你理解什么是链式求导。ps,百度百科整的太复杂了,对我们来说没用的。
resnet网络结构:
最大的特点就是右边那个箭头。那么接下来我们就主要说下,resnet为解决什么问题,怎么解决的。
之后:
网络层数过深导致的梯度弥散:
自己推一下哈。其实就是过一遍脑子我感觉没啥补充。
所以结论就是层数深固然会带来高层次的语义信息,同时也会梯度弥散。
退化问题
左边是训练好的层数少的网络,右边是增加一部分更深的权值为1的网络,那么结果至少也是比左边好对吧。但是结果更差了。这就说明,深度可能造成多一事不如少一事的问题。既然浅层已经很好了为什么要更深。
权值为1的核:
0 0 0
0 1 0
0 0 0
一个两层网络就可以模拟任意函数
那么为什么resnet不跳一层,也不跳三层,而是两层呢。
而且这种啥都没有的,可以成为plain net,相比于resnet。
多层的张这样:
resnet可以解决退化和深度弥散
这张很关键哈。
为啥好使呢。就是我更深的有时候不好使对吧,我把权重调成1 也不行是吧。那我直接把你跳过不就行了?我直接吧浅层的输入送到更深的地方,把这个可能被跳过的,但是还是会产生输出的东西叫做残差,记为F(X),只要F(X)=0,就是被跳过了。很简单直观的思想。
残差的梯度公式证实解决梯度问题
是否有用看公式:
自己用笔推一下,很简单,没啥东西。所以这个梯度肯定是能直接落到x头上,深层是拦不住的。重要原因就是这个加号。
直观来讲:残差就是给了网络组装自己的权力。他可以有选择性的跳过一些结构。
总结
所以实际上残差网络并没有在本质上提供更好高层次的语义。也并不是完美解决梯度弥散的方式,他通过机器主动减少层次来达到更深,实际上是一个假的更深。而梯度的方法的确是一个大的进步。但是这个不是终点。
比较有意思的是,这个网络,机器学习的不仅仅是参数,它还自己调整了配置。脑补这个画面,机器人自己组装自己。