今年5月份的时候,Cornell University的几个人研究了ResNet,发现它所谓的“超深网络”只是个噱头,文章如下:
文章的主题是:
A residual network is not a single ultra-deep network, but instead is a very large implicit ensemble of many networks.
意思是ResNet并不深,它本质上是一堆浅层网络的集合。
这不是打Kaiming He的脸吗?Kaiming He肯定看了这篇文章,不知道心里会想什么,没找到他的回应。
然后作者就分析了ResNet的网络结构,如下图:
ResNet展开形式意思是说,一个拥有三个block的ResNet可以展开为上右图的形式,仔细琢磨琢磨,还真是这么回事儿。ResNet就像是搭积木,在一个主干网络的旁路上,插入了各种各样的积木网络,这种网络集合的效果类似于Dropout,或者更恰当的说, 类似于多个网络的ensemble形态,所以精度很高。
为了佐证“ResNet并不深”的这个观点,作者就把ResNet拆了,分析了不完整网络的识别精度(去掉某个block),如下图:
网络不完整性测试果然不出作者所料,少个block对网络影响甚微,这就好比一堵墙拆个砖头也不至于塌掉。与之相比,VGGNet如果去点东西,识别率惨不忍睹,因为ResNet是多线的,而VGG是单线的。
看下图就明白了:
单线和多线网络多线网络里,把f2 block删了,网络还是通的,但如果把单线网络的f2删了,网络就断了。
另外还得说一下,ResNet并没有解决训练梯度消散的问题,它的主干网的反向梯度依然随着深度增大而变得越来越小,只不过ResNet有很多 identity skip connection,这些 connection 能把梯度原封不动的反向传回去,从而掩盖了梯度消散问题。
最后,继网络的“深度”和“宽度”两项指标之后,作者根据网络包含的“子网络”数量,提出了一个新指标——multiplicity。新指标是很隐蔽的,不容易分析,期待作者的下一篇论文。
感想
随着神经网络研究的加深,感觉人类正在逐渐解开生物神经网络的面纱。Andreas Veit提出的新指标——multiplicity,似乎与人类神经网络有脱不开的干系,或许人脑就是利用多个“子网络”搭出一个复杂的网络,它有主干,有旁支,有各种复杂的东西。简单的前向网络和回环网络还是太简单,还是需要更复杂的结构才能得到更好的效果。
网友评论