网站制作推广SSL/夫唯seo
大家都知道 “两点确定一线,三点确定一平面”,那么多少个变量可以确定一个分子呢?这是最近顶刊们热烈讨论的话题。
(据笔者不完全统计)最早在 SphereNet (2022 ICLR)论文里,摘要上就开始讨论 completeness 了。后来,ClofNet (2022 ICML)和 ComENet (2022 NeruIPS)直接在标题里就标明 Complete (两个Net名字中的 C 就是 Complete 意思)。
从模型设计角度看,实现 Completeness 似乎成为了提升模型性能的一条捷径。诸多研究小组加入战场,completeness 这个词逐渐演变成了罗生门。在最近的 LEFTNet (2023 NeruIPS)中,作者重新提及 completeness ,似乎能够从一个更高的视角看待这一问题。
本文将首先介绍 SphereNet 和 ClofNet 中有关完备性的观点。两篇论文的作者均花费很多篇幅强调模型的完备性,却没有深入思考 local completeness 如何转化为 global completeness。ComENet 首先意识到了这一点,通过固定两个刚体结构间的旋转键尝试固定整个分支。然而,ComENet 对刚体结构间的相对自由度进行了误判,仅仅考虑了两刚体结构共线平面中的一个自由度,没有将其放在立体的环境中思考。最后,LEFTNet 仔细论证了这一点,补齐了全部三个自由度,最终实现了 Global Completeness。
这篇博客中,我将首先介绍不变模型考虑 Completeness 的代表 SphereNet,向量模型考虑 Completeness 的代表 ClofNet。最后,我将介绍对 local to global 展开讨论的两篇文章 ComENet 和 LEFTNet。
SphereNet 中的 Completeness
在 图神经网络和分子表征:3. 不变网络最后的辉煌-CSDN博客 中我们提到,SphereNet 是 DimeNet 的改进之作。一个朴素的想法是,在引入角度的基础上进一步引入二面角将十分有潜力进一步提高精度。当然,这并非是 AI 研究员首创的想法。
在传统的计算化学领域,距离、角度、二面角所构成的内坐标体系已经被广泛用于改造输入坐标。基于内坐标的几何构型优化被认为大幅降低了势能面的自由度,提高了构型优化的速度。例如,Gaussian 就支持冗余(Redundant)内坐标、z-matrix,广义内坐标(generalized internal coordinates)等关键词。大家感兴趣可以看以下链接中的说明:
z-matrix:
- 维基百科:https://en.wikipedia.org/wiki/Z-matrix_(chemistry)
- 一个案例:https://www.chm.bris.ac.uk/pt/ajm/mmhtm/MM_L2p16.htm
- 优缺点详细解析:https://www.cup.uni-muenchen.de/ch/compchem/geom/internal.html
冗余内坐标(Gaussian 构型优化默认格式):https://gaussian.com/opt/
广义内坐标:https://gaussian.com/gic/
形式多样内坐标的设计本意是希望3D坐标能够由距离、角度、二面角唯一表示,并能够据此复现出原始结构。如下所示:
SphereNet 原文中多次提到的完备性正是基于这样的理念:
- 3D 坐标可以预测性质。
- 3D 坐标能够转化为不变性的距离、角度、二面角。
- 距离、角度、二面角能够预测不变性质。
作者思路可以进一步小结为:之前的模型只是将 3D 坐标转换成了距离和角度,我把二面角添上就完备了,所以一定会有精度提高!具体转换框架见 图神经网络和分子表征:3. 不变网络最后的辉煌-CSDN博客
其实这样的想法忽略了很多问题:
-
3D 坐标转化为距离、角度、二面角不能有信息损失。换言之,作者设计的转换框架需要有效鉴别所有结构。但是作者在原文就列举了一个反例,作者设计的框架可以鉴别手性分子(下图a,b),但不能鉴别一些特殊案例(下图b,c):
-
3D 坐标转换为内坐标的方式并非只有唯一解。在 z-matrix 的这个案例中(Internal coordinates of a molecule (bris.ac.uk)),乙烯6个原子,3个原子的确定都涉及了二面角,但是参考平面可以有多种选择。作者在原文指出,GemNet 3-hop 的消息传递模式可以做到完备性,笔者此处表示质疑。如何设计规则拿到正则、完备、物理的几何信息,传统的量子化学软件已经给出了很多解(见上),SphereNet 和 GemNet 显然没有达到上述方法的理论深度。
-
即便转换过程没有损失,消息传递(local to global)过程 也会带来损失。SphereNet 原文完全没有考虑到消息传递(local to global)过程。这一点同样出现在 ClofNet 中,而 ComENet 和 LEFTNet 都对这一过程进行了讨论。
总体来说,SphereNet 中的 Completeness 还是一个 local Completeness。作者的想法就是对 3D 坐标完成不变替代,没有深入考虑后续传递过程。
ClofNet
ClofNet 这个框架本系列还没详细讲过。这篇论文和 LEFTNet 一样,读起来让人非常痛苦。下面就简单介绍下笔者的理解吧。
ClofNet 故事起源
ClofNet 在故事开头指出,现有表征框架无法有效纳入恒电势等真实物理环境。
在之前的表征框架中(EGNN),两原子排斥力可以映射到原子向量差上。但原子向量差的形式无法有效反应外加的恒电场。作者指出,如果我们能够建立起一个局域的坐标系,就可以将各种方向的向量标量化。如此以来,我们在消息传递的内部,可以只用标量。
ClofNet 中的 Complete local frame
ClofNet 论文读起来有着对 EGNN 非常明显的模仿痕迹。比如公式 1 直接照搬了 EGNN 的定义
EGNN 本身是一个非常经典的框架,此处碍于笔者的精力,不作展开。
但原作者一个很明显的思路是:EGNN 基于原子坐标向量差去做迭代,只能做原子连线上的性质预测,例如原子受力,类似恒电势就不行。为了解决这个问题,作者拓展了原子坐标向量差的概念:坐标向量差,坐标向量叉乘定义一个平面,加上该平面上的法向向量,三个向量构成了一个正则坐标系。
任何有关两原子的向量在该正则坐标系下均有唯一标量坐标,这样即可完成向量向标量的映射。
ClofNet 中的消息传递
写到这里的时候,笔者已经看 ClofNet 这篇论文很久了。这篇论文里的定理证明实在是太多了,这里只放一下笔者粗浅的理解。
一种尝试理解新模型的方式是用已经建立起的框架规则去套。在 On the Expressive Power of Geometric Graph Neural Networks 这篇论文里,作者对 PAINN 做了如下归纳总结:
其消息传递过程可以归纳为向量和标量两条平行的路径。
前文已经提到,ClofNet 的消息传递和 EGNN 是基本一致的:
我们从下往上看,第2,3行公式表明 ClofNet 依旧是面向点编程的,将点的性质作为核心的迭代对象。同时,ClofNet 采用和 PAINN 一致的思路,即,标量、向量两条并行的迭代路线。
ClofNet 和 PAINN 的不同之处在于消息本身的设计(第一行),以及消息是如何影响向量性质迭代的(第二行),标量性质的迭代似乎和 PAINN 是一样的。
PAINN 里,消息分为了标量的消息和向量的消息,分别用于标量和向量的迭代。但是 ClofNet 似乎仅有标量的消息,向量的消息通过标量的向量化实现。(第二行)
其实说到这里,把上述三段话中的 ClofNet 换成 EGNN 也完全成立。标量的向量化这个概念已经出现在了 EGNN 的设计框架中。所以,ClofNet 真正的创新在于局域坐标系的建立,进而拓展了向量标量间相互转化这个概念。
现在我们小结一下 ClofNet 的消息传递过程:
-
从大的视角看, ClofNet 遵从了 PAINN 的设计思想,面向点编程+向量、标量两条平行的迭代路线。我们可以直接套用 PAINN 的图:
-
当然,需要把两个 m 的来源抹掉,同时向量 m 依赖于标量 m
-
在构建这两个 m 的过程中, ClofNet 设计了一个完备的局域坐标系,将向量标量化,进行迭代计算后再重新向量化。
具体实现细节,请各位读者阅读原文和源码。
ClofNet 中的 Completeness
前文中,我们介绍了 SphereNet 的 Completeness。可以看到,作者十分强调3D坐标向不变几何信息转化的过程中不能出现信息损失。 ClofNet 中并不涉及复杂的多体几何关系, ClofNet 和 PAINN 一样是向量、标量双通路模型。因此,角度、二面角信息隐藏在了向量模型的加减中,无需多虑。笔者认为, ClofNet 中的 Completeness 更多是相对于 EGNN 而言的。因为 EGNN 只能表示原子连线方向的性质(原子相互作用力等),而 ClofNet 则进一步,通过设计局域坐标系,实现了恒电势等向量信息的拟合。意义不在于增加了多少的几何鉴别能力,而是增加了完备的、无损的向量信息拟合能力,因此叫 complete。
值得注意的是,此处的 complete 依然是一个局域的概念,因为作者并没有考虑 local to global 对 Completeness 的影响,这一点在 LEFTNet 中被重点讨论。
ComENet 和 LEFENet 中的 Completeness
ComENet 的消息传递过程在前面博客已经讲过了。图神经网络和分子表征:3. 不变网络最后的辉煌-CSDN博客
在 ComENet 论文的2.2节,作者详细介绍了引入第二个二面角的目的:
- 在距离+角度+一个二面角的模式下,我们可以做到局域结构的完备性,但这只局限于一近邻的范围。这跟 SphereNet 的思路基本一致 (SphereNet 做到了二近邻的完备性)。
- 如下图所示,局域坐标系的设定可以将R1和R2两个基团变成刚体(完备性),但是包含R1和R2的整个分支是否是一个刚性结构呢?
- 这就是前文多次提到的,local to global 的完备性。ComENet 是这样解释的:i 的 local 是蓝色区域,可以看作上图中的其中一个基团 R1。j 的 local 是黄色区域,可以看作上图基团 R2. 刚性结构 R1 和 R2 间唯一的自由度就是两个刚性结构的夹角,下右图。如果我们把这个夹角固定,整个分支就变成了一个刚性结构。考虑到每个节点都将衍生出一个 local,只要我们能将相邻两个 local 完全冻住,整个体系又是一个连通图,这样整个体系都将被唯一确定。
- 这是 ComENet 中的描述,整个论证过程十分精彩,但是在 LEFTNet 中,作者指出 刚性结构 R1 和 R2 间自由度并不唯一,如果我们在 R1 和 R2 中分别建立局域正交坐标系,那么两个坐标系间的相互转换存在 3 个自由度。 ComENet 描述简化了两个刚体结构。将 刚体结构 R1 简化为了 上右图紫色平面, R2 简化为了上右图黄色平面。如果我们只是平面间的 Freeze,确实只需要一个自由度。但事实是,两个刚体结构都是立体的,我们应该考虑的是两个立体空间相互之间的转换。
- 如上图所示,作者十分犀利的指出,ComENet 中的 torsion angle 只是两个 local frames 相互转换间的其中一个自由度。
- LEFTNet 通过设计合理的消息传递机制(FTE)实现了 local to global 的完备性. LEFTNet 的技术细节太多,后面再详细展开。
相关文章:

图神经网络和分子表征:5. Completeness
大家都知道 “两点确定一线,三点确定一平面”,那么多少个变量可以确定一个分子呢?这是最近顶刊们热烈讨论的话题。 (据笔者不完全统计)最早在 SphereNet (2022 ICLR)论文里,摘要上就…...

css-渐变色矩形
效果图: 代码: html: <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, user-scalableno" /><title></title><link …...

使用easypoi-spring-boot-starter 4.1.1导入excel报错NoSuchMethodError和NoSuchMethodError
前言 使用easypoi进行excel的导入遇到的错误以及解决办法 easypoi项目地址:https://gitee.com/lemur/easypoi easypoi的Maven依赖: <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter<…...

matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因
写在之前(吐槽) 最近由于变化了一些工作方向,开始需要使用matlab进行开发,哎哟喂,matlab使用的我想吐,那个matlab编辑器又没代码提示,又没彩色,我只好用vscode进行代码编辑…...

3. t2t_vit inference
前言 对vit 进行fp16推理 参考链接: https://github.com/open-mmlab/mmpretrain/tree/master/configs/t2t_vit run code : https://mmclassification.readthedocs.io/en/latest/getting_started.html#inference-and-test-a-dataset https://mmclassification.readthedo…...

SpringMVC Day 05 : Spring 中的 Model
前言 欢迎来到 SpringMVC 系列教程的第五天!在之前的教程中,我们已经学习了如何使用控制器处理请求和返回视图。今天,我们将深入探讨 Spring 中的 Model。 在 Web 应用程序开发中,数据的传递和展示是非常重要的。SpringMVC 提供…...

redis6.0源码分析:字典扩容与渐进式rehash
文章目录 字典数据结构结构设计dictType字典类型为什么字典有两个哈希表?哈希算法 扩容机制扩容前置知识字典存在几种状态?容量相关的关键字段定义字典的容量都是2的幂次方 扩容机制字典什么时候会扩容?扩容的阈值 & 扩容的倍数哪些方法会…...

【C++迭代器iterator】
迭代器 i t e r a t o r 迭代器iterator 迭代器iterator 在 容器 v e c t o r 容器vector 容器vector 中的使用 迭代器 i t e r a t o r 迭代器iterator 迭代器iterator 一般使用在 容器 v e c t o r 容器vector 容器vector 的 遍历 遍历 遍历,充当 遍历指针 遍…...

基于群居蜘蛛算法的无人机航迹规划
基于群居蜘蛛算法的无人机航迹规划 文章目录 基于群居蜘蛛算法的无人机航迹规划1.群居蜘蛛搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用群居蜘蛛算法来优化无人机航迹规划。 …...

火爆全网,Python+Requests+Pytest+YAML+Allure实现接口自动化测试(附源码)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 本项目实现接口自…...

【深度学习】【NLP】如何得到一个分词器,如何训练自定义分词器:从基础到实践
文章目录 什么是分词?分词算法使用Python训练分词器步骤1:选择分词算法步骤2:准备训练语料步骤3:配置分词器参数步骤4:训练分词器步骤5:测试和使用分词器 代码示例:使用SentencePiece训练分词器…...

线程池的线程回收
线程池 线程池里面分为核心线程和非核心线程。 核心线程是常驻在线程池里面的工作线程,它有两种方式初始化: 向线程池里面添加任务的时候,被动初始化 主动调用 prestartAllCoreThreads 方法 当线程池里面的队列满了的情况下,为了增…...

【2023.10.25练习】数据库-函数1
任务描述 本关任务:编写函数fun_1完成学生选课操作。输入参数:学号、课程名,函数返回值:操作结果。 如果该生已有该门课程的选修记录,则函数返回-1;如果该门课程无先修课,则将选课信息添加到选…...

基于水循环算法的无人机航迹规划-附代码
基于水循环算法的无人机航迹规划 文章目录 基于水循环算法的无人机航迹规划1.水循环搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用水循环算法来优化无人机航迹规划。 1.水循环…...

JVM调优(10)JVM的运行时数据区
一、概述 对于 C C 来说,在内存管理领域,JVM既拥有最高的权利,但是同时他们又是从事最基础工作的劳动人员,因为他们担负着每一个对象从开始到结束的维护责任。而对于Java来说,再虚拟机自动内存管理的帮助下࿰…...

Python网络爬虫介绍
视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 什么是网络爬虫? 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者)ÿ…...

iOS QR界面亮度调整
亮度调事,不久在QR界面切换的时候还要考虑进入前台后台时的操作 1.QR界面功能实现代码。 QR界面- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];[[NSUserDefaults standardUserDefaults] setValue:([UIScreen mainScreen].brightness) …...

Linux shell编程学习笔记17:for循环语句
Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算,同样也需要进行根据条件进行流程控制,提供了if、for、while、until等语句。 之前我们探讨了if语句,现在我们来探讨for循环语句。 Li…...

Go语言用Resty库编写的音频爬虫代码
目录 一、Go语言与Resty库简介 二、音频爬虫的实现 1、确定抓取目标 2、使用Resty发送HTTP请求 3、解析响应数据 4、下载音频文件 5、并发下载音频文件 三、注意事项 总结 随着互联网的飞速发展,网络爬虫逐渐成为数据获取和分析的重要工具。在音频领域&…...

AWTK 液体流动效果控件发布
液体流动效果控件。 主要特色: 支持水平和垂直方向。支持正向和反向流动。支持设置头尾的图片。支持设置流动的图片。支持设置速度的快慢。支持启停操作。 准备 获取 awtk 并编译 git clone https://github.com/zlgopen/awtk.git cd awtk; scons; cd -运行 生成…...

对mysql的联合索引的深刻理解
背景 对mysql的联合索引的考察是Java程序员面试高频考点!必须深刻理解掌握否则容易丢分非常可惜。 技术难点 考察对最左侧匹配原理理解。 原理 暂且不表。网上讲这非常多。我理解就是,B树每个非叶子节点的值都是有序存放索引的值。 比如对A、B、C …...

C的自定义类型
目录 1. 结构体 1.1. 结构体类型的声明 1.1.1. 特殊声明 2. 结构的自引用 3. 结构体变量的定义和初始化 4. 结构体内存对齐 4.1. 结构体内存对齐 4.2. 修改默认对齐数 5. 结构体传参 6. 结构体实现位段(位段的填充&可移植性) 6.1. 什么是位…...

我的创作纪念日 - 2048
机缘 昨天刚刚收到 C 站的 1024 勋章: 今天爬山途中就又收到了 CSDN 的创作 2048 天纪念推送: 虽然 1024、2048 这些数字对普通人来说可能没有意义,但对于程序员来说却有不一样的情结。感谢 C 站这波细心的操作,替程序员的我们记…...

拿捏面试官,高频接口自动化测试面试题总结(附答案)狂收offer...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题࿱…...

大数据-Storm流式框架(六)---Kafka介绍
Kafka简介 Kafka是一个分布式的消息队列系统(Message Queue)。 官网:Apache Kafka 消息和批次 kafka的数据单元称为消息。消息可以看成是数据库表的一行或一条记录。 消息由字节数组组成,kafka中消息没有特别的格式或含义。 消息有可选的键&#x…...

自动驾驶的未来展望和挑战
自动驾驶技术是一项引人瞩目的创新,将在未来交通领域产生深远影响。然而,随着技术的不断演进,自动驾驶也面临着一系列挑战和障碍。本文将探讨自动驾驶的未来发展方向、技术面临的挑战,以及自动驾驶对社会和环境的潜在影响。 自动驾…...

2.11、自定义图融合过程与量化管线
introduction 介绍如何自定义量化优化过程,以及如何手动调用优化过程 code from typing import Callable, Iterableimport torch import torchvisionfrom ppq import (BaseGraph, QuantizationOptimizationPass,QuantizationOptimizationPipeline, QuantizationSetting,Tar…...

Linux——文件权限属性和权限管理
文件权限属性和权限管理 本章思维导图: 注:本章思维导图对应的Xmid文件和.png文件都以传到“资源” 文章目录 文件权限属性和权限管理1. sudo提权和sudoers文件1.1 sudo提权和成为root的区别 2. 权限2.1 Linux群体2.1.1 为什么要有所属组2.1.2 修改文件…...

数组与链表算法-单向链表算法
目录 数组与链表算法-单向链表算法 C代码 单向链表插入节点的算法 C代码 单向链表删除节点的算法 C代码 对单向链表进行反转的算法 C代码 单向链表串接的算法 C代码 数组与链表算法-单向链表算法 在C中,若以动态分配产生链表节点的方式,则可以…...

Oracle(6) Control File
一、oracle控制文件介绍 1、ORACLE控制文件概念 Oracle控制文件是Oracle数据库的一个重要元素,用于记录数据库的结构信息和元数据。控制文件包含了数据库的物理结构信息、数据字典信息、表空间和数据文件的信息等。在Oracle数据库启动时,控制文件会被读…...