0
本文作者: 李雨晨 | 2017-12-21 10:27 |
雷锋网消息,医学影像是人工智能重要的发展方向之一,业界争相入局的同时也吸引了很多知名学者参与其中,并已出现了很多引人注目的成果。一年以来,国内外很多团队都声称自己利用AI技术在疾病诊断的正确率超越人类,斯坦福大学吴恩达等人提出的 CheXNet 算法便是其中之一。此前,雷锋网对该团队研究成果进行过相关报道:《吴恩达团队发布最新医学影像成果,用 CNN 算法识别肺炎》。团队曾表示,该算法在识别胸透照片中肺炎等疾病上的准确率上超越了人类专业医师。
然而,另一群学者对目前的一些研究成果产生了怀疑。本文作者 Luke Oakden-Rayner 就是其中之一,他是阿德莱德大学的放射科在读博士。他认为,目前的 ChestXray14 数据集不适用于训练医学人工智能系统进行诊断工作。(ChestX-ray14 是目前最大的开放式胸透照片数据集,包含 14 种疾病的 10 万张前视图 X-ray 图像)
为了证明自己的观点,Luke Oakden-Rayner博士将在本文中讨论了以下几个问题:标签的准确度;标签的医学意义;标签对于图像分析的重要性。
雷锋网对Luke Oakden-Rayner博士的文章进行了不改变原意的选译
ChestXray14 数据集来自于论文《ChestX-ray8: Hospital-scale Chest X-ray Database and Benchmarks on Weakly-Supervised Classification and Localization of Common Thorax Diseases》,自首次发布以来,该数据集的论文和支持文档已经更新过多次。
在我看来,该论文需要花更多的时间解释数据集本身,因为该数据集的大量使用者是计算机科学研究人员,在缺乏临床知识的情况下,这种需求就显得尤为重要了。然而,这篇论文主要介绍的是文本挖掘和计算机视觉任务,其中有一个图表展示了数据集中标签的准确性。
其中展示的原始结果(上半部分)是在公开的 OpenI 数据集上进行测试的,不仅包括报告,也有人工打上的完整标签。而列表中下面的部分是 ChestX-ray14 自己的数据。研究人员随机选择了 900 份报告,并由两位注释者进行标注,他们共同分类了其中的 14 种疾病。据我所知,这些注释者并没有直接检查图像。
数据体量的限制会让误差变大(如果一个类别中的样例数量为 10-30,只有一个错误,那么 95% 置信区间的阳性预测值会在 75%-88%)。但如果允许一些偏差值,每个标签看起来准确度都在 85-99%,至少准确反映了报告结果。
但不幸的是,似乎标签无法准确地反映病况。NIH 团队没有表明他们看过这些图像,他们通过测试标签是否匹配报告文本来判断图像标注过程的优劣。我认为这种分离导致了我所提出的标签质量问题。
有很多方式可以在不需要图像的情况下构建图像标签。如 ICD 编码,或者从报告或其他免费文本中提取标签;还可以使用增补数据(follow-up data)。在深度学习中,我们查看训练曲线、检验梯度、尝试在没有正则化的情况下训练来测试是否产生过拟合。查看这些图像是放射学的完整性检查——查看图像,确保它们和期望的一样。
我通常 10 分钟看完 200 张图像以完成“完整性检查”的初级阶段。
接下来要说的是一堆基于数据集标签的图像。它们是随机选取包含 18 张图像的序列集。
我的标签并不完美,其他放射科医生可能对其中的一些标签有疑惑。但是必须明确一点,我的标签和论文/附录中的结果有极大的不同。
我通常喜欢硬数据,因此我尽力量化标签准确率。事实上我发现其中的很多标签都很难定义,因此下表中未列出。我查看了每个类别中的 130 多张图像,根据我的视觉判断计算原始标签的准确率。这个数据量比较适合使用,因为95%的置信区间可能再扩大/缩小5%,所以我的误差率可能达到 20% 左右。
我的视觉分析 vs. 论文中的文本挖掘结果
我再次怀疑我的标签到底对不对,尤其是和胸部放射科医生的判断结果相比,但是如上表所示,差别也太大了。我认为上表中的数据证明这些标签无法匹配图像中显示的疾病。
也有办法解释这种现象。比如最初帮助解释图像的放射科医生具备图像以外的信息。他们具备临床经验、之前的诊疗结果等。这些信息非常有用,尤其是在区分类似疾病的时候。
如果人类专家无法仅从图像中做出诊断,那么 AI 系统很可能也无法诊断。AI 可能能够找出一些人类忽略的细微证据,但是凭借这些就可以产生性能上的巨大差异并不合理。总体来看,我们需要标签和图像包含同样的信息。
第二部分:标注在医学上意味着什么?
标注实际上代表什么?它们能够反映临床实践吗?我认为答案是否定的。
我认为最难解析的标签是固结/渗透/肺不张/肺炎集聚等。这些医学影像还存在其它问题,与任务的临床价值有关,例如渗出(Effusion)、气胸(Pneumothorax)、纤维化。例如,气胸在 X 光影像上非常微小,经常会被人忽略掉,或者纤维化的标注准确率非常低。实际上还有多种其它非图像临床问题,例如:
肺炎、肺气肿和大多数纤维化都是临床诊断问题而不是医疗影像问题。
X 射线会漏掉多达 50% 的囊肿,因此我们可能会怀疑报告所采用的囊肿标注。
没有人关心间断性疝气,所以它们只是有时候进行诊断。
找到那些优秀的数据集或正确的标签来学习高效的医疗任务是十分困难的。同样,我们还是需要专家查看这些影像来进行医疗诊断。
放射学的深度学习应用有一个大问题,如果不查看图像,后果将非常严重。如果这些标签很不准确,并且标签的意义也不可靠,那么建立在这个数据集上的模型是如何达到不错结果的呢?模型学习的到底是什么?
实际上,我们在寻找可以学习正确地在测试集上输出真实结果的模型,即使所谓的真实结果在视觉上毫无意义。
来自 CheXNet 的结果:使用深度学习模型(Rajpurkar and Irvin et al.)在胸透图上进行放射专家级的肺炎检测,在测试集上获得了不错的性能。
随机噪声可以作为不错的正则化项,甚至还可以在某些设置中提升性能(这种技术被称为标签平滑或软标签)。结构化噪声不一样,它添加了完全不同的信号,而模型将尝试学习这些信号。
在一个包含坏标签的训练集中,神经网络将把这些标签看成同等有效的肺炎样本。如果模型学习了这些标签,例如,「毛茸茸」是肺炎的一个信号,然后模型将应用这个信号到胸透图中,输出无法预测的结果。
模型将使用部分从狗类图像中学习的特征,并应用到胸透图中,尽管这和问题本身无关。
如果你的目标是性能最优化,那么结构化噪声总会带来负面影响。噪声甚至不需要很明显(其中的关系是非线性的),而偏差标签将降低模型的准确率。
Rolnich 等人《Deep learning is robust to massive label noise》的结果表明,结构化噪声破坏了标签,并使得性能下降。当噪声与实际数据来源相同时,这个问题可能更麻烦,因为模型会混淆噪声与类别。这可以类推到 ChestXray14 数据集中,它们的标签同样遭到了破坏。
所以,这些标签会损害模型的性能。那么为什么在 ChestXray14 上训练的模型有非常好的性能?难道是这些模型可以补偿数据噪声而变得鲁棒性吗?
我并不这样认为,我们需要关注更多的方面。其实在为数据集构建一组新标签的过程中,我通过创建一个“opacity”类和一个“no finding”类来简化涉及的任务。我用原来的标签设置了新创建的标签,“opacity”是肺不张、肺炎、固结和渗透标签的组合,然后在上面训练一个模型。
我只需要采用一个在 ImageNet 预训练的 ResNet,并在新的数据集中训练后部分的网络。我并没有调整超参数,只是在一个合理的时间里训练模型,最后模型的性能还是比较优秀的。
尽管 AUC 是 0.7,但与标签错误率一致,我们的分类性能非常糟糕。该模型无法忽略错误的标签,输出合理的预测,它对标签噪声不具备鲁棒性。最重要的是,AUC 值没有反映诊断性能,这是一个很大的问题。
这一 AI 系统学习可靠地输出无意义的预测。它学习图像特征的方式使“opacity”的案例变得几乎没有模糊性,而“no opacity”的案例被判断为严重不正常的肺。
这就是问题,因为除非你看了图像,不然就会以为结果很棒。每个团队的模型性能都越来越好,AUC 分越来越高,看起来它们似乎正在“解决”一项严肃的医疗任务。
我认为其有多个原因;医疗图像很大又复杂,拥有很多普遍元素。但是,自动挖掘标签的方法没有引入不准确的随机噪声。文本挖掘的编程本质会导致持续、意料之外的数据依赖或分层。
同样,斯坦福大学皮肤科的 Novoa 博士最近也在媒体上讨论过这个问题:
当皮肤科医生查看一种可能是肿瘤的病变时,他们会借助一把尺子——就是你在小学时用的那种——来准确测量它的大小。皮肤科医生这样做是为了查看病灶。因此,在一组活检图像中,如果图像中有尺子,算法更可能将其判断为恶性肿瘤,因为尺子的存在与病症癌变的可能性相关。不幸的是,Novoa 强调,该算法不知道为什么这种相关性是有道理的,所以很容易误解为一把随机的尺子是诊断癌症的根据。
深度学习非常强大,如果给它输入带有偏见标签的复杂图像,它可以学习对这些类别进行分类,尽管它们毫无意义。你可以完美拟合训练集中的随机标签,但这一结果仅仅表明深层网络足够强大,能够记忆训练数据。他们没有展示测试数据的泛化,相反,他们展示了噪音损害的性能。
我确实在 ChestXray14 数据中通过随机标签做了一个快速测试(另一个完整性检查),发现与 Zhang et al. 的相同结果;并且该模型没有泛化到测试集。
结构化噪声不仅存在于训练数据中。整个测试数据中的标签误差也是一致的。这意味着如果模型学习做出不良的医疗预测,那也许它可能会获得更佳的测试表现。这种情况可能仅针对通过自动“数据挖掘”方法生成的标签,但是我也发现了人工标签导致放射科数据分层的多种方式。
放射学报告不是客观的、事实上的图像描述。放射学报告的目的是为他们的推荐人(通常是另一位医生)提供有用的、可操作的信息。在某些方面,放射科医师猜测推荐人想要的是什么信息,并且剔除那些不相关信息。
这意味着根据临床情况、过往历史以及放射科医师是谁,相同图像的两份报告可以被贴上不同的“标签”。影响放射学报告的因素有很多,所有因素都会给放射学报告带来结构性噪音。每个小案例都可能有独特的可学习的图像特征。
还有很多其他视觉元素可将患者分成几组,包括图像质量(根据患者是门诊病人、住院病人、重症监护等而不同)、导入装置如起搏器或心电图导联的存在、身体习性等等。这些因素都不是“诊断性的”,但它们很可能与标签有不同程度的相关性,深层网络要找的很可能就是这样的东西。
医学研究人员长期以来一直在处理临床数据的分层管理。像年龄、性别、收入、饮食这些因素都会导致“隐藏”分层。我们还需要粗略地知道整个群组的视觉外观分布是相似的,这意味着你需要查看图像。
以上的问题并不意味着深度学习对于医学影像是毫无价值的。深度学习最重要的一点是它奏效。虽然我们现在还不明白为什么,但是如果深层网络拥有很好的标签和足够的数据,它将优先为这些类别学习有用的特征,而不是无意义的琐碎特征。
与人类视觉评估相比,ChestXray14 数据集中的标签不准确、不清楚,并且经常描述医学上的次要发现。
这些标签问题在数据之中是“内部一致的”,这意味着模型可以展示“良好的测试集性能”,同时仍然产生不具有医学意义的预测。
以上问题表明,目前定义的数据集不适合训练医疗系统,对数据集的研究不能在没有附加正当理由的情况下生成有效的医疗声明。
查看图像是图像分析的基本的“完整性检查”。如果你构建数据集时,没有能够理解你数据的人在查看图像,那么期望数据集奏效将让你失望。
医学图像数据充满分层元素;有用的特征几乎可以学到任何东西。查看你的模型是否每一步都照常运行。只要标签足够好,深度学习就可以在这个数据集中工作。
原文链接:https://lukeoakdenrayner.wordpress.com/2017/12/18/the-chestxray14-dataset-problems
雷峰网原创文章,未经授权禁止转载。详情见转载须知。