残差网络相关

ResNets

ResNets是由残差块组成的神经网络。由理论而言,神经网络越深,错误率也应越低,但实际上随着网络的加深错误率会先减后增。

ResNets 则会解决这个问题。

残差块 (Residual Block)

graph LR
A(a_layer_l) --> B[hiddenLayer]
B --a_l+1--> C[hiddenLayer]
C --> D(a_layer_l+2)

观察以上神经网络,上层输入 得到 后再次得到 ;计算过程为:

用文字表述即:

  • 层的激活值经过 层的线性变换 后通过ReLU激活函数输出值
  • 经过第二层相同变换输出

以上步骤是经典神经网络正向传播的主路径,这在残差网络中有一点变化,我们直接将 的值直接加至 层ReLU函数前, 的信息直接传到深层,不再沿着主路径传播,则:

此结构被称为一个残差块。

为什么有效?

理论而言,如果存在一个 层深的网络 是当前最优的网络,那么可以构造一个更深的网络,使得后添加的几层仅仅是 层的恒等映射就可以达到相同的结果,如果 不是最佳层数,那么更深的网络可以更好,总而言之,更深的网络不应该变差;因此合理推断对于深层网络而言,恒等映射难以拟合。

残差网络通过构造恒等映射的方式解决问题,试想给一个深层网络添加新层次,激活函数采用ReLU:

  • 如果由 等正则化方式后导致 为0或极小值,也会使得该块仍存有 的恒等映射,即不会使情况变差。

何恺明等人从前后向信息传播的角度给出了残差网路的一种解释:

在前向传播时,输入信号可以从任意低层直接传播到高层。由于包含了一个天然的恒等映射,一定程度上可以解决网络退化问题。