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