残差网络(ResNets)(吴恩达深度学习笔记)
残差网络(ResNet)通过引入残差块和跳跃连接解决了深度神经网络的退化问题。其核心结构让网络可以直接学习输入输出间的残差,而非直接拟合目标映射。跳跃连接将浅层信息传递至深层,形成恒等映射关系,既保持了网络表达能力,又缓解了梯度消失/爆炸问题。实验证明,这种结构使极深网络(如100层)仍能有效训练并保持良好性能。残差网络的反向传播机制中,梯度通过主路径和跳跃连接同时传递,确保浅层能稳定接收深层梯度
·
目录
2.残差块(Residual block)与跳跃连接(skip connection)
1.残差网络简介
- Residual Networks (ResNets),残差网络 是一种解决 高深度 神经网络退化问题的卷积神经网络架构,它由 残差块 构建,通过残差块之间的 跳跃连接,让网络可以直接学习输入和输出之间的残差,而非直接拟合目标映射,从而让极深的网络也能稳定训练和收敛。
2.残差块(Residual block)与跳跃连接(skip connection)

- 之前的计算是:
z[l+1] = w[l+1]a[l]+b[l+1]
a[l+1] = g(z[l+1])
z[l+2] = w[l+2]a[l+1]+b[l+2]
a[l+2] = g(z[l+2])
a^[l+2]=g(z^[l+2]+a[l])
- 残差块:上图中包含两条路径的结构就是残差块。(一条主路经,一条跳跃路径,不一定就跳过一层)
- 跳跃连接:就是指a[3]跳过一层或者好几层,从而将信息传递到神经网络的更深层
3.普通网络变残差网络

- 变成ResNet的方法是加上所有跳跃连接,每两层增加一个捷径,构成一个残差块。如下图所示,5个残差块连接在一起构成一个残差网络。

- 理论上,随着网络深度的加深,应该训练效果越好。但实际上,如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练,随着网络深度的加深,训练错误会越来越多。但有了ResNets就不一样了,即使网络再深,训练的表现却不错,就算是训练深达100层的网络也不例外。对x的激活,或者这些中间的激活能够到达网络的更深层。这种方式有助于解决梯度消失和梯度爆炸问题,在训练更深网络的同时,又能保证良好的性能。
4.残差网络的作用原理
(1)一个恒等关系

- 如上图,展开a[4]的表达式,假设使用L2正则化或权重衰减,压缩了W[5]的值,而b[6]=0,通过跳跃连接,我们很容易得出 a[7]=a[8] 这个恒等关系,而如果是多层的跳跃,也可能会有 **a[9]=a[10]
(2)残差网络如何缓解梯度消失与剃度爆炸
- 总结:残差网络减少了梯度的数量,从而缓解剃度消失或爆炸,而剃度数量减少是由于残差网络中的恒等关系
- 1. 反向传播时,梯度会沿着主路径和跳跃连接两条路流动。跳跃连接本质是恒等映射(上面推导结果)。
- 2. 残差块的输出梯度包含两部分:一部分是经过主路径的梯度,另一部分是通过跳跃连接直接传递的梯度。这使得浅层网络能稳定地接收到来自深层的梯度信号,不会因为网络层数的过多堆叠而导致梯度趋近于0或爆炸。
更多推荐
所有评论(0)