这看起来像**:** 可解释图像识别的深度学习
(原论文名: This Looks Like That: Deep Learning for Interpretable Image Recognition**)**
作者:
Chaofan Chen∗,
Oscar Li∗,
Chaofan Tao,
Alina Jade Barnett,
Jonathan Su,
Cynthia Rudin
论文下载地址: https://arxiv.org/abs/1806.10574
Git地址: https://github.com/cfchen-duke/ProtoPNet
(相关的数据集,需要自己去下载,文章中提到的鸟类和车类数据集有公开的!)
在介绍本片文章前,先说明一些在研读该论文时,参考的文章。
①这篇博客,在18年就对本篇论文做了详细的介绍,尤其是对模型的核心——prototype layer(原型生成层,这个命名可能不太准确哈)的实现做了极为详细的介绍
https://blog.csdn.net/z0n1l2/article/details/81006360
②这篇文章总结了2019年的两种可解释性模型,一个从维度ID角度出发,一个就是从原型-零件学习思想出发的ProtoPNet模型,并且对实验细节做了详细介绍。
https://www.sohu.com/a/370533941_129720
内容概括
研究背景
一、模型结构
二、损失函数
三、模型细节
四、注意力机制与ProtoPNet
五、分类过程(可解释性逻辑)
六、模型优点
①与事后解释方法不同:
事后解释常采用激活最大化、反卷积和显著性可视化处理。这些事后可视化的方法无法解释模型实际上是如何推理和做出决策的。
而ProtoPNet模型则针对具体情境下给出了内置的推理过程,并且该网络的可解释性实在模型生成以及样本分类过程中体现出的。
②既提供了不可比拟的可解释能力,也保留了精度:
这种部分到整体的推导过程(就像是),同时利用了注意力机制,体现了该网络在逻辑上的可解释性,这是很多其他可解释方法仍未能做到的。
同样通过实验,发现ProtoPNet和类似的不可解释的其他网络精度相当,并且利用NiN(网络中的网络)融合成更大的网络时,可以达到与某些性能最佳的深层模型相当的精度。
七、具体实验验证
实验细节
每经过5 epochs训练,需要把当前模板Pj投影到一个feasible set中,但只能略微提高损失函数的值。
具体实验中把Pj赋值成和其最相似的特征图patch.因为这个操作一定是训练的最后一步。
所以训练结束时,通过找到每个模板Pj对应的patch在原图中的对应(位置),达到可视化的目的.
————————————————————————————————————————————————————
总结/展望 与 补充
①不做事后解释(上篇博文中有介绍)
区分了可解释性高的机器学习模型和决策风险高的黑匣子模型,说明了事后解释存在的问题,并定性地说明了可解释性与精确度之间的关系,寻找二者之间的一个平衡。
为创建真实可解释模型的技术的重要参考(逻辑模型与计分系统)。
②ProtoPNet网络
参考了上篇论文提出的技术参考(逻辑角度与相似度评分)构建模型。
本文的主要目的是探索机器模型在推理过程中的“为什么是这样的”这个问题,其比较别出心裁的参照了人类的“这个看上去像那个” 的回答思路,提出的 ProtoPNet,在可解释性和分类精度上都有不错的表现。
从可视化的角度来展示了这个网络的推理的功能,试图分析网络的可解释性,并给网络性能的提升提出不同的提升方向。
(另 热腾腾的PPT啥的 已经上传啦,可供参考 包括了上篇的“不要做事后解释”文章
https://download.csdn.net/download/qq_35155934/12758269)
前言
上周的学习的可解释模型网络但是汇报的时候解释的很不清楚,其实我自己也并没有很清楚。我最近重新看了几篇这篇论文,我觉得我需要比较清楚其他非解释性的网络是怎样工作的, 我才能比较好理解怎么做才算是网络对我们人类的一种可解释,其实我看完这几篇可解释网络论文,我还是不太理解它的操作emmm…
关于这些可解释网络的博客真的太少了,以下是我看论文的一些体会。我还没看过这个网络对应的代码,之后有空再补上吧。如有错误欢迎指出。
自解释网络,一开始解释的时候,师兄总觉得很像可视化,但其实并不
在论文里面,作者是这么解释可解释网络的:他们的预测过程本身是可解释的,他们不需要额外的努力来获得训练后的解释。自解释神经网络[21]通过正则化分别得到对分类至关重要的概念和每个概念的相关性,然后将它们组合起来进行预测。
一、为什么会提出可解释网络?
- 我们一直以来的分模型,其实都是属于黑箱操作,我们并不知网络内部是如何一步步将之分类出来的,这不仅仅不可解释,也让我们没办法从够根本上提高我们模型的性能。
- 对于我们处理医学图像这种涉及伦理的项目来说,也十分不易,会非常受限。它仅仅只能帮助医生判断,并不能做出决策。而可解释网络正是用来解决这些问题的。
二、XProtopNet
一个全局以及局部可解释肺片的诊断框架
它可以预测出可能发病的区域,并将预测的区域特征与原型进行对比,不断学习发病特征,对每种疾病自适应预测,然后自适应的诊断。这也是它的解释过程。
注:原型:病例的典型特征,就如同模板。
论文是这么解释他的全局和局部解释的:
the global explanation finds the common characteristic by which the model defines each class, while the local explanation finds the reason that the model sorts a given input image into a certain class.
我的理解:局部特点构成给了全局迹象判断
三、xprotopnet相比较protopnet的一些进步
- 动态区域学习疾病特征
pro它将原型定义为从训练图像中获得的预定义大小patch中的特征,并将给定输入图像中的局部区域与原型进行分类。**但是,使用一个固定大小的预定义补丁,很难反映动态区域中出现的特征,如医学图像中的疾病迹象。例如,要确定心脏肿大(心脏扩大),就必须查看整个心脏[24];为了鉴别结节,需要找到直径小于阈值[7]的异常点。根据补丁的固定大小,原型可能不能充分呈现类代表特征,甚至可能呈现与类无关的特征,从而导致诊断失败。**为了解决这个问题,xpro引入了一种训练原型的方法,以在动态区域内呈现类代表特征
如下图就是我们xpro的动态学习特征(心脏肥大疾病):
四、模型提出
使用编码器-解码器框架来提取特征并可视化原型。将原型定义为图像的局部特征,并用训练数据中最相似的补丁替换原型,使其可视化。用分层结构来训练原型,并且提出了一个可解释的胸片诊断模型,该模型可以学习动态区域内疾病的代表性特征。
如图:特征提取器、原型层、分类层。
4.1诊断过程
1.输入图像与学习到的疾病代表特征进行比较
2.计算相似的分
3.用相似度的得分;来判断疾病
这个过程里面,作者设置了几个参数用来代表疾病,以及用余弦公式计算他们之间的相似度得分,在这个过程当中XProtoNet可以根据相应的原型与输入的x射线图像特征之间的相似性来诊断疾病。训练结束后,用训练图像中最相似的特征向量替换原型。这使得原型可以可视化为人类可解释的训练图像,而无需额外的网络解码学习的原型向量。 ??作者解释的这句话,我也不是很理解。而这正是它解释的作用体现。
4.2动态区域内提取特征。
他的特征提取部分有两个模块,分别为:发生模块和特征模块
特征模块提取输入图像的w宽h高d维度的 特征向量1
发生模块预测疾病可能出现的区域得到 特征向量2
特征1+特征2 与原图(原例)比较得到 特征3
(*特征映射与发生映射合用,可以将具有类代表性的特征表示为单一大小的向量,那么就不用考虑特征出现的大小了)
fpc k(x)就是 特征3,其中侍中里面的u∈[0,H × W)表示Mpc k(x)和F(x)的空间位置
使用[0,1]范围内的发生图的值作为权值,使得特征向量fpc k(x)表示出现图中高度激活区域的一个特征。
网络在训练过程中,将发生区域优化为覆盖每种疾病的疾病代表特征出现的区域,并将原型在适应的区域大小内成为疾病代表特征。
总结:在对特征提取器进行训练后,将原型pc kis替换为最相似的特征向量fpc k,从而可以将原型可视化为所替换原型向量的图像的出现区域。
此外这个模型里面还涉及了四个损失函数,考试周,复习最重要。下次见吧
reference
https://blog.csdn.net/qq_35155934/article/details/108252757
https://blog.csdn.net/weixin_51015047/article/details/118420021