ResNet为什么能够训练出1000层的模型

我们知道越深的网络其实是越难以训练的,因为我们前面说过,越来越深的网络接近输入层的时候,他的梯度的更新力度是很小的。即使底层有更新,会给高层的网络造成动荡。前面也讲过了两种方法,

  • (1)Xavier算法初始化
  • (2)批量归一化,batch-normalization
那么ResNET是如何解决这个问题的呢?

这里推三层神经网络

  • layer 1
    y = f(x)
  • layer 2
    y' = g(f(x))
  • layer 3
    y'' = f(x) + g(f(x))

根据链式法则,我们计算梯度的时候是从顶层往底层往下走。更新最顶层的参数的时候梯度可能还很大,但是经过后面连续乘以多个小数,这个梯度就会小的可怜,直至梯度消失。

ResNet之所以能够解决梯度消失的问题就是因为第三层网络的这种结构。它改变了原来函数套函数的结构,变成了函数加函数的结构。再求导的时候,可以根据加法原则,顶层的梯度是可以传递到底层去的。将原来的乘法改为了加法。解决了梯度消失的问题。

得益于网络结构的设计。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容