使用梯度归因技术调查分类决策
这个例子展示了如何使用梯度归因调查地图图像的哪些部分最重要的分类决策的神经网络。
深层神经网络可以像黑盒决策者——他们给优秀的结果复杂的问题,但很难理解为什么网络提供一个特定的输出。Explainability深越来越重要了,因为网络是用于多个应用程序。考虑网络可辩解的,它必须明确网络输入数据的哪些部分是使用做出决定和这个数据对网络的输出。
一系列可视化技术可用来确定网络输入数据的使用合理的部分分类决策。以及梯度归因方法显示在这个例子中,您可以使用技术,如gradient-weighted class-activation映射(Grad-CAM)和闭塞的敏感性。有关示例,请参见
梯度归因方法探索在这个例子提供像素的分辨率地图显示像素对网络最重要的分类。他们计算出梯度类的分数对输入像素。直觉上,地图显示像素最影响类分数当改变。梯度归因方法生产更高分辨率的地图比从Grad-CAM或闭塞敏感性,但这往往是噪声很大,作为一个训练有素的深层网络不是强烈依赖于特定像素的精确值。使用梯度归因技术找到一个图像的广泛领域重要的分类。
最简单的梯度归因地图类的梯度评分预测类对输入图像中的每个像素[1]。这表明这类分数像素有最大的影响,因此,像素分类是最重要的。这个例子展示了如何使用梯度归因和两个扩展方法:引导反向传播[2][3]和综合梯度。这些技术的使用是在争论中,目前还不清楚有多少了解这些扩展可以提供到模型[4]。
负载Pretrained网络和图像
加载pretrained GoogLeNet网络。
网= googlenet;
提取输入图像的大小和输出类网络。
inputSize = net.Layers (1) .InputSize (1:2);类= net.Layers . class(结束);
加载图像。一个叫莱卡犬的狗的图片。调整图像的网络输入的大小。
img = imread (“laika_grass.jpg”);img = imresize (img, inputSize);
图像进行分类,并显示预测类和分类得分。
[YPred,分数]=(净,img)进行分类;[得分,classIdx] = max(分数);predClass =类(classIdx);imshow (img);标题(sprintf (“% s (% .2f)”字符串(predClass),分数));
网络分类莱卡犬迷你贵宾犬,这是一个合理的猜测。她是一个贵宾犬、可卡犬十字架。
计算梯度归因地图使用自动分化
梯度归因技术依赖于发现的梯度预测评分对输入图像。梯度归因地图使用以下公式计算:
在哪里 代表的像素位置的重要性 预测的类 , 这个类将softmax分数,然后呢 图像像素位置吗 [1]。
网络转换为一个dlnetwork
因此,您可以使用自动微分计算梯度。
lgraph = layerGraph(净);lgraph = removeLayers (lgraph lgraph.Layers(结束). name);dlnet = dlnetwork (lgraph);
指定的名称将softmax层,“概率”
。
softmaxName =“概率”;
使用自动分化,莱卡犬的形象转换为一个dlarray
。
dlImg = dlarray(单(img),SSC的);
使用dlfeval
和gradientMap
函数中定义金宝app支持功能这个示例的部分)来计算导数
。的gradientMap
函数将图像通过网络获得分数和包含调用的类dlgradient
评估分数的梯度图像。
dydI = dlfeval (@gradientMap dlnet、dlImg softmaxName, classIdx);
属性映射dydI
是227 - 227 - 3数组。每个元素在每个通道对应的梯度类分数对通道的输入图像的原始RGB图像。
有许多地图可视化的方法。直接绘制渐变归因地图作为一个RGB图像可以作为地图通常不清楚太吵了。相反,每个像素的绝对值之和沿着通道尺寸,然后重新调节0
和1
。地图显示梯度归因与255年使用自定义colormap颜色映射的值0
白色和1
为黑色。
地图=总和(abs (extractdata (dydI)), 3);地图=重新调节(地图);提出= [linspace (0255)“linspace (0255) linspace (0255)];imshow(地图,“Colormap”,提出);标题(“梯度归因地图(“字符串(predClass) + +“)”);
最黑暗的部分地图是那些围绕着狗。地图是非常吵闹,但它确实表明,网络使用预期的信息在图像进行分类。狗有更多的像素对分类的影响分数比像素的背景。
梯度锐化归因地图使用引导反向传播
你可以获得一个更清晰的梯度归因地图通过修改网络的向后通过ReLU层这样的元素梯度小于零和元素的输入小于零的ReLU层都设置为0。这就是所谓的反向传播引导[2]。
反向传播引导落后函数是:
在哪里 的损失, ReLU的输入层, 是输出。
您可以编写一个自定义层与非标准向后传递,并使用它自动分化。一个自定义层类CustomBackpropReluLayer
实现这一修改包含在这个例子作为支持文件。金宝app当自动分化backpropagates通过CustomBackpropReluLayer
对象,它使用修改后的反向传播引导函数中定义的自定义层。
使用支持函数金宝appreplaceLayersOfType
(定义在金宝app支持功能这个示例的部分)来代替的所有实例reluLayer
在网络的实例CustomBackpropReluLayer
。设置BackpropMode
财产的CustomBackpropReluLayer
来“guided-backprop”
。
customRelu = CustomBackpropReluLayer ();customRelu。BackpropMode =“guided-backprop”;lgraphGB = replaceLayersOfType (lgraph,…“nnet.cnn.layer.ReLULayer”,customRelu);
包含了转换层图CustomBackpropReluLayers
成一个dlnetwork
。
dlnetGB = dlnetwork (lgraphGB);
计算和情节的梯度归因地图使用引导反向传播网络。
dydIGB = dlfeval (@gradientMap dlnetGB、dlImg softmaxName, classIdx);mapGB =总和(abs (extractdata (dydIGB)), 3);mapGB =重新调节(mapGB);imshow (mapGB“Colormap”,提出);标题(“引导反向传播(“字符串(predClass) + +“)”);
你可以更清楚地看到,引导反向传播技术突出的不同部分的狗,比如眼睛和鼻子。
您还可以使用反向传播的Zeiler-Fergus技术通过ReLU层[5]。Zeiler-Fergus技术,向后给出函数为:
设置BackpropMode
财产的CustomBackpropReluLayer
实例“zeiler-fergus”
。
customReluZF = CustomBackpropReluLayer ();customReluZF。BackpropMode=“zeiler-fergus”;lgraphZF = replaceLayersOfType (lgraph,…“nnet.cnn.layer.ReLULayer”,customReluZF);dlnetZF = dlnetwork (lgraphZF);dydIZF = dlfeval (@gradientMap dlnetZF、dlImg softmaxName, classIdx);mapZF =总和(abs (extractdata (dydIZF)), 3);mapZF =重新调节(mapZF);imshow (mapZF“Colormap”,提出);标题(”Zeiler-Fergus (“字符串(predClass) + +“)”);
梯度归因地图计算使用Zeiler-Fergus反向传播技术不太明显比计算使用引导反向传播。
评估对图像使用集成的梯度变化
集成的梯度方法计算集成类分数对图像像素的梯度跨一组图片是线性插值的一个基准图像和原始图像之间利益[3]。综合梯度技术设计是对像素值的变化敏感集成,这样如果一个像素值的改变影响类分数,像素有一个非零值的映射。非线性网络中,比如ReLU层,可以防止这种简单的梯度归因技术的敏感性。
综合计算梯度归因地图
,
在哪里 类地图的价值吗 在像素位置 , 是一个基准图像, 图像距离吗 在基线图像和输入图像之间的路径:
。
在这个例子中,集成的梯度公式简化为对一个离散求和指数, ,而不是整合 :
,
与
。
对于图像数据,选择基线图像零的黑人形象。找到图像的区别是原始图像与基准图像。在这种情况下,differenceImg
是一样的原始图像作为基线图像是零。
baselineImg = 0 ([inputSize 3]);differenceImg =单(img)——baselineImg;
创建一个数组的图像对应的离散步骤从基准图像的线性路径到原始输入图像。更多的图像平滑的结果,但需要更长的时间来计算。
numPathImages =25;pathImgs = 0 ([inputSize 3 numPathImages-1]);为n = 0: numPathImages-1 pathImgs (:,:,:, n + 1) = baselineImg + (n) / (numPathImages-1) * differenceImg;结束图;imshow (imtile(重新调节(pathImgs)));标题(“图像以及集成路径”);
路径的mini-batch图像转换为一个dlarray
。格式的数据格式“SSCB”
的两个空间,一个通道和一批维度。每个路径mini-batch图像是一个观察。计算结果批的渐变映射图像沿路径。
dlPathImgs = dlarray (pathImgs,“SSCB”);dydIIG = dlfeval (@gradientMap dlnet、dlPathImgs softmaxName, classIdx);
对于每一个频道,mini-batch总和的梯度观测。
dydIIGSum = (dydIIG, 4)之和;
将每个元素的总结梯度属性映射的对应元素differenceImg
。计算综合梯度归因地图,每个通道求和,重新调节。
dydIIGSum = differenceImg。* dydIIGSum;mapIG =总和(extractdata (abs (dydIIGSum)), 3);mapIG =重新调节(mapIG);imshow (mapIG“Colormap”,提出);标题(“综合梯度(“字符串(predClass) + +“)”);
地图显示了计算网络更强烈关注狗的脸的决定它的类。
这里展示了梯度归因技术可以用来检查你的网络是否关注预期的部分图像在进行一个分类。得到良好的洞察你的模型的工作方式和解释分类的决定,您可以执行这些技术在一系列图像和找到强烈的特定特性为一个特定的类。修改的梯度归因技术可能是更可靠的方法来解释网络决定。而引导反向传播和综合梯度技术可以产生最明显的梯度地图,目前尚不清楚有多少了解这些技术可以提供这种模式是如何运作的[4]。
金宝app支持功能
渐变映射函数
这个函数gradientMap
计算分数的梯度图像,指定的类。的函数接受一个图像或mini-batch图像。在这个例子中,函数gradientMap
介绍了部分计算梯度归因地图使用自动分化。
函数dydI = gradientMap (dlnet dlImgs、softmaxName classIdx)%计算梯度类的分数对一个或多个输入%的图像。dydI = dlarray(0(大小(dlImgs)));为i = 1:尺寸(dlImgs, 4) i = dlImgs(::,:,我);成绩=预测(dlnet,我,“输出”,{softmaxName});classScore =分数(classIdx);dydI(::,:,我)= dlgradient (classScore,我);结束结束
替代层功能
的replaceLayersOfType
函数替换所有层指定类的实例的一个新图层。新层以相同的名称与原始层。在这个例子中,函数replaceLayersOfType
介绍了部分梯度锐化归因地图使用引导反向传播。
函数lgraph = replaceLayersOfType (lgraph layerType newLayer)%替代层layerGraph lgraph指定的类型% layerType newLayer副本的层。为i = 1:长度(lgraph.Layers)如果isa (lgraph.Layers(我),layerType)%匹配新老层之间的名称。layerName = lgraph.Layers(我). name;newLayer。Name = layerName; lgraph = replaceLayer(lgraph, layerName, newLayer);结束结束结束
引用
[1]Simonyan,凯伦,安德里亚·Vedaldi和安德鲁Zisserman。“深处卷积网络:想象图像分类模型和凸起地图。”ArXiv: 1312.6034 (Cs)2014年4月19日。http://arxiv.org/abs/1312.6034。
[2]Springenberg Jost托拜厄斯,阿列克谢Dosovitskiy,托马斯•Brox和马丁Riedmiller。“追求简单:卷积净。”ArXiv: 1412.6806 (Cs),2015年4月13日。http://arxiv.org/abs/1412.6806。
[3]Sundararajan、Mukund Ankur故事,和奇奇燕。“公理归因深度网络。”美国第34机器学习(PMLR)国际会议上70 (2017):3319 - 3328
[4]Adebayo,朱利叶斯,贾斯汀基尔默,迈克尔防波堤,伊恩·格拉汉姆·古德费勒莫里茨哈特,金正日。“显著图的健康检查。”ArXiv: 1810.03292 (Cs,统计),2018年10月27日。http://arxiv.org/abs/1810.03292。
[5]Zeiler马修·d·罗伯·费格斯。“观察和理解卷积网络。”我n计算机视觉——2014年大会。8689年计算机科学课堂讲稿由d .编辑舰队,t . Pajdla b . Schiele Tuytelaars。施普林格,可汗,2014。
另请参阅
googlenet
|occlusionSensitivity
|dlarray
|dlgradient
|dlfeval
|dlnetwork
|gradCAM
|imageLIME