当前位置: 首页 > article >正文

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

Neurips23

推荐指数:#paper/⭐⭐⭐#​(工作量不小)

动机

在大多数分子表征学习方法中,分子被视为 1D 顺序标记或2D 拓扑图,这限制了它们为下游任务整合 3D 信息的能力,这使得 3D几何预测/生成几乎不可能。为此,作者提出了一种3D分子表征学习方法

模型框架

在这里插入图片描述

贡献:

  1. backborn:基于 Transformer 的模型,可以有效地捕获输入的 3D 信息,并直接预测 3D 位置。
  2. 预训练。两个大规模数据集:一个 209M 分子构象数据集和一个 3M 候选蛋白质口袋数据集,分别用于分子和蛋白质口袋的预训练 2 个模型。以及两个预训练任务:3D 位置恢复和掩蔽原子预测,用于有效学习 3D 空间表示。
  3. 微调。适用于各种下游任务的多种微调策略。例如,如何在分子性质预测任务中使用预训练的分子模型;如何在蛋白质-配体结合姿势预测中结合两个预训练模型。

backborn的设计:

常用有两种的设计:GNN与transformer

由于GNN在捕获领域信息有优势,而局部连接的图缺乏捕捉原子之间长距离相互作用的能力。作者认为长距离信息更有用,因此选择Transformer 作为 Uni-Mol 中的主干模型。因为它完全连接了节点/原子,因此可以学习可能的长程相互作用。

在这里插入图片描述

整体结构概述

如图 2 所示,Uni-Mol 主干是基于 Transformer 的模型。它有两个输入,原子类型和原子坐标。模型中维护了两种表示形式(atom 和 pair)。原子表示由 Embedding 层从 atom 类型初始化;对表示由原子坐标计算的不变空间位置编码初始化。特别是,基于原子之间的成对欧几里得距离,对表示对全局旋转和平移是不变的。这两种表示在 self-attention 模块中相互通信。

编码3D位置:

编码 3D 位置 由于其排列不变性,Transformer 在没有位置编码的情况下无法区分输入的位置。与 NLP/CV 中使用的离散位置不同 ,3D 空间中的位置(坐标)是连续值。此外,位置编码过程在全局旋转和平移下需要保持不变。已经提出了几种 3D 空间位置编码来解决这个问题,我们没有兴趣重新发明一种新的编码。因此,我们对现有的编码进行了基准测试,并使用了一个简单而有效的编码:原子对的欧几里得距离,然后是一个对类型感知的高斯核。

此外,由于不变的 3D 空间位置编码是在对级编码的,作者还在 Transformer 中维护了对级表示,以增强 3D 空间表示。具体来说,对表示被初始化为上述空间位置编码。

然后,为了更新对表示,作者通过 self-attention 中的多头Query-Key 产品的结果使用atom到pair 通信。形式上,ij 对表示的更新表示为

q i j l + 1 = q i j l + { Q i l , h ( K j l , h ) T d ∣ h ∈ [ 1 , H ] } , \boldsymbol{q}_{ij}^{l+1}=\boldsymbol{q}_{ij}^l+\{\frac{\boldsymbol{Q}_i^{l,h}(\boldsymbol{K}_j^{l,h})^T}{\sqrt{d}}|h\in[1,H]\}, qijl+1=qijl+{d Qil,h(Kjl,h)Th[1,H]},(多头注意力,H是通道数)

从形式上讲,具有对原子通信的自我注意表示为:

A t t e n t i o n ( Q i l , h , K j l , h , V j l , h ) = s o f t m a x ( Q i l , h ( K j l , h ) T d + q i j l − 1 , h ) V j l , h , \mathrm{Attention}(\boldsymbol{Q}_i^{l,h},\boldsymbol{K}_j^{l,h},\boldsymbol{V}_j^{l,h})=\mathrm{softmax}(\frac{\boldsymbol{Q}_i^{l,h}(\boldsymbol{K}_j^{l,h})^T}{\sqrt{d}}+\boldsymbol{q}_{ij}^{l-1,h})\boldsymbol{V}_j^{l,h}, Attention(Qil,h,Kjl,h,Vjl,h)=softmax(d Qil,h(Kjl,h)T+qijl1,h)Vjl,h,

其中 V l V_l Vl h j h_j hj是第l层第h个头中第 j 个原子的值。

预测位置编码

x ^ i = x i + ∑ j = 1 n ( x i − x j ) c i j n , c i j = R e L U ( ( q i j L − q i j 0 ) U ) W , \hat{\boldsymbol{x}}_i=\boldsymbol{x}_i+\sum_{j=1}^n\frac{(\boldsymbol{x}_i-\boldsymbol{x}_j)c_{ij}}{n},\quad c_{ij}=\mathrm{ReLU}((\boldsymbol{q}_{ij}^L-\boldsymbol{q}_{ij}^0)\boldsymbol{U})\boldsymbol{W}, x^i=xi+j=1nn(xixj)cij,cij=ReLU((qijLqij0)U)W,

此外,为了与 delta 位置预测保持一致,Uni-Mol 使用 delta 对表示来更新坐标,而 EGNN 直接使用对表示。我们在附录 D.3 中的基准测试表明 Uni-Mol 中的那个更好。

预训练策略

由于目的是预测位置信息,因此像bert一样的mask操作实际上是不可行的。因此,作者设计了一种新的mask策略。

在这里插入图片描述

具体的是,随机位置被用作损坏的输入 3D 位置,而不是掩码,并且模型经过训练以预测正确的位置。然而,学习从随机位置到真实原子位置的映射是非常具有挑战性的。

  1. 重新分配,给定 m 个原子和 m 个随机位置,有 m!可能的任务。其中,遵循稳态作用原理 [47],我们可以使用具有最小 delta 位置的那个。由于难以找到最优解,我们使用高效的贪婪算法来找到次优的重新分配。
  2. 噪声范围,我们可以限制随机位置的空间,只允许具有噪声 (r) 的随机位置围绕真实位置。这里有一个权衡;如果 r 很大,则需要重新分配以使学习可行;如果 r 很小,则可能不需要重新分配

然后,在输入坐标损坏的情况下,使用两个额外的头来恢复正确的位置。1) 配对距离预测。基于对表示,该模型需要预测损坏的原子对的正确欧几里得距离。2) 坐标预测。基于 SE(3)-Equivariant 坐标头,该模型需要预测损坏原子的正确坐标。

最后,mask corrupt原子的原子类型,并使用head来预测正确的原子类型。为了方便微调,与 BERT 类似,使用一个特殊的原子 [CLS],其坐标是所有原子的中心,用于表示整个分子/口袋。

微调阶段

这部分有不同的任务,需要不同的微调。

非 3D 预测任务

我们可以简单地使用 [CLS] 的表示,它代表整个分子/口袋,或者所有原子的平均表示,带有线性头来微调下游任务。在具有口袋-分子对的任务中,我们可以连接它们的 [CLS] 表示,然后用线性头进行微调。

分子或口袋的 3D 预测任务

在 Uni-Mol 中,这个任务直接变成了一个构象优化任务:根据不同的输入构象生成一个新的构象。具体来说,在微调中,模型监督学习从 Uni-Mol 生成的构象到标记构象的映射。此外,输出构象可以通过 SE(3)-Equivariant head 端到端生成

蛋白质-配体对的 3D 预测任务

见论文

在这里插入图片描述

后续内容和这个方向的积累有关,等积累够,重读这篇文章(读前面的文章以及transformer)

相关文章:

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK

UNI-MOL: A UNIVERSAL 3D MOLECULAR REPRESENTATION LEARNING FRAMEWORK Neurips23 推荐指数:#paper/⭐⭐⭐#​(工作量不小) 动机 在大多数分子表征学习方法中,分子被视为 1D 顺序标记或2D 拓扑图,这限制了它们为下游任务整合…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)

7.3. 查询计划相关操作符 48)Key Lookup:该操作符对一个有簇索引的表进行书签查找。参数列包含簇索引的名字和用于查找簇索引中数据行的簇键。该操作符总是伴随一个Nested Loops操作符。如果其参数列中出现WITH PREFETCH子句,则查询处理器已决定使用异步预取(预读,read-ah…...

C语言【基础篇】之数组——解锁多维与动态数组的编程奥秘

数组 🚀前言🦜数组的由来与用途🌟一维数组详解🖊️二维数组进阶💯动态数组原理🤔常见误区扫盲💻学习路径建议✍️总结 🚀前言 大家好!我是 EnigmaCoder。本文收录于我的专…...

C++ 字符串编码转换

UTF8 的string 转 UTF16 的 wstring std::wstring Utf8ToUtf16(const std::string& utf8Str) { // 获取 UTF-16 字符串所需的缓冲区大小 int wstrLength = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, NULL, 0); if (wstrLength == 0) { // …...

通讯录管理小程序

通讯录管理系统 是对c基础语法的巩固,比较简单的一个小程序,重点在于养成良好的c代码习惯。 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 下面是一些需要实现的功能: 1. 添加联系人 功能描述&…...

掌握API和控制点(从Java到JNI接口)_38 JNI从C调用Java函数 01

1. Why? 将控制点下移到下C/C层 对古典视角的反思 App接近User,所以App在整体架构里,是主导者,拥有控制权。所以, App是架构的控制点所在。Java函数调用C/C层函数,是合理的。 但是EIT造形告诉我们: App…...

理解UML中的四种关系:依赖、关联、泛化和实现

在软件工程中,统一建模语言(UML)是一种广泛使用的工具,用于可视化、设计、构造和文档化软件系统。UML提供了多种图表类型,如类图、用例图、序列图等,帮助开发者和设计师更好地理解系统的结构和行为。在UML中…...

windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件

邻近感应检测是蓝牙低功耗 (LE) 的常见用途。 本部分提供了创建可用于开发 UWP 设备应用的邻近感应配置文件的设备实现的指南。 在开发此应用之前,应熟悉蓝牙 LE 函数和蓝牙 LE 邻近感应配置文件规范。 示例服务声明 蓝牙低功耗引入了一个新的物理层,…...

【截图】selenium自动通过浏览器截取指定元素div的图片

【截图】selenium自动通过浏览器截取指定元素div的图片 思路 截取完整网页截图 通过元素的坐标 截图到指定位置的图片 前提是已经获取到 driver 了 # 定位目标divtarget_div driver.find_element(By.CLASS_NAME, headlines-right)# 获取div的位置和大小location target_div…...

【算法】动态规划专题⑨ —— 二维费用背包问题 python

目录 前置知识进入正题实战演练 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 进入正题 二维费用背包问题 方法思路 二维费用背包问题在传统背包问题的基础上增加了第二个维度的限制(如重量)。 每个物品具有两种费用&#x…...

免费windows pdf编辑工具Epdf

Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …...

MVCC机制深度解析

在数据库管理系统中,多版本并发控制(MVCC,Multi-Version Concurrency Control)是一种用于提高数据库并发性能的技术。它通过在同一数据项上存储多个版本,允许事务在读取数据时不必等待其他事务的完成,从而提…...

C++:类和对象初识

C:类和对象初识 前言类的引入与定义引入定义类的两种定义方法1. 声明和定义全部放在类体中2. 声明和定义分离式 类的成员变量命名规则 类的访问限定符及封装访问限定符封装 类的作用域与实例化类的作用域类实例化实例化方式: 类对象模型类对象的大小存储…...

伪分布式Spark3.4.4安装

参考:Spark2.1.0入门:Spark的安装和使用_厦大数据库实验室博客 我的版本: hadoop 3.1.3 hbase 2.2.2 java openjdk version "1.8.0_432" 问了chatgpt,建议下载Spark3.4.4,不适合下载Spark 2.1.0: step1 Spark下载…...

kafka服务端之控制器

文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker,其中有一个broker会被选举为控制器(Kafka Controler),它负责管理整个集群中所有分区和副本的状态。…...

element-plus el-tree-select 修改 value 字段

element-plus el-tree-select 修改 value 字段 &#xff0c;不显示label 需要注意两个地方&#xff1a; <el-tree-select v-model"value" :data"data" multiple :render-after-expand"false" show-checkbox style"width: 240px" …...

SQL最佳实践(笔记)

写在前面&#xff1a; 之前baeldung的Java Weekly &#xfeff;Reviews里面推荐了一篇关于SQL优化的文章&#xff0c;正好最近在学习数据库相关知识&#xff0c;记一些学习笔记 原文地址&#xff1a;SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…...

在 Java 中执行一个复杂的 SQL 查询(包含多表连接、子查询和聚合函数),如何确保查询的性能?请列举至少三条措施。请简要描述其工作原理?

在Java中执行复杂的SQL查询时&#xff0c;确保查询性能是非常重要的。 以下是三条关键措施&#xff0c;以及它们的详细解释、代码示例和实际开发中的注意事项。 1. 使用索引 索引是提高数据库查询性能的最基本手段之一。通过在查询条件中使用的列上创建索引&#xff0c;可以…...

java将list转成树结构

首先是实体类 public class DwdCusPtlSelectDto {//idprivate String key;//值private String value;//中文名private String title;private List<DwdCusPtlSelectDto> children;private String parentId;public void addChild(DwdCusPtlSelectDto child) {if(this.chil…...

【R语言】数据分析

一、描述性统计量 借助R语言内置的airquality数据集进行简单地演示&#xff1a; 1、集中趋势&#xff1a;均值和中位数 head(airquality) # 求集中趋势 mean(airquality$Ozone, na.rmT) # 求均值 median(airquality$Ozone, na.rmT) # 求中位数 2、众数 众数&#xff08;mod…...

传输层协议 UDP 与 TCP

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 前置复盘&#x1f98b; 传输层&#x1f98b; 再谈端口号&#x1f98b; 端口号范围划分&#x1f98b; 认识知名端口号 (Well-Know Port Number) 二&#xf…...

Linux 调用可执行程序

Linux 调用可执行程序 1. system() 函数1.1 system() 函数的声明1.2 system() 函数的不同场景返回值1.3 system() 函数的代码示例 2. exec() 函数族2.1 exec() 函数族的声明2.2 exec() 函数族执行失败的情况2.3 exec() 函数族的代码示例 3. exec() 与 system() 的区别以及使用注…...

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用

概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案&#xff0c;包括 DTO语言 更全面更强大的缓存机制&#xff0c;以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力&#xff0c;包括Jimmer独创的远程异常 …...

剪辑学习整理

文章目录 1. 剪辑介绍 1. 剪辑介绍 剪辑可以干什么&#xff1f;剪辑分为哪些种类&#xff1f; https://www.bilibili.com/video/BV15r421p7aF/?spm_id_from333.337.search-card.all.click&vd_source5534adbd427e3b01c725714cd93961af 学完剪辑之后如何找工作or兼职&#…...

IDEA查看项目依赖包及其版本

一.IDEA将现有项目转换为Maven项目 在IntelliJ IDEA中,将现有项目转换为Maven项目是一个常见的需求,可以通过几种不同的方法来实现。Maven是一个强大的构建工具,它可以帮助自动化项目的构建过程,管理依赖关系,以及其他许多方面。 添加Maven支持 如果你的项目还没有pom.xm…...

centos虚拟机迁移没有ip的问题

故事背景&#xff0c;我们的centos虚拟机本来是好好的&#xff0c;但是拷贝到其他电脑上就不能分配ip&#xff0c;我个人觉得这个vmware他们软件应该搞定这个啊&#xff0c;因为这个问题是每次都会出现的。 网络选桥接 网络启动失败 service network restart Restarting netw…...

Java 大视界 -- Java 大数据在智能供应链中的应用与优化(76)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Java中的继承及相关概念

在 Java 中&#xff0c;继承是一种允许一个类继承另一个类的特性。通过继承&#xff0c;子类可以获取父类的属性和方法&#xff0c;这有助于减少代码冗余并提高代码的可维护性。以下是关于文件内容的相关分析和知识点总结&#xff1a; 一、继承的核心概念 1.继承的语法 Java …...

赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索

hello~朋友们&#xff01;好久不见&#xff01; 今天给大家带来赛博算命第三期——梅花易数的java实现 赛博算命系列文章&#xff1a; 周易六十四卦 掐指一算——小六壬 更多优质文章&#xff1a;个人主页 JAVA系列&#xff1a;JAVA 大佬们互三哦~互三必回&#xff01;&#xf…...

DNS攻击方式有哪些,应该采取哪些应对措施?

在当今数字化时代&#xff0c;网络已成为人们生活和工作不可或缺的一部分。而 DNS&#xff08;域名系统&#xff09;作为互联网的关键基础设施&#xff0c;如同电话簿一般&#xff0c;将人们易于记忆的域名转换为计算机能够识别的 IP 地址&#xff0c;让我们能够轻松访问各类网…...