图片来源:CDAPEX
编译 | Ziqi Zhang
编辑 | Donna
【AI科技大本营导读】澳大利亚阿德莱德大学的在读医学博士生、放射线学专家Luke Oakden-Rayner的医疗AI领域最新成果分析系列《人类医学的终结 - 医学AI研究最前沿》。上周我们发布了该系列的第一篇《机器学习最终是否会代替人类医生》。本文是该系列的第二篇文章,关于斯坦福大学的医学研究者是如何应用突破性的医疗人工智能技术,诊断皮肤癌以及对皮肤病患者是否需要活体检查。该论文的原文发表于2017年2月的《Nature》。原文详见:http://www.nature.com/nature/journal/v542/n7639/full/nature21056.html
文章的开始,我想现对Andre Esteva致以最真挚的感谢,他对我提出的诸多问题做了耐心的解答。与上一篇博文类似,该篇文章大约有三千多字,如果你是该领域的专家,可以直接跳到文章末尾的摘要,那里有你想知道的一些关键内容。
免责声明:本文主要针对大众化的群体,包括机器学习领域的专家、医生等。相关专家们可能会觉得,我对一些概念的理解很肤浅,可是我还是希望他们能在自己研究领域之外找到更多有趣的新想法。还有一点要强调的是,如果这篇文章里有任何说错的地方,请读者告诉我,我会及时改正。
研究现状
在讨论之前,我想提醒大家,人工智能深度学习是从2012年发展起来的,距今仅有短短五年。所以,医学领域并没有使用人工智能,这同时也是从安全角度考虑。大家了解到这个背景以后,就可以想象到现在取得的一些成果有多么令人难以置信,而且我们应该客观地认识到,人工智能对医疗的发展只是一个开始。
论文中提出,目前医疗自动化已经实现了突破性的进展,我会在本文中简单回顾一下,也适当地增加了一些有用的知识。我会进一步介绍这个研究,在介绍之前先花几分钟时间说明几个关键性的问题:
- 任务——这项任务是临床任务吗?如果实现自动化,在医疗实践过程中会面临多大的干扰呢?为什么选择这项特定的任务呢?
- 数据——如何收集和处理需要的数据?数据怎么处理才能符合医学实验和监管的要求呢?我们能从更广泛的方面了解医疗AI的数据需求。
- 结果——人工智能将战胜医生还是打成平手?他们究竟测试了什么?我们还能有什么其他的收获吗?
- 结论——这个成果有多大的影响力?我们还可以进一步得到其他的成果吗?
任务
皮肤科是主要专注于研究皮肤疾病的医学专业,他们主要针对皮肤癌、皮疹和全身性皮肤疾病进行研究和治疗,在美国每年都有10000人因为皮肤癌而去世。
图一 皮肤病的种类真是多种多样,而且我们人类都很难看出差别
这篇论文的作者训练了一个深度学习系统,用于对临床上的皮肤疾病进行诊断。它最大的贡献在于,有些类似皮肤癌这样只有通过活体检查才能确诊的疾病,可以通过该系统,直接进行有效的判断以及评估是否需要进一步治疗的患者进行初期诊断。
他们还评估了该系统直接通过图像识别癌症的能力,以及更复杂的诊断病灶组。
数据
他们使用了来自18个不同公开数据集和一个斯坦福医院的私有数据集的13万张皮肤病的照片作为该深度学习系统的训练数据。但遗憾的是,这篇论文没有明确地给出这些数据的来源和它们的组织方式,所以我也不能确定哪些是经过标注的训练标签。
在论文中提及到,他们的数据是经过“皮肤病学专家标注过的”,但是其中还有一些来自不同地方的活检结果。我们就姑且假设,这一大批数据仅仅经由一个皮肤病学医生标注,并且没有活检的结果。
有趣的是,这篇论文中数据的标签与我之前那篇博文中的标注方法有很大的差别。他们没有用分数对图像进行分级,而是着眼于所有的2032种皮肤疾病。由于这里面有些类型的疾病具有非常少的样本,就目前而言,还没有有效的机器学习方法,来对小样本数据进行训练和学习。所以他们创造性地设计了一个皮肤疾病知识图谱。这是一种典型的树状结构,每种类型的疾病都是通过外观表现和临床相似性诊断而来的,然后对他们进行了分组。
图二 各种疾病通过观察和临床试验整合到一起,因此树状结构中每一层每一个类别对于临床任务都是有用的。
通过这种做法,就可以实现我前面提到的复杂的任务。也就是说,它不仅仅可以诊断具体是哪个疾病,而且可以识别出疾病属于哪个病灶组。他们在论文里提到,皮肤病被诊断成三个级别,分别是:良性、恶性和非肿瘤。这三类下,又分别细化成9个类别。
之后,他们在一个有1950个样例的数据集上来对计算机的预测结果进行测试。因为这个数据集的数据都是通过活体检查确认的疾病,所以它的准确性毋庸置疑。在标题为“有无活检”的实验中,他们与其他21到25位医生的诊断结果做了对照。在其它实验中,他们又与两位皮肤病医生做对比。
这篇论文并没有介绍训练集中皮肤病的种类,但是通过大部分的数据,我们可以获得皮肤癌的正类样本。例如,在图片一中,有92%的黑色素细胞是癌变的。也就是说,这些数据就可以成为训练癌症的样本。
但是在测试集中,却报告了三种流行的皮肤病,它们分别是:表皮细胞损伤、黑色素细胞以及黑色素细胞镜检。这其中,恶行肿瘤(也就是癌症)能占到表皮损伤细胞样本中的一半,黑色素细胞样本的三分之一,甚至是黑色素细胞镜检样本的近三分之二。
在我看来,从论文中的数据并不能完全反映出临床上的情况,现实中从上述三种疾病中诊断出恶性肿瘤的可能性一定会低于5%,甚至会低于1%。也就是说,该测试集采集的数据的确很丰富了。
对于数据的质量,医院拍摄的皮肤病照片的分辨率通常在100万像素。而在数据集中的图像都被缩小到299*299个像素,也就是0.08万像素(比医院拍摄的减少了90%的像素值)。这也是他们的系统中网络体系特有的属性,其它大小的图片都不能使用。
测试的时候,他们会排除掉那些不清晰的或者离得较远的图像,但是这些图像仍然参与训练。他们注意到,有些同样的疾病会有多幅不同角度的图像,他们花费了大量的努力来确保其一致性。
网络
他们使用了一个预先训练版本的Google Inception-v3深度神经网络,这也是目前表现最好的图像处理分析系统之一。预先训练是什么意思呢?也就是说,该系统用一个已经训练好的神经网络来检测非医疗的对象,比如猫和汽车之类的对象。然后让这个神经网络再对医疗图像进行进一步的训练。这也就是网络为什么只能接受299*299像素的图像的原因(因为之前训练的图像是299*299像素的)。
结果
我认为这篇论文的成果是深度学习应用在医学领域的第二个重大突破。与大多数私人皮肤病医生相比,它能取得更准确的诊断结果。它的表现甚至达到了“中级”皮肤病医生的水平。
图三 这实际上是一个翻转过的ROC曲线,蓝线代表算法的准确度,红点代表皮肤病专家的准确度,绿点代表平均皮肤病专家的平均水平
与上一篇博文类似,你可以想象有一条模拟皮肤病医生诊断精度的曲线,这条曲线能最大化的符合医生的真实平均水平。但是与之前不同的地方是,这条曲线实际上会比他们的算法准确性要更低。除了这一点,他们的系统能更好地识别出活检后最终恶变的皮肤病。更厉害的是,系统在少数几次犯错之后就可以分辨出大量正确的正类样本,这比许多皮肤病医生可厉害多了。
另外一个实验虽然没有之前的深刻,但也很有意思。实验展示了他们构造的树状图谱第一层和第二层的准确率。
接下来我将介绍一点CNN和CNN-PA的有趣的知识。
通过这张图表可以看出,在树状图谱的第一层,它的准确率要比皮肤病医生要高,但是第二层没有第一层表现得好。
结论
这篇论文对于医学领域视觉人工智能系统的开发具有很大的启发性。这个系统可以通过观察病人的样本来决定病人是否还需要活体检查,现实生活中,医生想要确诊病人的皮肤病是否为恶性皮肤病,一定要通过活检来确诊。
也就是说,这个人工智能系统可以帮助医生在没有活体检查的情况下来确诊病人得的是不是恶性皮肤病。这对于医生来说,又多了一个选择。如果系统诊断病人是良性的,那医生就不必再对他行活体检查,这样就可以替病人节省花费,也可以减少病人的痛苦和活检带来的风险。
这个时候,你可能会问了,这个系统的准确性真的比医生要高吗?
我们知道,ROC曲线包含了评价一个医疗诊断系统是否合格的评价指标,其中就有癌症的漏诊率和疾病的误诊率这两项很重要的指标。可以看到,这个系统完胜医生。毫不夸张的说,对于任何评价点,该系统都比医生具有更多的正确诊断数和更少的错误诊断数。这也是第一次,一个经过特殊训练的深度学习系统在某项任务上击败了人类医生。
第二个值得借鉴的地方是他们的数据,这里我想说的是他们用来组织数据的树形结构。这个树形结构很好的体现了现实当中,疾病诊断的复杂程度,因为对于皮肤病来说,差不多就有2000多种类型的病。而且这种树形结构也为任务的简化提供了一个很合理的数据类型。他们可以选择树的任何一个层,对系统进行训练和预测,同时能够在粒度和可用性之间进行调整。
我们还无法让医疗人工智能系统来诊断所有的人类疾病,因为有些疾病不太常见,缺乏训练的样本。在皮肤病科,大多数的疾病不常见,其发病率在在千分之一和万分之一之间。
我之前提到过,想要训练一个好的深度学习系统,从经验上来说,对于每一类你都得需要至少1000个训练样本。因此,类似训练这样一个识别罕见疾病的医疗AI,就得需要数以亿计的样本数据。
他们方法的成功之处在于,根据可用数据数量来优化标签的粒度。在训练的过程中,不说仅仅机械式地训练树状结构上某一个层的数据(比如仅是第三层),而是对任何一个分支,它都能自动地选择最深的1000个样本。也就是说,对于较常见的疾病,可能这1000个样本都在同一层;对于不常见的疾病,可能会包含好几层训练数据。
通过照片中的方式,他们创建了一个757类的标签结构,从分类的意义上来讲,虽然这样的系统由于无法确定数据中所有2032种疾病的所属类别(即使皮肤病医生也不能)而无法做疾病诊断,但是它的训练是实用的粒度训练。
说了这么多,要点就是它确实是可用的,我们看一下实验结果的一个表格。
将一个训练好的深度学习系统应用到另外一个任务上,这种方法叫做“迁移学习”。如果用特定任务的足够多的数据来对系统进行训练,这种效果通常并不会很好。但是因为他们是利用了与疾病相关的树状结构来结构化地进行标注,所以他们得到了非常好的上层的任务结合底层的标签数据。
理解这一点的关键是深度学习是一个统计学习过程。深度学习系统会学习到一个类的特征,并且这个特征通常是对任务来说最有用的一个特征。所以,当你给系统一个广泛分类的任务,这些分类由不同的疾病组成,每个疾病又有不同的样本,那么系统会将那些最有用的疾病特征学习。一些不太常用的特征就不会被学习,比如说两种都十分罕见但是相似的疾病,他们的区别特征就不会被学习。所以,只有当你把超级边缘的“良性”或者“恶行”的病例加入训练数据中,深度学习系统才能将鳞状细胞癌和脂溢性角化病的特征区分开来。
本文的t-SNE可视化表明,虽然主要病变类别聚集在一起,但存在重叠的边缘病例。 更细粒度的类的训练确实有助于正确识别这些令人困惑的图像。
文章中,通过T-SNE可视化的研究表明,疾病的主要类别都集中在了一起,有分类边缘重叠的情况。通过细粒度训练,的确可以有效的将重叠部分区分开来。
这其实就带来医疗人工智能-数据工程的一个重要话题。
下面我想详细地介绍一下。
人工智能系统的发展是一个进步的过程,它曾有一段需要人类手把手教学的过程。最初,它跟专家系统类似,比如MYCIN,也就是说,它的规则全部都是由人类输入到系统中的。这种系统非常笨,如果遇到之前没见过的问题出现,那它肯定就会出错了。
在专家系统之后,机器学习可以学习到数据的特征,并且发现数据和特征之间的内在联系。这个时候,你的问题就在于如何找到描述问题最恰当的特征。
在数字图像处理中,这种方法要求人类先手工的提取特征,然后再以数学的方式体现出来。举个例子,告诉计算机如何找到骨密度与骨折之间的关系,也就是通过x射线照片上明亮像素点的数量来衡量骨密度。这种方法显然比专家系统要好很多,编程时间也大大减少,但是我们仍然需要将人类的知识转化成计算机能够理解的数学特征才行。
深度学习已经前进了一大步,给它一张原始图像,它能自动地提取有用的特征。我想问一个问题,它不再需要人类的知识了对吗?
答案是否定的,因为人类仍然决定了输入的数据以及定义任务的标签,这些任务并没有脱离人。如果不把错误的样本和错误的标签挑出来,系统将无法正常的运行。
之前那篇论文介绍过,Google有偿邀请许多眼科医生,来给训练数据打分,以提高标签的准确性。Google和斯坦福团队都决定缩小他们的图像样本。这些决定是基于专家的知识,个别眼科医生的标签很可能有准确率问题,不过缩小的图像仍然包含有用的诊断信息。
这次介绍的这个研究团队,在医学知识与数据融合方面做得更加的精确,他们还花费了大量的努力去构建一个知识图谱。这些都需要大量的医学专家通过他们的知识,来确定常见的疾病分类。无论什么任务,只有许多专家来完成数据标注任务,才能更好地完成他们预先设计的任务。
所以,想要更加透彻地了解人工智能的发展历程,首先需要认识到,它经历了从知识工程到特征工程,再到数据工程的发展历程。而且,这个过程中,人类的参与越来越少。以前需要一步步教机器怎么识别物体,甚至需要告诉它各种特征。而现在不需要了,只要把大量物体的数据输入到网络中训练就可以了。
深度学习使机器的学习效果大大提高,并使它能够以更加人性化的方式解决更加复杂的问题。消除对数据过分的依赖可能将成为人工智能的下一个未来,如果这个技术成熟了,你可以将任何数量、任何类型的数据交个人工智能系统去处理,它可以又快又好地完成。
如果考虑到狭义和广义范畴的智能,这项研究充分地告诉我们,数据是影响学习广度的一个至关重要的因素。如果我们仔细研究一下实验结果就可以看出,由于对于“活检与非活检”以及“良性与恶性”的判别方面,如果实验数据特别丰富,系统就可以超过人的判别能力。如果病例数据不足,识别效果也会大打折扣。
总体来说,人类对于所有疾病的诊断能力仍然高于人工智能系统。因为这就是一个跟数据相关的问题,当我们沿着树状结构向下移动时,每个节点的样本就越累越少。如果我们想准确地证明这个效应,就需要准确地知道树状结构每个节点的确切数字。但很不幸,这些数字并没有提供。
有趣的是,与我平时的经验相反,在第二层和第三层有1000个训练数据,即便这样,系统也没有达到超越人类的水平,也就是说,真的想超过人类医生,可能得需要更加严格的训练数据吧。
影响
在皮肤癌高发的热带地区,这项技术有特别的意义。疑似患者只需要上传一张照片,就可以诊断出得的是什么皮肤病,还能判断出是否为皮肤癌。这免去了患者去医院做活体检查的痛苦。
在《Wired》最近发布的一个视频中,从事该项研究的小组已经很好地将该系统嵌入到手机App中。如果有一天,这个系统能够成熟应用那就太棒了,即使现在还不清楚到底仍需要多少实验数据进行测试,才能真正使用上这个系统。
就目前而言,皮肤病医生仍然是人才济济的行业,诊断皮肤病仍然需要活体检测才能确诊。所以当这个系统真正上市的时候,皮肤病医生的工作还将继续。
不过,这种状态不会持续太久,随着更多训练样本的加入,系统将更精确的遍历数据的每一个部分。所以留给医生找工作的时间也不多了。。。
这就是这个医疗系列的第二篇文章。下一篇文章将介绍另一个医学人工智能的突破。
总结
- 斯坦福医院与其合作者训练了一个系统来识别本来只能通过活体检测才能确诊的皮肤疾病。
- 这是一个非常有用的临床试验,将成为皮肤病实际研究过程中一个很重要的一部分。
- 他们使用了一个13万张皮肤病样本的数据集来对训练系统同时进行测试,相比临床上典型的病例数据更加丰富。
- 训练的图像经过严格的下采样,删除了90%的像素值。
- 他们使用了一个树状结构来组织训练数据,通过对757类样本的训练提高识别的准确性。他们甚至对系统提出了更高的要求,例如可以判断“这个病变是否需要活体检测”。
- 在是否需要活体检测这个任务上,系统做的比皮肤病专家要好,它有着更高的正确性和更少的误报率。
- 虽然可能存在着监管问题,但是已经开发出了一款识别皮肤病的手机应用。希望在接下来的一两年内,消费者应该可以使用到这个好东西。
- 对皮肤科的影响目前还不清楚,实际上由于活体检测的任务不断增加,至少在短期内,皮肤病医生不会失业。
作者 | Luke Oakden-Rayner 链接https://lukeoakdenrayner.wordpress.com/2017/06/05/the-end-of-human-doctors-the-bleeding-edge-of-medical-ai-research-part-2/