第2章:揭开心胸影像人工智能技术的神秘面纱:要点(Demystifying Artificial Intelligence Technology in Cardiothoracic Imaging: The Essentials)
引言
本章作者为荷兰 Twente 大学 / 德国慕尼黑工业大学的 J. M. Wolterink 与德国慕尼黑工业大学的 A. Mukhopadhyay。章首承接上一章已经出现的"人工神经网络(ANN)"概念,举出 LeNet-5[11] 与 ResNet[12] 作为已为读者所熟悉的代表性架构,作为后续讨论的入口。ANN 在初始化阶段使用的是随机抽取的权重值,因此几乎不可能一上来就对数据集中任何一部分给出期望的预测。这就使得深度学习必须经历一个训练阶段(training stage):用抽样数据(图像等)来优化 ANN;随后进入测试阶段(testing stage),把训练好的模型应用到模型从未见过的新数据上。根据训练阶段对数据的使用方式,作者把机器学习方法划分为三大范式:监督学习(supervised learning)、无监督学习(unsupervised learning)以及半监督学习(semi-supervised learning)。章首这一小段仅起到承上启下的作用,把"为什么一定要训练"、"训练和测试各是干什么"、"三大范式如何区分"这三件事摆出来,为接下来逐节展开三大范式奠定语义。
学习范式
本章第一节把"学习范式"作为总标题,下设监督、无监督、半监督三个子主题依次展开。
在监督学习下,模型的优化目标是:基于训练阶段从完全标注样本上学到的东西,对未见新数据给出预测。所有训练样本(例如图像)都有一个对应的"真值标签"(ground truth label),并默认该标签是正确的。作者以 Fig. 2.2 为例:训练样本是肺炎患者与健康人的胸部 X 线片,对应的标签就是"健康"和"肺炎"。训练过程中对所谓的"目标函数"(objective function)进行优化,使得对每一个训练样本都预测出正确的标签。每个样本的预测标签与真值标签直接比较,按其相符程度计算"损失"(loss)。监督学习的短期目标是:在训练集上让目标函数的值达到最优;Fig. 2.2 的第二个样本模型预测错误,目标函数尚未最优,图中的箭头表明信息先从样本流向预测、再从预测回流到样本,从而把模型"贴合"到数据上。但长期目标更根本:训练出的模型必须能泛化到未见新数据——只在训练集上能工作、却不能处理新样本的模型价值有限。训练结束后,进入测试阶段处理未见样本;此时信息只从样本单向流向预测,不再需要参考标签,这正是放射学 AI 模型最可能在临床上部署的场景。作者强调,监督学习是迄今训练深度学习模型最常用的方式。
无监督学习方法不假定每个训练样本都有真值标签,因此对训练数据的约束要宽松得多。原则上,这让无监督学习天然适合医疗图像——因为日常产生的大量医疗图像常常没有详细标注。但从无标注数据中学习远难于从已标注数据中学习,因此无监督学习常被限定在特定任务,例如聚类或按样本特征把样本分组[13]。无监督学习也可用于生成新数据:所谓"生成模型"(generative model)学到数据的分布并允许从该分布采样,从而生成新数据,这与"判别模型"(discriminative model,能区分样本类别)形成对比。流行的生成模型包括生成对抗网络(GAN),已被广泛用于合成医学图像。在 GAN 中,两个神经网络彼此博弈:第一个网络尝试合成数据,使第二个网络无法把它与真实样本区分开;这样第一个网络仅借助"样本是真的"这一非常弱的标签就学到真实数据分布。心胸放射学的例子包括合成肺结节在 CT 图像中的表现[14]。作者把对放射科医生更系统的 GAN 入门放在文献[15]中。
在半监督学习中,监督学习与无监督学习被结合使用:假设部分样本带有真值标签、其余样本没有标签,整体数据集是部分标注的。鉴于医疗图像数量巨大但高质量标注稀缺,这类方法可能有价值。作者在此节末尾再次强调:尽管无监督、半监督模型有可能挖掘出每日产生的海量弱标注医学图像,监督学习仍是最常用于放射学应用的方法;本章后文将默认设定为监督学习问题,即每个样本都有对应真值标签。
优化人工神经网络
无论哪一种学习范式,ANN 的优化都涉及最小化一个"损失函数"(loss function)。损失函数高度任务相关,在回归问题与分类问题下形式不同。以 Fig. 2.2 的分类问题为例:网络需要预测一张胸部 X 线片 x 显示肺炎的概率,预测值 f(x) 处在 0 与 1 之间;损失函数量化预测标签与参考标签之间的差距。对这种二分类问题,一个常用且合适的损失函数是二分类交叉熵损失(binary cross-entropy loss)。一张未显示肺炎的 X 线片参考标签 y = 0,当网络也预测 f(x) = 0 时损失应当很低;用数学语言写成 L(y, f(x)) = −log(1 − f(x))。反过来,一张确实显示肺炎的 X 线片参考标签 y = 1,当网络预测 f(x) = 1 时损失应当很低,对这些样本数学上即 L(y, f(x)) = −log f(x) 应取低值(Fig. 2.4)。
损失函数驱动一个迭代过程,每一次迭代包含若干步骤:首先把数据样本送入 ANN;网络对这些样本的预测与参考标签比较,用损失函数算出一个损失值;接下来计算网络中每一个权重对该损失的"贡献"(即每个权重对应的梯度);随后优化器根据学习率(learning rate)对每个权重做微小调整,使得如果同样的数据再次通过网络,损失会更低。学习率需要谨慎选择:较大学习率可能让训练更快,但也可能让优化过程不稳定。依据每个权重对损失的贡献来调整权重的过程称为"误差反向传播"(backpropagation of errors)。迭代过程使用随机抽取的样本重复进行,直到损失值收敛到一个足够低的值。
Fig. 2.5 用一个仅有两个参数的小例子把优化过程可视化:参数值从一个初始点(图中的圆点)出发,沿损失曲面(loss landscape)的局部斜率反复取小步,使得参数值变化、损失 L(y, f(x)) 不断下降,最终到达使损失函数取局部极小值的参数组(图中星标)。Fig. 2.3 给出更具体的例子:一个三层、17 个单元、17 个可训练参数的小网络。实际工程中 ANN 可拥有百万乃至十亿级别的参数,优化过程可能需要上千步。不同优化器多基于"梯度下降"(gradient descent):在参数空间中局部确定使损失下降的方向,并据此取小步。由于数据集通常过大、无法一次通过网络再回传,因此常用样本的"小批量"(mini-batch),由此衍生出"随机梯度下降"(stochastic gradient descent)。
训练集、验证集与测试集
为训练一个有监督的机器学习模型,数据集通常被划分为三个集合。第一是"训练集"(training set),用于执行实际的模型优化:模型若无法对训练集给出正确预测就被直接惩罚,反之给出正确响应则得到奖励;训练集借助前述迭代过程寻找模型潜在数千乃至数百万参数的正确取值。
除了模型本身的低层参数外,还有其它参数决定模型的行为:例如神经网络的性能依赖于网络的深度、层宽度等因素。这些自由度由"超参数"(hyperparameters)刻画——超参数通常不在模型优化过程中更新,但可能影响模型的性能。"验证集"(validation set)可用于寻找这些超参数的最优取值:可以以不同超参数设置对模型训练多次,再在验证集上把预测与参考标签比较以量化性能。需要注意的是,验证集中的参考标签并不用于优化网络的所有低层参数,因此对一个超参数已固定的具体网络而言,该网络并未被优化去"学习"验证集。
但即便如此,若反复在验证集上调参并挑出最优超参数组合,最终得到的模型可能在训练集和验证集上都表现良好、却对未见新数据表现糟糕。因此业界通行做法是把数据集的一部分另存为"测试集"(test set),测试集在方法开发阶段完全不被使用、只在整条机器学习流水线最末做一次评估。测试集充当所有"网络未见过的数据"的代理,测试集上的性能通常是文献里报告的唯一相关指标,因为它最不容易被网络的参数或超参数调优过程所偏倚。
训练 / 验证 / 测试三集的划分在机器学习中很常见,但可能不足以完整评估方法的性能。实际上,大约 70% 的数据用于训练、约 30% 的数据用于验证和测试。为了更高效地利用常常稀缺的数据,N 折交叉验证(N-fold cross-validation)提供了一种流行替代实验方案:把完整数据集切成 N 个互不重叠的子集,每次实验把其中一个子集作为验证集、其余子集作为训练集[16]。
卷积神经网络
放射学 AI 的许多最新进展都源自 ANN 的应用。但仅由全连接输入层、隐藏层、输出层构成的 ANN 在直接应用于图像时存在局限:因为层与层之间是全连接,ANN 的可训练参数数量随单元数迅速增长,这让 ANN 不太适合图像分析——图像分析中每一个像素都要送入一个输入单元(Fig. 2.6)。即便只是一张 8×7 像素的小图,ANN 在输入层就已包含 56 个单元;若设 50 个单元的隐藏层,可训练参数即超过 2900 个。设想一张 256×256 像素的胸部 X 线片(这已是严重下采样后的图像),按 Fig. 2.6 的简单单层 ANN 结构、设 1000 个隐藏单元,可训练参数即超过 6500 万个。考虑到典型数据集样本数量有限,这数百万参数极有可能被"调"得在训练样本上很贴、却在未见新数据上表现更差,这种现象称为对训练集的"过拟合"(overfitting)。
在过拟合中,训练损失在训练过程中持续下降,但验证损失在某一时刻开始反向回升(Fig. 2.7)。这是不希望出现的行为,因为它意味着网络在训练集上的表现与在新数据上的表现之间存在"泛化误差"(generalization error)。为防止网络过拟合,需要正则化(regularization)。正则化有多种实现路径:可以修改目标函数本身;可以约束网络参数可取的数值范围;也可以使用特定的神经网络层,例如 dropout[17] 与批归一化(batch normalization)[18]。
另一种让面向图像的 ANN 不易过拟合的策略借助了对图像本身的一条观察:典型图像包含"模式的层级"——复杂模式由更小、更简单的模式组合而成。例如一张汽车图像可由轮子和矩形构成,而这些子模式又由边缘和角构成。这种模式可以被"卷积核"(convolution kernel)所强调——卷积核是小的、通常为方形的滤波器,在图像的每一个像素上滑动(Fig. 2.8)。ANN 可以改造为包含"卷积层"(convolutional layer),对图像施加这样的滤波器。每个滤波器由可训练权重构成,其权重的数量与所作用图像的大小无关。在图像的每一点处,卷积核强调同样的模式。一个卷积核强调一种模式,多个卷积核强调多种模式,由此得到多张被滤波后的图像,它们又可以进入下一卷积层继续处理。通过在图像每个位置施加相同的滤波器,网络的参数数量可被大幅削减,同时网络仍能学到输入图像的高质量表示。包含这种卷积层的 ANN 被称为"卷积神经网络"(convolutional neural network, CNN)。
除卷积层外,卷积神经网络通常还包含"下采样层"(downsampling layer),用以缩小隐藏层中图像或特征图的尺寸。这一做法的好处是保留网络学到的最相关特征,并在若干层之后把这些特征与一个全连接层相连;全连接层再把特征与输出层相连。CNN 的训练方式与一般 ANN 相同:此时权重不再只是网络中各单元之间的连接,而恰恰是卷积层施加于图像的滤波器中的元素。以 Fig. 2.8 为例,卷积核中的元素对应权重 w0、w1、w2 等,并在训练过程中被优化;这一过程仍然通过误差反向传播完成。虽然 LeCun 等人在 1989 年就以反向传播训练 CNN[11],但 CNN 的有效性与广泛流行源自 AlexNet——它在 2012 年的 ImageNet 大规模视觉识别挑战赛上获胜[19]。此后 CNN 在医学图像分析领域变得极具价值[20]。对医学图像分析尤其相关的是"全卷积网络",例如流行的 U-Net 架构[21],它能高效地给出图像中每个像素 / 体素一个预测,而非对整张图像只给一个预测;这类架构可用于图像分割、跨模态合成等任务。CNN 已广泛用于心胸图像分析中的图像分类与分割等任务。随着新架构的出现,研究者也设计了任务特定的损失函数,例如用于图像分割的损失[22]。此外,CNN 还为传统的图像分析问题开辟了新路径,例如胸部 CT 图像配准[23]。
大数据
与新型机器学习模型和优化策略相伴,大规模数据集预计对放射学 AI 的进一步发展至关重要。根据经验法则,机器学习方法依赖大规模、多样的数据集来提升其对未见新数据的泛化能力。当前许多研究仍基于单中心、专有数据,但业界越来越意识到大规模、多样化公开数据集的可得性对放射学 AI 的进一步发展至关重要。对高质量、标注良好的、可公开访问数据集的需求日益凸显,目前已出现若干出色的支持性计划。
其中一组计划聚焦于所谓"挑战赛"(challenges)的组织。这些挑战赛针对具体的医学影像问题设置基准,常与 MICCAI、ISBI 等医学影像会议联合举办;挑战赛的概览在 Grand Challenge 网站[24]上维护。这些挑战赛关注不同成像模态下的广泛任务与应用。在心胸领域尤为相关的挑战赛包括自动冠状动脉评分[25]、肺结节检测[26]、胸部 CT 中危及器官分割[27]等。此外北美放射学会(RSNA)曾于 2018 年与 2020 年分别组织过肺炎检测与肺栓塞检测挑战赛。挑战赛通常带有竞赛性质,动态排行榜对参赛方法排序,最佳表现方法获奖。虽然赛后实验表明这种排名往往并不稳健[28],但它们仍为参赛者提交结果提供了额外激励。
除挑战赛外,大型公开医学影像数据库也在陆续建立。其中之一是"癌症影像档案库"(The Cancer Imaging Archive)[29],托管大量与癌症相关的数据集,例如国家肺癌筛查试验(National Lung Screening Trial)。其它大型国家级数据库或采用集中化数据存储、或采用"联邦学习"(federated learning)——数据留在原地、模型在数据之间移动——两种路径正在建设中[30]。COVID-19 大流行期间,多个包含 COVID-19 患者 X 线或胸部 CT 图像的大型公开数据集相继建立;这虽然催生了一波胸部图像分析论文,但这些模型的临床使用可能受限[31]。可能的原因之一是不同数据集之间存在大量重叠[32],进一步凸显出对高质量、经过良好整理的数据集的需求。
在所有这些计划中,数据采集与标注的标准化至关重要。大多数有监督机器学习方法的性能上限由所提供数据的质量决定,高质量训练数据是关键。理想情况下,数据的获取与报告方式既要匹配期望的临床工作流,又要允许在 AI 应用中复用[33]。此外,必须考虑患者隐私问题。
讨论与结论
作者在本节回顾:本章为读者提供了机器学习与深度学习方法的导引,并引入了一些必将在本书后续反复出现的术语。AI、ML、DL 相关论文数量仍以惊人速度增长,作者希望读者能借助本章把握若干抓手,跟上不断扩张的文献体量。
作者承认 AI 是一个庞大的科学领域,但本章聚焦于那些与当前放射学图像分析最相关的形态,因此带有强烈的"以深度学习为机器智能、进而为人工智能子集"的取向。深度学习的形态由人工神经网络决定,但需要意识到并非所有机器学习方法都用 ANN 表示模型——支持向量机(support vector machine)与决策树在机器学习中仍然无处不在,基于这些方法的模型在多种分类与回归任务上都极为成功。对那些特征已被清晰定义或手工构建的数据集,简单的多层感知器 ANN 经常被竞争性的机器学习方法超越。但在特征未被清晰定义、有用模式可能隐藏在输入数据中的问题上,深度学习方法占据优势。
随着深度学习进入放射学图像分析,"打开黑箱"——弄清网络为何做出某一特定决策——受到广泛关注。CNN 的机制允许把网络的决策"反投影"回原始图像以生成热图(heat map)[34]。一个例子来自 De Vos 等人的工作:他们对钙化进行自动评分,并把预测反投影回输入图像,得到一张钙化位置的热图[35]。类似地,可解释方法可以在胸部 X 线分析中扮演重要角色[36]。作者认为,AI 方法的可解释性与可说明性很可能是其临床采用的前提条件,确定 AI 方法所给预测的不确定性同样如此;这些方法的开发仍是进行中的工作。
在接下来几年,伴随现有数据存储库的合并或新的(跨)国家级前瞻数据库的建立,作者预期会看到更多大规模数据集被组织起来。这一发展必将进一步加速基于 AI 的放射学图像分析创新,并扩大该技术在放射学中的机遇与潜力。
本章个人批注
读完本章,我对一个关键事实有了更清晰的把握:放射学 AI 之所以"离不开监督学习",并不是因为无监督 / 半监督方法在算法上不可行,而是因为后者需要更多数据、更难收敛。在数据稀缺而标签昂贵的医学场景里,作者选择了把"准确度更高、收敛更快"的监督学习当作默认设置。这其实也是后续章节几乎所有"训练一个模型做 X"的故事背后共同的工程取舍。
我对"训练集 / 验证集 / 测试集"这三段的写法印象较深。作者并没有停留在"三七开"的机械划分,而是把每一种集合的"角色"讲清楚:训练集用来调低层参数、验证集用来调超参数、测试集是仅在最末一次碰的代理。这一"分层"结构其实对后续阅读第 4 章(数据准备)、第 6 章(构建 AI 算法)会有直接的对照作用——后者一定会反复引用"训练 / 验证 / 测试"这套词汇,并在数据划分比例、交叉验证、跨中心泛化等问题上再做展开。
CNN 一节我注意到一个细节:作者用"8×7 像素 → 56 个输入单元 → 隐藏层 50 个单元 → 2900 参数"的微例子把全连接 ANN 的局限形象化,然后跳到"256×256 像素 → 1000 隐藏单元 → 6500 万参数"的尺度对比。这种"先小后大"的递进写法对我的启发是:在解释一个抽象限制(参数爆炸)时,用一个极小数字做锚点会让读者立刻感受到"为什么不直接全连接"。后续我自己写讲义时,可以借鉴这种递进式对比。
本章有两处我读后仍想进一步求证:(1) "LeCun 等人在 1989 年就以反向传播训练 CNN"——文献[11]给出的实际是 1998 年的 Proc. IEEE 论文(LeNet-5),1989 年那篇是更早的同行工作,需要再核一下条目顺序;(2) "Wolterink 等人在 2016 年用 orCaScore 框架评测自动冠状动脉钙化评分"——文献[25]既出现在 CNN 节的钙化评分讨论中、也在 Big Data 节被列为"自动冠状动脉评分挑战赛"的代表,其章节归属是否在原书正文清晰区分,需要在第 3 章读到时一并核对。
与上下章的衔接(一段话)
第 1 章(van Assen 等)以百年史的视角给整本书铺设了"AI / ML / DL / ANN"四个嵌套概念与硬件 / 数据 / 算法三件套的术语坐标;本章紧接其后,从术语辨析切入,把 ANN、CNN、U-Net、损失函数、训练 / 验证 / 测试划分、超参数、交叉验证、卷积核、过拟合与正则化等概念逐一拆开,相当于把第 1 章的历史坐标下沉为具体的工程概念。本章在全书中的位置明显是"工具箱章节"——它不解决任何心胸影像的具体应用问题,而是为后续所有应用章节(CT、MR、超声、心脏等)提供共同的词汇。从编排上看,本章放在第 3 章"AI 算法开发流程"之前,先讲"零件"再讲"装配",与第 3 章(van Ooijen 等)即将展开的"AI 算法开发步骤综述"形成自然的承接:第 3 章会在此基础上具体讨论心血管影像中 AI 能做什么(采集、重建、分割、CAD、合成数据、预测)以及开发流程的若干阶段。