Module 02 · Deep Convolutional Models: Case Studies
ResNets理解残差网络(ResNet)
背景问题:
深度神经网络在训练过程中容易遇到梯度消失和梯度爆炸问题,导致训练困难,特别是当网络层数增加时。这些问题会导致模型的训练误差在增加层数后反而上升,而不是继续下降。
核心概念:残差块(Residual Block)
残差网络(ResNet)通过引入“跳跃连接”(skip connections)或“快捷连接”(shortcut connections)来解决这一问题。其基本思想是让信息可以通过跳跃连接直接传递到更深层,跳过一些中间层。
具体实现:
在标准的前馈神经网络中,信息从一层流向下一层。例如,从第 (l) 层的激活值 (a[l]) 通过线性运算和非线性变换得到 (a[l+1]),再经过类似的步骤得到 (a[l+2]):
- ( 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]) )
引入残差块:
在ResNet中,这种层与层之间的传递方式有所改变。我们引入了一个直接从 (a[l]) 到 (a[l+2]) 的快捷连接,将原来的等式变为:
- ( 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]) )
这意味着,输入 (a[l]) 会直接加到 (a[l+2]) 的计算中。这种直接相加的方式称为残差块(Residual Block)。
残差块的优点:
- 缓解梯度消失和爆炸问题:通过跳跃连接,梯度可以更容易地反向传播回到浅层,从而缓解了梯度消失的问题。
- 更深层次的网络:由于残差块的存在,ResNet可以训练非常深的网络,有时甚至超过100层,而不会出现训练误差上升的现象。
- 更好的性能:实验证明,使用残差块的网络在多个计算机视觉任务中表现优异,显著优于没有跳跃连接的普通网络。
总结:
ResNet的关键在于通过引入跳跃连接,使得输入可以直接传递到更深的层,形成残差块。这一创新显著提升了深层神经网络的可训练性和性能,使得训练超过100层的深度网络成为可能,并在许多实际应用中取得了成功。
通过实现这些结构并在编程练习中测试,能够更好地理解和掌握ResNet的工作原理及其在深度学习中的重要性。