本文是 深度学习有多深? 学了究竟有几分? (九) 的续篇。
2013 年的 ImageNet 竞赛, 获胜的团队是来自纽约大学的研究生 Matt Zeiler, 其图像识别模型 top 5 的错误率, 降到了 11.5%。
Zeiler 的模型共有六千五百万个自由参数, 在 Nvidia 的GPU 上运行了整整十天才完成训练。
2014年, 竞赛第一名是来自牛津大学的 VGG 团队, top 5 错误率降到了 7.4%。
VGG的模型使用了十九层卷积神经网络, 一点四亿个自由参数, 在四个 Nvidia 的 GPU 上运行了将近三周才完成培训。
如何继续提高模型的识别能力? 是不断增加网络的深度和参数数目就可以简单解决的吗?
来自微软亚洲研究院的何恺明和孙健 (Jian Sun, 音译), 西安交通大学的张翔宇 (Xiangyu Zhang, 音译), 中国科技大学的任少庆 (Shaoqing Ren, 音译)四人的团队 MSRA (MicroSoft Research Asia),在2015 年十二月的 Imagenet 图像识别的竞赛中, 横空出世。
(上图为微软的何恺明)
他们研究的第一个问题是,一个普通的神经网络,是不是简单地堆砌更多层神经元,就可以提高学习能力?
在研究一个图像识别的经典问题 CIFAR-10 的时候,他们发现一个 56层的简单神经网络,识别错误率反而高于一个20层的模型.
网络深度增加,学习的效率反而下降。为了解决有效信息在层层传递中衰减的问题, MSRA团队尝试了一种称为 "深度残余学习" (Deep Residual Learning) 的算法。
"深度残余学习"的概念, 借鉴了图像识别中的"残余向量"的概念。
本质上, 所谓'深度残余算法', 就是把神经网络一层层之间的非线性转换问题, 变成一个所谓的 "相对于本体的残余转换" (Residual mapping with respect to identity) 的问题,
实践上,使用所谓 "跳跃链接" (shortcut connection)的方法,把底层的输出值每隔几层跳跃直接传递成更高层的输入, 这样有效的信息不会在深层网络中被淹没。
MSRA 的深度残余学习模型,使用了深达 152层的神经网络, top 5 的识别错误率创造了 3.57%的新低, 这个数字, 已经低于一个接受良好培训的正常人的大约 5% 的错误率。