文章目录
前言
上周的学习的可解释模型网络但是汇报的时候解释的很不清楚,其实我自己也并没有很清楚。我最近重新看了几篇这篇论文,我觉得我需要比较清楚其他非解释性的网络是怎样工作的, 我才能比较好理解怎么做才算是网络对我们人类的一种可解释,其实我看完这几篇可解释网络论文,我还是不太理解它的操作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)表示出现图中高度激活区域的一个特征。
网络在训练过程中,将发生区域优化为覆盖每种疾病的疾病代表特征出现的区域,并将原型在适应的区域大小内成为疾病代表特征。