当前位置: 首页 > 科技观察

PathAI利用机器学习推动药物开发

时间:2023-03-15 15:43:57 科技观察

PathAI利用机器学习促进药物研发他们开发的平台旨在通过利用机器学习中的现代方法,如图像分割、图神经网络和多实例学习,大幅提高复杂疾病的诊断准确性和疗效评估。传统的手动病理学容易出现主观性和观察者变异性,这会对诊断和药物开发试验产生负面影响。在深入探讨如何使用Pytorch改进诊断工作流程之前,让我们首先介绍一种不依赖机器学习的传统模拟病理工作流程。传统生物制药的工作原理生物制药公司可以通过多种方式发现新的治疗方法或诊断方法。其中一种途径在很大程度上依赖于对病理切片的分析来回答各种问题:特定的细胞通讯途径是如何工作的?特定疾病状态是否与特定蛋白质的存在或不存在有关?为什么临床试验中的某种药物对某些患者有效,而对其他患者无效?患者治疗结果与新生物标志物之间是否存在关系?等。为了帮助回答这些问题,生物制药公司通常依靠专业病理学家来分析载玻片并帮助评估它们是否存在可能的问题。正如您想象的那样,需要经过委员会认证的病理学家才能做出准确的解释和诊断。在一项研究中,36名不同的病理学家获得了一份活检结果,该结果导致了18种不同的诊断,其严重程度从不治疗到必要的积极治疗不等。病理学家还经常征求同事对疑难边缘病例的反馈。鉴于问题的复杂性,即使有专家培训和合作,病理学家也很难做出正确的诊断。这种潜在的差异可能是由于批准的药物和临床试验失败的药物之间的差异造成的。PathAI如何使用机器学习推进药物开发PathAI开发了一系列机器学习模型,旨在为药物开发、临床试验和诊断提供见解。为此,PathAI利用Pytork框架进行幻灯片推理,使用多种方法,包括图形神经网络(GNN)和多实例学习等方法。在这种情况下,“载玻片”指的是载玻片的全尺寸扫描图像,载玻片是中间有一层薄薄的组织的载玻片,经过染色可显示各种细胞结构。PyTorch使我们的团队能够使用这些不同的方法来共享一个通用框架,该框架足够强大,可以在我们需要的所有条件下工作。此外,PyTorch的高级、命令式和Pythonic语法使我们能够快速构建模型原型,然后在获得所需结果后扩展这些模型。千兆字节图像的多实例学习将机器学习技术应用于病理学的一个独特挑战是图像的巨大尺寸。这些数字幻灯片通常具有100,000x100,000像素或更高的分辨率,并且在GB范围内。在GPU内存中加载完整图像并在其上应用传统计算机视觉算法几乎是一项不可能完成的任务。注释完整的幻灯片图像(100kx100k)也是时间和资源密集型的,尤其是当注释者是领域专家(委员会认证的病理学家)时。我们经常构建模型来预测图像级标签,例如覆盖整个图像数千个像素的患者载玻片上是否存在癌症。癌变区域有时只是整个幻灯片的一小部分,这使得机器学习问题类似于大海捞针。另一方面,一些问题,例如某些组织学生物标志物的预测,需要聚合整个幻灯片的信息,由于图像的大小,这也很难实现。在将机器学习技术应用于病理学问题时,所有这些因素都会增加显着的算法、计算和逻辑复杂性。将图像分解成更小的块,学习切片表示,然后合并这些表示以预测图像级标签是解决此问题的一种方法,如下图所示。一种常用的方法称为多实例学习(简称MIL)。每个切片被认为是一个“实例”,一组切片形成一个“包”。聚合单个切片表示以预测最终的包级标签。从算法上讲,包中的单个切片实例不需要标签;因此,允许我们以弱监督的方式学习包级标签。他们还使用排列不变的池化函数,使预测独立于切片的顺序,并允许有效地聚合信息。通常,使用基于注意力的池化函数不仅可以高效聚合,还可以为包中的每个切片提供注意力值。这些值表示相应切片在预测中的重要性,可以将其可视化以更好地理解模型预测。这种可解释性元素对于推动这些模型在现实世界中的采用很重要,我们使用诸如附加MIL模型之类的变体来实现这种空间可解释性。在计算上,MIL模型避免了将神经网络应用于大尺寸图像的问题,因为切片表示是独立于图像尺寸获得的。在PathAI中,我们使用基于深度网络的自定义MIL模型来预测图像级标签。该过程概述如下:1.使用不同的采样方法从载玻片中选择切片。2.根据随机抽样或启发式规则构造一组切片。3.基于预训练模型或大规模表示学习模型为每个实例生成切片表示。4.应用置换不变池化函数得到最终的幻灯片级别分数。现在,我们已经在Pytork中看到了一些关于MIL的高级细节。接下来,让我们看看一些代码,以及在Pytork中从构思到生产代码是多么容易。我们首先定义采样器、变换和MIL数据集:#创建一个采样器包,从幻灯片中随机采样切片bag_sampler=RandomBagSampler(bag_size=12)#设置变换crop_transform=FlipRotateCenterCrop(use_flips=True)#为每个包加载切片创建datasettrain_dataset=MILDataset(bag_sampler=bag_sampler,samples_loader=sample_loader,transform=crop_transform,)在定义了采样器和数据集之后,我们需要定义使用这个数据集实际训练的模型。这可以通过使用熟悉的PyTorch模型定义语法轻松完成,同时还允许我们创建自定义模型。classifier=DefaultPooledClassifier(hidden_??dims=[256,256],input_dims=1024,output_dims=1)pooling=DefaultAttentionModule(input_dims=1024,hidden_??dims=[256,256],output_activation=StableSoftmax())#由featurizer定义,池化模型组成ofmodulesandclassifiersmodel=DefaultMILGraph(featurizer=ShuffleNetV2(),classifier=classifier,pooling=pooling)由于这些模型是端到端训练的,因此它们提供了一种强大的方法,可以直接从千兆像素将整个幻灯片图像转换为单个标签。由于其对不同生物学问题的广泛适用性,其实施和部署的两个方面很重要:对管道每个部分的可配置控制,包括数据加载器、模型的模块化部分以及它们之间的交互。通过“概念-实施-实验-生产”循环可以实现快速迭代。Pytork在MIL建模方面具有各种优势。它提供了一种直观的方式来创建具有灵活控制流的动态计算图,这对于快速研究实验非常有用。地图样式数据集、可配置采样器和批量采样器使我们能够自定义切片包的构建方式,从而实现更快的实验。由于MIL模型是IO密集型的,数据并行性和pythonic数据加载器使任务非常高效且用户友好。最后,PyTorch的面向对象特性支持可重用模块的构建,这有助于快速实验、可维护的实现和组合组件,以便于构建管道。在PyTorch中使用GNN探索空间组织结构在健康和患病的组织中,细胞的空间排列和结构通常与细胞本身一样重要。例如,在评估肺癌时,病理学家试图查看肿瘤细胞的整体分组和结构(它们是否形成实心片?或者它们是否出现在较小的局部集群中?)以确定癌症是否属于不同的特定亚型广泛。细胞和其他组织结构之间的这种空间关系可以使用图表进行建模,以便同时捕获组织拓扑和细胞组成。图神经网络(GNN)允许学习这些图中与其他临床变量相关的空间模式,例如某些癌症中的基因过度表达。2020年底,当PathAI开始在组织样本上使用GNN时,PyTorch通过PyG包对GNN功能提供了最好、最成熟的支持。这使得PyTork成为我们团队的自然选择,因为我们知道GNN模型是我们想要探索的重要机器学习概念。在组织样本的背景下,GNN的主要附加值之一是图形本身可以揭示空间关系,否则仅通过目视检查很难发现这些关系。在我们最近的AACR出版物中,我们表明,通过使用GNN,我们可以更好地理解肿瘤微环境中免疫细胞聚集体(尤其是三级淋巴结构或TLS)的存在对患者预后的影响。在这种情况下,GNN方法用于预测与TLS存在相关的基因表达,并识别与TLS区域外的TLS相关的组织学特征。如果没有ML模型的帮助,这种对基因表达的洞察很难从组织样本的图像中辨别出来。我们成功使用的最有前途的GNN变体之一是自注意力映射池。接下来我们看看我们是如何使用PyTorch和PyG来定义self-attentiongraphpool(SAGPool)模型的:classSAGPool(torch.nn.Module):def__init__(self,...):super()。__init__()self.conv1=GraphConv(in_features,hidden_??features,aggr='mean')self.convs=torch.nn.ModuleList()self.pools=torch.nn.ModuleList()self.convs.extend([GraphConv(hidden_??features,hidden_??features,aggr='mean')foriinrange(num_layers-1)])self.pools.extend([SAGPooling(hidden_??features,ratio,GNN=GraphConv,min_score=min_score)foriinrange((num_layers)//2)])self.jump=JumpingKnowledge(mode='cat')self.lin1=Linear(num_layers*hidden_??features,hidden_??features)self.lin2=Linear(hidden_??features,out_features)self.out_activation=out_activationself.dropout=dropout在上面的代码中,我们首先定义了一个卷积层,然后添加了两个模块列表层,允许我们传入可变数量的层。然后,我们获取空模块列表并附加可变数量的GraphConv层,后跟可变数量的SAGPooling层。然后,我们通过添加一个JumpingKnowledge层、两个线性层、一个激活函数和一个退出值来完成SAGPool定义。PyTorch的直观语法使我们能够抽象出使用SAG池等最先进方法的复杂性,同时保持我们熟悉的模型开发通用方法。像我们上面描述的使用SAG池的模型只是GNN与PyTorch如何让我们探索新想法的一个例子。我们最近还探索了一种多模态CNN-GNN混合模型,该模型的结果比传统病理学家的共识分数高20%。这些创新,以及传统CNN和GNN之间的相互作用,再次受益于从研究到生产的较短模型开发周期。改善患者结果总之,为了实现我们使用AI驱动的病理学改善患者结果的使命,PathAI需要ML开发框架的帮助:(1)在开发和探索的初始阶段(即作为代码的模型配置)(2)规模模型训练和对海量图像的推断(3)轻松可靠地为我们产品的生产使用(临床试验及以后)提供模型。正如我们在本文中展示的那样,PyTorch为我们提供了上述所有功能以及更多功能。我们对PyTorch框架的未来感到无比兴奋,甚至迫不及待地想看看我们可以使用该框架解决哪些其他有影响力的挑战。译者介绍朱宪忠,社区编辑,专家博主,讲师,潍坊某高校计算机教师,自由编程资深人士。早期专注于各种微软技术(编译成三本与ASP.NETAJX和Cocos2d-X相关的技术书籍)。/ESP32/RaspberryPi等物联网开发技术和Scala+Hadoop+Spark+Flink等大数据开发技术。原标题:案例研究:PathAI使用PyTorch通过人工智能病理学改善患者预后,作者:LoganKilpatrick、HarshithPadigela、SyedAsharJaved、RobertEgger