分子生成领域的stable diffusion - GEOLDM

一、关于stable diffusion

很多人都知道stable diffusion,stable diffusion的出现改变了机器生成领域,让AI技术第一次无比的接近正常人。大语言模型,AIGC概念于是兴起。基于stable diffusion 大家开发了lora, hyperwork等微调技术,使得我们可以精确的控制生成图片,于是我们可以生成如下一些图片,以假乱真:

​​​​​​​

神奇的stable diffusion模型的架构如下:

stable diffusion模型架构简单理解:首先使用一个编码器,将图片编码到隐式空间的潜向量,然后基于该潜向量实现diffusion model的增噪和去噪过程,生成新的潜向量,然后再使用解码器,解码潜向量,生成新图片。关于stable diffusion的介绍,全网到处都是,感兴趣的可以仔细研究研究。

那么问题来了,在分子生成领域,在药物设计领域,是不是可以有一个stable diffusion 模型?实现真正的可控分子生成?让药物设计、分子设计领域的大语言模型真正的兴起,实现Drug-AIGC?要实现这一点的难点在于:药物分子是具有空间几何特征的(即旋转不变性和空间平移不变性),且不连续稀疏的。而图片更简单,是平面的且连续的。因此,基机器视觉开发的stable diffusion是不能直接使用于分子设计、药物设计等领域的,需要专门开发一个能处理空间几何与稀疏不连续的stable diffusion模型架构。

新发表的GEOLDM 模型实现了这一点。也许从此刻开始,变天了。Drug-AIGC真的要来了。分子设计领域有了stable diffusion模型,那么分子设计领域的lora还远吗?

二、分子生成领域的stable diffusion - GeoLDM

GEOLDM 模型是发表在2023年 ICML(全称:International Conference on Machine Learning)会议上的会刊 <Geometric Latent Diffusion Models for 3D Molecule Generation> 文章。第一作者是斯坦福大学计算机系的Minkai Xu。文章链接为:https://arxiv.org/pdf/2305.01140.pdf

GEOLDM模型可以生成3D的分子,在有条件或者无条件下都可以生成。

GEOLDM的全称是Geometric Latent Diffusion Models,几何隐式扩散模型。GEOLDM 是分子几何领域的第一个隐式扩散模型(简称:DM),由将结构编码为连续隐式向量的自动编码器和在隐式空间中运行的扩散模型组成。 文章的关键创新在于,对 3D 分子几何进行建模,通过构建具有不变标量和等变张量的点结构隐式空间来捕获其关键的旋转平移等变约束。

在GEOLDM模型中,分子中原子坐标和特征,即x,h会,被编码器编码成隐式向量,即z_x和z_h。然后在隐式空间内,对z_x和z_h进行T步的加噪过程,使用深度学习网络预测噪音,反向去噪,生成隐式向量。解码器根据去噪后的隐式向量生成分子。

注意,GEOLDM的扩散过程是操作在隐式向量空间的。这一点与之前的分子生成模型,EDM,Difflinker,Targetdiff等不同。之前的分子生成模型的扩散过程是直接操作在原子空间的,即添加噪音在坐标x和原子特征h上。而GEOLDM是将扩散过程操作在坐标x和原子特征h,生成的嵌入隐空间z上。这一点完全与机器视觉中的stable diffusion对齐了。

训练GEOLDM模型的伪代码:

首先,需要按照常规的变分自动编码器一样,在没有加噪和去噪的扩散过程下,先训练变分自动编码器,即First stage。然后,固定自动变分编码器,加入扩散的加噪和去噪过程,训练模型学习去噪。所以,可以简单的理解GEOLDM模型由编码器,扩散去噪,解码器,三个AI网络组成。

使用GEOLDM模型生成分子的伪代码如下:

三、GeoLDM模型的性能

作者在QM9和DRUG数据上进行了测试,考察了分子生成的质量(有效性,唯一性)。作者对每个模型都进行了三次分子生成,每次生成1w个分子。测试结果如下:

与之前的方法相比,同时具有不变变量和等变变量的潜在空间使GEOLDM在大分子生成的有效性方面实现了高达7%的改进。

stable diffusion模型厉害之处,主要是其非常强大的可改造能力,最简单的,就是条件控制生成。这里作者做了尝试。作者尝试让GEOLDM模型生成HOMO等更低的分子,结果发现,GEOLDM确实要好于我们之前常用的EDM模型。如下图:

另一方面,在条件控制生成中,GEOLDM,可以对生成的条件的程度进行控制。作者以生成极化的分子为例,使用了不同的极化控制参数,如下图:

四、总结

整体感觉GEOLDM这个模型非常好模拟了stable diffusion模型的结构,将扩散过程的加噪去噪过程操作在隐式向量空间内。大大降低了,在分子生成领域的计算成本。同时,因为在潜向量空间内,也打开了分子生成领域的优化可能,我们可以CLIP, LORA, Controlnet 等技术,微调模型,实现精确控制分子生成。

看来Drug-AIGC的日子不远了,真的不远了。距离作者正式发表GEOLDM有几个月了,距离作者开始在GitHub上传代码有10个月了。我们将很快看到很多的相关文章出现。老了,脑子跟不上了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[GWCTF 2019]我有一个数据库1

提示 信息收集phpmyadmin的版本漏洞 这里看起来不像是加密应该是编码错误 这里访问robots.txt 直接把phpinfo.php放出来了 这里能看到它所有的信息 这里并没有能找到可控点 用dirsearch扫了一遍 ####注意扫描buuctf的题需要控制扫描速度&#xff0c;每一秒只能扫10个多一个都…

聚类算法的性能度量

聚类算法的性能度量 聚类算法就是根据数据中样本与样本之间的距离或相似度&#xff0c;将样本划分为若干组&#xff0f;类&#xff0f;簇&#xff0c;其划分的原则&#xff1a;簇内样本相似、簇间样本不相似&#xff0c;聚类的结果是产生一个簇的集合。 其划分方式主要分为两…

API接口并发测试:如何测试API接口的最大并发能力?

本文将深入探讨API接口并发测试&#xff0c;介绍并比较不同的API并发测试工具&#xff0c;并分享如何有效测量和提高API接口在最大并发情况下的性能。了解如何应对高并发压力是保证系统稳定性和用户满意度的关键&#xff0c;让我们一起来探索这个重要的话题。 随着互联网的迅速…

float,flex和grid布局

页面布局往往会影响着整体的结构与项目的样式&#xff0c;通常我们用的布局方式有三种&#xff1a;float,flex,grid 1.float或position布局 1.1概念 首先对于一个页面来说&#xff0c;有浮动流&#xff0c;文档流&#xff0c;文本流这几种模式&#xff0c;而float布局则是…

【EI会议征稿中】第六届下一代数据驱动网络国际学术会议(NGDN 2024)

第六届下一代数据驱动网络国际学术会议&#xff08;NGDN 2024&#xff09; The Sixth International Conference on Next Generation Data-driven Networks 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉 (IEEETrustCom-2022)成功举办的经验&a…

若依vue-新建目录及菜单

前面我们把标题和logo换成了自己系统的标题和logo了 接下来就是要建立自己需要的菜单和页面 新建目录解析 在拉下来的代码跑起来后 有一个系统菜单--菜单管理(如图) 在这个菜单的这个页面内有对应的操作功能 修改功能 这个功能可以修改写好了的菜单数据 例如:名称/排序/路由…

python:五种算法(DBO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、蜣螂优化算法DBO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

【小白专用】php执行sql脚本 更新23.12.10

可以使用 PHP 的 mysqli 扩展来执行 SQL 脚本。具体步骤如下&#xff1a; 连接到数据库&#xff1b;打开 SQL 脚本文件并读取其中的 SQL 语句&#xff1b;逐条执行 SQL 语句&#xff1b;关闭 SQL 脚本文件&#xff1b;关闭数据库连接。 以下是通过 mysqli 执行 SQL 脚本的示例…

生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到

生产问题: 利用线程Thread预加载数据缓存偶发加载不到 先上代码 public class ThreadTest {//本地缓存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…

RT-Thread学习笔记(六):RT_Thread系统死机日志定位

RT_Thread系统死机日志定位 一、RT_Thread系统死机日志定位二、Cortex-M3 / M4架构知识2.1 Cortex-M3 / M4架构概述2.2 寄存器用途 三、排查步骤 一、RT_Thread系统死机日志定位 RT-Thread 系统发生hardfault死机时&#xff0c;系统默认会打印出一系列寄存器状态帮助用户定位死…

XML学习及应用

介绍XML语法及应用 1.XML基础知识1.1什么是XML语言1.2 XML 和 HTML 之间的差异1.3 XML 用途 2.XML语法2.1基础语法2.2XML元素2.3 XML属性2.4XML命名空间 3.XML验证3.1xml语法验证3.2自定义验证3.2.1 XML DTD3.2.2 XML Schema3.2.3PCDATA和CDATA区别3.2.4 参考 1.XML基础知识 1…

AWR1642 boost开发板支持的TI参考设计

打开radar_toolbox_1_30_00_05\source\ti\examples\examples_overview,通过输入“1642”查找AWR1642 BOOST支持的参考设计,通过筛选,支持AWR1642 BOOST的参考设计如下: 挑选出两个参考设计上手,一个是“nonos_oob_16xx",不带OS;另一个是”short range radar“,比较…

Sbatch, Salloc提交任务相关

salloc 申请计算节点&#xff0c;然后登录到申请到的计算节点上运行指令&#xff1b; salloc的参数与sbatch相同&#xff0c;该部分先介绍一个简单的使用案例&#xff1b;随后介绍一个GPU的使用案例&#xff1b;最后介绍一个跨节点使用案例&#xff1b; 首先是一个简单的例子&a…

Go开发运维:Go服务发布到K8S集群

目录 一、实验 1.Go服务发布到k8s集群 二、问题 1.如何从Harbor拉取镜像 一、实验 1.Go服务发布到k8s集群 &#xff08;1&#xff09;linux机器安装go(基于CentOS 7系统) yum install go -y &#xff08;2&#xff09;查看版本 go version &#xff08;3&#xff09;创…

【参天引擎】华为参天引擎内核架构专栏开始更新了,多主分布式数据库的特点,类oracle RAC国产数据开始出现了

cantian引擎的介绍 ​专栏内容&#xff1a; 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构&#xff0c;以及如何实现多机的数据库节点的多读多写&#xff0c;与传统主备&#xff0c;MPP的区别&#xff0c;技术难点的分析&#xff0c;数据元数据同步&#xff0c;多主节点的…

Python 中 4 个高效的技巧(建议收藏)

今天我想和大家分享 4 个省时的 Python 技巧&#xff0c;可以节省 10~20% 的 Python 执行时间。 反转列表 Python 中通常有两种反转列表的方法&#xff1a;切片或 reverse() 函数调用。这两种方法都可以反转列表&#xff0c;但需要注意的是内置函数 reverse() 会更改原始列表…

【数据结构】C语言结构体详解

目录 前言 一、结构体的定义 二、定义结构体变量 三、结构体变量的初始化 四、使用typedef声明新数据类型名 五、指向结构体变量的指针 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1…

做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

----查询每天刷题通过数最多的前二名用户id和刷题数 现有牛客刷题表questions_pass_record&#xff0c;请查询每天刷题通过数最多的前二名用户id和刷题数&#xff0c;输出按照日期升序排序&#xff0c;查询返回结果名称和顺序为&#xff1a; date|user_id|pass_count 表单创建…

Spring JDBC和事务管理

Spring JDBC是Spring框架用来处理关系型数据库的模块&#xff0c;对JDBC的API进行了封装。 Spring JDBC的核心类为JdbcTemplate&#xff0c;提供数据CRUD方法 Spring JDBC使用步骤 Maven工程引入依赖spring-jdbc <dependency><groupId>org.springframework<…

对Spring源码的学习:Bean实例化流程

目录 SpringBean实例化流程 Spring的后处理器 Bean工厂后处理器 Bean后处理器 SpringBean实例化流程 Spring容器在进行初始化时&#xff0c;会将xml配置的<bean>的信息封装成一个BeanDefinition对象&#xff0c;所有的BeanDefinition存储到一个名为beanDefinitionMa…