6.4 图像识别领域中的近期进展
在 1998 年,那年 MNIST 被初次提出,训练一个使用最先进技术的工作站,来达到明显差于我们使用 GPU 并且训练少于一小时就能达到的准确率,要花费几周时间。因此,MNIST不再是一个推动现有技术限制的问题;相反,训练的速度意味着它是个用于教授和学习目的的很好的问题。与此同时,研究的重点已经转移,现代的工作涉及到更具挑战性的图像识别问题。在这一节中,我简要介绍一些最近的使用神经网络的图像识别成果。
这一节和本书的大部分内容不同。贯穿本书我集中在可能引起持久兴趣的思想 —— 如反向传播、规范化、卷积网络。正如我写过的,我曾试图避免那些流行一时的成绩,但其长期价值是未知的。在科学界,这样的成绩往往是生命短促的事物,它们逐渐消失,很少有持久的影响。鉴于此,一个怀疑论者可能会说:“嗯,当真最近在图像识别中的进步是流行一时的例子吗?在另外两年或三年中,一切会继续前进。所以当真这些成绩仅仅提起一些想要在绝对前沿竞争的专家的兴趣?为什么要讨论呢?”
这样的一个怀疑论者是对的,最近论文的一些出色的细节,其被认为的重要性会逐渐减弱。但过去几年已经看到了使用深度网络攻克极度困难的图像识别任务的非凡的进步。想象一下一个科学历史学家在 2100 年写关于计算机视觉的东西。它们会把 2011 年至 2015 年(也许超过几年)鉴定为由卷积神经网络驱动的取得重大突破的时间。那并不意味着深度卷积网络在 2100 年仍然被使用,更不用提诸如弃权、修正线性单元等细节概念。但是它确实意味着一个重要的变革正在发生,就现在,在知识的历史中。它有点像观察原子的发现,或者抗生素的发明:具有历史意义的发明和探索。所以尽管我们不会深入挖掘细节,了解一些目前正在进行的令人兴奋的探索是值得的。
2012 LRMD 论文: 让我从一篇源自斯坦福和谷歌的研究小组的 2012 年论文\footnote{Building high-level features using large scale unsupervised learning,作者为 Quoc Le,Marc'Aurelio Ranzato, Rajat Monga, Matthieu Devin, Kai Chen, Greg Corrado,Jeff Dean, 和 Andrew Ng (2012)。注意这篇论文中使用的网络架构在很多细节上和我们已经学习的深度卷积网络不同。然而,一般地说,LRMD 基于很多类似的思想。}开始。我把这篇论文称为 LRMD,取自前四位作者的姓。LRMD 使用一个神经网络来分类ImageNet 的图像,一个非常具有挑战性的图像识别问题。他们使用的 2011 年 ImageNet 数据包含 16,000,000 幅全彩色图像,有 20,000个种类。这些图像收集自开放的网络,由亚马逊的 Mechanical Turk 服务部门的员工分类。这里有一些 ImageNet 图像\footnote{这些取自 2014 年的数据集,其相比 2011 年的有点改变。然而在质的方面,这个数据集是非常相似的。关于 ImageNet 的详情可以在原始的 ImageNet 论文 ImageNet: a large-scale hierarchical image database 中找到,作者为 Jia Deng,Wei Dong,Richard Socher, Li-Jia Li, Kai Li, 和 Li Fei-Fei (2009)。}:
这些是各自分类中的圆线刨、褐根腐菌、煮过的牛奶和常见的蛔虫。如果你正在找个挑战,我鼓励你去访问 ImageNet 的手工具列表,这个列表把圆线刨、短刨、倒角刨和大概一打的其它刨子类型从其它种类中区分开。我不知道你怎么样,但是我是没有信心区分所有这些工具的类型。这明显是一个比 MNIST 更有挑战性的图像识别任务。LRMD 的网络获得了一个不错的 15.8% 的准确率来正确分类 ImageNet图像。那听上去可能不算令人印象深刻,但是和以前的最好成绩 9.3% 准确率相比已经是巨大的进步了。这个跳跃暗示着神经网络也许能提供一个强大的方法来应对非常有挑战性的图像识别任务,比如 ImageNet。
2012 KSH 论文: LRMD 的成果被一篇 Krizhevsky, Sutskever 和 Hinton (KSH) \footnote{ImageNet classification with deep convolutional neural networks,作者为 Alex Krizhevsky,Ilya Sutskever, 和 Geoffrey E. Hinton (2012)。} 的 2012 年论文追随。KSH 训练和测试一个深度卷积神经网络,它使用 ImageNet数据的一个有限的子集。他们使用的子集来自一个流行的机器学习竞赛 —— ImageNet Large-Scale Visual RecognitionChallenge(ILSVRC)。使用一个竞赛用的数据集给了他们一个很好的和其它领先技术比较的途径。ILSVRC-2012 训练集包含有大约 1,200,000 幅 ImageNet 图像,取自 1,000 个种类。验证和测试集分别包含有 50,000 和 150,000 幅图像,各自取自同样的1,000 个种类。
运行 ILSVRC 竞赛一个困难的地方是很多 ImageNet 图像包含了多个物体。假设一幅显示一条拉布拉多犬追逐一个足球的图像。这幅图像所谓“正确的” ImageNet 分类也许是一条拉布拉多犬。如果一个算法把这个图像标记为一个足球,它应该被扣分吗?由于这种歧义性,如果实际的 ImageNet 分类在一个算法认为最有可能的 个分类中,那么这个算法就被认为是正确的。通过这个前 标准,KSH 的深度卷积网络达到了一个 % 的准确率,大大好于次优的参赛者,后者取得了 % 的准确率。使用更严格的必需准确标记的标准,KSH 的网络达到了 % 的准确率。
既然 KSH 网络激励了随后的成果,值得对它简要描述一下。正如我们看到的,尽管要更精细,它非常接近于这一章中我们之前训练的网络。KSH 使用一个深度卷积神经网络,在两个 GPU上训练。他们使用两块 GPU 是因为当时使用的特定的 GPU 型号(一块 NVIDIAGeForce GTX 580)没有足够的片上存储器来保存整个网络。所以他们用两块 GPU 把网络分成两个部分。
KSH 网络有 个隐藏神经元层。前 个隐藏层是卷积层(有些具有最大值混合),而接下来的 层是全连接层。输出层是一个 个单元的柔性最大值层,对应于那 个图像类别。这是这个网络的一个草图,取自 KSH 论文\footnote{感谢 Ilya Sutskever。}。细节在下面讨论。注意许多层被分成 个部分,对应于 块 GPU。
输入层包含 个神经元,对应于一幅 图像的 RBG 值。回想前面提到的,ImageNet 包含有不同分辨率的图像。这引起了一个问题,因为一个神经网络的输入层通常是固定大小。KSH 通过缩放每幅图像使得长和宽中短的长度为 来处理。然后他们从缩放后的图像中裁剪出一个 的区域。最后,KSH 从 的图像中随机提取出 的子图像(和水平反射)。他们把这个随机的裁剪用作扩展训练数据的方式,这样减少过度拟合。这在一个例如 KSH 的大的网络中尤其有帮助。正是这些 图像被用于网络的输入。在大多数情况下裁剪后的图像仍然包含有未改动图像的主要物体。
这是 KSH 论文中许多核心思想一个总体概况。我已经忽略了一些细节,对此你可以看下论文。你也可以看下 AlexKrizhevsky 的cuda-convnet(和接替版本),它包含有实现这许多思想的代码。一个基于 Theano 的实现\footnote{Theano-based large-scale visual recognition with multiple GPUs,作者为 Weiguang Ding, Ruoyan Wang,Fei Mao 和 Graham Taylor (2014)。},代码可以在这里得到。尽管使用多 GPU会让情况变得复杂,但代码本身还是类似于这章我们写出来的那些。Caffe 神经网络框架也包含一个 KSH 网络的版本,详细参见Model Zoo。
2014 ILSVRC 竞赛: 自 2012 年以来,研究一直在快速推进。看看 2014 年的ILSVRC 竞赛。和 2012 一样,这次也包括了一个 张图像, 种类别,而优值系数是前 个预测是否包含正确的分类。获胜团队,主要来自谷歌\footnote{Going deeper with convolutions,作者为 Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet,Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke 和 Andrew Rabinovich (2014)。},使用了包含 层神经元的深度卷积网络。他们称此为 GoogLeNet,作为向 LeNet-5 的致敬。GoogLeNet 达到了 93.33% 的前 准确率,远超 2013 年的获胜者(Clarifai,88.3%)和2012年的获胜者(KSH,84.7%)。
那么 GoogLeNet 93.33% 的准确率又是多好呢?在 2014 年,一个研究团队写了一篇关于ILSVRC 竞赛的综述文章\footnote{ImageNet large scale visual recognition challenge,作者为 Olga Russakovsky, Jia Deng,Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang,Andrej Karpathy, Aditya Khosla, Michael Bernstein, Alexander C. Berg, 和Li Fei-Fei(2014)。}。其中有个问题是人类在这个竞赛中能表现得如何。为了做这件事,他们构建了一个系统让人类对 ILSVRC 图像进行分类。其作者之一 AndrejKarpathy 在一篇博文中解释道,让人类达到 GoogLeNet 的性能确实很困难:
...从 1000 个类别中挑选出 5 个来标记图像的任务很快被证明是非常具有挑战性的,甚至对一些已经在 ILSVRC 和它同级别上工作一段时间的实验室里的朋友也是如此。开始我们以为能把它放在[Amazon Mechanical Turk]上。然后我们想过付费招募些还未毕业的 大学生。然后我组织了一个只有实验室里有强烈标记热情的人(专家级标记人员)参与的标记聚会。然后我开发了一个修改了接口的 GoogLeNet 预测来把多余的类别数量从 1000 减少到只有 100。它仍然太困难了 —— 大家仍然持续地错过正确的类别并达到了 13--15% 的错误率。最后我意识到为了有竞争力地接近 GoogLeNet,最有效率的做法是坐下来亲自完成痛苦的长期训练过程以及随后仔细的注记... 标记以每分钟 1 个的速度完成,但随着时间的推移减少了... 有些图像容易识别,同时有些图像(诸如那些有细密纹理的狗,鸟,或者猴子的品种)会需要几倍的集中精力。我变得非常擅长鉴别狗的品种... 基于我致力于的图像样本,GoogLeNet 分类的误差结果为 6.8%... 我自己的误差最终为 5.1%,大约以 1.7% 的差距胜过。
换言之,一个专家级别的人类,非常细心地检查图像,付出很大的努力才能够微弱胜过深度神经网络。实际上,Karpathy 指出第二个人类专家,用小点的图像样本训练后,只能达到 12.0% 的 top-5 错误率,明显弱于 GoogLeNet。大概有一半的错误都是专家“难以发现和认定正确的类别究竟是什么”。
这些都是令人惊奇的结果。确实,在这项成果后,很多团队也报告 top-5 错误率实际上好过 5.1%。这有时候在媒体上被报道成系统有超过人类的视觉。尽管这些结构是很振奋人心的,但是这样的报道只能算是一种误解,认为系统在视觉上超过了人类,事实上并非这样。ILSVRC 竞赛问题在很多方面都是受限的 —— 在公开的网络上获得图像并不具备在实际应用中的代表性!而且 top-5 标准也是非常人工设定的。我们在图像识别,或者更宽泛地说,计算机视觉方面的研究,还有很长的路要走。当然看到近些年的这么多进展,还是很鼓舞人心的。
其它活动: 上面关注于 ImageNet,但是也还有一些其他的使用神经网络进行图像识别的工作。我们也介绍一些进展。
一个鼓舞人心的应用上的结果就是 Google 的一个团队做出来的,他们应用深度卷积网络在识别 Google 的街景图像库中街景数字上\footnote{Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks,作者 为 Ian J. Goodfellow, Yaroslav Bulatov, Julian Ibarz, Sacha Arnoud, 和 Vinay Shet(2013)。}。在他们的论文中,对接近 街景数字的自动检测和自动转述已经能打到与人类不相上下的程度。系统速度很快:在一个小时内将法国所有的街景数字都转述了。他们说道:“拥有这种新数据集能够显著提高 GoogleMaps 在一些国家的地理精准度,尤其是那些缺少地理编码的地区。”他们还做了一个更一般的论断:“我们坚信这个模型,已经解决了很多应用中字符短序列的 OCR 问题。 ”
我可能已经留下了印象——所有的结果都是令人兴奋的正面结果。当然,目前一些有趣的研究工作也报道了一些我们还没能够真的理解的根本性的问题。例如,2013 年一篇论文\footnote{Intriguing properties of neural networks,作者为 Christian Szegedy,Wojciech Zaremba, Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian Goodfellow,和 Rob Fergus (2013)}指出,深度网络可能会受到有效忙点的影响。看看下面的图示。左侧是被网络正确分类的 ImageNet 图像。右边是一幅稍受干扰的图像(使用中间的噪声进行干扰)结果就没有能够正确分类。作者发现对每幅图片都存在这样的“对手”图像,而非少量的特例。
这是一个令人不安的结果。论文使用了基于同样的被广泛研究使用的 KSH 代码。尽管这样的神经网络计算的函数在理论上都是连续的,结果表明在实际应用中,可能会碰到很多非常不连续的函数。更糟糕的是,他们将会以背离我们直觉的方式变得不连续。真是烦心啊。另外,现在对这种不连续性出现的原因还没有搞清楚:是跟损失函数有关么?或者激活函数?又或是网络的架构?还是其他?我们一无所知。
现在,这些问题也没有听起来这么吓人。尽管对手图像会出现,但是在实际场景中也不常见。正如论文指出的那样:
对手反例的存在看起来和网络能获得良好的泛化性能相违背。实际上,如果网络可以很好地泛化,会受到这些难以区分出来的对手反例怎么样的影响?解释是,对手反例集以特别低的概率出现,因此在测试集中几乎难以发现,然而对手反例又是密集的(有点像有理数那样),所以会在每个测试样本附近上出现
我们对神经网络的理解还是太少了,这让人觉得很沮丧,上面的结果仅仅是近期的研究成果。当然了,这样结果带来一个主要好处就是,催生出一系列的研究工作。例如,最近一篇文章\footnote{Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images,作者为 Anh Nguyen, Jason Yosinski, 和 Jeff Clune(2014)。} 说明,给定一个训练好的神经网络,可以产生对人类来说是白噪声的图像,但是网络能够将其确信地分类为某一类。这也是我们需要追寻的理解神经网络和图像识别应用上的研究方向。
虽然遇到这么多的困难,前途倒还是光明的。我们看到了在众多相当困难的基准任务上快速的研究进展。同样还有实际问题的研究进展,例如前面提到的街景数字的识别。但是需要注意的是,仅仅看到在那些基准任务,乃至实际应用的进展,是不够的。因为还有很多根本性的现象,我们对其了解甚少,就像对手图像的存在问题。当这样根本性的问题还亟待发现(或者解决)时,盲目地说我们已经接近最终图像识别问题的答案就很不合适了。这样的根本问题当然也会催生出不断的后续研究。