亚马逊专家揭秘:如何建立自动检测乳腺癌的深度学习模型
安妮 编译自 Insight Data Science
量子位出品 | 公众号 QbitAI
本文作者Sheng Weng,现亚马逊Alexa项目组数据专家,莱斯大学应用物理专业已毕业博士生,主要研究用超快激光转化生物光子学成像及显微镜检查。
前不久,他参加了Insight Data Science的青年计划——这是一个为期7周的博士后团体的交流计划,是学术界与企业界的医学数据研究交流桥梁。参加本项目期间,Sheng Weng为为医疗检测公司iSono创建了用深度学习自动检测乳腺癌的新模型,并将研究原理发布在公司的官方博客上。量子位全文编译整理如下:
△Sheng Weng照片 背景资料
乳腺癌是导致全球女性死亡的第二大癌症类型,其中,浸润性乳腺癌是主要的乳腺癌类型。据报道,美国八分之一的女性都会被确诊为浸润性乳腺癌。在2017年,粗略预计有255180例患者被确诊为浸润性乳腺癌,有40610位患者死于乳腺癌。
一般来说,医生都会建议健康女性一年做一次乳腺癌检查,尤其是年过50的中年妇女,她们的患病率较高。传统的检查流程一般包括乳房X射线和超声图像检测,但这是一种比较主观的诊断,非常依赖医生的水平。
iSono Health是一个初创公司,致力于开发低成本的自动超声图像检测平台,促进女性每月进行乳腺癌自我检测。我创建的模型需要借助iSono的app分析检测结果,它能够用超声图像区分乳腺肿块是良性还是恶性的,并且可以实时记录并查看。
数据概览
iSono Health提供了一份原始数据集,包含2684个JPEG格式的2D乳腺超声检测图像。我们将这些原始数据进行了归类:
良性案例:1007例
恶性病例:1499例
非典型病例:178例
良性致病类型:12例
恶性致病类型:13例
非典型致病类型:3例
大多数的超声检测图像大小为300*225像素,每个像素的值在0到225之间。这些图像来自不同的渠道,所以对病情的判定和解决方案都不尽相同。总共有12例良性致病类型和13例恶性致病类型,下图就展示了集中不同致病类型的乳腺病变。
为了使病变检测成为一个二进制的分类问题(良性或恶性),我忽略了所有的致病类型和非典型病例信息,并随机挑选了1920张图像用于建立和评估模型——这些图像中一半是良性的,而另一半是恶性的,是一个相对平衡的数据集。
数据准备
我用3*3的中值滤波器来移除超声图像中的斑点噪音,将每个图像上的像素值标准化,这样就会出现零均值。
先说明一点,对于乳腺癌这种复杂的图像分类问题,1920张图像是一个相对较小的数据集。扩充数据能够减少过度拟合,增强模型的泛化能力,是极具吸引力的解决方案。我们将这个数据集分成三部分,75%用于训练,12.5%用于验证,剩下的12.5%作为测试数据集。基于乳腺病变对旋转并不敏感的假设,我将每张图片进行旋转。具体来说,就是将每张图片在-10°到10°之间随机进行旋转,并重复了12次,最终得到1920*12=23040张图像。因为我想让整个病变区位于图像的核心,所以并没有使用裁剪或移动等其他的增强技术。
根据观察,几乎所有图片中的病变区(包含病变处和四周)都在图像*,因此我可以把图片裁剪成200*200像素大小,这样也能移除图像旋转引起的填充。为了保持网络可控,每张图像降低采样到原图像的五分之一,也就是40*40像素大小。下面这张图就是数据准备的流程图。
数据增强步骤结束之后,现在手边有17280张训练图像,2880张验证图像,和2880张用于测试的图像。每个数据集都包含着50%的良性病例和恶性病例。在数据增强之前,验证和测试集和训练集要分开,所以各分组间没有重叠的原始图像。
算法
为了得到合适的分类器,常规方法通常是三个步骤:特征提取、特征选择和分类。这三个步骤需要单独被处理好,之后再整合在一起。提取判别特征可能会减轻后续特征选择和分类难度。然而,有效特征是基于问题的,并且高度依赖图像处理中每个中间结果 ,所以通常需要很多试错设计和针对不同用户的干预措施。
近年来深度学习技术的进步可能会改变图片分类的设计。《自然》杂志最近报道了一项用深度卷积神经网络对皮肤癌进行分类的进展,其效果与皮肤病专家的判断相当。没有定义“深度”的具体含义,但简单来讲它是每个神经元之间可能存在的联系数量,确实真正影响了深度学习结构的“深度”。
深度学习可以直接从训练数据数据中提取特征,而不需要对特征的提取和选择进行详细描述。神经网络将输入信息通过层层的神经元传递,之后将输入信息转换成输出信息。有了反向传播的帮助,神经网络的内部权重会根据每次迭代获得的错误信息自动更新。
在这个项目中,我研究并比较了两种不同深度学习架构的表现——即全连接神经网络(FCNN)和卷积神经网络(CNN)。这两种模型都是使用python和TensorFlow在Nvidia Tesla K80 GPU上实现的,用的是亚马逊云服务(AWS)EC2 p2.xlarge。
全连接神经网络
在一个全连接神经网络中,每个神经元与前一层所有神经元连接,每个连接都有自己的权重。然而,权重间的信息却不被神经元共享。在用全连接神经网络之前,需要增加一个额外步骤——将所有的2D图像转化为长度为1600的1D序列。
我构建的全连接神经网络有一个输入层,三个隐藏层(各自分别有512、256和128个节点),和一个有两个输出的输出层。
卷积神经网络
在一个卷积神经网络中,每个神经元只与前一层的几个局部神经元联系在一起,并且在该层中每个神经元的权重相同。因为卷积运算产生的信息与图像的空间特性相关,因此卷积神经网络很适合解决图像分类问题。例如,卷积可能导致图像边缘更加突出。
我构建的卷积神经网络有三个卷积层,每一层都是上一层的图像通过5*5的滤波器/内核(kernel)卷积形成。将一个卷积层的输出输入给另一个卷积层,可以提取出更高阶的特征。卷积后,这些特征可更容易被全连接网络学习。卷积层可以被看做是为数据做准备的,让全连接层能够利用输入图像的空间结构。我的直觉是,在图像经过多个卷积层后,神经元将被编码成完全相关的空间特征。卷积层后有两个全连接层,分别有512和256个节点。这个卷积神经网络架构的灵感来自AlexNet的前几层,下图显示了详细的信息。
模型评价
卷积神经网络比全连接神经网络在下面的评价指标中表现得要好。卷积神经网络的预测精度是73%,而全连接神经网络的精度只有66%。在下面这张复杂的矩阵图中,分类良性和恶性肿瘤病例的阈值是0.5,也是我们之前的默认值。降低阈值可以提高灵敏度,减少假阳性病例。即这种情况下有一个微妙的平衡,假阳性病例具有重要的暗示——尤其是在预防性乳房切除术上。
卷积神经网络的优点也可以在下面两个图表中观察到。在第3000次训练迭代后,卷积神经网络的精确度快速且平稳地增加到0.9,而全连接神经网络在经过10000次迭代后还达不到这一水平。另一方面,卷积神经网络的损失值比全连接神经网络要低,这表明卷积神经网络中的梯度下降函数在收敛到局部最小值处表现最好。损失值是由成本函数计算的,基本定义了模型与期望输出值之间的差距。梯度下降试图通过缓慢改变权重将价值函数最小化。
这两个模型中都应用了随机梯度下降(SGD)和线性整流函数(ReLU),此外还采用了学习率衰减的方式提升性能表现。Dropout能够防止其过拟合。
结语
这些代码将给iSono Health作为下一步算法开发的基准模型。卷积神经网络具有许多可以进一步调整的超参数,包括但不限于:卷积层数、完全连接层数、滤波器数量、滤波器尺寸、隐藏节点数、批量大小、学习速率、最大值合并大小,丢弃率等。此外,更好的图像增强以及来源一致的图像可能表现地更好。
从零开始构建CNN耗时且计算成本昂贵,学习是另一种可行的解决方案。它指利用预先训练的深度学习模型(例如,GoogleNet Inception v3)学习特征过程,然后应用于不同的数据集。如果有更多的数据可用,转移学习可能有助于培训程序。
最后,对所有帮助过我的人表示感谢。
参考资料
[1]http://www.breastcancer.org/about_us/press_room/press_kit/facts_figures
[2] Cheng, Jie-Zhi, et al. “Computer-Aided diagnosis with deep learning architecture: applications to breast lesions in us images and pulmonary nodules in CT scans.” Scientific reports 6 (2016).
[3] Esteva, Andre, et al. “Dermatologist-level classification of skin cancer with deep neural networks.” Nature (2017).
[4] MLA Krizhevsky, Alex, et al. “Imagenet classification with deep convolutional neural networks.” Advances in neural information processing systems (2012).
【完】