声明:文章目的只是方便自己之后回顾,无意侵权,若有不合适请留言,会尽快删除。
1. 举例讲解残差单元为什么有效。
来自知乎链接 :【模型解读】resnet中的残差连接,你确定真的看懂了?
首先大家已经形成了一个通识,在一定程度上,网络越深表达能力越强,性能越好。
不过,好是好了,随着网络深度的增加,带来了许多问题,梯度消散,梯度爆炸;在resnet出来之前大家没想办法去解决吗?当然不是。更好的优化方法,更好的初始化策略,BN层,Relu等各种激活函数,都被用过了,但是仍然不够,改善问题的能力有限,直到残差连接被广泛使用。
在反向传播过程中,一旦其中某一个导数很小,多次连乘后梯度可能越来越小,这就是常说的梯度消散,对于深层网络,传到浅层几乎就没了。但是如果使用了残差,每一个导数就加上了一个恒等项1,dh/dx=d(f+x)/dx=1+df/dx。此时就算原来的导数df/dx很小,这时候误差仍然能够有效的反向传播,这就是核心思想。
我们举个例子直观理解一下:
假如有一个网络,输入x=1,非残差网络为G,残差网络为H,其中H=F(x)+x
有这样的一个输入输出关系:
在t时刻:
非残差网络G(1)=1.1,
残差网络H(1)=1.1, H(1)=F(1)+1, F(1)=0.1
在t+1时刻:
非残差网络G’(1)=1.2,
残差网络H’(1)=1.2, H’(1)=F’(1)+1, F’(1)=0.2
这时候我们看看:
非残差网络G的梯度 = (1.2-1.1)/1.1
而残差网络F的梯度 = (0.2-0.1)/0.1
因为两者各自是对G的参数和F的参数进行更新,可以看出这一点变化对F的影响远远大于G,说明引入残差后的映射对输出的变化更敏感,输出是什么?不就是反应了与真值的误差吗?
所以,这么一想想,残差就应该是有效的,各方实验结果也证明了。
2. 解释了什么叫做神经网络的退化
知乎链接 :残差网络解决了什么,为什么有效?
神经网络的退化:在神经网络可以收敛的前提下,随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降。