新智元专栏
来源:The Gradient
作者:Alan L. Yuille, Chenxi Liu 编辑:肖琴
自2011年AlexNet在ImageNet竞赛中“封神”以来,计算机视觉领域的所有突破几乎都来自深度神经网络。
深度网络的成功是非凡的,它们让视觉研究变得非常受欢迎,戏剧性地增加了学术界和工业界之间的互动,让视觉技术得以应用于许多广泛的学科,并产生了许多重要的成果。
但与此同时,深度网络的局限性也愈加凸显,它的不可解释性、容易受到欺骗、过于依赖注释数据等特性,甚至让许多研究人员发出“深度学习已死”的呼声,呼吁关注深度学习之外的其他方法。
本文作者由计算机视觉的奠基人之一、约翰霍普金斯大学教授Alan Yuille和他的学生刘晨曦(Chenxi Liu)撰写,详述了深度网络的局限性和组合爆炸问题对于现实世界应用的重要性。
他们认为该领域最严峻的挑战是开发能够应对组合爆炸的算法,如果研究人员追求更多样性的方法和技术,而不仅仅是追逐当前的流行趋势,这一领域将会得到更快的发展。
Alan Yuille教授
深度学习的历史
我们正在见证深度学习的第三次崛起。前两次浪潮 ——1950 - 1960 年代和 1980 - 1990 年代 —— 引起了相当大的轰动,但却慢慢失去了动力,因为这些神经网络既没有实现它们承诺的性能提升,也没有帮助我们理解生物视觉系统。
第三次浪潮 ——2000年至今 —— 则有所不同,因为深度学习在大量基准测试和现实世界应用中已经远远超越了其他竞争技术。虽然深度学习的大多数基本想法在第二次浪潮中已经发展起来,但直到大型数据集和强大的计算机 (GPU) 可用之后,它们的力量才得以释放。
深度学习的兴衰反映了学习算法在学术时髦和流行程度上的变化。第二次浪潮看到了古典人工智能 (classical AI) 的局限性,其表现是相对于巨大的承诺,AI 的表现相当平庸。于是,1980 年代中期,AI 冬天开始了。
第二次 AI 浪潮的衰落转变为支持向量机、kernel methods 及相关方法的兴起。这时候,我们应当为神经网络的研究人员鼓掌,尽管也遭遇沮丧,他们仍继续研究。但是请注意,风水轮流转。现在论文如果不和神经网络沾点关系,似乎已经很难发表。这不是一个好现象。我们认为,如果研究人员追求更多样性的方法和技术,而不仅仅是追逐当前的流行趋势,这一领域将会得到更快的发展。令人倍感担忧的是,学生们的 AI 课程中往往倾向于追逐当前的趋势,而完全忽略了旧技术。
深度学习三大局限
在 2011 年 AlexNet 在 Imagenet 竞赛中击败所有竞争对手之前,计算机视觉社区对深度学习持相当怀疑的态度。那时大家还不知道,在接下来的几年,视觉研究人员将提出各种各样的神经网络架构,这些架构在物体分类方面的表现会越来越好。深度学习也很快适应了其他视觉任务,如对象检测,其中图像包含一个或多个对象,背景要大得多。
为了完成这项任务,神经网络在初始阶段得到了增强,这一阶段对物体可能的位置和大小提出建议。这些方法在 PASCAL 对象检测挑战赛 (这是 ImageNet 之前的主要对象检测和分类竞赛) 方面优于以往的最佳方法,即 Deformable Part Models。其他深度网络(Deep Net) 架构也在其他经典任务中提供了巨大的性能提升,图 1 描述了其中一些任务。
图 1: Deep Nets 能够执行各种各样的视觉任务。包括:边界检测、语义分割、语义边界、曲面法线、显著性、人体部位和对象检测。(来源: https://arxiv.org/abs/1609.02132)
但是,尽管深度学习优于其他技术,它们并非具有通用性。这里,我们列举了深度学习的三个主要局限。
首先,深度学习几乎总是需要大量的注释数据。这使得视觉研究人员的焦点过度集中于容易注释的任务,而不是重要的任务。
有一些方法可以减少对监督的需要,包括迁移学习、小样本学习、无监督学习和弱监督学习。但到目前为止,它们的研究成果并没有像监督学习那样令人印象深刻。
其次, Deep Nets 在基准数据集上表现良好,但在数据集之外的真实世界图像上,可能会出现严重失败。
所有数据集都存在偏见。这些偏见在早期的视觉数据集中尤其明显,研究人员很快就学会了利用这些偏见,例如,利用 background context(例如,在Caltech101 中检测鱼很容易,因为它们是唯一的背景是水的对象)。尽管使用大型数据集和深度网络,这些问题减少了,但仍然存在。例如,如图 2 所示,一个训练来在ImageNet 上检测 “沙发” 的 Deep Net,如果在训练数据集中沙发的图像属于代表性不足的视角,网络就可能无法检测到它们。
特别是,Deep Nets 特别难以应付数据集中不经常发生的 “罕见事件”。但在现实世界的应用中,这些偏见特别成问题,因为它们可能对应于视觉系统故障可能导致可怕后果的情况。比如,用于训练自动驾驶汽车的数据集几乎从不包含 “婴儿坐在路上” 的情况。
图 2:UnrealCV 让视觉研究人员能够轻松地操纵合成场景,例如改变沙发的视角。我们发现 Faster-RCNN 检测沙发的平均精度 (AP) 在 0.1 到 1.0 之间,对视角的敏感度极高。这可能是因为训练中的偏见导致 Faster-RCNN 偏向于特定的视角。
第三, Deep Nets 对图像中的变化过于敏感,而这种变化不会欺骗人类观察者。 Deep Nets 不仅对导致图像中难以察觉的变化的标准对抗性攻击敏感,而且对上下文的变化也过于敏感。
图 3 显示了在一张丛林猴子的照片中 ps 上一把吉他的效果。这导致深度网络将猴子误认为人类,同时将吉他误认为鸟,大概是因为它认为人类比猴子更可能携带吉他,而鸟类比吉他更可能出现在附近的丛林中。最近的研究提供了很多关于 Deep Nets 对环境过度敏感的例子,例如把一头大象放在房间里。
图 3: 添加遮蔽体会导致深度网络失败。左:摩托车的遮挡让 AI 把一只猴子误认为人类。中:自行车的遮挡让 AI 把猴子误认为人类,同时丛林背景导致 AI 将自行车把手误认为是鸟。右:吉他把猴子变成了人,而丛林把吉他变成了鸟。(来源:https://arxiv.org/abs/1711.04451)
这种对上下文的过度敏感也可以归因于数据集大小的局限。对于任何对象,数据集中只会出现有限数量的上下文,因此神经网络会偏向于它们。例如,在早期的图像字幕数据集中,AI 观察到长颈鹿只出现在树木附近,因此它生成的图像说明不会提到没有树木的图像中的长颈鹿,即使它们图像中是最主要的对象。
捕获各种各样的上下文的困难,以及探索大范围干扰因素的需要,对于像 Deep Nets 这样的数据驱动方法来说是一个很大的问题。似乎要确保网络能够处理所有这些问题,就需要无限大的数据集,这对训练和测试数据集都提出了巨大的挑战。下面我们将讨论这些问题。
当大数据集不够大时——组合爆炸
上面提到的问题都不是破坏深度学习的因素,但我们认为这些是问题的早期预警信号。也就是说,真实世界的图像集是 combinatorially large 的,因此任何数据集,无论它有多大,都很难代表真实世界的复杂性。
一个 combinatorially large 的集合意味着什么呢 ? 想象一下,通过从对象词典中选择对象并将它们放在不同的组合中来构建一个视觉场景。这显然可以有指数级数量的方式。即使是单个对象的图像,我们也可以获得类似的复杂度,因为可以有无数种方式将它部分遮挡。我们还可以用无数种方式改变一个对象的背景。
虽然人类很自然地能适应视觉环境的变化,但 Deep Nets 更敏感,更容易出错,如图 3所示。
我们注意到,这种组合爆炸 (combinatorial explosion) 可能不会发生在某些视觉任务上,深度网络在医学图像应用上可能会非常成功,因为医学图像中上下文变化相对较小 (例如,胰腺总是非常接近十二指肠)。但是对于许多真实世界的应用程序,如果没有指数级大的数据集,就无法捕捉真实世界的复杂性。
这带来了巨大的挑战,因为在有限数量的随机抽取样本上训练和测试模型的标准范式变得不切实际了,因为它们永远不会大到足以代表数据的底层分布。这迫使我们解决两个新的问题:
克服组合爆炸问题
像目前形式的 Deep Nets 这样的方法似乎不太可能处理组合爆炸。数据集可能永远无法大到足以训练或测试它们。下面我们概述一些可能的解决方案。
组合性
组合性 (Compositionality) 是一种普遍的原则,用诗意的方式描述,它是 “一种信念的体现,这种信念认为世界是可知的,人们可以将事物拆解,理解它们,并在精神上随意重新组合它们”。关键的假设是,结构是按照一组语法规则,由更基本的子结构分层组成的。这表明,子结构和语法可以从有限的数据中学习,但将推广到组合情境(combinatorial situations)。
与深度网络不同的是,组合模型需要结构化的表示来明确它们的结构和子结构。组合模型能够超越所见数据进行推断、对系统进行推理、进行干预、进行诊断以及基于相同的底层知识结构回答许多不同问题。
引用 Stuart Geman 的话来说:“世界是组合的,不然,上帝就是存在的。”(The world is compositional or God exists),因为如果世界不是组合的,上帝似乎有必要手工制作人类智能。我们注意到,虽然深度网络捕获了一种组合的形式,例如,高级特征是由较低级别特征的响应组成的,但它们不是我们在本文中所指的意义上的组合性。
图 4:从 (a) 到 (b) 到 (c),使用了越来越多的可变性和遮蔽。特别地,(c) 是一个组合大数据集的示例,它本质上与验证码是一样的。有趣的是,关于验证码的研究表明,组合模型的性能很好,而深度网络的性能要差得多。(来源:https://www.ncbi.nlm.nih.gov/pubmed/16784882)
图 4 说明了组合性的一个例子,涉及到合成分析 (analysis by synthesis)。
组合模型的这些概念优势已经在视觉问题上得到了证明,例如使用相同的底层模型执行多个任务的能力,以及识别验证码的能力。
其他非视觉问题的示例也说明了同样的问题。训练 Deep Nets 进行智商测试的尝试没有成功。在这个任务中,目标是在一个 3x3网格中预测丢失的图像,其中会给出其他 8 个网格的图像,并且基础规则是组合的 (并且可能存在干扰项)。
相反,对于一些自然语言应用,神经模块网络 (Neural Module Networks) 的动态架构似乎足够灵活,可以捕捉到一些有意义的组合,其性能优于传统的深度学习网络。事实上,我们最近证明,经过联合训练后,各个模块确实实现了它们预期的组合功能 (如 AND、OR、FILTER(RED) 等)。
组合模型具有许多理想的理论特性,例如可解释性,并且能够生成样本。这使得错误更容易诊断,因此它们比像 Deep Nets 这样的黑盒方法更难被欺骗。但是学习组合模型是很困难的,因为它需要学习构建块和语法 (甚至语法的本质也是有争议的)。此外,为了进行合成分析,他们需要具有对象和场景结构的生成模型。将分布放在图像上也具有挑战性,除了人脸、字母和常规纹理等少数例外。
更重要的是,处理组合爆炸需要学习三维世界的因果模型,以及这些模型如何生成图像。对人类婴儿的研究表明,他们是通过建立因果模型来学习的,这些因果模型可以预测他们所处环境的结构,包括朴素物理学。这种因果关系的理解使我们能够从有限的数据中学习,并真正地推广到新情况。这类似于将牛顿定律与托勒密的地心说模型进行对比,前者用最少的自由参数给出因果关系的理解,后者给出非常准确的预测,但需要大量的数据来确定其细节 (即本轮)。
组合数据的测试
在真实世界的组合复杂性上测试视觉算法的一个潜在挑战是,我们只能在有限的数据上进行测试。
博弈论通过关注最坏情况而非平均情况来解决这个问题。如前所述,如果数据集没有捕捉到问题的组合复杂性,那么有限大小数据集上的平均情况结果可能没有意义。如果我们的目标是为自动驾驶汽车开发视觉算法,或者利用医学图像诊断癌症,算法的失败就可能带来严重后果,那么关注最糟糕的情况显然也是有意义的。
如果能够在低维空间中捕捉到故障模式,如立体视觉的危险因素,那么我们可以用计算机图形学和网格搜索来研究它们。但是对于大多数视觉任务,特别是涉及组合数据的任务,很难识别出少数可以分离和测试的危险因素。
一种策略是将标准对抗性攻击的概念扩展到包括非局部结构,允许对图像或场景造成变化的复杂操作,例如通过遮挡或改变被观察对象的物理属性,但不显著影响人类感知。
将这种策略扩展到处理组合数据的视觉算法仍然非常具有挑战性。但是,如果算法在设计时考虑到了组合性,那么它们的显式结构可能使诊断它们和确定它们的故障模式成为可能。
最严峻的挑战
几年前,Aude Oliva 和 Alan Yuille(本文第一作者) 共同组织了一个由 NSF 赞助的计算机视觉前沿研讨会 (MIT CSAIL 2011)。会议鼓励坦诚交换意见,尤其在计算机视觉领域深度网络的潜力方面存在巨大的分歧。
Yann LeCun 大胆地预言,在不久的将来,每个人都将使用深度网络。
他是对的。深度网络的成功是非凡的,它们让视觉研究变得非常受欢迎,戏剧性地增加了学术界和工业界之间的互动,让视觉技术得以应用于许多广泛的学科,并产生了许多重要的成果。
但是,尽管深度网络取得了成功,但在实现通用人工智能和理解生物视觉系统的目标之前,仍必须克服巨大的挑战。
我们的担忧与最近Gary Marcus 等人对深度网络的批判中提到的类似。可以说,最严峻的挑战是如何开发能够应对组合爆炸的算法,研究人员需要在越来越现实的条件下处理越来越复杂的视觉任务。虽然深度网络肯定是解决方案的一部分,但我们认为,我们还需要包含组合原则和因果模型的补充方法,以捕捉数据的基本结构。此外,面对组合爆炸,我们需要重新思考如何训练和评估视觉算法。
注:这是 Alan L. Yuille, Chenxi Liu 的原始论文 Deep Nets: What have they ever done for Vision? 的一个简短版本。
论文地址:https://arxiv.org/abs/1805.04025