【第一周】吴恩达团队AI for Medical Diagnosis课程笔记

系列文章目录


目录

系列文章目录

文章目录

前言

一、欢迎(大概就是课程的简介)

1.AI for Medicine专项课程以及AI for Medical Diagnosis课程介绍

2.AI for Medical Diagnosis第一周课程简介

3.学习此课程的要求

二、计算机视觉在医学诊断上的应用

1.医学影像诊断

2.眼部疾病和癌症诊断

3.数据探索&图像预处理(实验)

三、处理类不均衡的问题和训练集过小的问题

1.建立并训练一个医学诊断模型

2.训练,预测,损失函数

3.图像分类和类不均衡问题

4.二元交叉熵损失函数

5.类不均衡问题在损失函数计算上的影响

6.计算标签和带权重的损失函数(实验)

7.重新采样来达到类别均衡

8.多任务问题

9.多任务损失函数,数据集尺寸,CNN架构

10.DenseNet(实验)

11.在少训练数据量上工作

12.产生更多的样本

四、检查模型性能

1.模型测试

2.按患者拆分数据

3.患者重叠&数据泄露(实验)

4.采样

5.真实数据ground truth和共识投票

6.额外的医学测试

总结


前言

之前在coursera上申请了这个课的奖学金但没注意查看邮箱,今天一看居然已经通过了一周!哦赶紧在剩下的不到三周内学完!!羊毛不能白薅!!

时间比较紧,基本直接翻译,画上重点,之后时间充裕后继续补充。

这个AI for Medical Diagnosis是AI for Medicine专项系列课程的第一门课,其他还有AI for Medical Prognosis和AI for Medical Treatment,看情况会不会继续学习吧。

AI for Medical Diagnosis分为三周课程,本文是第一周的课程总结和翻译。


一、欢迎(大概就是课程的简介)

1.AI for Medicine专项课程以及AI for Medical Diagnosis课程介绍

欢迎来到医学人工智能专业。如果您已完成深度学习专业或机器学习课程,并且正在寻找更深入掌握 AI 的应用领域,那么这是一个很好的专业。要成为真正优秀的机器学习,最重要的事情之一就是练习将机器学习应用于多个用例。专业化将为您介绍多个用例,涵盖人工智能在医学领域的最重要应用。例如,给定一张胸部 X 光片的图像,如此非结构化的图像数据,你能训练一个神经网络来诊断患者是否患有肺炎吗?您将在本专业中学习做到这一点。或者给定结构数据,比如病人的实验室结果,你能训练一个决策树来估计心脏病发作的风险吗?你也学会这样做。通过解决这些具体问题,您还可以看到机器学习的许多实际方面,从它们如何处理不平衡的数据集,到如何处理缺失的数据,再到选择正确的评估指标。在机器学习中,我们经常默认以分类准确度作为衡量标准。但对于许多应用程序来说,这不是正确的衡量标准。那么如何选择更合适的呢?即使你现在的工作不是医学,我想你会发现应用场景和这些应用场景的实践真的很有用,也许专业会让你对医学产生更多的兴趣。如果您对医学感兴趣,那么这是一个很好的专业。用于医学的人工智能现在正在世界各地起飞。因此,这实际上是您介入并尝试产生巨大影响的好时机。也许你可以发明一些可以挽救很多病人生命的东西。让我们开始吧。我想在下一个视频中向您介绍一个代词。

这是一门三门课程,在第一门课程中,您学习了构建机器学习模型以进行诊断。诊断是关于识别疾病。在第一门课程中,您将构建一个算法,该算法将查看胸部 X 光片并确定其是否包含疾病。您还将构建另一种算法来查看脑部 MRI 并识别这些脑部 MRI 中肿瘤的位置。因此,第一门课程是关于诊断或识别疾病,第二门课程将是预测患者未来的健康状况,这称为预后。在第二门课程中,您将学习如何使用结构化数据。因此,假设您有患者的实验室值和他们的人口统计数据,并使用它们来预测事件的风险,例如他们的死亡风险或心脏病发作的风险。最后,在第三门课程中,您了解了人工智能治疗。也就是说,对于医疗过程以及信息提取,从医学文本中获取信息。在课程 2 中,您将学习如何使用机器学习模型来估计特定治疗对患者的影响。您还将了解 AI 应用于特定任务的文本,例如问答和从放射报告中提取标签。

在人工智能医学专业的第一门课程(这门课)中,您将了解人工智能在医学诊断中的应用。诊断是指确定哪种疾病或状况可以解释患者的症状、体征和医疗结果的过程。特别是,您将学习如何构建和评估用于从医学图像中检测疾病的深度学习模型。就在第一周,您构建了一个深度学习模型,可以解释胸部 X 光片以对不同的疾病原因进行分类。在第二周,您将实施评估方法来评估模型的质量。在第三周,您使用图像分割来识别 MRI 扫描中脑肿瘤的位置和边界。

2.AI for Medical Diagnosis第一周课程简介

在本课程中,仅在第一周,您将构建一个深度学习模型,该模型可以解释胸部 X 射线以对不同的疾病进行分类。让我与您分享您的模型将能够做什么的演示。在这里,我们有一个胸部 X 光片。胸部 X 光检查是世界上最常用的影像检查,用于诊断和治疗多种疾病。这是肺部有液体的患者的胸部 X 光片。当您在作业 1 中训练模型时,它将能够发现这种异常。让我们看看它的实际效果。

所以在这里,我刚刚将这张胸部 X 光照片运行到我手机上的深度学习模型中。模型处理这张胸部 X 光片并识别出这名患者的 X 光片异常。更具体地说,当我向下滚动时,发现患者的肺部可能有液体。这种情况称为水肿。在课程三中,您将了解如何生成这些热图,这些热图显示模型在图像中发现疾病证据的位置。在本课程中,您将了解并应用所有核心概念来使用真实数据构建这样的模型。

3.学习此课程的要求

对于本课程和本专业的其他课程,您不需要任何医学背景。 但是,我建议您在学习本课程和本专业的其他课程之前,先满足三个先决条件。 首先,本课程假设您了解深度学习的基础知识。 例如,您应该了解监督学习、卷积神经网络和损失函数的基础知识。 其次,您应该能够相当自如地使用 Python 编写代码,因为您将在所有三门课程的作业中使用 Python 处理数据并构建机器学习模型。 第三,讲座概念将假设一些概率知识。 例如,当我们说 A 给定 B 的概率时,您应该能够认识到这是一个条件概率。 

二、计算机视觉在医学诊断上的应用

1.医学影像诊断

本周,我们将直接为胸部 X 光分类任务构建深度学习模型。您将通过此示例学到的许多想法广泛适用于许多医学成像测试。本周,我们将从三个医学诊断任务的例子开始,其中深度学习取得了令人难以置信的性能。然后,我们将进入为医学成像构建 AI 模型的训练过程。最后,我们将研究评估这些模型在真实数据上的性能的测试过程。

我们的第一个例子是皮肤科。皮肤科是处理皮肤的医学分支。皮肤科医生执行的任务之一是查看皮肤的可疑区域,以确定痣是否是皮肤癌。早期发现可能会对皮肤癌的结果产生巨大影响。一种皮肤癌如果在晚期被发现,其五年生存率会显着下降。在这项研究中,训练了一种算法来确定皮肤组织区域是否癌变。使用数十万张图像和标签作为输入,可以训练卷积神经网络来完成这项任务。我们将在课程中研究这种算法的训练。训练算法后,可以根据人类皮肤科医生对一组新图像的预测来评估算法预测。在这项研究中,发现该算法的性能与皮肤科医生一样好。现在不要太担心这个图表的解释。在课程的未来一周,我们将使用这样的曲线来查看评估。您可以从该图中得出的主要结论是,算法的预测准确性与人类皮肤科医生的预测相当。

结尾附了一篇paper:Esteva, A., Kuprel, B., Novoa, R. et al. Dermatologist-level classification of skin cancer with deep neural networks. Nature 542, 115–118 (2017). https://doi.org/10.1038/nature21056

2.眼部疾病和癌症诊断

我们的第二个例子是眼科,它涉及眼部疾病的诊断和治疗。 2016 年的一项著名研究着眼于视网膜眼底图像,该图像拍摄了眼睛的后部。这里要研究的一种疾病或病理学是糖尿病视网膜病变,它是由糖尿病引起的视网膜损伤,是导致失明的主要原因。目前,检测 DR(retina caused by diabetes糖尿病视网膜病变) 是一个耗时且手动的过程,需要经过培训的临床医生检查这些照片。在这项研究中,开发了一种算法,通过查看这些照片来确定患者是否患有糖尿病视网膜病变。这项研究使用了超过 128,000 张图像,其中只有 30% 患有糖尿病视网膜病变。我们将研究这个数据不平衡问题,它在医学和许多其他具有真实数据的领域中很突出。我们将看到一些应对这一挑战的方法。与之前的研究类似,本研究表明,由此产生的算法的性能与眼科医生相当。在这项研究中,使用多名眼科医生的多数票来设定参考标准或基本事实,这是一组专家对正确答案的最佳猜测。在本周晚些时候的课程中,我们将了解如何在此类医学 AI 研究中设置基本事实。

中间附了一篇paper:Raman, R., Srinivasan, S., Virmani, S. et al. Fundus photograph-based deep learning algorithms in detecting diabetic retinopathy. Eye 33, 97–109 (2019). https://doi.org/10.1038/s41433-018-0269-y

我们的第三个例子是组织病理学,这是一门涉及在显微镜下检查组织的医学专业。病理学家所做的一项任务是查看组织的扫描显微图像,称为全切片图像,并确定癌症扩散的程度。这对于帮助计划治疗、预测疾病进程和康复机会非常重要。在 2017 年的一项研究中,仅使用 270 张完整的幻灯片图像,开发了 AI 算法,然后针对病理学家进行评估。结果发现,最好的算法表现得和病理学家一样好。现在在组织病理学中,图像非常大,如果不分解它们就不能直接输入算法。这些研究的一般设置是,不是输入一张大的、高分辨率的载玻片数字图像,而是以高放大倍率提取几个补丁(patch)并用于训练模型。这些补丁用整个幻灯片图像的原始标签进行标记,然后输入深度学习算法。通过这种方式,算法可以在数十万个补丁上进行训练。在本课程中,您将应用类似的想法,将大图像分解为较小的图像以进行模型训练,以完成脑肿瘤分割任务。

结尾附了一篇paper:Steiner DF, MacDonald R, Liu Y, Truszkowski P, Hipp JD, Gammage C, Thng F, Peng L, Stumpe MC. Impact of Deep Learning Assistance on the Histopathologic Review of Lymph Nodes for Metastatic Breast Cancer. Am J Surg Pathol. 2018 Dec;42(12):1636-1646. doi: 10.1097/PAS.0000000000001151. PMID: 30312179; PMCID: PMC6257102.

3.数据探索&图像预处理(实验)

实验部分另写一篇

三、处理类不均衡的问题和训练集过小的问题

1.建立并训练一个医学诊断模型

既然您已经了解了深度学习在医学图像分类问题中的一些前沿应用,我们将了解如何为使用胸部 X 射线检测多个图像的医学成像任务构​​建自己的深度学习模型单一模型的疾病。我们将介绍训练胸部 X 光判读模型的过程,并了解您在此过程中将面临的主要挑战,以及如何成功应对。我们将从查看胸部 X 光解释的任务开始。胸部 X 光检查是医学中最常见的诊断成像程序之一,一年需要拍摄约 20 亿次胸部 X 光检查。

胸部 X 光解读对于检测许多疾病至关重要,包括每年影响全球数百万人的肺炎和肺癌。现在,一名接受过胸部 X 光解读培训的放射科医生观察胸部 X 光,观察肺部、心脏和其他区域,以寻找可能暗示患者是否患有肺炎或肺癌或其他疾病的线索健康)状况。

让我们看一个称为肿块的正常异常情况。我不会首先定义肿块是什么,而是让我们看一下包含肿块的三张胸部 X 光片和三张正常的胸部 X 光片。

然后我可以在这里给你看一张新的胸部 X 光片,并要求你确定是否有肿块。您可能能够正确识别出此胸部 X 光片包含肿块。这里的肿块可能看起来与你在这些图像中看到的东西相似,但与你在这些图像中看到的任何东西都不相似。你学习的方式与我们教算法检测肿块的方式非常相似。对于我们自己的参考,肿块被定义为病变,或者换句话说,组织损伤,在胸部 X 光片上看到的直径大于 3 厘米。

让我们看看如何训练我们的算法来识别肿块。

2.训练,预测,损失函数

在训练期间,算法会显示胸部 X 射线的图像,并标明它们是否包含肿块。该算法使用这些图像和标签进行学习。

该算法最终学会从胸部 X 射线输入中生成 X 射线是否包含肿块的输出。这个算法可以有不同的名字。您可能听说过深度学习算法或模型或神经网络或卷积神经网络等术语。

该算法以分数的形式产生输出,分数是图像包含肿块的概率。所以这个图像包含一个质量的概率被输出为0.48,这个图像的概率被输出为0.51。当训练尚未开始时,这些分数、这些概率输出将不会匹配所需的标签。

假设质量的期望标签是 1,正常的标签是 0。您可以看到 0.48 与 1 相差甚远,而 0.51 与期望的标签 0 相差甚远。我们可以通过计算损失函数来衡量这个误差,损失函数测量我们的输出概率和所需标签之间的误差。我们很快就会看到如何计算这个损失。

然后,一组新的图像和所需的标签被呈现给算法,因为它学会了随着时间的推移产生更接近所需标签的分数。请注意这个输出概率如何越来越接近 1,而这个输出概率越来越接近 0。

3.图像分类和类不均衡问题

通常,在我们在之前的视频中看到的医学 AI 示例中,算法会显示数十万张图像。这是图像分类的典型设置,这是计算机视觉领域的核心任务,其中将自然图像输入图像分类算法,该算法说明图像中包含的对象是什么。您可能已经看到可以做到这一点的深度学习算法。我们的胸部 X 光分类示例在许多方面与图像分类设置相似。还有一些额外的挑战使训练医学图像分类算法更具挑战性,我们将在接下来介绍。我们将讨论医学图像训练算法的三个关键挑战类别不平衡挑战多任务挑战数据集大小挑战。对于每个挑战,我们将介绍一种或两种技术来应对它们。让我们从类不平衡挑战开始。所以这是挑战。在医疗数据集中,非疾病和疾病的例子数量并不相同。这反映了现实世界中疾病的患病率或频率,我们看到正常的例子比肿块的例子多得多,特别是如果我们正在观察健康人群的 X 光片。在医学数据集中,您看到的正常示例可能是肿块示例的 100 倍。

4.二元交叉熵损失函数

这给学习算法带来了一个问题,它将抓住大部分正常的例子。这产生了一个模型,该模型开始预测每个人患疾病的可能性非常低,并且无法识别示例何时患有疾病。让我们看看如何将这个问题追溯到我们用来训练算法的损失函数。我们还将看到如何在存在不平衡数据的情况下修改此损失函数。此处的这种损失称为二元交叉熵损失,它衡量输出在 0 和 1 之间的分类模型的性能。让我们看一个例子,看看这个损失函数是如何计算的。在这里,我们有一个包含肿块的胸部 X 射线示例,因此它被标记为 1,并且算法输出概率为 0.2。现在,这里的 0.2 是根据 Y 的算法等于 1 的概率,这个例子是一个肿块的概率。所以现在,我们可以应用损失函数来计算这个例子的损失。

注意:使用以 10 为底的对数(lg)来计算损失。 另一种流行的选择是使用 ln

现在注意我们的标签是一个,所以我们将使用第一个术语。我们的损失是负对数,然后我们将采用算法输出 0.2。所以这评估为 0.70。所以这是算法在这个特定示例上的损失。让我们看另一个例子。这次是一个非掩码示例,其标签为零。我们的算法输出概率为 0.7。现在,这次我们将在这里使用损失率这个术语,因为 Y 等于 0。所以现在损失将是术语 P(Y 等于 0 给定 X) 的负对数。我们可以得到 PY 等于 0 给定 X 使用在给定 X 的情况下,Y 的 P 等于 1。我们可以从那个量计算这个量的方法是认识到一个例子为零的概率是 1 减去它为 1 的概率。一个例子是质量还是非质量。所以算法说某物是质量的概率为 70%,那么它不是质量的概率为 30%。所以在这里我们将插入 1 减去 0.7,结果是 0.3,这个表达式的计算结果是 0.52。

5.类不均衡问题在损失函数计算上的影响

我们已经看到了如何将损失应用于单个示例。让我们看看它如何应用于一堆示例。在这里,我们有六个正常的示例,以及两个肿块示例。请注意,此处的 P2、P3、P4 是患者 ID。当训练尚未开始时,假设该算法为所有示例生成 0.5 的输出概率,然后可以为每个示例计算损失。对于一个正常的例子,我们将使用 1 减去 0.5 的负对数,结果是 0.3。对于一个质量示例,我们将使用 0.5 的负对数,这也将达到 0.3。质量示例对损失的总贡献为 0.3 乘以 2,即 0.6。而正常示例的总损失是 6 个正常示例的 0.3 倍,即 1.8。因此,请注意对损失的大部分贡献来自普通示例,而不是来自大量示例。因此,该算法正在优化其更新以获取正常示例,而不是对大量示例给予太多相对权重。在实践中,这不会产生一个很好的分类器。这就是类不平衡问题。类不平衡问题的解决方案是修改损失函数,对正常类和肿块类进行不同的加权。 wp 将是我们分配给正样本或大量样本的权重,而 wn 将是我们分配给负样本或正常样本的权重。让我们看看当我们更多地加权正面例子时会发生什么。我们希望对大量示例进行更多加权,以便它们对损失的总体贡献与正常示例相同。让我们选择六比八作为我们对质量示例的权重,二比八作为我们对普通示例的权重。然后,您可以看到,如果将质量示例的总损失相加,我们得到 0.45,这等于此处正常示例的总损失。在一般情况下,我们对正类的权重将是负样本的数量与样本总数的比值。在我们的例子中,这是六个正常示例,而不是总共八个示例。我们将放在负类上的权重将是正样本的数量与样本总数的比,即 8 比 2。通过 wp 和 wn 的这种设置,我们可以在所有示例中使正类和负类的损失贡献相同。所以这是使用权重修改损失的想法,在这种称为加权损失的方法中,以解决类不平衡问题。

6.计算标签和带权重的损失函数(实验)

另写一篇

7.重新采样来达到类别均衡

让我们讨论另一个可以用来解决类不平衡问题的过程,即重新采样。这里的基本思想是对数据集进行重新采样,使我们拥有相同数量的正常样本和肿块样本。让我们看看如何实现这一目标。首先,我们将普通样本和肿块样本组合在一起。请注意,正常组有六个示例,而肿块组有两个示例。现在,我们将从这些组中对图像进行采样,使正样本和负样本的数量相等。我们可以通过从正类或肿块类中采样一半的示例以及从负类或正常类中采样一半的示例来做到这一点。请注意,这意味着我们可能无法在重新采样中包含所有正常示例。此外,在我们的重新采样数据集中,我们可能有多个样本的副本。使用这个重新采样的数据集,如果我们现在以与之前相同的方式计算损失,我们可以看到即使没有权重,这只是我们的标准二元交叉熵损失。我们看到肿块样本和普通样本对损失的贡献是相同的。这种方法有很多变体,比如对正常类进行欠采样或对肿块类进行过采样,这些方法属于重采样方法的范畴,我们可以用它来解决数据不平衡问题。

8.多任务问题

在医学图像分类设置中遇到的另一个挑战,那就是多任务挑战。到目前为止,我们已经研究了二元分类,我们关心的是分类一个例子是或不是一个肿块。然而,在现实世界中,我们关心的是对许多此类疾病的存在与否进行分类。现在,一种简单的方法是让每个模型都学习其中一项任务。

但是,也许我们可以学习使用一个模型来完成所有任务。这样做的一个优点是我们可以学习识别多种疾病的常见特征,从而使我们能够更有效地使用现有数据。这就是多任务学习的设置。让我们看看如何训练算法同时学习所有这些任务。因此,现在示例中的每种疾病都有一个标签,而不是示例具有一个标签,其中0表示不存在该疾病,而1表示存在该疾病。对于第一个,我们没有肿块,有肺炎,没有另一种疾病,水肿,即肺部液体过多。该模型不再具有模型的一个输出,而是具有三个不同的输出,表示三种不同疾病的概率。为了训练这样的算法,我们还需要将损失函数从二进制任务修改为多任务设置。让我们看看我们如何做到这一点。

9.多任务损失函数,数据集尺寸,CNN架构

我们修改损失函数,以便查看与每种疾病相关的误差。我们可以将我们的新损失表示为多种疾病损失的总和。这称为多标签损失或多任务损失。在这种情况下,这是我们从八个示例中得到的损失。这里的第一项表示使用这个预测概率和这个标签与肿块类相关的损失。同样,这里我们有与这个模型输出和这个标签一起出现的肺炎类相关的损失。因此,我们将各个损失函数组件给我们的三个损失加起来。最后一个考虑因素是我们如何解决多任务设置中的类别不平衡问题。再一次,我们可以应用我们之前介绍过的加权损失。这一次,我们不仅有与正标签和负标签相关的权重,而且还有与特定类别相关的正标签和与特定任务相关的负标签,这样对于肿块,会有不同的方式对阳性类比对肺炎或水肿。这涵盖了他们对多任务学习的第二个挑战的解决方案。让我们看看第三个挑战,即数据集大小挑战。对于许多医学成像问题,选择的架构是卷积神经网络,也称为 ConvNet 或 CNN。这些设计用于处理 X 射线等 2D 图像。但这些变体也非常适合医学信号处理或 3D 医学图像,如 CT 扫描,我们将在未来一周进行研究。已经提出了几种卷积神经网络架构,例如 Inception、ResNet、DenseNet、ResNeXt 和 EfficientNets,并在图像分类中广泛流行。这些架构由各种构建块组成。在医疗问题中,标准是在所需任务上尝试多个模型,看看哪些模型效果最好。

10.DenseNet(实验)

另写一篇

11.在少训练数据量上工作

挑战在于,所有这些架构都需要大量数据,并从图像分类数据集中的数百万个示例中受益。在医学问题上,如果没有数以百万计的例子,我们怎么还能应用这些技术呢?一种解决方案是对网络进行预训练。这里的想法是首先拥有网络,查看自然图像,并学习识别企鹅、猫或狗等物体,然后通过复制学习到的特征,以此网络作为医学成像任务学习的起点。然后可以进一步训练该网络以查看胸部 X 光片并识别是否存在疾病。这个过程的想法是,当我们学习识别猫或狗的第一项任务时,网络将学习有助于学习医疗任务的一般特征。这方面的一个例子,可能是用于识别企鹅边缘的特征,也可用于识别肺部边缘,从而有助于识别某些疾病。然后当我们将这些特征转移到我们的新网络时,网络可以更好地学习胸部 X 光解释的新任务。第一步称为预训练,第二步称为微调。一般认为,网络的早期层捕获可广泛推广的低级图像特征,而后面的层捕获更高级或更特定于任务的细节。因此,例如,早期层可能会了解对象的边缘,这可能对以后的胸部 X 光解释有用。但是后面的层可能会学习如何识别企鹅的头部,并且可能对胸部 X 光解释没有用。因此,当我们在胸部 X 光片上对网络进行微调时,我们可以冻结浅层学习到的特征,只微调深层,而不是微调我们转移的所有特征。在实践中,最常见的设计选择有两种,一种是微调所有层,另一种是只微调后面或最后一层,而不微调前面的层。这种预训练和微调的方法也称为迁移学习,是解决小数据集大小挑战的有效方法。

12.产生更多的样本

让我们谈谈数据集大小挑战的第二种解决方案。这个想法是诱使网络认为我们有比我们实际更多的训练样本来处理。就在我们将 X 射线图像传递到网络之前,我们可以对其应用转换。我们在这里有几个选择。我们可以旋转它并传递它,或者我们可以将它平移并传递它,或者我们可以放大,或者我们可以改变亮度或对比度,或者应用这些变换的组合。这种方法称为数据增强。在实践中,有两个问题推动了我们选择转换的选择。首先是我们是否相信转换反映了有助于模型泛化测试集以及真实世界场景的变化。例如,我们可能认为我们可能会看到自然 X 射线的对比度变化,因此我们可能会进行变换来改变图像的对比度。第二个设计选择是验证我们的转换是否保持标签相同。例如,如果我们横向反转患者的 X 射线,这意味着将左侧翻转到右侧,将右侧翻转到左侧,那么他们的心脏将出现在图像的左侧。这是身体的权利。然而,正常的标签将不再适用,因为这实际上是一种称为右位心的罕见心脏病,在这种情况下,您的心脏指向胸部右侧而不是左侧。所以这不是保留标签的转换。这里的关键是我们希望网络学会识别具有这些转换的图像,这些图像仍然具有相同的标签,而不是不同的标签。除了 X 射线,还有其他有用的数据增强程序可用于其他任务。例如,旋转和翻转对于经过训练以检测皮肤癌的算法很有用。在组织病理学中,现实世界变化的一大来源是在这些显微图像中看到的不同深浅的粉色和紫色。经常添加颜色噪声,所有这些只是使这些粉红色和紫色的色调略有不同,以帮助网络泛化。此外,旋转和裁剪也是组织病理学图像有用的数据增强程序。回顾一下,我们已经研究了加权损失和重采样方法来解决类不平衡问题。我们已经研究了多标签损失,以使网络能够识别胸部 X 光片中的多种疾病。我们还介绍了迁移学习和数据增强程序,作为应对小训练数据集的挑战的方法。

四、检查模型性能

1.模型测试

既然您已经了解了如何训练医学诊断模型,那么让我们来谈谈如何测试这样的模型。您将了解如何正确使用训练、验证和测试集。以及需要强大的ground truth来评估您的模型。当我们将机器学习应用于数据集时,我们通常将其拆分为训练集和测试集。我们的训练集用于模型的开发和选择,我们的测试集用于最终报告我们的结果。实际上,训练数据集进一步分为训练集和验证集,其中训练集用于学习模型,验证集用于超参数调整并在测试集上给出模型性能的估计。有时,在称为交叉验证的方法中多次拆分为训练集和验证集,以减少我们对模型性能估计的可变性。这些集有时也有不同的名称,例如验证集可以称为调整集或深度集,训练集可以称为开发集,而测试集可以称为保留集,甚至更容易混淆验证集。出于我们的目的,我们将坚持使用术语培训、验证和测试集。我们将介绍在医学背景下构建这些集合的三个挑战。第一个挑战涉及我们如何使这些测试集独立,第二个挑战涉及我们如何对它们进行采样,第三个挑战涉及我们如何设置ground truth。

让我们首先讨论患者重叠(overlap)的问题。假设一个病人来过两次 X 光检查,一次是在六月,一次是在十一月。两次,他们在拍 X 光片时都戴着项链。他们的其中一张 X 射线被采样作为训练集的一部分,另一张作为测试的一部分。我们训练我们的深度学习模型,发现它正确地预测了测试集中 X 射线的正常值。问题是,当模型看到病人戴着项链时,它可能实际上记住了输出正常。这不是假设,深度学习模型会无意中记住训练数据,并且该模型可以记住患者稀有或独特的训练数据方面,例如项链,这可以帮助它在对同一患者进行测试时获得正确答案。这会导致测试集性能过于乐观,我们会认为我们的模型比实际情况要好。

2.按患者拆分数据

为了在我们的数据集中解决这个问题,我们可以确保患者的 X 射线仅出现在其中一组中。现在,如果模型记住病人身上的项链,它并不能帮助它在测试集上获得更高的性能,因为它看不到同一个病人。让我们在所有患者身上看到这一点。

当我们以传统方式拆分数据集时,图像被随机分配到其中一组。请注意,通过这种方式,我们可以在不同的集合中获得属于同一患者的 X 射线。例如,X 射线 1 属于患者 20,是训练的一部分。 X 射线二也属于患者 20,是验证的一部分。并且 X 射线0也属于患者 20,这是测试的一部分。这就是患者重叠的问题。相反,当我们按患者拆分数据集时,属于同一患者的所有 X 射线都在同一个集合中。

例如,X 射线 1、X 射线 2 和 X 射线 0 都属于患者 20,都是训练的一部分。这里的 7、8 和 9 都是患者 32 的一部分,都在验证集中,我们在测试中看不到 20 和 32。这样,我们可以确保两组之间没有患者重叠。这涵盖了我们对第一个挑战的解决方案。

3.患者重叠&数据泄露(实验)

另写一篇

4.采样

让我们讨论集合采样的第二个挑战。假设我们从数据集中采样了一个测试集。有时,测试集的大小是整个数据集的一小部分,例如 10%。其他时候,在人类比较研究中,因为测试集需要由人类读者注释,所以测试集大小的瓶颈是读者可以阅读多少示例?通常,测试集至少包含数百个医学 AI 研究中的示例。对测试集进行抽样的挑战在于,当我们从数据集中随机抽取数百个示例的测试集时,我们可能不会对任何实际患有疾病的患者进行抽样。在这里,我们可能不会对质量标签为 1 的任何示例进行抽样。因此,我们将无法实际测试模型在这些正例上的性能。对于医疗数据而言,这尤其是一个问题,我们可能已经拥有一个小数据集,而每种疾病的例子并不多。创建测试集时解决此问题的一种方法是对测试集进行采样,以便我们至少有 X% 的少数类示例。在这里,少数类只是我们很少有例子的类,比如这里有肿块的例子。 X 的一种常见选择是 50%。因此,对于 100 个样本的数据集进行采样,我们将有 50 个肿块样本和 50 个非肿块样本。这确保了该研究将有足够的数量来很好地估计模型在非疾病和疾病示例上的表现。

一旦我们对测试集进行采样,通常会在训练之前对验证集进行采样。因为我们希望我们的验证集反映测试集中的分布,所以通常使用相同的抽样策略。我们可能决定在验证集中再次有 100 个样本,其中 50 个是肿块样本,50 个是非肿块样本。最后,剩余的患者可以包含在训练集中。因为测试和验证集已经被人为地采样以具有大部分肿块示例,所以训练集将具有小得多的肿块示例部分。您已经看到,我们仍然可以在存在不平衡数据的情况下训练模型。所以这解决了我们的第二个挑战集采样。

5.真实数据ground truth和共识投票

测试模型的一个主要问题是我们如何确定示例的正确标签。正确的标签通常被称为机器学习背景下的ground truth或医学背景下的参考标准。在胸部 X 光片上,区分某些疾病可能很复杂。我们可能有一位专家说这是肺炎,另一位专家说这是另一种疾病。这被称为观察者间分歧,在医疗环境中很常见。这里的挑战是我们如何在存在观察者间分歧的情况下设置评估算法所需的基本事实。

那么,在存在观察者间分歧的情况下,我们如何确定ground truth呢?

我们可以使用共识投票的方法。共识投票背后的想法是使用一组人类专家来确定ground truth。在一种情况下,我们可以让三位放射科医生查看胸部 X 光片,并分别确定是否存在肺炎。如果三个中有两个说是,那么我们会说答案是肯定的。一般来说,答案将是三位放射科医生的多数票。或者,我们可以让三位放射科医生进入一个房间并讨论他们的解释,直到他们做出一个决定,然后可以将其用作ground truth。

6.额外的医学测试

第二种方法是使用更明确的测试,该测试提供额外的信息来确定ground truth。例如,要使用胸部 X 射线确定患者是否有肿块,可以执行的更明确的测试是 CT 扫描。 CT 扫描显示潜在异常的 3D 结构,从而为放射科医生提供更多信息。如果在 CT 上确认有肿块,我们就可以将该ground truth分配给胸部 X 光片。在我们之前看到的皮肤病学研究中,测试集的ground truth是由皮肤病变活检确定的。这是一种医疗程序,其中取出疑似癌症的皮肤样本并在实验室进行测试。然后使用该测试的结果来设置照片图像的ground truth。我们现在研究了两种设置ground truth或参考标准的方法,共识投票和更明确的测试。使用第二种方法,困难在于我们可能没有这些额外的测试可用。不是每个接受胸部 X 光检查的人都会接受 CT 扫描,也不是每个有潜在可疑皮肤病变的人都会接受活检。因此,在现有数据集上拥有可靠的基本事实通常必须使用第一种方法来获得对现有数据的共识基本事实,这是许多医学 AI 研究使用的策略。因此,我们通过算法测试和医学背景下的一些解决方案涵盖了我们的三个挑战。我们已经看到了如何在创建训练验证和测试集时按患者划分,如何在测试集中对少数类示例进行最小百分比的抽样,以及如何使用共识投票或更明确的测试设定ground truth。祝贺你完成了第一周。本周,您在接下来的一周中,您将了解评估您构建的模型的想法和方法。回头见。


总结

1.了解用于多个医学领域任务的深度学习模型示例

2.了解训练和测试您自己的高性能胸部 X 光解释模型所需的所有技术。

您将在作业中实施这些想法,并拥有自己的胸部 X 光解释模型。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值