英文题目:Deep Learning for Medical Anomaly Detection - A Survey
中文题目:深度学习的医疗异常检测综述
论文地址:https://arxiv.org/pdf/2012.02364.pdf
领域:深度学习,异常检测
发表时间:2021.04
作者:Tharindu Fernando,澳大利亚昆士兰科技大学
出处:ACM Computing Surveys
被引量:1024(谷歌学术)
代码和数据:
阅读时间:22.11.09
主要讨论在医疗数据中使用深度学习方法,以处理影像数据,时间序列为主,同时讨论了医学数据一些特有的属性。
异常检测的主要任务是识别不符合总体数据分布的数据样本。在医疗领域,除了建模以外,对模型的解释也至关重要。在实际应用中,对异常的定义也比较复杂,比如行为的不一致性;区分噪声与异常;还需要考虑上下文对异常的影响。
模型在医疗领域的应用包括两部分:诊断(识别当前状态)和预测(未来的状态),这两部分都可能发生异常。
它要求:当对正常样本建模时,模型应该能够表示正常数据分布的多样性;模型需要足够的灵敏度(正确识别异常样本的能力),要求异常检测模型具有较高的准确性;另外,正常样本之间也可能存在差异,比如在成人和儿童静息状态脑电图数据的显著差异; 医学异常检测通常以监督学习任务为主。
深度学习可以更好地处理非线性数据;并有可以自动构造特征;支持一些自动识别功能,避免了一些手工标注异常;还可以针对时序了数据识别长距离的依赖关系(如LSTM)。
本文涉及多种医疗异常建模方法,读者可以比较和对比不同深度学习技术的优缺点,并将这些发现用于不同的医疗应用领域。涉及卷积神经网络,循环神经网络,生成对抗网络,自动编码器,神经记忆网络,支持无监督学习、监督学习和多任务学习。另外,还讨论了解释模型决策的方法。
第II部分算法,其中II-A介绍医疗数据类型,II-B介绍算法,II-C介绍应用场景;第III部分是模型解释;第IV部分是挑战与限制;第V部分总结。
如心音描记术(PCG)和其它可穿戴医疗设备。
自编码器AEs
Auto Encoders,可以自已学习特征。对它的改进包含离散自编码器,它通过惩罚对非0值的加和使特征足够稀疏。
另外,还有去噪自编码器,压缩自编码器;其中变分自编码器得到了很广泛的应用,它假设观测值x从概率分布中采样,并试图估计该分布的参数(引入了概率)。
自编码器的弱点是,对于高维数据分布,编码能力受限,经常导致错误的重构和不准确的近似建模数据分布。
生成对抗网络GANs
一个生成器,一个判别器,也有很多改进版本,其中条件GAN使用最为广泛,还有Cycle-GAN在图像翻译任务中比较流行,它的原始输入可以由生成的输出合成。
判别器主要用于判别真伪,而非是否异常。具体使用的一种方法是:当生成图和目标图出现差异时,认为异常,并使用该过程识别异常。
在监督异常检测中,提供一个监督信号,指示哪些示例来自正常类别,哪些是异常的。
多任务学习是其中一个重要应用:它在多个相关任务之间共享相关信息,而不是单独学习它们。在学习异常分类的过程中,研究对象之间的异同,相对于主题的变化。
由于时序信处在医疗数据中广泛使用,它主要使用历史数据来预测未来数据,因此,此处把它单独归成一类。深度学习方法包含:RNN,LSTM,GRU等。其中NMNs(Neural Memory Networks)神经记忆网络是RNN的另一种变体,它使用一个外部存储器堆栈来存储信息,LSTM遗忘门和写控制器相似。可用于如识别脑电图预测癫痫发作。
概括起来大致分两种:一种是使用深度学习作为特征提取器,后面接随机森林、SVM等机器学习算法做异常检测;另一种是深度学习网络后面接Softmax直接预测异常和类别。
具体的深度学习模型大多数使用CNN;也有使用自编码器作为特征提取器,后接机器学习模型的;还有分两步训练,第一步先训练无监督AE学习特征,第二步用有监督方法加一个Softmax层利用有标签数据优化。(结合有监督和无监督)
另外,还有多尺度多任务的框架,实现腰椎神经孔狭窄症的诊断,在不同的尺度上捕捉多个器官;多任务是在回归边界框定位器官和预测所定位器官的异常。
还有利用NMN方法,将内存堆栈存储作为区分正常和异常样本的重要特征。
CNN是内镜图像异常检测的主要方法。多分类通常使用分类交叉熵损失训练,使模型可以检测正常和异常的例子,同时识别异常类别。
主要处理音频信号,一般结合深度学习和手工提取特征,包含时域特征、高阶统计量、信号能量和频域特征,如梅尔谱图和梅尔频率倒谱;同时使用1D-CNN或者RNN建模。这些方法能有效地对 S1和S2心音位置周围的信息,以检测异常。该领域主要使用有监督数据建模。
对于不均衡数据,首先使用平衡数据集训练模型,数据集包含等量的预测数据和间隔数据。当系统部署时,建议添加一个可调处理层,可以根据用户的需求进行优化。这种方法很实用
还有一种对抗学习的方法,修改了网络结构,添加两个全连接层来调整鉴别器网络,以便训练它执行正常/异常分类,而不是真/假分类。这种体系结构是半监督的,其中有标签和无标签的示例都用于模型训练。
图-14对模型解释进行了分类:
从模型角度看,分为可对所有模型解析的方法和针对特定类型模型解释的方法。
从作用范围看,分为局部解释和整体解释,局部方法是对特定的预测进行推理,而全局方法探索整体模型行为。
第三种方法:用其它模型解决现有模型,包括两种方法:一个是用简单的模型模拟复杂模型的行为,另一种是用可视化的方法解析模型。
第四种方法:将医学领域的模型解释技术可以大致分为基于归因的方法和基于非归因的方法。
可视化激活映射
这可以揭示输入的哪些区域/特征被高度激活,并将信息传递给分类器。
Grad-Cam方法可以解析每个像素对决策的影响。(可以看看NLP有没有类似的方法)
用于各种模型的局部可解释模型(LIME)
输入被划分为一系列可解释的组件,其中部分输入被屏蔽。然后将每个扰动样本通过该模型得到特定类的概率,并返回权重最高的分量作为解释。
它的问题是:由于解释偏向于数据点,生成的解释可能是不稳定的,因此当两个分量接近时,可能导致非常不同的解释。
SHapley加法解释(SHAP)
目前存在,一个提供完整的解释的方法。
医疗异常检测方法解释
DeepLEFT、DeepTaylor、引导反向传播(GBP)和集成梯度等也被用来解释黑盒深度学习模型。
另外,可用注意力图可以解释模型特征的相互作用,比如在医疗图片和诊断信息之间建立联系;专家知识来解释模型决策。
综上,如何选择模型解析器主要取决于以下因素:
GradCAM, LIME, GBP这些方法都不是为医学领域研发的,所以对临床可能不是很有效,需要更多地加入专家共识,比如Human-in-the-Loop技术,用于设计可解释的诊断模型,让临床专家可以改进深度模型的决策,以模仿他们自己的决策过程。
另外,如果决策依赖于多个输入特征流,需要更复杂的策略来解释行为。
强化学习,也是一个方法,它通过试图最大化奖励,在迭代中改进其检测过程。代理用来探测异常的探测过程可以说明其行为背后的直觉。
因果和相关往往被混淆,XY同时发生,并一定存在因果关系,只是相关,比如它们由于同样原因引起。
普通模型只能找到关联关系,而无法找到其原因。如果想定位原因,还需要原因估计模型,比如:基于图结构,基于算法信息理论的方法,因果贝叶斯网络,但是这些方法很少在医学异常检测中应用。
另外,数据中还存在不确定性,可能输入小的改变就能影响模型预测的结果,这与模型的置信度相关。
有一种方法,利用计算出的不确定性措施,将困难的案例子集转为进一步检查。(值得借鉴)
模型可能缺乏对不同操作条件的概括,对于没见过的数据集,可能效果不好。尽管公开可用的数据集的数量持续增加,但可用的数据样本数量仍然有限;另外,对数据的筛选,也可能让模型不能捕捉真实数据分布。
图-18展示了来自不同子集的样本分布在嵌入空间中。
如果一个诊断模型只在这个数据集的一个特定子集上进行训练,它就会在另一个子集上产生错误检测。因此,需要捕捉整个种群多样性的大规模数据集。
医学信息标注成本高,不太可能有像ImageNet那样的丰富标注的数据集。元学习可能起一定作用,它是迁移学习的一种,它可对领域进行适配,让特定领域训练的模型可应用到其它领域。
数据不均衡会引起预测偏向主导类别,医疗异常检测的不平衡一直是数据重采样(过采样或过采样)和成本敏感训练,其中损失的权重分配给少数类。
另外,还可以使用GAN做数据增强,合成较为真实的少数类样本。
对于大量无标注的数据可以使用半监督学习方法加以利用,上文中也示例了通过对无监督算法的修改,将模型适用于正常的异常分类任务,而不是真假验证。
半监督学习的目标可被设计成自动生成标签。然后,学习到的知识被转移到不同的下游任务。
自监督学习也可以应用于检测异常,但在医学领域应用比较少。
略…