也谈深度残差网络

深度残差网络自从2015年提出以来,在众多比赛中表现优越,且最终获得CVPR 2016年Best Paper Award。大家想必也已经耳熟能详。在这里,只是再简要说说深度残差网络是怎样的网络,关于为什么她表现如此优秀大家怎么看?


什么是深度残差网络?

如论文中描述,深度残差网络的缘起在于一个“反常”的现象。在训练深度神经网络的时候,训练误差和测试误差都随着网络深度的增加而增加。文中称之为Degradation问题。


这个问题显然不是由于过拟合问题导致的,因为训练误差同样在增加。为什么深度更深的网络,还不如浅层网络呢?


像上述网络,如果y2 = f2(f1(x)) 的表现比 y3 = f3(f2(f1(x)))更好。那么说明f3(.)并不能很好地学习出恒等变换?否则,y3至少跟y2一样好。既然非线性网络层f3(.)不能很好得学习恒等变换,作者的做法是直接拷贝低层,设计如下的模块:


如果说之前的网络中,y3 = F(y2)的话,那么,新的设计中有 y3 = F(y2) + y2。类似地,为了保证误差并不会随着网络层数增加而增加,原先我们希望F(.)学习到恒等变换;新的网络结构中同样的情况我们希望F(.)学习到零变换(这很容易实现,参数优化趋于零)。


实际上,恒等变换往往不是最优的。如果叠加非线性层希望学习H(x), 深度残差网络新增的非线性层的拟合目标不再是H(x),而是F(x) = H(x) - x。这也是为什么称之为深度残差网络的原因,新增的非线性层的拟合目标是低层网络拟合的残差。这里假设了F(x)比H(x)更容易拟合。


实践中,深度残差网络在多个计算机视觉任务中都取得优异成绩:




为什么深度残差网络表现这么好?

  • 梯度传播

    梯度传播一直是神经网络训练的一个主要问题。虽然有很多不同的解决方案都取得不错效果,比如早期的Layer-wise training, 激活函数,Batch Normalization等。但,在深层网络里面梯度随层数指数级衰减。


    深度残差网络的identity mapping(skip connection)可以使得低层网络部分得到充分训练。如下图,非线性网络部分f1(.)可以直接获得输出层梯度更新优化,而不是如原先网络结构那样,所有梯度需要先经过f3,f2。

  • 深度残差网络等价于浅层网络模型融合

       一个来自于康奈尔大学的比较新的观点认为深度残差网络等价于指数级数目的浅层网络模型的融合。如下图,一个K层的深度残差网络,等价于2^K个浅层网络的模型融合。



参考文献

  • Deep Residual Learning for Image Recognition (http://arxiv.org/pdf/1512.03385v1.pdf)

  • Residual Networks are Exponential Ensembles of

    Relatively Shallow Networks (https://arxiv.org/pdf/1605.06431v1.pdf)


更多内容

  • 谈谈分类器的损失函数(2)

  • 谈谈分类器的损失函数(1)

  • 从贝叶斯的角度看正则项

  • 从优化的角度看正则项

  • 从Trie到Double Array Trie

欢迎关注公众号: inkfish-talk

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院