程一-计算所 发表于 2016-6-21 10:41:24

【VALSE前沿技术选介16-16期】

http://mp.weixin.qq.com/s?__biz=MzA3Mjk0OTgyMg==&mid=503639387&idx=1&sn=e4c6db433eb6d49c206b3cec6d06b385#rd

【VALSE前沿技术选介16-16期】解密ResNet2016-06-08 Winsty VALSE

今天给大家一口气介绍三篇分析和拓展ResNet的文章,个人觉得这三篇文章的现象和分析综合在一起看非常有深意,对大家自己设计专用网络非常具有指导意义。
在ResNet的原文中,作者曾经做过一个实验指出,即使有了BN layer,训练极深的网络仍然是一个open problem,如下图所示,单纯加深网络非常反直觉地使模型underfit,即参数多的深网络反而训练误差更大。ResNet很巧妙地通过shortcut的方式绕过了这个问题。其实训练plain深度网络的问题依然存在。
首先,给大家介绍基于ResNet拓展网络结构的两个文章,其核心思想都很简单:都是通过一个bottleneck layer来综合之前浅层网络的信息,但是这为什么能改进模型结果呢?下面会给大家详细解释。
中提出的网络结构如下图(b)所示,和普通多个网络fuse的核心区别在于会在每个block之间插入一个综合信息的节点,这个综合的操作可以是连接,求和,取max中的任意一种。提出的网络基于分形的思想,其将一个基础模块拓展为由一支简单的conv和一支叠加两次此基础模块组成的复杂模块,如左图所示。多次应用此过程可以得到右面的网络结构。可以看到,其共同的一个特点是会将不同深度的输出融合在一起作为更深层次的输入,这样看似简单的一个想法带来的好处在于:
[*]从输入到输出有效的信息传播路径数可以指数级增长
[*]由于每个block包含不同深度的层,浅层可以通过shortcut直接接收到深层传递回来的监督信号。这其实也是ResNet最开始的设计理念之一。另外在中,作者也将DSN解释成为了其框架中的一种特例。可以说,这几个工作都是通过这样的方式,绕过了训练过深网络的难题。
除此之外,还尝试了类似于随机drop path的训练方法,实验效果表明和在ResNet的实验结果一致,非常有效。
在中,作者系统分析了以上的想法,并通过实验给出了一些证据。首先中一个核心的观点是将ResNet中的每个block展开,如下图所示:这样的好处在于,我们便可以清晰知道,从输入到输出的路径条数随着block的增加指数增长,然而路径长度服从一个二项分布,简单的计算可以得知,一个54层的ResNet,其实大于95%的路径的长度是在19到35层之间!这其实就引出了中的核心观点,也就是标题:ResNet其实是指数级个浅层网络的综合。为了进一步证明这个观点,作者随机扔掉一个训练好的ResNet中的一个block,作者发现除了downsample block对性能影响较大之外,剩下的block扔掉似乎影响不大。甚至在一个54层的网络中,扔掉5个左右的block对结果影响也十分有限。这也从侧面证明了以上的观点。不过最终文章的结论讲:It is not depth, but the ensemble that makes residual networks strong. 个人觉得这个结论有一些哗众取宠之嫌。更合适的表述应该是depth is a smart way of ensemble in DNN. 如果将depth纯粹理解为单条路径上的深度,这未免太局限。
所以综上总结,一个性能好的网络其实需要满足:
[*]网络需要足够深,这一点其实已经深入人心
[*]但是由于优化上的困难,普通极深网络通常训练困难,所以我们需要一种廉价而有效地ensemble模型的方法,目前看来,最聪明的一个做法就是通过上述提到的瓶颈层做aggregate,使得浅层网络可以直接接收到深层的gradient。
[*]在第二点的基础上,通过drop path的方法引入随机训练。

只要把握住以上三点原则,设计出一个性能较好的网络应该不是难事。了解了以上,我很想提醒大家回想一下14年的GoogleNet,即Inception模型。很巧妙的是Inception除了第三点没有满足之外,完美地符合了前两点,除此之外,还通过multi path的手段将multi scale context融入到了网络设计中(即每个Inception module的四个分支),这也是最近在detection和segmentation任务中,被证明十分有效的一个手段。这不禁让人猜想,是不是Google早在两年前就已经参透了这网络设计中的奥秘,只不过秘而不宣呢?:)
最后关于仍旧open的问题,个人觉得主要存在以下两个方面:1) 前面已经提到的,优化极深的网络其实仍旧是一个没有解决的问题,这一点要靠各位做优化的同学来解释。个人觉得本质的区别在于深度神经网络本质是一个极多层的复合函数,然而我并没找到特别关注复合函数优化的论文。2) 个人感觉这里应该会有一个关于路径条数和深度的performance bound,不知道有没有做理论的同学有没有关注到这面的趋势。
综上,这三个文章一起给我们提供了全新设计网络的视角:网络不仅仅需要有深度,还需要有shortcut和ensemble。然而这背后仍有一些亟待解决的问题需要大家一起探索。
He, K., Zhang, X., Ren, S., & Sun, J. (2015). Deep Residual Learning for Image Recognition. arXiv preprint arXiv:1512.03385.
Wang, J., Wei, Z., Zhang, T., & Zeng, W. (2016). Deeply-Fused Nets. arXiv preprint arXiv:1605.07716.
Larsson, G., Maire, M., & Shakhnarovich, G. (2016). FractalNet: Ultra-Deep Neural Networks without Residuals. arXiv preprint arXiv:1605.07648.
Veit, A., Wilber, M., & Belongie, S. (2016). Residual Networks are Exponential Ensembles of Relatively Shallow Networks. arXiv preprint arXiv:1605.06431.
Lee, C. Y., Xie, S., Gallagher, P., Zhang, Z., & Tu, Z. (2014). Deeply-supervised nets. arXiv preprint arXiv:1409.5185.
Huang, G., Sun, Y., Liu, Z., Sedra, D., & Weinberger, K. (2016). Deep networks with stochastic depth. arXiv preprint arXiv:1603.09382.



页: [1]
查看完整版本: 【VALSE前沿技术选介16-16期】