Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法

本文主要是介绍Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文题目:Knowledge graph-enhanced molecular contrastive learning with functional prompt

论文链接:https://doi.org/10.1038/s42256-023-00654-0

项目地址:GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence paper "Knowledge graph-enhanced molecular contrastive learning with functional prompt".Code and data for the Nature Machine Intelligence paper "Knowledge graph-enhanced molecular contrastive learning with functional prompt". - GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence paper "Knowledge graph-enhanced molecular contrastive learning with functional prompt".icon-default.png?t=N7T8https://github.com/HICAI-ZJU/KANO

发表期刊:Nature Machine Intelligence

引言

借助 AI的分子性质预测模型,可以评估候选药物的临床试验成功率和治疗潜力,极大地提升了药物研发的效率,能够显著降低因后期失败带来的经济损失。当前,大多数基于分子的自监督学习方法由数据驱动,通常仅考虑原子之间通过化学键建立的联系,未能充分挖掘分子图中原子间的潜在关联,从而使其结果缺乏可解释性。此外,预训练任务往往与下游任务有很大差异,这意味着直接将预训练得到的表示应用于下游任务,可能无法取得理想的性能表现。

因此,本文提供了一种有力的辅助药物发现的分子性质预测工具。通过融合化学元素知识图谱中的基础化学信息作为先验知识,激发模型在理解分子语义和拓扑结构方面的潜在能力。

方法

图1: KANO模型总览

图2: ElementKG概览

首先,本文基于元素周期表和维基百科,构建了一个“化学元素知识图谱”(ElementKG)。ElementKG 从化学元素的角度呈现了一个全面且标准化的视图,覆盖了元素的类层次结构、化学属性、元素间的关系、相关官能团及官能团与其组成元素间的连接。

在此基础上,本文提出了一种基于功能提示的知识图谱增强分子预训练方法。在预训练阶段,针对分子中存在的元素和官能团类型,从ElementKG中检索相应的实体和关系,创建一个增强的分子图。该分子图融合了基础领域知识,并捕获了拥有相同元素类型的原子间的基本关系,即使它们并未通过化学键直接相连。此方法用于构建对比学习的正样本对,并通过预训练获得分子的向量表示。该表示在保留拓扑结构的同时,整合了关键的化学语义。

在预训练后,为了弥补预训练对比任务和下游任务之间的差距,本文提出使用官能团知识作为提示,以激励预训练的图编码器,并从ElementKG的官能团知识中生成功能提示。首先,检测输入分子中的所有官能团,并检索其在ElementKG中的对应实体嵌入,构建可学习的中介变量,以捕捉每个官能团的重要性。接下来,将自注意力机制应用于中介变量和官能团实体的嵌入,以全面聚合其语义并获得功能提示。该方法有效提升了分子属性预测的准确性,同时确保了一定程度的可解释性。

实验

本文在14个分子性质预测的基准测试中对KANO进行了全面的评估,展现了其优越的性能。

图3: KANO在14个基准数据集上获得了优越的性能

为深入评价KANO在表示空间质量上的表现,研究主要聚焦于对齐性和均匀性两大纬度,并与现有最具代表性的有监督模型、基于预测的预训练模型及基于对比的预训练模型进行对比分析。实验结果揭示,KANO能够将拥有相同主要构造(scaffold)的分子映射到相近的表示空间,并确保所得表示向量在单位球面上均匀分布,进而保留更多的数据信息。

图4: KANO通过元素知识增强的预训练获得高质量的分子表示空间

进一步地,通过可视化官能团的注意力权重,本文探讨了KANO的预测可解释性。可解释性分析表明,KANO能够在分子中识别出具有特殊化学意义的子结构,并通过激活与下游任务密切相关的知识,来实现预训练目标与下游性质预测目标之间的对齐。

图5: KANO通过官能团提示指导的微调感知具有特殊化学意义的子结构

总结

本文提出了KANO,一种通过结合化学领域的专业知识来增进分子属性预测任务新策略。在知识图谱的指导下进行的预训练使KANO获得了高质量的分子表征空间,同时,官能团提示捕捉了与下游任务相关的、富有化学意义的子结构信息。当然,KANO也存在一些局限性。例如,ElementKG可能无法充分体现分子系统的复杂性,现有的官能团提示可能无法捕捉子结构之间的远程相互作用。面对这些挑战,未来的研究方向可能包括:首先,可以将ElementKG扩展到其他化学领域或与其他现有知识图谱融合,以提供更全面、更系统的理解分子的途径。其次,探讨KANO所学习的表征的可解释性和官能团提示捕捉的化学知识,为分子设计和优化提供深入的见解。最后,探讨将KANO与其他技术整合的方法,以增强其在小数据集上的性能,并进一步加速药物的发现过程。

这篇关于Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Python实现文件下载、Cookie以及重定向的方法代码

《Python实现文件下载、Cookie以及重定向的方法代码》本文主要介绍了如何使用Python的requests模块进行网络请求操作,涵盖了从文件下载、Cookie处理到重定向与历史请求等多个方面,... 目录前言一、下载网络文件(一)基本步骤(二)分段下载大文件(三)常见问题二、requests模块处理

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

Java CompletableFuture如何实现超时功能

《JavaCompletableFuture如何实现超时功能》:本文主要介绍实现超时功能的基本思路以及CompletableFuture(之后简称CF)是如何通过代码实现超时功能的,需要的... 目录基本思路CompletableFuture 的实现1. 基本实现流程2. 静态条件分析3. 内存泄露 bug

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb