此示例显示如何使用本地可解释的模型 - 不可知的解释(石灰)来理解为什么深神经网络进行分类决策。
深度神经网络非常复杂,他们的决定可能很难解释。石灰技术使用更简单的更可解释的模型来近似深度神经网络的分类行为,例如回归树。解释这个更简单的模型的决定提供了对神经网络的决定的洞察力[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)”,顶括号,topscores');标题(SprIntf(加入(Titlestring,“;”)));
GoogLeNet将夏洛克归类为金毛猎犬
.可以理解的是,网络也把高概率分配给了拉布拉多寻回犬
类。您可以使用ImageLime.
要了解网络的图像的哪些部分用于进行这些分类决策。
您可以使用石灰找出图像的哪些部分对类很重要。首先,看看预测的类金毛猎犬
.图像的哪些部分建议这个课程?
默认情况下,ImageLime.
通过将图像分割成超像素来识别输入图像中的特征。这种分割方法需要图像处理工具箱;但是,如果您没有“图像处理工具箱”,则可以使用该选项“细分”,“网格”
将图像分割成正方形特征。
使用ImageLime.
函数来映射不同超像素特征的重要性。默认情况下,简单模型是一个回归树。
地图= ImageLime(Net,IMG,Ypred);
显示带有石灰贴图的Sherlock的图像。
图imshow(img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap喷射彩色杆标题(Sprintf(”的形象石灰(% s)”那......YPred)举行从
地图显示图像的哪个区域对分类很重要金毛猎犬
.地图上的红色区域有更高的重要性-当这些区域被移除,得分为金毛猎犬
类下降。该网络关注狗的脸和耳朵,对金毛猎犬进行预测。这与其他可解释性技术(如遮挡灵敏度或grado - cam)是一致的。
googlenet预测得分为55%金毛猎犬
40%的学生拉布拉多寻回犬
类。这些类非常相似。您可以通过比较为每个类计算的LIME地图来确定狗的哪些部分对两个类更重要。
使用相同的设置,计算石灰映射拉布拉多寻回犬
类。
secondClass = topClasses (2);地图= imageLIME(网,img, secondClass);图;imshow(img,“InitialMagnification”, 150)在显示亮度图像(地图,“AlphaData”, 0.5) colormap喷射彩色杆标题(Sprintf(”的形象石灰(% s)”,二类))持有从
为拉布拉多寻回犬
班级,网络更专注于狗的鼻子和眼睛,而不是耳朵。虽然两张地图突出了狗的额头,但网络已经决定狗的耳朵和颈部表示金毛猎犬
班级,而狗的眼睛和鼻子表示拉布拉多寻回犬
类。
其他图像解释性技术,例如Grad-CaM上置得到的地图,以产生图像的重要区域的光滑热敷。您可以生成类似于类似的地图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.
函数,您还可以获得计算中使用的功能的地图和每个功能的计算重要性。使用这些结果来确定四个最重要的Superpixel功能,并仅显示图像中的四个最重要的功能。
计算LIME图,得到feature map和每个feature计算的重要性。
[Map,Featuremap,FeatureImportance] = ImageLime(Net,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
|occlusionSensitivity
|ImageLime.
|毕业生