我们正在见证深度学习的第三次兴起。前两次浪潮发生在 1950 - 1960 年和 1980 - 1990 年,在当时都产生了巨大的影响,但随后慢慢失去了动力。这是因为这些神经网络既没有实现它们承诺的性能提升,也没有帮助我们理解生物的视觉系统。第三次浪潮 (2000 年至今) 则有所不同,因为深度学习在大量基准测试和现实应用方面的竞争力已经远远超过了生物的能力。虽然大多数深度学习的基本思想在第二次浪潮中已经发展完善,但直到大型数据集和强大的计算机算力 (GPUs) 的出现,深度学习的力量才得以释放。
深度学习的兴起和衰落反映了学习算法在学派的流行以及不同算法的热度。第二次浪潮让我们看到了传统人工智能的局限性,表现为高承诺低实现。这就是 1980 年代中期出现人工智能寒冬的原因。第二次浪潮的衰落转变为支持向量机、内核方法和相关方法的兴起。我们被神经网络研究者的成果惊艳,尽管其效果令人失望,但随着时间的发展,它们又再次兴起。现在很难发表任何与神经网络无关的东西。 这不是一个好的发展。我们认为,如果研究人员追求方法和技术的多样性,而不是追逐当前的流行趋势,那么这一领域将发展得更快。更令人担忧的是,学生在人工智能课程中往往完全忽略了旧的技术,而只顾追逐当前的趋势。
在 2011 年 AlexNet[1] 击败 Imagenet[2] 上的所有竞争对手之前,计算机视觉社区对深度学习持相当怀疑的态度。在未来几年,视觉研究人员将提出各种各样的神经网络架构,这些架构在对象分类方面的性能会越来越好 [3][4][5]。
深度学习也很快适应了其他视觉任务,如目标检测,图像中包含一个或多个物体,背景要大得多。为了完成这项任务,神经网络会对初始阶段的信息进行增强从而确定目标可能的位置和大小。这些方法在 ImageNet 前最为重要的目标识别竞赛——PASCAL 目标识别挑战 [7] 上优于此前的最佳方式,即可变形部件模型(Deformable Part Model)[6]。其他深度学习架构也在一些经典任务上有了很大的提升,其中许多任务如图 1 所示。
图 1:(来源) 深度学习可以执行各种各样的视觉任务,包括边界检测、语义分割、语义边界、曲面法线、显著性、人体部位和目标检测
但是,尽管深度学习优于其他技术,但它们并不是通用的。在这里,我们确定了三个主要限制。
首先,深度学习基本上总是需要大量的注释数据。 这使得视觉研究人员倾向于在容易注释的任务上工作,而不是在重要的任务上工作。
有一些方法可以减少对监督的需求,包括迁移学习 [8][9][10]、few-shot 学习 [11][12][13]、无监督学习 [14][15] 和弱监督学习 [16]。但到目前为止,他们的研究成果还没有监督学习那么令人印象深刻。
其次,深度学习在基准数据集上表现良好,但在数据集之外的真实世界的图像上可能会严重失效。所有数据集都有偏差。这些偏差在早期的视觉数据集中尤其明显,研究人员很快就学会了利用这些偏见,如利用背景进行判断 (例如,在 Caltech101 中检测鱼很容易,因为它们唯一的背景是水)。尽管使用了大数据集和深度神经网络可以减少这些问题,但问题仍然存在。例如,如图 2 所示,深度神经网络在 ImageNet 上训练以识别沙发,但可能因为示例图片数量不足,从而无法检测到它们。深度神经网络是倾向于反“特殊情况”的,模型不太会考虑数据集中出现较少的情况。但在现实世界的应用中,这些偏差尤其麻烦,因为它们可能导致视觉系统故障进而产生可怕后果。用于训练自动驾驶汽车的数据集几乎从不包含坐在路中间的婴儿。
图 2:(来源)UnrealCV 使视觉研究人员能够轻松地操纵合成场景,例如改变沙发的视角。我们发现沙发的 Faster-RCNN 检测的平均精度 (AP) 在 0.1 到 1.0 之间,对视点的敏感度极高。这可能是因为训练中的偏差导致 Faster-RCNN 更倾向于特定的视角。
第三,深度网络对图像的变化过于敏感,而这些改变在人类看来可能并不影响对图像的判断。 深度网络不仅对标准的对抗性攻击敏感,这种攻击导致图像出现难以察觉变化 [17][18],而且对环境的变化也过于敏感。图 3 显示了将吉他 PS 成丛林中的猴子图片的效果。这导致深度网络将猴子误认为人类,也将吉他误认为鸟,大概是因为猴子比人类更不可能携带吉他,而鸟类比吉他更可能在猴子附近的丛林中 [19]。最近的研究给出了许多深度网络对环境过度敏感的例子,比如把一头大象放在房间里 [20]。
图 3:(来源) 添加遮挡器导致深度网络失败。左图:用摩托车进行遮挡后,深度网络将猴子识别为人。中间:用自行车遮挡后,深度网络把猴子识别为人,丛林把网络对自行车把手的识别误导为鸟。右图:用其他遮挡后,深度网络将猴子识别为人,而丛林将网络对吉他的识别误导为鸟。
这种对背景的过度敏感也可以归咎于数据集规模有限。对于任何对象,数据集中只会出现有限数量的背景,因此神经网络会偏向于它们。例如,在早期的图像标注数据集中,观察到长颈鹿只出现在附近的树木中,因此生成的标注没有提到图像中没有树的长颈鹿,即使它们是最主要的对象。
对于像深度网络这样的数据驱动方法来说,捕获背景大量变化的困难以及探索大量噪声因素的需要是一个很大的问题。要确保网络能够处理所有这些问题,可能就需要任意大的数据集,这对训练和测试数据集都提出了巨大的挑战。下面我们将讨论这些问题。
上面提到的问题并不都是影响深度学习的因素,但我们认为这些都是问题的早期预警信号。也就是说,真实世界的图像数据是组合在一起的,因此任何数据集,无论有多大,都很难代表真实世界的复杂性。
对于一个集合的组合来说,组合性大意味着什么?想象一下,通过从目标字典中选择对象并将它们放在不同的配置中来构建一个可视场景。这显然可以用指数的方式来做。即使是单个物体的图像,我们也可以获得类似的复杂性,因为我们可以用无数种方法对其进行遮挡,其背景也有无数种变化的可能。
人类可以很自然地适应视觉环境的变化,但深度网络更敏感,更容易出错,如图 3 所示。我们注意到,这种组合性爆炸可能不会发生在某些视觉任务上,如深度神经网络在医学图像中的应用可能会非常成功,因为其背景变化相对较小 (例如,胰腺非常接近十二指肠)。但是对于许多应用程序,如果没有指数级大的数据集,就无法捕捉真实世界的复杂性。
这个问题带来了一些巨大的挑战,因为在有限数量随机抽取的样本上,训练和测试模型的标准范式变得不切实际,因为这些样本数量永远不会大到足以代表数据底层分布的程度。因此我们要解决两个新的问题:
(I) 我们如何在有限大小的数据集上训练算法,使它们能够在捕捉真实世界的组合复杂性所需的真正庞大的数据集上表现良好?
(II) 如果我们只能在有限子集上测试这些算法,我们如何有效地测试这些算法,以确保它们在这些庞大的数据集中工作?
从现有形式的深度网络来看,这样的方法似乎不太可能处理组合爆炸。数据集可能永远不够大的问题一直存在,导致无法训练或测试。 下面我们简要介绍一些潜在的解决方案。
组合性是一种基本原则,它可以被诗意地描述为“一种信念的体现,这种信念认为世界是可知的,人们可以将事物拆解,理解它们,并在精神上按照自己的意愿重组事物”。关键的假设在于,结构是按照一组语法规则,由更基本的子结构分层构成的。这意味着,子结构和语法可以从有限的数据中学习,然后泛化到组合的场景中。
与深层网络不同的是,组合性模型需要结构化的表征来明确模型的结构和子结构。组合模型提供了超越所见数据的推理能力,对系统进行推理、干预、诊断,以及具有基于相同的底层知识结构解决许多不同问题的能力。引用 Stuart Geman 的话:“世界是组合的,或者说上帝是存在的。”否则上帝就要手动焊接人类智能了 [21]。尽管深度神经网络拥有某种形式的复杂性,如高级特征由来自低级特征的响应组合而成,但这并不是本文中提到的组合性。
图 4:(来源) 从 (a) 到 (b) 到 (c),可变性递增,并且使用了遮挡。特别是 (c) 是一个组合大数据集的例子,它本质上与验证码相同。有趣的是,对验证码的研究表明,组合模型的性能很好,而深度网络的性能要差得多。
图 4 展示了一个组合案例 [22],展示了合成分析 [23]。
组合模型的一些概念优势已经在视觉问题上得到了证明,例如使用相同的底层模型 [24] 执行多个任务和识别 CAPTCHAs[25] 的能力。其他非视觉示例也证明了同样的观点。尝试训练深度网络进行智商测试没有成功。[26] 在这个任务中,目标是在一个 3x3 网格中预测丢失的图像,在这个网格中其他 8 个格子的图像都已经给出,并且底层规则是组合性的 (并且可能存在干扰项)。相反,对于一些自然语言应用程序,神经模块网络 [27] 的动态结构似乎足够灵活,可以捕捉到一些有意义的组合,其性能优于传统的深度学习网络。事实上,我们最近证实,经过联合训练后,各个模块确实实现了它们预期的组合功能 (如 AND、OR、FILTER(RED) 等)[28]。
组合模型具有许多理想的理论特性,例如 可解释性 和能够 生成 样本。这使得错误更容易诊断,因此它们比像深度网络这样的黑盒方法更难被欺骗。但是学习组合模型是很难的,因为它需要学习构件和语法 (甚至语法的性质也是有争议的)。 此外,为了进行综合分析,他们需要拥有目标和场景结构的生成模型。将分布放到图像上具有挑战性,只有少数例外,如人脸、字母和规则纹理图像 [29]。
更重要的是,处理组合爆炸需要学习三维世界的 因果 模型以及它们如何生成图像。对人类婴儿的研究表明,他们是通过建立因果模型来学习的,这些因果模型可以预测他们所处环境的结构,包括朴素的物理学。这种因果关系的理解使我们能够从有限的数据中学习,并泛化到新环境中,这类似于将牛顿定律与托勒密的太阳系模型进行对比,前者用最少的自由参数给出因果关系的理解,而后者给出非常准确的预测,但需要大量的数据来确定其细节。
在显示世界的组合复杂性上测试视觉算法的一个潜在挑战是,我们只能在有限的数据上进行测试。博弈论通过关注最坏情况而不是一般情况来解决这个问题。如前所述,如果数据集没有捕捉到问题的组合复杂度,那么有限大小数据集上的一般案例结果可能没有意义。如果我们的目标是为自动驾驶汽车开发视觉算法,或者在医学图像中开发诊断癌症的视觉算法,那么关注最糟糕的情况显然是有意义的,因为算法的失败可能会带来严重后果。
如果能够在低维空间中捕捉到故障模式,如立体视觉的危险因素,则可以利用计算机图形学和网格搜索对其进行研究 [30]。但是对于大多数视觉任务,特别是涉及组合数据的任务,很难识别出少数可以被隔离或测试的危险因素。一种策略是将标准对抗性攻击的概念扩展到包括非局部结构,这可以通过允许对图像或场景改变 [31] 但不会显著影响人类感知的复杂操作(如遮挡或改变被观察物体的物理属性)来实现。将这种策略扩展到处理组合数据的视觉算法仍然具有很大的挑战性。但是,如果在设计算法时考虑到了组合性,那么它们的显式结构可能使诊断并确定它们的故障模式成为可能。
几年前,Aude Oliva 和 Alan Yuille(第一作者) 共同组织了一场由美国国家科学基金会资助的计算机视觉前沿研讨会(MIT CSAIL 2011)。会议鼓励大家坦诚交换意见。特别是与会人员对深度网络在计算机视觉方面的潜力方面存在巨大的分歧。Yann LeCun 大胆地预言,不久之后每个人都将使用深度网络。 他的预测是对的。深度网络的成功是卓越的,帮助计算机视觉变得非常受欢迎,大大增加了学术界和工业界之间的互动,导致计算机视觉技术应用于许多学科,并产生了许多其他重要的研究成果。尽管深度网络取得了成功,但还存在巨大挑战,而我们要实现通用人工智能和理解生物视觉系统,必须克服这些挑战。我们的一些担忧与最近对深度网络的批评类似 [32][33]。随着研究人员在越来越现实的条件下处理越来越复杂的视觉任务,最严峻的挑战就是如何开发能够应对组合爆炸的算法。虽然深度网络是解决方案的一部分,但我们认为还需要涉及组合原则和因果模型的补充方法,以捕捉数据的基本结构。此外,面对组合爆炸,我们需要重新思考如何训练和评估视觉算法。
注:本文是《深度网络:它们为视觉做过什么?》的一个简短版本。[34]
查看英文原文:
https://thegradient.pub/the-limitations-of-visual-deep-learning-and-how-we-might-fix-them/
喜欢这篇文章吗?点一下「好看」再走👇