主要内容

使用梯度属性技术研究分类决策

这个例子展示了如何使用梯度属性图来研究图像的哪些部分对深度神经网络的分类决策是最重要的。

深层神经网络看起来像黑箱决策者——它们在复杂问题上给出了极好的结果,但很难理解为什么网络会给出特定的输出。随着深度网络在更多应用中的应用,可解释性变得越来越重要。为了考虑一个可解释的网络,它必须清楚网络所使用的输入数据的哪些部分来作出决定,以及这些数据对网络输出有多大贡献。

一系列可视化技术可用来确定网络是否使用输入数据的合理部分来进行分类决策。除了本例中显示的梯度归因方法外,您还可以使用梯度加权类激活映射(grade - cam)和遮挡敏感性等技术。有关示例,请参见

在这个例子中探索的梯度属性方法提供像素分辨率地图,显示哪些像素对网络的分类最重要。它们计算类得分相对于输入像素的梯度。直观地,地图显示了当改变类得分时,哪些像素影响最大。梯度归因方法生成的地图的分辨率比梯度cam或遮挡敏感度更高,但往往更有噪声,因为训练良好的深度网络并不强烈依赖特定像素的准确值。使用梯度属性技术找到图像中对分类很重要的广阔区域。

最简单的梯度属性映射是预测类的类分数相对于输入图像中每个像素的梯度[1]。这显示了哪些像素对类分数的影响最大,因此哪些像素对分类最重要。此示例显示了如何使用梯度属性和两种扩展方法:引导反向传播[2]和集成梯度[3]。这些技术的使用正在讨论中,因为不清楚这些扩展可以为模型提供多少洞察力[4]。

加载预训练网络和图像

加载预训练的GoogLeNet网络。

净=googlenet;

提取网络的图像输入大小和输出类。

inputSize=净层(1)。inputSize(1:2);classes=净层(end).classes;

加载图像。图像是一只名叫莱卡的狗。将图像大小调整为网络输入大小。

img=imread(“laika_grass.jpg”); img=imresize(img,inputSize);

对图像进行分类,并显示预测的类别和分类分数。

[YPred,得分]=分类(净,img);[分数,classIdx]=最大(分数);predClass=类(classIdx);imshow(img);头衔(斯普林特)(%s(%.2f),字符串(类),分数);

网络将莱卡归类为迷你卷毛狗,这是一个合理的猜测。她是卷毛狗/可卡犬的杂交种。

利用自动微分计算梯度属性图

梯度归因技术依赖于找到预测分数相对于输入图像的梯度。梯度归因图使用以下公式计算:

W xy c 年代 c xy

在哪里 W xy c 表示位置处像素的重要性 x y 对阶级的预测 c 年代 c 是该类的softmax分数,以及 xy 图像是否位于像素位置 x y [1].

将网络转换为数据链路网络这样你就可以用自动微分来计算梯度。

lgraph = layerGraph(净);lgraph = removeLayers (lgraph lgraph.Layers(结束). name);dlnet = dlnetwork (lgraph);

指定softmax图层的名称,“问题”

softmaxName=“问题”

要使用自动微分,请将Laika图像转换为dlarray

dlImg=dlarray(单个(img),“SSC”);

使用dlfeval梯度图函数(在万博1manbetx支持功能此示例的第节)计算导数 年代 c xy 这个梯度图函数通过网络向前传递图像以获得类分数,并包含对梯度评估分数相对于图像的梯度。

dydI=dlfeval(@gradientMap,dlnet,dlImg,softmaxName,classIdx);

属性图戴迪是一个227乘227乘3的数组。每个通道中的每个元素都对应于类分数相对于原始RGB图像的该通道的输入图像的梯度。

有许多方法可以将这张地图形象化。直接绘制梯度属性图作为RGB图像可能会不清晰,因为地图通常是相当嘈杂的。相反,沿着通道维度求和每个像素的绝对值,然后在其之间重新缩放01。使用具有255种颜色的自定义颜色贴图显示渐变属性贴图,该颜色贴图映射的值为0白白1变黑。

map=sum(abs(extractdata(dydI)),3;map=rescale(map);cmap=[linspace(1,0255)'linspace(1,0255)'linspace(1,0255)'];imshow(map,“彩色地图”,cmap);头衔(“渐变属性映射(”+字符串(预处理类)+")");

地图最暗的部分是以狗为中心的部分。地图非常嘈杂,但它确实表明网络正在使用图像中的预期信息进行分类。狗中的像素对分类分数的影响比草背景的像素大得多。

使用引导反向传播锐化梯度属性映射

您可以通过修改网络的反向通过ReLU层来获得更清晰的梯度属性图,以便梯度元素小于零和输入到ReLU层的元素小于零都设置为零。这称为引导反向传播[2]。

引导反向传播反向函数为:

戴斯。莱纳姆: dZ X > 0 戴斯。莱纳姆: dZ > 0 戴斯。莱纳姆: dZ

在哪里 l 的损失, X 是ReLU层的输入,以及 Z 是输出。

您可以使用非标准反向传递编写自定义层,并将其用于自动区分。自定义层类定制员实现此修改的文件作为支持文件包含在本示例中。万博1manbetx当自动微分反向传播通过定制员对象,它使用自定义层中定义的修改的引导反向传播函数。

使用支持功能万博1manbetx替换层类型(定义见万博1manbetx支持功能替换的所有实例雷卢耶在具有以下实例的网络中:定制员.设置反向推进模式各自的财产定制员“引导式后支柱”

customRelu = CustomBackpropReluLayer ();customRelu。BackpropMode =“引导式后支柱”; lgraphGB=替换层OFTYPE(LGRAPHE,...“nnet.cnn.layer.ReLULayer”,customRelu);

转换包含海关报关员变成数据链路网络

dlnetGB = dlnetwork (lgraphGB);

使用引导反向传播计算并绘制网络的梯度属性图。

dydIGB = dlfeval (@gradientMap dlnetGB、dlImg softmaxName, classIdx);mapGB =总和(abs (extractdata (dydIGB)), 3);mapGB =重新调节(mapGB);imshow (mapGB“彩色地图”,cmap);头衔(“引导反向传播(”+字符串(预处理类)+")");

你可以看到引导反向传播技术更清晰地突出了狗的不同部位,比如眼睛和鼻子。

您还可以使用Zeiler-Fergus技术通过ReLU层进行反向传播[5]。对于Zeiler-Fergus技术,反向函数如下所示:

戴斯。莱纳姆: dZ 戴斯。莱纳姆: dZ > 0 戴斯。莱纳姆: dZ

设置反向推进模式财产定制员实例“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=sum(abs(extractdata(dydIZF)),3);mapZF=重新缩放(mapZF);imshow(mapZF,“彩色地图”,cmap);头衔(“泽勒·弗格斯(”+字符串(预处理类)+")");

使用Zeiler-Fergus反向传播技术计算的梯度属性图远不如使用引导反向传播技术计算的梯度属性图清晰。

使用积分梯度评估图像变化的敏感性

集成梯度法计算在基线图像和感兴趣的原始图像之间线性插值的一组图像中,相对于图像像素的类分数梯度的积分[3]。积分梯度技术设计为对积分过程中像素值的变化敏感,因此,如果像素值的变化影响类别分数,则该像素在地图中具有非零值。网络中的非线性,如ReLU层,可以在更简单的梯度属性技术中防止这种敏感性。

综合梯度属性图计算如下:

W xy c xy - xy 0 α 0 1 d α 年代 c xy α xy α

在哪里 W xy c 是类的映射值 c 在像素位置 x y xy 0 是基线图像,并且 xy α 图像在远处吗 α 沿着基线图像和输入图像之间的路径:

xy α xy 0 + α xy - xy 0

在这个例子中,积分梯度公式通过对一个离散指标求和来简化, n ,而不是在 α

W xy c xy - xy 0 n 0 N 年代 c xy n xy n

具有

xy n xy 0 + n N xy - xy 0

对于图像数据,选择基线图像为零的黑色图像。查找原始图像和基线图像之间的差异图像。在这种情况下,,差异与原始图像相同,因为基线图像为零。

baselineImg=零([inputSize,3]);differenceImg=单个(img)-baselineImg;

沿从基线图像到原始输入图像的线性路径,创建一个对应于离散步骤的图像数组。图像数量越多,结果越平滑,但计算时间越长。

numPathImages=25;pathImgs = 0 ([inputSize 3 numPathImages-1]);对于n=0:numPathImages-1路径imgs(:,:,:,n+1)=基线img+(n)/(numPathImages-1)*差异;终止图;imshow (imtile(重新调节(pathImgs)));标题(“沿集成路径的图像”);

将路径图像的小批量转换为dlarray.使用以下格式格式化数据:“SSCB”对于两个空间维度、一个通道维度和一个批次维度。每个路径图像都是小批次中的单个观测。计算沿路径生成的批次图像的梯度图。

dlPathImgs=dlarray(路径IMGS,“SSCB”);dydIIG = dlfeval(@gradientMap, dlnet, dlPathImgs, softmaxName, classIdx);

对于每个通道,将小批次中所有观测值的梯度相加。

dydIIGSum = (dydIIG, 4)之和;

将求和的梯度属性贴图的每个元素与差异. 要计算集成的渐变属性贴图,请在每个通道上求和并重新缩放。

dydIIGSum=differenceImg.*dydIIGSum;mapIG=sum(提取数据(abs(dydIIGSum)),3);mapIG=rescale(mapIG);imshow(mapIG,“彩色地图”,cmap);头衔(“综合梯度(”+字符串(预处理类)+")");

计算出的地图显示,网络更关注狗的脸,以此作为决定其等级的一种手段。

这里演示的梯度属性技术可以用来检查在进行分类时,你的网络是否聚焦在图像的预期部分。为了更好地了解模型的工作方式并解释分类决策,您可以在一系列图像上执行这些技术,并找到对特定类有很大贡献的特定特征。未修改的梯度属性技术可能是解释网络决策的更可靠的方法。虽然有指导的反向传播和集成梯度技术可以生成最清晰的梯度图,但这些技术对模型的工作原理能提供多少洞察力还不清楚。

万博1manbetx支持功能

梯度映射函数

功能梯度图为指定的类计算分数相对于图像的梯度。该函数接受单个图像或一小批图像。在本例中,函数梯度图在本节中介绍利用自动微分计算梯度属性图

作用dydI=梯度图(dlnet、dlImgs、softmaxName、classIdx)%计算类分数相对于一个或多个输入的梯度%的图像。dydI = dlarray(0(大小(dlImgs)));对于i=1:size(dlImgs,4)i=dlImgs(:,:,:,i);分数=预测(dlnet,i,“输出”,{softmaxName});classScore=分数(classIdx);dydI(:,:,:,i)=dlgradient(classScore,i);终止终止

替换层功能

替换层类型函数将指定类的所有层替换为新层的实例。新图层的名称与原始图层的名称相同。在本例中,函数替换层类型在本节中介绍锐化梯度属性地图使用引导反向传播

作用lgraph=replaceLayersOfType(lgraph,layerType,newLayer)%替换layerGraph lgraph中由指定类型的图层%layerType,包含图层newLayer的副本。对于i=1:长度(lgraph.Layers)如果isa (lgraph.Layers(我),layerType)匹配旧层和新层之间的名称。layerName=lgraph.Layers(i).Name;newLayer.Name=layerName;lgraph=replaceLayer(lgraph,layerName,newLayer);终止终止终止

工具书类

[1] 西蒙尼安、凯伦、安德里亚·韦达尔迪和安德鲁·齐瑟曼。“深层卷积网络:可视化图像分类模型和显著性图。”ArXiv: 1312.6034 (Cs),2014年4月19日。http://arxiv.org/abs/1312.6034.

[2] 斯普林伯格、约斯特·托比亚斯、亚历克赛·多索维茨基、托马斯·布罗克斯和马丁·里德米勒。“力求简单:全卷积网络。”ArXiv:1412.6806[Cs],2015年4月13日。http://arxiv.org/abs/1412.6806.

Sundararajan, Mukund, Ankur Taly和Qiqi Yan。深层网络的公理归因第34届国际机器学习会议记录(PMLR)70 (2017): 3319-3328

abdebayo, Julius, Justin Gilmer, Michael Muelly, Ian Goodfellow, Moritz Hardt, Been Kim。“显著性地图的健全检查。”ArXiv:1810.03292[Cs,统计],2018年10月27日。http://arxiv.org/abs/1810.03292.

马修·d和罗伯·费格斯。“可视化和理解卷积网络。”在计算机视觉–ECCV 2014.计算机科学课堂讲稿8689, D. Fleet, T. Pajdla, B. Schiele, T. Tuytelaars编辑。施普林格可汗,2014。

另见

|||||||

相关话题