Kaggle2017年医师考试难点-1百万美金的肺癌检测竞赛的难点哪儿

&img src=&/v2-fcfed498dad1_b.jpg& data-rawwidth=&1080& data-rawheight=&810& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/v2-fcfed498dad1_r.jpg&&&blockquote&&p&&em&5 月 27-28 日,机器之心在北京 898 创新空间顺利主办了第一届全球机器智能峰会(GMIS 2017)。中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃为大会做了开幕式致辞。大会第一天,「LSTM 之父」Jürgen Schmidhuber、Citadel 首席人工智能官邓力、腾讯 AI Lab 副主任俞栋、英特尔 AIPG 数据科学部主任 Yinyin Liu、GE Transportation Digital Solutions CTO Wesly Mukai 等知名人工智能专家参与峰会,并通过主题演讲、圆桌论坛等形式从科学家、企业家、技术专家的视角对人工智能技术前沿和未来发展进行了解读。&/em&&br&&/p&&/blockquote&&p&大会第一天下午,清华大学智能技术与系统国家重点实验室朱军发表了主题为《珠算:贝叶斯深度学习的 GPU 库》的演讲,他探讨分享了贝叶斯深度学习模型的计算平台:珠算。该平台由清华大学机器学习组开发,目前已经在 GitHub 上开源,参阅机器之心之前的报道《&a href=&/?target=http%3A//mp./s%3F__biz%3DMzA3MzI4MjgzMw%3D%3D%26mid%3D%26idx%3D3%26sn%3D993fd5f82bb6b11ec667cb%26chksm%3D871b245ab06cad4c453c4d27aad150da05f5a821b34d7b254c9b%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&清华大学发布珠算:一个用于生成模型的 Python 库&i class=&icon-external&&&/i&&/a&》。&br&&/p&&p&珠算项目地址:&a href=&/?target=https%3A///thu-ml/zhusuan& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&thu-ml/zhusuan&i class=&icon-external&&&/i&&/a&&br&&/p&&p&在 GMIS 2017 大会上,朱军从深度学习谈起,对该项目进行了更加深入的介绍,同时还在深度生成模型、贝叶斯推理等更广泛方面分享了自己的思考。在这篇文章中,机器之心对朱军的演讲内容进行了整理,同时为了更便于阅读,也进行了适当的编辑。&/p&&a class=&video-box& href=&/?target=https%3A///x/page/y0509hhzfyr.html& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&GMIS 2017 | 朱军:贝叶斯深度学习的GPU库_腾讯视频& data-poster=&/qqvideo_ori/0/y0509hhzfyr_228_128/0& data-lens-id=&&&
&img class=&thumbnail& src=&/qqvideo_ori/0/y0509hhzfyr_228_128/0&&&span class=&content&&
&span class=&title&&GMIS 2017 | 朱军:贝叶斯深度学习的GPU库_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/page/y0509hhzfyr.html&/span&
&/a&&p&&strong&以下是该演讲视频的主要内容:&/strong&&/p&&br&&p&谢谢机器之心的邀请,很高兴有这个机会和大家分享一下我们实验室做的计算平台,因为我们是实验室,不像公司里有那么多的人,但我们做的东西是属于比较前沿的。&/p&&br&&img src=&/v2-bf6a306c1e727c8cf3dd961d1e6d5eae_b.png& data-rawwidth=&649& data-rawheight=&357& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&/v2-bf6a306c1e727c8cf3dd961d1e6d5eae_r.png&&&p&我们研究的是贝叶斯深度学习,首先我跟大家分享一下为什么要关心贝叶斯深度学习。&/p&&br&&p&&strong&贝叶斯深度学习&/strong&&/p&&br&&p&现在深度学习在各个领域里有很多用处。虽然 Deep Learning 非常好,但还不足够好。我们看一下大家都很熟知的 Deep Learning 还存在的两个问题:&/p&&br&&img src=&/v2-63fc53c9db60c4735555f_b.png& data-rawwidth=&988& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&988& data-original=&/v2-63fc53c9db60c4735555f_r.png&&&p&一个问题是(深度学习)可能不是很鲁棒。可能会存在这种所谓的对抗样本,这有一个简单的例子,比如你有一个建筑物的图片,你可以用一个训练很好的神经网络分类得很准确。但是,我们可以加一些噪声,这些噪声可能是人检测不到的,合成一个图片之后却可以完全误导这个网络,甚至能够按照你的意愿误导分到某一个类。这是非常不好的性质,尤其我们在关键领域用深度学习的时候——一旦遇到这种情况发生,可能就会有一些比较致命性的错误发生。所以我们就想提出一个问题:机器学习或者深度学习本身能不能像人一样犯错误?人可能更多的时候是更鲁棒的,人可能会犯错误,但是人犯的错误相对都是比较直观、比较合理一点的——可能有某种道理在里面。&/p&&br&&p&另外一个问题是深度学习大部分情况下都被我们当成一个黑箱。所以现在有很多的工作,包括我们自己的工作,都是试图去解释深度学习学到了什么。这里我们列了一个去年做的 CNNVis 的工作,能展示卷积网络每一层是什么、层和层之间是怎么关联的。这个方法非常受欢迎,也从一个侧面说明了大家对这个问题关心的程度。&/p&&br&&p&在我看来,Deep Learning 本身属于机器学习的一个极端,它用了大量的训练样本,用了大量的计算资源。结果是我们在很多任务下,在特定环境、特定数据集上可以得到非常高的准确度,当然背后也有我们对网络结构的人为调整。&/p&&br&&p&另外一端是贝叶斯的学习方法,大家可能知道,2015 年的时候,在 AlphaGo 火之前,Science 有一篇文章就说怎么设计贝叶斯程序,在这种情况下可以用少量的训练样本帮助我们学非常精确的模型,当时展示的成果是这个贝叶斯程度可以(在手写体数字生成和识别任务上)通过视觉图灵测试。这从一个方面告诉我们:我们做学习的时候可以有不同的思路。&/p&&br&&img src=&/v2-d0bfe073c3ca6d1df127a_b.png& data-rawwidth=&956& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&956& data-original=&/v2-d0bfe073c3ca6d1df127a_r.png&&&p&这是学习范式的两个极端,两者之间就有很多的事情可以做。我们把中间称之为「贝叶斯深度学习(Bayesian Deep Learning)」。它既有贝叶斯本身的可解释性,可以从少量的数据里边来学习;另外又有 Deep Learning 非常强大的拟合能力。&/p&&br&&img src=&/v2-b72cd4b4a3a6de1d82b966eb506d4d63_b.png& data-rawwidth=&631& data-rawheight=&479& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/v2-b72cd4b4a3a6de1d82b966eb506d4d63_r.png&&&p&给大家看一个最近非常火的例子,叫深度生成模型(Deep Generative Models),这是典型的融合了深度学习和贝叶斯方法的模型。这里做了一个抽象:上面有一个隐含的变量,用 Z 表示;中间会经过一个深度神经网络,你可以根据你的任务选择不同的神经网络、不同的深度、不同的结构;下面是我们观察到的数据 X。这个场景有很多,比如对抗生成网络,可以生成高维的自然图片。实际上,Z 可以是非常随机的噪声,通过神经网络可以生成非常高质量的图片。&/p&&br&&p&在这种框架下,我们可以做很多。比如可以给隐含变量设定某些结构信息,比如生成人脸时,有一些变量指代人的姿态,另外一些变量可能描述其他的特征,这两个放在一起我们就可以构建这样一个深度生成模型。&/p&&br&&p&它同一列有同一姿态,可以变化其它变量来生成不同的图片。现在是非常受欢迎、非常强大的一种模型了。&/p&&br&&p&下面用更形式化的方式进行描述。我们用概率模型来描述,比如对 Z 变量(隐含变量),我们会用 P(Z) 来描述它的先验分布;中间有一个参数化的神经网络做变换;最后生成我们想要的数据 X。在不同场景下,这个 Z 的含义可能不一样。比如:如果要生成医学图片,我们通常希望 Z 能够表达造成疾病的原因;而对于文本图片,我们可能希望理解背后的主题等等。&/p&&br&&img src=&/v2-200c7add0fbbec66e88f9d_b.png& data-rawwidth=&769& data-rawheight=&387& class=&origin_image zh-lightbox-thumb& width=&769& data-original=&/v2-200c7add0fbbec66e88f9d_r.png&&&p&这个模型其实非常直观,但是它的难点在于我们所谓的 Inference(推断),这个过程是反向过来的——在 Inference 过程中,观察一些 X,然后我们用一些推导工具推导出我们观察到的 Z 到底是什么。在这个过程中,我们要用到一个主要的公式——贝叶斯公式。&/p&&br&&p&&strong&珠算&/strong&&/p&&br&&img src=&/v2-c1dafd98d86a789eb39356_b.png& data-rawwidth=&902& data-rawheight=&338& class=&origin_image zh-lightbox-thumb& width=&902& data-original=&/v2-c1dafd98d86a789eb39356_r.png&&&p&那么珠算平台到底是起到什么作用呢?&/p&&br&&p&我们都知道有很多公开的框架可以支持深度学习进行非常迅速的开发和原型设计,但目前还并没有很好的平台能支持贝叶斯深度学习。所以,我们构建了称之为珠算的平台。珠算平台可以支持我们进行深度学习,也可以支持贝叶斯推断,当然还可以是两者之间有机的融合。&/p&&br&&p&大家知道,珠算或算盘是最古老的计算机器(calculating machine),被认为是中国的历史第五大发明。我们之所以取名为「珠算」,就是希望这个平台能够从某种意义上给传统算盘一种新的解释,同时还希望这个平台能够进行高效的计算。&/p&&br&&img src=&/v2-35eb85e3f3b1c7d3e757ca7ac07d606e_b.png& data-rawwidth=&866& data-rawheight=&351& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&/v2-35eb85e3f3b1c7d3e757ca7ac07d606e_r.png&&&p&珠算是一个生成模型的 Python 库,构建于 TensorFlow 之上。珠算不像现有的主要是为监督学习而设计的深度学习库,它是一种扎根于贝叶斯推断并支持多种生成模型的软件库。珠算区别于其他平台的一个很大的特点,即可以深度地做贝叶斯推断,因此,也就可以很有效地支持深度生成模型。珠算平台可以在 GPU 上训练神经网络,同时我们可以在上面做概率建模和概率推断,带来好处有:可以利用无监督数据、可以做小样本学习、可以做不确定性的推理和决策、可以生成新的样本等等。&/p&&br&&img src=&/v2-2dc4e097f25a1d800887cde4_b.png& data-rawwidth=&868& data-rawheight=&365& class=&origin_image zh-lightbox-thumb& width=&868& data-original=&/v2-2dc4e097f25a1d800887cde4_r.png&&&p&为了做珠算平台,第一步是个抽象过程,需要把一类的模型能够抽象表达出来,在这里我们用贝叶斯网络。贝叶斯网络是在深度学习流行之前非常主流的方法,它是一种非常好的形式化方式,能非常直观地刻画模型。但是,与传统的贝叶斯网络不通,我们是深度融合了贝叶斯方法和深度神经网络的优点,因此,我们的贝叶斯网络有两类节点:随机的节点和确定性的节点。确定性的节点基本上对应了深度神经网络的非线性变换,而随机节点可以描述不确定性。珠算是完全支持这两种节点的。在确定性的节点上我们把 TensorFlow 的所有操作都继承了下来。我们可以像在 TensorFlow 上构建神经网络一样构建中间的一些模块。如上图所示,构建一个模型很直观。我们首先只需要初始化 BayesianNet 环境,然后按照直观写模型。&/p&&br&&img src=&/v2-91c2bf0d8c88da51aa0800_b.png& data-rawwidth=&903& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&903& data-original=&/v2-91c2bf0d8c88da51aa0800_r.png&&&p&这是一个具体的例子,如上图所示,我们需要生成手写体字符,这种情况下因为数据不是很高维,用简单的生成模型就够了,比如有一个 Z 变量,Z 是随机的,经过两层的全连接的神经网络,最后生成我们的 X,这种模型在珠算里面非常容易写。可以在起始化 BayesianNet 环境之后,就沿着箭头的方向来写。比如:我们说 Z 变量服从一个高斯分布(z = zs.Normal()),珠算平台中有正态分布函数可以刻画该分布。接下来是两层的全连接层(layers.fully_connected()),最下面是数据的生成,比如我们数据是二值的,那么可以用伯努力随机分布来刻画它,这是非常直观地写模型的框架。你可以根据自己的需要书写其他的生成模型。&/p&&br&&img src=&/v2-5defab6b2dfeba_b.png& data-rawwidth=&1050& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&1050& data-original=&/v2-5defab6b2dfeba_r.png&&&p&对于这种模型最难的实际上是推断部分,在机器学习里有两类的推断方法,一种是变分(Variational)方法,一种是蒙特卡罗模拟方法。对于变分方法来说,红色的点是我们的目标,在某个概率分布空间里面,但我们并不能直接计算。所以,变分方法主要是希望在某个简化的子集里找一个蓝色的点去逼近它,我们希望这个逼近是最优的,所以通常情况下要解决最优化问题。这里边有很多推导公并没有提到。对于 MCMC 方法来说,现在主流的解决方法是构造一些动力学方程,以达到模拟的效果,这里也隐含了很多技术细节。&/p&&br&&p&因此,即使是非常简单的模型,如果要做推断都可能需要很多的数学推导,我们需要算梯度、调步长参数等等。而且很多步骤可能都会使我们犯错误,所以这是一个复杂的过程。而珠算要做的就是简化推导实现的过程,并用一个非常简洁的(概率)编程方式写出来,编程对计算机来说是最容易理解的。&/p&&br&&img src=&/v2-d72ddffa776e_b.png& data-rawwidth=&898& data-rawheight=&356& class=&origin_image zh-lightbox-thumb& width=&898& data-original=&/v2-d72ddffa776e_r.png&&&p&给大家两个例子看我们怎么通过珠算实现推断的。首先,比如我们要做一个变分推断,在珠算上变分推断只需要三步:第一步,我们要构造一个变分分布,这个变分分布就像我前面讲的生成模型一样,可以通过初始化一个 BayesianNet,然后非常直观地写每部分是确定性的还是随机的等等。第二步,可以调用一下变分目标(variational objective),比如 z.sgvb,珠算上实现了不同的变分目标。剩下的事情,就是使用梯度下降进行迭代,就像我们实现深度神经网络一样,不断地使用随机梯度下降进行迭代而达到优化,这是典型变分推断的实现。&/p&&br&&img src=&/v2-45fa2a07e2f3d_b.png& data-rawwidth=&964& data-rawheight=&354& class=&origin_image zh-lightbox-thumb& width=&964& data-original=&/v2-45fa2a07e2f3d_r.png&&&p&如果我们要做的是 HMC,HMC 是一个混合的蒙特卡罗方法或者哈密尔顿蒙特卡罗方法,这属于机器学习里面的一种十分优秀的算法,它可以处理高维空间里面的采样,该算法在珠算上也非常容易来实现。我们首先需要构建变量以储存样本,然后就可以初始化 HMC 采样器。接下来调用 sample() 函数就可以得到一个采样算子,随后的在不断运行样本迭代时,就像求解一个最优化算法一样。如果大家熟悉深度神经网络过程的话,基本上我们对这种贝叶斯神经网络可以完全对等地去实现。&/p&&br&&p&&strong&贝叶斯深度学习怎么用?&/strong&&/p&&br&&img src=&/v2-ffd028164faebbce7c3a7e71e9cd5669_b.png& data-rawwidth=&942& data-rawheight=&385& class=&origin_image zh-lightbox-thumb& width=&942& data-original=&/v2-ffd028164faebbce7c3a7e71e9cd5669_r.png&&&p&贝叶斯深度学习在什么地方可以用?我给大家看一些例子。在我们课题组里主要强调如何用非常少的标注数据进行有效的学习。在机器学习里边有一个大家研究很多的叫半监督学习(Semi—supervised Learning)的场景,它可以利用大量的未标注数据帮助从少量标注数据中学习分类器。技术细节我就不说了,来看看结果。这个红色框里面是我们做出的结果,比如说在 SVHN 的数据集上,我们大概用 1% 的训练数据就可以达到 5% 的错误率,这个是目前最佳的结果。&/p&&br&&p&因为我们是一个生成模型,所以我们还可以去生成新的样本,比如说我们可以生成二维的手写体字符。在一维上固定一个变量,调另外一个变量,生成你想要的某个类别或者某种风格的字符。&/p&&br&&img src=&/v2-f1dbe8e73cbdebf4d6e8d_b.png& data-rawwidth=&1301& data-rawheight=&412& class=&origin_image zh-lightbox-thumb& width=&1301& data-original=&/v2-f1dbe8e73cbdebf4d6e8d_r.png&&&p&这是更新的工作,我们是在生成对抗网络(GAN)上做的。大家知道 GAN,它的生成效果很好了。我们在小样本的学习下面也可以做非常好的效果,我们提出了一个 Triple GAN 的工作。在这个自然图片的数据集上,比之前大家做的各种 GAN 变种的结果显著要好(错误率更低)。大家同时可以看出来,这个生成结果和自然图片也非常接近了。&/p&&br&&img src=&/v2-0a432ed22a27acee8ae5f64373bdca09_b.png& data-rawwidth=&1091& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&1091& data-original=&/v2-0a432ed22a27acee8ae5f64373bdca09_r.png&&&p&下面一个例子是我前面提到过的——用贝叶斯方法做小样本学习。这是一个极端的例子,就是在训练的时候给它看一些基本的数据,将来在测试的时候会遇到新的类别(或概念),我们只给它看一个训练样例,然后希望它能够从中学出来一个贝叶斯程序,可以生成同一类的数据或者做识别。我们现在有一些在汉字上做的初步结果。给大家看一些例子,比如最上面给出了某一种字的一个样例,下面是生成出来的;基本上,大家能看出来和原始给的那个字的风格还是非常一致的,所以这个效果还是非常好的。一些技术细节我在这里就不详细说了。&/p&&br&&img src=&/v2-855ce59b59bd4e3fcbb12c949d9b5119_b.png& data-rawwidth=&1095& data-rawheight=&358& class=&origin_image zh-lightbox-thumb& width=&1095& data-original=&/v2-855ce59b59bd4e3fcbb12c949d9b5119_r.png&&&p&最后一个例子也是我前面讲的鲁棒的 Deep Learning。Deep Learning 有很多潜在攻击样本,我怎么让它变得更鲁棒?实际上,最近有一些工作显示使用贝叶斯推理可以让深度神经网络变得更鲁棒,比如:剑桥做的一个工作,这是我们复现出来的在一个数据集上的比较。这个测试数据集有一半是攻击样本、一半是正常样本。这个黑色的线是一个标准的神经网络,不用贝叶斯推理,它的正确率从 0.9 几(可能 0.97、0.98)一下子降到 0.6 几,降得非常严重。蓝色的线是贝叶斯神经网络,它可以做到更好,可以达到 75%、80% 左右的正确率,已经是非常不错的。右边的图是说你可以过滤掉多少对抗样本。大家可以看出来,这个蓝色的线,用贝叶斯网络可以帮助我们更好地识别对抗样本,提升鲁棒性。我们最近做了一个工作,结果是红色的线,能够更显著地识别 adversarial sample 和 normal sample,两个混在一起的时候,测试准确度能够显著地提升,实际上我们可以在一定条件下 达到图中的 Normal Accuracy。&/p&&br&&img src=&/v2-6b8fd330a86d9536acc2e90f4c987aca_b.png& data-rawwidth=&801& data-rawheight=&417& class=&origin_image zh-lightbox-thumb& width=&801& data-original=&/v2-6b8fd330a86d9536acc2e90f4c987aca_r.png&&&p&我们已经开源了珠算平台,现在我们把它当作是一个研究平台,也欢迎大家去尝试。我们在上面也开发了很多当前最佳的模型,包括经典的贝叶斯 logistic 回归、最新的贝叶斯神经网络、变分自编码器、GAN、主题模型 等等,我们自己也在不断做一些新模型。下面是开源的页面,大家可以在 GitHub 上找到。我们也写了一些 Online Documents,解释 API 怎么定义的,另外还有教程可以指导大家很快来实现比如我前面举例的网络模型。&br&&/p&&br&&img src=&/v2-5ac8f84cf_b.png& data-rawwidth=&1265& data-rawheight=&449& class=&origin_image zh-lightbox-thumb& width=&1265& data-original=&/v2-5ac8f84cf_r.png&&&p&特别感谢我们组的学生,这个项目主要是我的两个博士生 Jiaxin Shi(石佳欣)和 Jianfei Chen(陈键飞)主导的,贡献者还包括一些博士后和博士生以及本科生。这个项目也受到一些国家经费的支持,我们的合作者还有天工研究院、英伟达等等。&/p&&p&&img src=&/v2-fbd9b26ddd212ce90e38a4aff3f2c7c4_b.png& data-rawwidth=&843& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&843& data-original=&/v2-fbd9b26ddd212ce90e38a4aff3f2c7c4_r.png&&&b&机器之心整理&/b&&/p&
5 月 27-28 日,机器之心在北京 898 创新空间顺利主办了第一届全球机器智能峰会(GMIS 2017)。中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃为大会做了开幕式致辞。大会第一天,「LSTM 之父」Jürgen Schmidhuber、Citadel 首席人工…
谢邀。medical image analysis是个非常有意义的研究方向,按道理属于Computer Vision,但由于没有像CV里面物体识别场景识别里标准化的数据库和评测方法,一直比较小众。MICCAI是这个medical image analysis方向的顶会,目前并没有被deep learning统治,经常看到mean-shift以及其他比较基础的图片处理的算法,深度学习在这方面应该有很大潜力。CV里扎堆的优秀同学们不妨多看看这个方向,毕竟在某个疾病预测任务上能提升2%准确度比在Pascal VOC上费牛劲撸个0.5%提高有意义多了:)&br&&br&medical image analysis里面数据尤其宝贵,这次比赛放出来的数据以及这种公开比赛的模式应该能推动这个方向的发展。大致看了下比赛数据,“a thousand low-dose CT images from high-risk patients in &a href=&///?target=https%3A//en.wikipedia.org/wiki/DICOM& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DICOM&i class=&icon-external&&&/i&&/a& format. Each image contains a series with multiple axial slices of the chest cavity. Each image has a variable number of 2D slices, which can vary based on the machine taking the scan and patient.”,虽然只有1000多张CT图,但是每张图是很多slice,所以算是个cubic representation,可能可以从deep learning for 3D或者deep learning for video recognition等方向看看有没有合适的方法可以借鉴。我不是这方面的专家,就留给各位见仁见智了,欢迎分享。&br&&br&这里给大家提供一个cancer detection的相关工作作为参考。我CSAIL实验室前同事去年参加了个类似的比赛cancer metastasis detection:&a href=&///?target=https%3A//camelyon16.grand-challenge.org/results/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CAMELYON16 - Results&i class=&icon-external&&&/i&&/a&,他和Harvard medical school的朋友利用类似于CNN+FCN的网络取得了第一名。同事去年毕业了现在正在用这个成果做Startup,叫&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PathAI | Welcome&i class=&icon-external&&&/i&&/a&。论文也放出来了,感兴趣的朋友可以读读:&a href=&///?target=https%3A//people.csail.mit.edu/khosla/papers/arxiv2016_Wang.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&people.csail.mit.edu/kh&/span&&span class=&invisible&&osla/papers/arxiv2016_Wang.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&。网络结构大致如下图,思路挺简单。&br&&img src=&/v2-0c6d2a13b6e35ba90f96b8bc8bbd8d10_b.png& data-rawwidth=&687& data-rawheight=&421& class=&origin_image zh-lightbox-thumb& width=&687& data-original=&/v2-0c6d2a13b6e35ba90f96b8bc8bbd8d10_r.png&&&br&另外,在医学图像分析诊断预测里面,非常重要一点是模型的可解释性。就是你得解释清楚你这个AI模型为什么work了,或者为什么在某些情形不work。这点其实比在benchmark上单纯提升分数更难。在Deep learning一股脑调参调结构提升分数的年代,network interpretability这个问题普遍被忽略了。而这个人命关天的medical image analysis方向,模型的可解释性肯定必不可少。再好的模型,解释不了为啥work,可能连FDA审核都过不了。&br&&br&这里我安利一下我CVPR‘16上发表的一个工作:&a href=&///?target=http%3A//cnnlocalization.csail.mit.edu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CNN Discriminative Localization and Saliency&i class=&icon-external&&&/i&&/a&,代码也在这里&a href=&///?target=https%3A///metalbubble/CAM& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&metalbubble/CAM&i class=&icon-external&&&/i&&/a&。这个工作提出了一个叫CAM (Class Activation Mapping)的方法,可以给任意一个CNN分类网络生成热力图(Class Activation Map),这个热力图可以高亮出图片里面跟CNN最后预测结果最相关的区域,所以这个CAM能解释网络模型到底是基于图片里面哪些部分作为证据进行了这次预测。比如说如下图,我们在caltech256上fine-tune了网络,然后对于每张图生成跟这张图所属类别的Class Activation Map,然后就可以高亮出图片里面跟类别最相关的区域。这里在训练过程中,网络并没有接收到任何bounding box的标定。所以一个在medical image analysis上直接扩展是,CNN分类网络预测出这张图里面有很大概率有cancer,这个高亮出来的区域很可能就是cancer区域,感兴趣的同学不妨试试看,很期待你们有新的发现。&br&&img src=&/v2-18c37eb968854dede1eab_b.png& data-rawwidth=&491& data-rawheight=&191& class=&origin_image zh-lightbox-thumb& width=&491& data-original=&/v2-18c37eb968854dede1eab_r.png&&
谢邀。medical image analysis是个非常有意义的研究方向,按道理属于Computer Vision,但由于没有像CV里面物体识别场景识别里标准化的数据库和评测方法,一直比较小众。MICCAI是这个medical image analysis方向的顶会,目前并没有被deep learning统治,经常…
&img src=&/v2-21fde86ae2ecb53dc61cafc_b.png& data-rawwidth=&1257& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&1257& data-original=&/v2-21fde86ae2ecb53dc61cafc_r.png&&在今年早些时候,Google发了两篇关于人工智能医疗图像的科技文章:一篇是非常有名的关于皮肤癌检测的文章&a href=&/?target=https%3A///nature/journal/v542/n7639/abs/nature21056.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dermatologist-level classification of skin cancer with deep neural networks&i class=&icon-external&&&/i&&/a&,文章通过采用Inception v3的结构对皮肤癌图像进行了有效分类,更值得注意的是,模型的敏感性意料之内的能够超越了人类的识别能力,并且通过Tensorflow移植到了手机端做成了APP,在商业医疗方面有很广阔的应用前景。&img src=&/v2-10dd37c5cbab8_b.jpg& data-rawwidth=&600& data-rawheight=&416& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-10dd37c5cbab8_r.jpg&&&p&(上图为皮肤癌分类问题的样本分布)&/p&&p&另一篇是Google发的一篇科技博客&a href=&/?target=https%3A///2017/03/assisting-pathologists-in-detecting.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Assisting Pathologists in Detecting Cancer with Deep Learning&i class=&icon-external&&&/i&&/a&,主要内容讲的是针对病理图像中乳腺癌在淋巴结中的转移的检测任务。这篇文章的背景是医学顶级会议ISBI在2016年发布的Camelyon16的竞赛,竞赛的主要内容是对乳腺癌在淋巴结中的转移进行病理切片的分类与定位。很幸运,那段时间正好在&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DeepCare&i class=&icon-external&&&/i&&/a&公司学习工作,并且参加了Camelyon16和Camelyon17两届比赛,所以想分享一下自己关于深度学习中病理图像方面应用的一些经验和收获。&/p&&p&&img src=&/v2-f9f2e86d5bc_b.png& data-rawwidth=&1335& data-rawheight=&813& class=&origin_image zh-lightbox-thumb& width=&1335& data-original=&/v2-f9f2e86d5bc_r.png&&(一张淋巴结的病理图片,左边属于正常细胞组织,右边的细胞已经被癌细胞吞噬占领了)&/p&&h2&问题的由来&/h2&&p&一般来说,乳腺癌细胞的扩散方式通常会首先转移到附近的淋巴结中,所以在很多乳腺检查中,会提取一些附近淋巴结组织做成切片,经过切片、染色、扫描等过程后,生成如上图的图像。癌细胞和正常细胞在颜色、纹理、大小和组织形式上都会有很多的不同,一般来说就是“核大深染”的突出特征。在大医院中,很多上了年纪的且具有很多“看片”经验的医生炙手可热,这意味着人类同样需要很多经验才能正确的进行分析判断,而年轻的或缺乏经验的医生容易出现误判。Camelyon16希望我们能够通过计算机视觉技术帮助医生进行有效筛选,从而减少工作量和误判的可能性。&/p&&p&Camelyon16的任务是对测试集中的120张淋巴结病理切片进行判断是否发生了癌变(classification),同时需要对发生癌变的位置区域精准定位(segmentation);而Camelyon17的任务变得更加复杂,在16的基础上需要对发生癌变转移的区域进行大小判断,从而将病理切片分为Normal/ITC/Micro/Macro四个类别,最终根据每个病人的五张切片的定性结果确定病人的乳腺癌细胞转移的情况。(听起来挺复杂,也的确挺复杂)&/p&&img src=&/v2-21bee5ec0fba1f532bc57d_b.png& data-rawwidth=&716& data-rawheight=&531& class=&origin_image zh-lightbox-thumb& width=&716& data-original=&/v2-21bee5ec0fba1f532bc57d_r.png&&&p&官方一共给了110张含有癌细胞组织的切片(Tumor)和130张正常的组织切片(Normal),并对有癌症的区域进行了标记,最终确定120张切片的性质。看起来数据量很少,按照传统的图像处理方式应该是很简单的,但实际上数据的形式是金字塔数据形式,最大分辨率40X的图像矩阵大小大概是0000,一个样本的所占硬盘空间大小大概是5~6G。这也就意味着我们不太可能将图片全部加载到内存中,即使有足够的内存,也不可能把它加载到显卡内存中进行深度学习运算(可以想象一下如果这么大的矩阵采用3×3的卷积核进行运算的场景),所以对图片进行&b&预处理&/b&非常有必要。&/p&&img src=&/v2-25c01e9d2991edb2f5b74c44c1267c6c_b.png& data-rawwidth=&547& data-rawheight=&350& class=&origin_image zh-lightbox-thumb& width=&547& data-original=&/v2-25c01e9d2991edb2f5b74c44c1267c6c_r.png&&&p&(病理切片图像中金字塔型的数据结构)&/p&&h2&预处理&/h2&在经典问题中很少有图片会这么大,但也会遇到一些,比如遥感图像等;这类图像的处理办法一般会采用分块的方式进行处理,然后再将每一块的处理结果进行汇总从而得出结果。&p&对于一张病理图像来说,只有20%~30%的区域是有效区域RoI,如果每一块都要进行预处理,会导致处理时间过长,效率不高,所以需要做有效区域的提取。&br&&/p&&p&&img src=&/v2-279474bcb2d705e4a3d3_b.png& data-rawwidth=&839& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&839& data-original=&/v2-279474bcb2d705e4a3d3_r.png&&(左图是一张病理切片的10X左右的效果图,可以发现基本上大多数区域都是不需要的;右图的蓝色区域所围成的区域是癌症区域)&/p&&p&比如这样的一张病理切片:&/p&&p&&img src=&/v2-fcf49bca4fd_b.png& data-rawwidth=&764& data-rawheight=&539& class=&origin_image zh-lightbox-thumb& width=&764& data-original=&/v2-fcf49bca4fd_r.png&&首先将它进行通过特定的阈值算法,提取出前景部分:&/p&&p&&img src=&/v2-3a6edf333ecd7f06ccfca_b.png& data-rawwidth=&731& data-rawheight=&536& class=&origin_image zh-lightbox-thumb& width=&731& data-original=&/v2-3a6edf333ecd7f06ccfca_r.png&&之后,通过一些古典图像处理的算法,将图片的有效区域提取出来:&/p&&p&&img src=&/v2-2de6daaec3f9d317_b.png& data-rawwidth=&750& data-rawheight=&541& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-2de6daaec3f9d317_r.png&&于是我们就可以将每一部分根据坐标进行切分,从而生成很多小片(patch):&/p&&p&&img src=&/v2-ef28fc85fe5f14c2daee_b.png& data-rawwidth=&727& data-rawheight=&538& class=&origin_image zh-lightbox-thumb& width=&727& data-original=&/v2-ef28fc85fe5f14c2daee_r.png&&(上图黑色区域就是一片一片的patch,每一张都是一个256×256大小的图片)&/p&&p&这里可以给大家透露一下,由于要这个过程要商业化,所以我们做了一个非常强大的并行策略去进行图片切割,比原始方法进行切割的速度可以理论提升64倍。&/p&&p&由于比赛数据来自于不同的医院或研究机构,所采用了不同厂家的扫描仪,因此图片在色调上存在着很大的差异,这对模型来说,会造成confused现象,因此在做成数据集之前,对所有的图片进行了染色均一化过程:&/p&&img src=&/v2-a15a65bf8ab_b.png& data-rawwidth=&903& data-rawheight=&329& class=&origin_image zh-lightbox-thumb& width=&903& data-original=&/v2-a15a65bf8ab_r.png&&&p&其主要的思想是通过将RGB变换到HSV 色域表征,通过调节色调分布使得不同图像进行染色均一化。&/p&&p&之后便生成数据集。未加入Data Augmentation前,已经可以生成正样本数量120w张,负样本就更多了,一方面数据量比较多,可以提升模型泛化能力,另一方面这么多数据集对运算设备和运算框架也提出了很高的要求。&/p&&h2&模型设计&/h2&&p&Google采用的是Multi-Scales算法,仿照病理医生的情况,针对不同的大小视觉差 针对不同的置信结果,我们采用了二级网络进行训练:&/p&&p&在做这个实验的时候,我们用了两块Pascal Titan X。为了更好地利用计算空间来提升运算性能,我们用了&a href=&/?target=http%3A//mxnet.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MXNet&i class=&icon-external&&&/i&&/a&深度学习框架作为整体的解决方案(包括后来的商业部署Inference)。也非常感谢&a href=&/people/bae4da& data-hash=&bae4da& class=&member_mention& data-editable=&true& data-title=&@lau phunter& data-hovercard=&p$b$bae4da&&@lau phunter&/a&刘老师以及MXNet其他大神提供的解决办法。&br&&/p&&p&&img src=&/v2-cffe6ef07ed783_b.png& data-rawwidth=&926& data-rawheight=&520& class=&origin_image zh-lightbox-thumb& width=&926& data-original=&/v2-cffe6ef07ed783_r.png&&粗选网络采用VGG16同时搭配低阈值,精选网络采用ResNeXt101设定较高的阈值,最后进行模型融合从而提升模型结果。&/p&&p&这里分享一个小的Trick,在实验中我们发现,图片如果尺寸过小,会造成误报现象严重,这也是Google在那篇文章中提到的。&/p&&img src=&/v2-ae04caadba8_b.png& data-rawwidth=&707& data-rawheight=&473& class=&origin_image zh-lightbox-thumb& width=&707& data-original=&/v2-ae04caadba8_r.png&&&h2&后处理&/h2&&p&后处理也是一个比较麻烦的地方,我们直接将上述生成的heatmap再次送到一个新的网络中,进行后续操作,包括分类等。其他高排名的解决方案大多数采用了癌症区域面积的方式。(实际上我们这是比较偷懒的做法)&/p&&img src=&/v2-566ee002e5cb391abfcfb00_b.png& data-rawwidth=&824& data-rawheight=&563& class=&origin_image zh-lightbox-thumb& width=&824& data-original=&/v2-566ee002e5cb391abfcfb00_r.png&&&h2&后记&/h2&&p&DeepCare公司的最终比赛排名是:Camelyon16第8名,Camelyon17第13名。&/p&&p&名次不是特别好的原因主要是我拖累的这个比赛进度,在这里我还是对DeepCare公司抱有很深的歉意~~~
但DeepCare公司是我非常看好的一家人工智能医疗公司,在我因个人原因离开之前,公司进入了微软加速器并且获得了强力的A轮投资。&/p&&p&由于保密协议的原因,我没有办法公开任何有关代码,但是我同样非常欢迎交流和讨论,如果有机会参加Camelyon18的比赛,希望能有更多的人能够一起参赛。文章中如果有任何问题,非常欢迎各位批评指正,谢谢~&/p&&p&这篇文章写于2017年的端午节,刚好我完成了研究生学术论文答辩,同时已经签约到腾讯的AI Lab,继续从事有关计算机视觉技术的研究工作。这篇文章也算是对我这一年来的一个怀想吧!&/p&
在今年早些时候,Google发了两篇关于人工智能医疗图像的科技文章:一篇是非常有名的关于皮肤癌检测的文章,文章通过采用Inception v3的结构对皮肤癌图像进行了有效分类,更值…
已有帐号?
无法登录?
社交帐号登录
433 人关注
126 条内容
1426 人关注
935 条内容
380 人关注
648 人关注
406 条内容
1006 人关注}

我要回帖

更多关于 2017中考化学难点题型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信