这个例子展示了如何使用局部可解释的模型不可知论解释(LIME)来理解为什么深度神经网络会做出分类决策。
深度神经网络非常复杂,它们的决策很难解释。LIME技术使用更简单、更可解释的模型(如回归树)来近似深度神经网络的分类行为。解释这个简单模型的决策可以让我们更深入地了解神经网络[1]的决策。该简单模型用于确定输入数据的特征的重要性,作为特征对深度神经网络重要性的代理。
当某个特征对深度网络的分类决策非常重要时,去除该特征会显著影响分类评分。因此,该特性对简单模型也很重要。
深度学习工具箱提供imageLIME
函数来计算由LIME技术确定的特征重要性的地图。图像的LIME算法通过:
将图像分割成若干特征。
通过随机包含或排除特征生成许多合成图像。被排除的特征用图像平均值的值替换每个像素,因此它们不再包含对网络有用的信息。
利用深度网络对合成图像进行分类。
拟合一个更简单的回归模型,使用每个合成图像是否有图像特征作为目标类得分的二元回归预测因子。该模型模拟了复杂深度神经网络在观测区域的行为。
使用简单模型计算特征的重要性,并将该特征的重要性转换为地图,以表明图像中对模型最重要的部分。
您可以将LIME技术与其他可解释性技术(如遮挡灵敏度或grado - cam)的结果进行比较。有关如何使用这些相关技术的示例,请参见下面的示例。
加载预先训练的网络GoogLeNet。
网= googlenet;
提取网络的图像输入大小和输出类别。
inputSize = net.Layers (1) .InputSize (1:2);类= net.Layers . class(结束);
加载图像。这张照片是一只叫夏洛克的猎犬。将图像调整为网络输入的大小。
img = imread (“sherlock.jpg”);img = imresize (img, inputSize);
对图像进行分类,并在图像标题中显示分类得分最高的三个类。
[YPred,分数]=(净,img)进行分类;[~,topIdx] = maxk(scores, 3);topScores =分数(topIdx);topClasses =类(topIdx);imshow(img) title = compose(“% s (% .2f)”、topClasses topScores);标题(sprintf(加入(titleString,”;“)));
GoogLeNet将夏洛克归类为金毛猎犬
.可以理解的是,网络也把高概率分配给了拉布拉多寻回犬
类。您可以使用imageLIME
以了解网络使用图像的哪些部分来进行分类决策。
你可以使用LIME找出图像的哪些部分对类来说是重要的。首先,看看预测的等级金毛猎犬
.图像的哪些部分暗示了这个类?
默认情况下,imageLIME
通过将图像分割成超像素来识别输入图像中的特征。这种分割方法需要图像处理工具箱;但是,如果您没有“图像处理工具箱”,则可以使用该选项“分割”、“电网”
将图像分割成正方形特征。
使用imageLIME
函数来映射不同超像素特征的重要性。默认情况下,简单模型是一个回归树。
地图= imageLIME(网,img, YPred);
显示夏洛克的图像与石灰地图重叠。
图imshow (img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机colorbar标题(sprintf (”的形象石灰(% s)”,...YPred)举行从
地图显示图像的哪些区域对分类是重要的金毛猎犬
.地图上的红色区域有更高的重要性-当这些区域被移除,得分为金毛猎犬
类下降。该网络关注狗的脸和耳朵,对金毛猎犬进行预测。这与其他可解释性技术(如遮挡灵敏度或grado - cam)是一致的。
GoogLeNet预测得分为55%金毛猎犬
40%的学生拉布拉多寻回犬
类。这些类非常相似。您可以通过比较为每个类计算的LIME地图来确定狗的哪些部分对两个类更重要。
使用相同的设置,计算LIME地图拉布拉多寻回犬
类。
secondClass = topClasses (2);地图= imageLIME(网,img, secondClass);图;imshow (img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机colorbar标题(sprintf (”的形象石灰(% s)”, secondClass))从
为拉布拉多寻回犬
上课时,网络更注重狗的鼻子和眼睛,而不是耳朵。虽然这两张地图都突出了狗的前额,但网络决定用狗的耳朵和下一个来表示金毛猎犬
类,而狗的眼睛和鼻子表示拉布拉多寻回犬
类。
其他图像可解释性技术,如梯度相机对生成的图像进行上采样,生成图像重要区域的平滑热图。你可以用imageLIME
,通过计算正方形或矩形特征的重要性,并对得到的地图进行上采样。
将图像分割成正方形特征网格而不是不规则的超像素,使用“分割”、“电网”
名称-值对。通过设置,使用双三次插值对计算得到的地图进行上采样,以匹配图像分辨率“OutputUpsampling”、“双三次的“
.
要增加最初计算的地图的分辨率,可以通过指定“NumFeatures”,100
名称-值对。由于图像是正方形的,这就产生了一个10乘10的特征网格。
LIME技术是在原始观测的基础上,随机选择一些特征,将这些特征中的所有像素替换为图像的平均像素,从而有效地去除该特征,从而生成合成图像。通过设置将随机样本的数量增加到6000“NumSamples”,6000
.当你增加特征的数量时,增加样本的数量通常会得到更好的结果。
默认情况下,imageLIME
函数使用回归树作为它的简单模型。相反,通过设置,用套索回归拟合线性回归模型“模型”、“线性”
.
地图= imageLIME (img,净“金毛猎犬”,...“分割”,“网格”,...“OutputUpsampling”,“双三次的”,...“NumFeatures”, 100,...“NumSamples”, 6000,...“模型”,“线性”);imshow (img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机标题(sprintf ("图像LIME (%s -线性模型)",...YPred)举行从
与gradc - cam计算的梯度图类似,LIME技术也能很好地识别出狗的耳朵对预测的重要性金毛猎犬
.
LIME结果通常只显示最重要的几个特征。当你使用imageLIME
函数,还可以获得计算中使用的特征的映射以及每个特征的计算重要性。使用这些结果来确定四个最重要的超像素特征,并在图像中只显示这四个最重要的特征。
计算LIME图,得到feature map和每个feature计算的重要性。
(地图,featureMap featureImportance] = imageLIME(网,img, YPred);
找到前四个特性的索引。
numTopFeatures = 4;[~, idx] = maxk (featureImportance numTopFeatures);
接下来,使用LIME地图遮罩图像,这样只有最重要的四个超像素的像素是可见的。显示蒙面图像。
掩码= ismember (featureMap idx);maskedImg = uint8(面具)。* img;图imshow (maskedImg);标题(sprintf ("Image LIME (%s - top %i feature)",...YPred, numTopFeatures))
[1] Ribeiro, Marco Tulio, Sameer Singh,和Carlos Guestrin。“‘我为什么要相信你?’:解释任何分类器的预测。”在第22届ACM SIGKDD国际知识发现和数据挖掘会议论文集, 1135 - 44。美国加州旧金山:ACM, 2016。https://doi.org/10.1145/2939672.2939778。
DAGNetwork
|googlenet
|gradCAM
|imageLIME
|occlusionSensitivity