图像识别(即,对图像中显示的对象进行分类)是计算机视觉中的一项核心任务,因为它可以实现各种下游应用程序(自动为照片加标签,为视障人士提供帮助等),并已成为一项标准任务基准机器学习(ML)算法。在过去的十年中,深度学习(DL)算法已成为最具竞争力的图像识别算法。但是,默认情况下它们是“黑匣子”算法:很难解释为什么做出特定的预测。
为什么这是一个问题? ML模型的使用者通常出于以下原因而希望能够解释图像的哪些部分导致了算法的预测:
机器学习开发人员可以分析解释以调试模型,识别偏差并预测模型是否有可能推广到新的图像
如果提供了为何做出特定预测的解释,则机器学习模型的用户可能会更信任模型
关于ML的法规(例如GDPR)要求一些算法决策可以用人为解释
在这些用例的推动下,在过去的十年中,研究人员开发了许多不同的方法来打开深度学习的“黑匣子”,旨在使基础模型更具可解释性。有些方法特定于某些种类的算法,而有些则是通用的。有些快,有些慢。
在本文中,我们概述了为图像识别而发明的解释方法,讨论了它们的折衷方案,并提供了示例和代码以使用Gradio进行尝试。
在深入研究之前,让我们从适用于任何图像分类的非常基本的算法开始:留一法(LOO)。
LOO是一种易于理解的方法。如果您要从头开始设计一种解释方法,这是您可能会想到的第一个算法。想法是首先将输入图像分割为一堆较小的子区域。然后,您运行一系列预测,每次遮罩(即将像素值设置为零)一个子区域。根据每个区域的“蒙版”相对于原始图像影响预测的程度,为每个区域分配一个重要度分数。直观地,这些分数量化了哪个区域最有助于预测。
因此,如果我们将图像分成3x3网格的9个子区域,则LOO如下所示:
最暗的红色方块是改变输出最大的方块,而最亮的方块影响最小。在这种情况下,当遮盖顶部中心区域时,预测置信度下降幅度最大,从初始的95%下降到67%。
如果我们以更好的方式进行分割(例如,使用超像素而不是网格),我们将获得一个相当合理的显着图,该图突出了杜宾犬的脸,耳朵和尾巴。
LOO是一种简单而强大的方法。根据图像分辨率和分割方式,它可以产生非常准确和有用的结果。这是使用InceptionNet预测的应用于金毛的1100××825图像的LOO。
在实践中,LOO的一个巨大优势是它不需要任何访问模型内部的功能,甚至可以识别之外甚至可以处理其他计算机视觉任务,从而使其成为一种灵活的通用工具。
那有什么缺点呢?首先,它很慢。每次遮盖一个区域时,我们都会在图像上进行推断。要获得具有合理分辨率的显着性图,您的面罩尺寸可能必须很小。因此,如果将图像分割成100个区域,则将需要100倍的推理时间才能获得热图。另一方面,如果您有太多的子区域,则对它们中的任何一个区域进行遮罩不一定会在预测中产生很大的差异。此LOO的第二个限制是,它没有考虑区域之间的相互依赖性。
因此,让我们来看一个更快,更复杂的技术:(香草)梯度上升。
(香草)梯度上升在“可视化图像分类模型和显着性图[2013]”论文中进行了介绍。 LOO和梯度上升之间存在概念上的关系。使用LOO,我们考虑了当我们逐个遮盖图像中的每个区域时输出如何变化。通过梯度上升,我们可以一次计算出每个像素对输出的影响。我们如何做到这一点?具有反向传播的修改版本。
使用标准的反向传播,我们可以计算模型相对于权重的梯度。梯度是一个包含每个权重值的向量,反映了该权重的微小变化将对输出产生多大的影响,从本质上告诉我们哪些权重对于损失最重要。通过取该梯度的负值,我们可以将训练过程中的损失降到最低。对于梯度上升,我们取相对于输入像素的类别得分的梯度,来告诉我们哪些输入像素对图像分类最重要。通过网络的这一单个步骤为我们提供了每个像素的重要性值,我们以热图的形式显示该值,如下所示。
这里的主要优势是速度;因为我们只需要通过网络一次,所以梯度上升比LOO快得多,尽管最终的热图有点粗糙。
尽管梯度上升有效,但已发现这种原始公式称为香草梯度上升,但有一个明显的缺点:它会传播负梯度,最终会导致干扰和嘈杂的输出。为解决这些问题,提出了一种新方法“引导反向传播”。
引导式反向传播发表在《为简单而努力:全卷积网》 [2014]中,作者建议在较高的层上向反向传播的常规步骤添加一个附加的引导信号。本质上,只要输出为负,该方法就会阻止神经元的梯度倒流,仅保留那些导致输出增加的梯度,从而最终减少噪声。
引导式反向传播的工作速度与香草梯度上升一样快,因为它只需要通过网络一次,但通常会产生更清晰的输出,尤其是在物体边缘附近。该方法相对于没有最大池化层的神经体系结构中的其他方法特别有效。
但是,人们发现,香草梯度上升和引导式反向传播仍然存在一个主要问题:当图像中存在两个或更多类时,它们通常无法正常工作,而自然图像经常会出现这种情况。
输入Grad-CAM或Gradient-Weighted类激活映射,在Grad-CAM:深度网络通过基于梯度的本地化的视觉说明中提出[2016]。在这里,作者发现,当在最后一个卷积层的每个滤波器处而不是在类分数上(但仍相对于输入像素)采用梯度时,解释的质量会提高。为了获得特定于班级的解释,Grad-CAM对这些梯度进行加权平均,其权重基于过滤器对班级得分的贡献。如下所示,该结果远胜于单独的定向反向传播。
作者进一步推广了Grad-CAM,使其不仅适用于目标类别,而且适用于任何目标“概念”。这意味着可以使用Grad-CAM来解释为什么图像字幕模型可以预测特定的字幕,甚至可以处理采用多个输入的模型,例如视觉问答模型。由于这种灵活性,Grad-CAM已变得非常流行。以下是其架构的概述。
但是,您可能已经注意到,使用所有先前的方法,结果仍然不是很清晰。 SmoothGrad,在SmoothGrad中提出:通过添加噪声[2017]消除噪声,是对先前方法的修改。这个想法很简单:作者指出,如果输入图像首先受到噪声干扰,则可以为每个版本的干扰输入计算一次梯度,然后将灵敏度图平均化。尽管运行时间更长,但这会导致更清晰的结果。
当您面对所有这些解释方法时,会选择哪一种?或者,当方法冲突时,是否有一种方法在理论上可以证明比其他方法更好?让我们看一下集成渐变。
与以前的论文不同,深度网络公理归因[2017]的作者从解释的理论基础开始。他们专注于两个公理:敏感性和实现不变性,他们提出了一个好的解释方法应该满足。
敏感度公理意味着,如果两个图像恰好在一个像素上有所不同(但所有其他像素都相同),并且产生不同的预测,则解释算法应为该不同像素提供非零的归因。实现不变性公理意味着算法的基本实现不应影响解释方法的结果。他们使用这些原则来指导一种新的归因方法的设计,该归因方法称为“集成梯度(IG)”。
IG从基线图像(通常是输入图像的完全变暗的版本)开始,并增加亮度,直到恢复原始图像为止。针对每个图像计算相对于输入像素的类别得分的梯度,并将其平均以获得每个像素的全局重要性值。 IG除了理论特性外,还解决了香草梯度上升的另一个问题:饱和梯度。由于渐变是局部的,因此它们不能捕获像素的全局重要性,而只能捕获特定输入点的灵敏度。通过改变图像的亮度并计算不同点的梯度,IG可以获得关于每个像素重要性的更完整图片。
尽管这通常可以产生更准确的灵敏度图,但是该方法速度较慢,并且引入了两个新的附加超参数:基线图像的选择以及生成积分梯度的步骤数。没有这些,我们可以做吗?
这就是我们最终的解释方法,即模糊积分渐变。该方法在《规模与空间的归因》 [2020]中提出,被提出来解决具有集成梯度的特定问题,包括消除“基线”参数,并消除某些易于在解释中出现的视觉伪像。
模糊积分梯度方法通过测量一系列沿原始输入图像逐渐模糊的版本(而不是像积分梯度那样变暗的图像)来测量梯度。尽管这看起来似乎是微小的差异,但作者认为这种选择在理论上更为合理,因为模糊图像不会像选择基准图像那样在解释中引入新的伪影。
2010年代是机器学习解释方法硕果累累的十年,并且现在有大量用于解释神经网络行为的方法。我们已经在本博文中对它们进行了比较,并欠下了几个很棒的库,尤其是Gradio,以创建您在GIF和PAIR代码的TensorFlow实现中看到的接口。用于所有接口的模型是Inception Net图像分类器。
可在此Jupyter笔记本和Google Colab上找到重现此博客文章的完整代码。在此处尝试实时界面(使用定向反向传播)。
作者Bio Ali是Gradio的共同创始人,在那里他担任机器学习工程师。 在此之前,他曾在Tesla,iRobot和MIT呆过时间。 他发表了几篇学术论文,并为许多开源项目做出了贡献。 您可以在twitter @ si3luwa上找到他。 致谢感谢Andrey Kurenkov,Abubakar Abid和Jessica Dai的大力帮助。 @article {abid2021visual,作者= {Abdalla,阿里},标题= {视觉图像识别的视觉历史},期刊= {渐变},年份= {2021},出版方式= {\ url {https:// thegradient .pub / a-visual-history-of-interpretation-for-image-recognition /}},} 如果您喜欢这篇文章并想了解更多信息,请订阅Gradient并在Twitter上关注我们。