这个例子展示了如何使用局部可解释的模型不可知论解释(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 = Img“sherlock.jpg”);img = imresize(img,inputSize);
对图像进行分类,并在图像标题中显示分类得分最高的三个类。
[YPred,scores] = classified (net,img);[~,topIdx] = maxk(分数,3);topScores = scores(topIdx);topClasses = classes(topIdx);imshow(img) titleString = compose(“% s (% .2f)”、topClasses topScores);标题(sprintf(加入(titleString,”;“)));
GoogLeNet将夏洛克归类为金毛猎犬
.可以理解的是,网络也将高概率分配给拉布拉多寻回犬
类。你可以用imageLIME
了解网络使用图像的哪些部分来做出这些分类决策。
您可以使用LIME来找出图像的哪些部分对一个类是重要的。首先,看看预测的类金毛猎犬
.图片的哪些部分暗示了这个班级?
默认情况下,imageLIME
通过将图像分割成超像素来识别输入图像中的特征。这种分割方法需要图像处理工具箱;但是,如果没有“图像处理工具箱”,则可以使用该选项“分割”、“电网”
将图像分割成正方形特征。
使用imageLIME
函数映射不同超像素特征的重要性。默认情况下,简单模型是一个回归树。
map = imagelme (net,img,YPred);
显示叠加了LIME地图的Sherlock图像。
图imshow (img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机colorbar标题(sprintf ("图像LIME (%s)",…YPred)举行从
地图显示了图像的哪些区域对分类是重要的金毛猎犬
.地图上的红色区域具有更高的重要性-当这些区域被移除时,分数为金毛猎犬
班级下降。该网络以狗的脸和耳朵为中心,对金毛猎犬进行预测。这与其他可解释性技术一致,如遮挡敏感性或Grad-CAM。
GoogLeNet的预测得分为55%金毛猎犬
百分之四十的学生拉布拉多寻回犬
类。这些类非常相似。您可以通过比较为每个类别计算的LIME地图来确定狗的哪个部分对两个类别更重要。
使用相同的设置,计算LIME映射拉布拉多寻回犬
类。
secondClass = topClasses(2);map = imagelme (net,img,secondClass);图;imshow (img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机colorbar标题(sprintf ("图像LIME (%s)", secondClass))从
为拉布拉多寻回犬
课堂上,网络更专注于狗的鼻子和眼睛,而不是耳朵。虽然这两张地图都突出了狗的前额,但网络已经决定狗的耳朵和下一个表示金毛猎犬
类,而狗的眼睛和鼻子表示拉布拉多寻回犬
类。
其他图像可解释性技术,如Grad-CAM对结果图进行采样,以生成图像重要区域的平滑热图。您可以使用imageLIME
,通过计算方形或矩形特征的重要性,并对结果地图进行上采样。
要将图像分割成方形特征网格,而不是不规则的超像素,请使用“分割”、“电网”
名称-值对。通过设置,对计算地图进行采样以匹配使用双三次插值的图像分辨率“OutputUpsampling”、“双三次的“
.
要增加初始计算地图的分辨率,可以通过指定“NumFeatures”,100
名称-值对。由于图像是方形的,这就产生了一个10 × 10的特征网格。
LIME技术在原始观测的基础上,随机选择一些特征,将这些特征中的所有像素替换为图像的平均像素,生成合成图像,有效地去除该特征。通过设置将随机样本的数量增加到6000“NumSamples”,6000
.当你增加特征的数量时,增加样本的数量通常会得到更好的结果。
默认情况下imageLIME
函数使用回归树作为它的简单模型。而是通过设置lasso回归来拟合线性回归模型“模型”、“线性”
.
map = imagelme (net,img,“金毛猎犬”,…“分割”,“网格”,…“OutputUpsampling”,“双三次的”,…“NumFeatures”, 100,…“NumSamples”, 6000,…“模型”,“线性”);imshow (img,“InitialMagnification”, 150) hold在显示亮度图像(地图,“AlphaData”, 0.5) colormap飞机标题(sprintf ("图像LIME (%s -线性模型)",…YPred)举行从
与Grad-CAM计算的梯度图类似,LIME技术也强烈地识别出狗的耳朵对预测的重要性金毛猎犬
.
LIME结果通常只显示最重要的几个特征。当你使用imageLIME
函数时,还可以获得计算中使用的特征的映射以及计算出的每个特征的重要性。使用这些结果来确定四个最重要的超像素特征,并仅在图像中显示四个最重要的特征。
计算LIME图,得到feature map和计算出的每个feature的重要度。
[map,featureMap,featureImportance] = imagelme (net,img,YPred);
找出前四个特征的指数。
numTopFeatures = 4;[~,idx] = maxk(featureImportance,numTopFeatures);
接下来,使用LIME地图遮罩图像,这样只有最重要的四个超级像素中的像素是可见的。显示遮罩图像。
mask = ismember(featureMap,idx);maskedImg = uint8(mask).*img;图imshow (maskedImg);标题(sprintf ("图像石灰(%s -顶部%i特征)",…YPred, numTopFeatures))
里贝罗,马尔科·图里奥,萨米尔·辛格和卡洛斯·格斯特林。“‘我为什么要相信你?:解释任何分类器的预测。”在第22届ACM SIGKDD知识发现与数据挖掘国际会议论文集, 1135 - 44。美国加州旧金山:ACM, 2016。https://doi.org/10.1145/2939672.2939778。
DAGNetwork
|googlenet
|gradCAM
|imageLIME
|occlusionSensitivity