前列腺癌检测 AI 算法登上《柳叶刀》:分类性能超过人类专家,还能完成其他临床任务...

本文主要是介绍前列腺癌检测 AI 算法登上《柳叶刀》:分类性能超过人类专家,还能完成其他临床任务...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:AI科技评论

本文约2200字,建议阅读6分钟。

本文为你介绍一种基于人工智能的算法,其用来处理常规临床应用任务,具体而言是辅助前列腺疾病诊断。

近日,《柳叶刀-数字医疗》期刊刊登了一篇“用人工智能算法诊断前列腺癌”的论文,论文中,作者除了报告了一项盲法临床验证研究,还部署了一种基于人工智能的算法用来处理常规临床应用任务,具体而言是辅助前列腺疾病诊断。

在算法性能测试中,该 AI 算法用内部数据得到的AUC是0.997,在UPMC外部验证数据集上,其AUC是0.991。换句话说,性能指标超过了一般的AI算法。

论文地址:

https://www.thelancet.com/journals/landig/article/PIIS2589-7500(20)30159-X/fulltext

这篇论文的作者是来自UPMC和匹兹堡大学的研究员,他们提出的算法的核心技术是多层卷积神经网络,专门为图像分类任务而设计。整个算法工作的流程有三个连续的步骤:组织检测、分类和病理图片级别分析。 

算法和临床应用一览

具体而言,先使用数千个图块对梯度提升(Gradient Boosting)分类器进行训练,目的是为了区分图片中的组织区域和背景区域;然后用分离出的组织区域训练三个基于CNN的模型。

这些模型接受了1,357,480张贴有标签图块的训练,这些图块是从549张图片的“手工标注”中提取出来的,而这549张图片则是根据不同的标准,从65,000张图片中挑出来的。

值得一提的是,“手工标注”由三位资深病理学家完成,每位都从业20~40年。

模型训练好之后,作者又用了1,600张图片进行了测试,这1,600张图片取自100名在 UPMC 就诊的疑似前列腺癌患者。

测试结果是:AI在前列腺癌症检测方面表现出了98%的敏感性和97%的特异性,此外,不仅是癌症检测,在完成例如肿瘤分级等其他临床上重要的特征任务方面,也有比较高的性能。更值得注意的是,AI还“看”出了6张人类专家没检测出的前列腺癌图片。

同时,作者也提出,这并不一定意味着这台机器比人类更优秀。但对于经验较少的病理学家来说,该算法可以作为一个故障保险机制,帮助他们“漏检”错过的病例。

毕竟在评估这些病例的过程中,病理学家可能只是在病人的样本中看到了其他地方恶性肿瘤的足够证据,从而推荐治疗。不过,对于经验较少的病理学家来说,该算法可以作为一个故障保险机制,发现否则可能会错过的病例。

作者在论文中还表示,在训练人工智能算法和模型的时候,过拟合是一个非常常见的问题,尽管在训练数据中进行测试时表现良好。但在训练集之外的数据上进行测试时,性能会出现下降。虽然有多种策略可以避免过度拟合(例如,交叉验证),但真正的性能只能通过外部数据集的盲法研究来确定。

在这里,作者创新性地使用了外部的、不同地理、盲试验数据集( blinded dataset)来测试算法的性能和实用性。在论文中,作者称:“据我们所知,很少有医学研究尝试过这样的验证,尤其是对于应用范围较窄,性能明显较低的算法。”

网友评论:褒贬不一

此项研究的新闻也被网友贴在了Reddit的人工智能版块,引起了一波小讨论,有的网友持赞成态度,肯定了AI在癌症和心脏病发病几率预测方面的工作;也有的网友,对作者使用的算法产生了好奇,也提出了精度和召回率的疑问。


例如,上面这位网友:AI对于医疗行业来说不可或缺,特别是在预测癌症和心脏病发病几率方面。

这应该是属于专用的算法,没有数据和代码共享,这让复现成为了一个问题......我们应该如何解决这个问题。

还有网友说:“虽然有非常好的结果,但在精确度方面并不比专家高出多少。”在这条帖子下面,也有网友“交流”到:“普通患者不太可能从专家小组那里得到诊断,他们只是从普通的医生那里得到诊断。而人工智能可以让每个人都能得到“专家”诊断。”

AI会取代影像科医生么?

在今年一月份,关于前列腺癌AI辅助诊断研究就曾经发表在《柳叶刀肿瘤》杂志,当时作者在论文中得出的结论是:用AI系统来检测和分级前列腺穿刺活检样品中的癌症,在部分场景中其等级可与前列腺病理学专家相媲美。

另外,在1月2日,Google Health联合多个机构在《Nature》杂志上发表了一篇论文,介绍了一种新型的深度学习钼靶影像系统。根据Google的说法,这个系统与之前的模型相比,该模型有效减少了乳腺癌被错误识别或遗漏的情况,将乳腺癌检测的假阳性率降低了5.7%,假阴性率也降低了9.4%,并号称击败了6名受过“”全日制教育”的放射科医生。

当然,Google对该成果过于夸大的公关措辞,随之也引来了图灵奖得主Yann Lecun以及中美多位知名学者在社交媒体上的炮轰。

可以看到,当前的一些AI医学研究动不动就是“超越专家”、“打败人类”,尤其是在影像科这种计算机视觉“容易”攻克的领域,AI即将取代人类的声音最盛。

那么问题来了,AI在医学影像方面取代人类么?换句话说,当前影像学有哪些地方在短期离不开人类。

 

2018年,英国影像学AI大牛Hugh Harvey发布了一篇《Why AI will not replace radiologists》,称:“无论你已经有多么深信甚至痴迷AI和自动化的诸多可能性,要想在不久的将来完全替代人类影像科医生是完全不可能的。”

当时,他给出了三个理由:第一、医学影像科医生不是只会看片子,诊断推导仍然是最难啃的那块骨头,也是人类有最多存在感的地方;第二、人类始终要承担最终责任,几乎不可想象人工智能系统的所有者在人命关天时,会让机器负全部法律责任;第三、生产力进步将驱动需求,最明显的表现是:在影像科,只要你能安排多一个医生来检查患者,就总会有患者来补上这个空位。

这也正如《柳叶刀-数字医疗》那篇论文而言,AI算法或许很优秀,或许在很多方面准确度、精度比人类高,但是人类终究是不可或缺的。

https://scitechdaily.com/artificial-intelligence-identifies-prostate-cancer-with-near-perfect-accuracy/

https://zhuanlan.zhihu.com/p/33424522

https://www.thelancet.com/journals/landig/article/PIIS2589-7500(20)30159-X/fulltext

编辑:王菁

校对:林亦霖

这篇关于前列腺癌检测 AI 算法登上《柳叶刀》:分类性能超过人类专家,还能完成其他临床任务...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901345

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir