图神经网络和分子表征:3. 不变网络最后的辉煌

news2024/11/16 17:31:07

写这篇文章的时候已经是2023年的8月份,GNN for molecule property prediction 这个小领域正在变得火热起来,各大榜单被不断刷新,颇有当年 CNN 刷榜 imagenet 的势头。

由于对力、维里等性质有着内禀优势,当下高居榜首的模型毫无疑问是NequIP, MACE这些等变模型。与此同时,传统不变模型的江山正在一点点被蚕食,逐渐走向没落。话虽如此,学习不变模型依然是有必要的,因为不变的3D-based模型成功打败了传统的2D模型,其对角度、二面角等几何信息的利用,消息传递机制的设计都非常值得我们学习。

本篇博客,我们将依次介绍首次纳入角度信息的DimeNet(2020 ICLR),受DimeNet启发的GemNet (NeurIPS 2021),PAINN(2021 ICML)和SphereNet(2022 ICLR)以及做到局域完备性的ComENet(NeurIPS 2022)。

(放GNN Expressive的slide镇楼)
在这里插入图片描述

DimeNet

DimeNet 是划时代的一个网络架构。

之所以给这么高的评价,是因为在 DimeNet 之前,所有的网络结构最多只利用了几何信息中的距离信息,而 DimeNet 是第一个将角度信息引入 GNN 的模型,虽然引入的方式现在看十分的笨重。

其消息传递机制如下所示:
在这里插入图片描述
节点 i 有 Ni 个邻居,节点 j 是其中一个。节点 j 又有 Nj 个邻居,k1, k2, k3是其中三个。

节点 i 将收到来自 Ni 个邻居的 Ni 条信息,每一条信息的制作过程由 各个邻居负责。以邻居 j 为例,它将除了 i 意外的所有自己邻居的信息进行一个汇总,后再传给 i,这期间就包含了以 j 为核心的,角度 k1 j i 的信息。

如果你觉得上面这段话抽象,你可以设想节点 i 是一个国王,他将向子民收税。首先,国王向大臣(最近的一圈邻居)收税。大臣们收到命令后,向老百姓收税,大臣们汇集之后,再向国王缴税。当然这是一个简化的模型。

不过,可以很清晰的看到,这种消息传递的机制涉及 2-hop 的消息传递,这使得 DimeNet 的算力消耗大幅增加。

为了充分利用引入的角度信息,DimeNet 从 DFT 领域中引入了球极坐标系,以便适配 spherical harmonics 基组。

然而,DimeNet 部分模块设计非常不合理,其改进版本 DimeNet++ 很快发布,并在2020年底登上了 NeurIPS。现在 DIG 仓库中已经没有 DimeNet 了,默认的是 DimeNet++ 版本。

GemNet,PAINN和SphereNet

DimeNet 的发布引起了不小的轰动,多位研究小组加入战场。其中比较有代表性的分别是 GemNet 和 PAINN。SphereNet 入局较晚,但也收获了一篇ICLR。

GemNet 的思路比较好理解,既然 2-hop 的消息传递能够提升精度,3-hop 势必能更进一步。如果说, 2-hop 可以引入 三体 间的角度,那么 3-hop 则可以引入 四体 间的二面角。

我们顺延上一小节的例子就是,国王向大臣征税,大臣向乡绅征税,乡绅向老百姓征税,过三层。国王、大臣、乡绅和百姓构成的四体关系能够有效提炼出二面角信息。
在这里插入图片描述
然而,这样做的代价就是,虽然精度提高了,但计算量猛增。从 DimeNet 的 O ( n k 2 ) O(nk^2) O(nk2) 增到 O ( n k 3 ) O(nk^3) O(nk3)
GemNet 在 qm9 上维持了相当长时间的 SOTA 记录,但从技术角度看,这并不是一个 smart 的技术路线。

PAINN 则指出,DimeNet 的角度引入方式可以进一步精简。
在这里插入图片描述
PAINN 创新性的引入了向量的概念,如上图所示。PAINN 对比了三个几何信息。距离信息仅需要 O(N) 的计算量,但无法反映键角的变化。键角信息的计算需要 O ( n 2 ) O(n^2) O(n2) 的成本,然而方向信息可以进一步缩减至 O ( n ) O(n) O(n) 。(两向量求和本身就包含了键角信息)

因此,PAINN 将消息传递分成了由标量几何信息(距离)承载的路线和由向量几何信息(方向)承载的路线。(并行的两条)

这种方式进一步可以将整个网络架构改造成等变网络,对力,导热性质等的预测精度大幅提升。我想,这大概是等变网络兴起的开端。(至少也是起了推动作用)
在这里插入图片描述
最后,发布 DimeNet 的 ShuiwangJi 小组在2021年也发布了能够嵌入二面角信息的网络 SphereNet,然而由于 GemNet 表现过于亮眼(虽然大部分是计算量换来的)SphereNet 未能在 2021 年见刊,最终拖延到了2022年年初发表在了 ICLR 上。

SphereNet 的思路和 GemNet 是类似的,也是在 距离、角度 后面缀上二面角。既然是二面角信息,就不可避免要设计到 四体。

在 GemNet 中,四体是国王,大臣,乡绅和老百姓。等级分明。所以是 3-hop 的消息传递机制。

在 SphereNet 中,四体设计为,国王,大臣,乡绅和乡绅。具体来说,国王和大臣构成了球极坐标的z轴,众乡绅向大臣进贡的同时需要遵循一个逆时针的顺序,即需要拿自己紧邻的,逆时针方向前,的乡绅当参考点,求出四体的二面角。
在这里插入图片描述
显然,这是一个 2-hop 的消息传递机制,计算量比 GemNet O ( n k 3 ) O(nk^3) O(nk3) 小,与 DimeNet O ( n k 2 ) O(nk^2) O(nk2) 相当。

但是,SphereNet 并不是一个 local 完备的模型。在 SphereNet 原文中,作者指出,SphereNet 可以有效区分 手性分子,但对于一些特别刁钻的情形,SphereNet 依然无法有效区分。
在这里插入图片描述

ComENet

把 ComENet 放在最后并单独成章,是因为 ComENet 的发布代表了不变网络最后的辉煌。

彼时已进入2022年下半年,各大数据集早已被等变网络霸榜。不变网络似乎迎来了英雄落幕。

ComENet 从数学角度严格证明了其 local 完备性,并大幅降低计算量至 1-hop 水平。这使得 ComENet 计算速度大幅提升,同时理论上拥有不输于 SphereNet 的 local 鉴别能力。但这并没有在部分数据集上取得精度的提升(QM9),部分原因可能是(笔者个人猜测) 2-hop 的模型可能比 1-hop 抓取信息的效率更高。

那 ComENet 是怎么进行消息传递的呢?
如下图所示:
在这里插入图片描述
ComENet 也定义了一个 四体(为了拿到二面角信息),只不过这个四体是以边为中心的。

我们还用国王收税举例:

  1. 国王 i 最终是要从邻居(大臣 j )那里一一收税的,这其实对应了消息传递的最后阶段。
  2. 那么大臣 j 怎么收税呢?
    2.1 大臣 j 首先收角度的税。他找来了同样是大臣的,距离 i 最近的点 f i j f_{i\\j} fij 作为参考点,收一个角度税 f i j f_{i\\j} fij, i, j
    2.2 大臣 j 收一个二面角的税。他找来了同样是大臣的,距离 i 最近的点 f i j f_{i\\j} fij 作为一个参考点,又找来了同样是大臣的,距离 i 第二近的点 s i s_i si 作为第二个参考点。平面 f i j f_{i\\j} fij, i, j 和 平面 f i j f_{i\\j} fij, i, s i s_i si 构成一个二面角。注意, f i j f_{i\\j} fij, i, s i s_i si 平面与 j 无关,因此是一个参考平面。
    2.3 大臣 j 向自己最近的乡绅收一个二面角的税。为什么要收这个税?是因为,前面这些税,实际上已经可以将 i 的 local 固定住了。但 local i 的 completeness 并不能随着消息传递拓展至外边。对此,作者提出将 节点 j 的最近一个邻居作为参考点,只要固定住了 f i j f_{i\\j} fij, i, j, f j i f_{j\\i} fji 四者构成的二面角,我们就可以在经过消息传递后收获全局的完备性。

ComENet 的伪代码如下:
在这里插入图片描述
其中的 Eq.1 如下:
在这里插入图片描述
大眼一看,ComENet 确实是一个 1-hop 的模型。但上面国王的例子中,我们可以看到,ComENet 又确实涉及到了乡绅阶层。这是一个相对模糊的事情:

  1. ComENet 在进行点节点向量的迭代时,仅涉及了邻居节点的特征向量,从这个角度看是 1-hop 的。( Eq.1 )
  2. ComENet 在计算所谓的 rotable bond 的时候,用到了邻居的邻居,(但也紧紧是计算了一个二面角作为输入),这里面确实有一些 2-hop 的几何信息泄露。
  3. 从计算量角度看,ComENet 是一个 O ( n k ) O(nk) O(nk) ,k 指 i 的邻居,n 指 i 的个数。这个是毋庸置疑的。

总体来说,这种 local -> global 的思路与 ClofNet 不谋而和,然而, ComENet 是基于球极坐标系的,这使其难以使用等变网络的算子。虽然 ComENet 在部分实验中,和不变网络相比取得了不错的表现(尤其是速度),但这些很难和等变网络进行对比。

与之相对的, ClofNet 继承了 local completeness 的设计优点,并进一步将其与等变算子结合形成了 leftnet。leftnet 在多个数据集上爆杀特杀,预计在很长一段时间内将保持 SOTA 优势。

小结

不变网络的发展历程总体来看是一个“不断纳入更多几何信息”的过程,发展至 ComENet ,我想几何信息的收集已经可以画上完美的句号。从更庞大的视角看,不变网络第一次完美击败了 2DGNN,让3DGNN登上舞台。同时,不变网络所衍生出的技术路线——以 PAINN 为代表的等变网络,则以更加猛烈的攻势抢占分子表征疆土。

谁会是这片领土最终的统治者,我们不得而知。但至少属于不变网络的辉煌已经落幕,本文间记之。

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

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

相关文章

设计模式--工厂模式(Factory Pattern)

一、 什么是工厂模式 工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但是将对象的实例化过程推迟到子类中。工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象,而无需暴露对…

<C++> STL_vector

1.vector的介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的…

【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用

【JavaEE】Spring事务(1) 文章目录 【JavaEE】Spring事务(2)1. 为什么要使用事务2. Spring中事务的实现2.1 事务针对哪些操作2.2 MySQL 事务使用2.3 Spring 编程式事务(手动挡)2.4 Spring 声明式事务&#…

匈牙利算法 in 二分图匹配

https://www.luogu.com.cn/problem/P3386 重新看这个算法,才发现自己没有理解。 左边的点轮流匹配,看是否能匹配成功。对右边的点进行记录是否尝试过 然后有空就进,别人能退的就进 遍历左部点: 尝试匹配过程:

报错处理:Docker容器无法启动

具体报错: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"program\": executable file not found in $PATH": unknown. 报错环境: 该报错出现在使用…

网络编程套接字(2): 简单的UDP网络程序

文章目录 网络编程套接字(2): 简单的UDP网络程序3. 简单的UDP网络程序3.1 服务端创建(1) 创建套接字(2) 绑定端口号(3) sockaddr_in结构体(4) 数据的接收与发送接收发送 3.2 客户端创建3.3 代码编写(1) v1_简单发送消息(2) v2_小写转大写(3) v3_模拟命令行解释器(4) v4_多线程版…

软件测试 day3

今天目标 执行用例(课上案例编写的用例) 缺陷相关知识 能够说出软件缺陷判定标准 能够说出项目中缺陷的管理流程 能够使用Excel对于缺陷进行管理 能使用工具管理缺陷一、用例执行 说明:执行结果与用例的期望结果不一致(含义&…

Lingo软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Lingo是一款专门为解决线性和非线性优化问题而设计的专业软件,广泛应用于运筹学、工程管理、交通管理、生产调度、物流管理等领域。它提供了一个易于使用的界面和灵活的求解器,能够高效地求解大规模的线性…

前端需要理解的Vue知识

1 模板语法 Vue使用基于 HTML 的模板语法,能声明式地将其组件实例的数据绑定到DOM。所有Vue 模板可以被符合规范的浏览器和 HTML 解析器解析。Vue 会将模板编译成高度优化的 JavaScript 代码。结合响应式系统,当应用状态变更时,Vue 能够智能…

Android 实现资源国际化

前言 国际化指的是当Android系统切换语言时,相关设置也随之改变,从而使用不同的国家地区; 简而言之,就是我们的Android App中的文字和图片会随着不同国家的地区变化从而切换为不同语言文字和不同国家的图片 文字图片国际化 只要…

Python绘图系统9:新建绘图类型控件,实现混合类型图表

文章目录 绘图类型控件改造AxisList更改绘图逻辑源代码 Python绘图系统: 从0开始实现一个三维绘图系统自定义控件:坐标设置控件📉坐标列表控件📉支持多组数据的绘图系统图表类型和风格:散点图和条形图📊混…

【已解决】在 SpringBoot 中使用 CloseableHttpClient 调用接口时,接收参数中的中文变为“?“

问题描述 由于项目需要,需要在代码中使用POST请求去调用另一个服务的接口,即不通过前端,A 项目直接在方法中发起HTTP请求调用 B 项目的接口,当请求体中的参数有中文时,参数接收后中文会变为“?”。 具体原因是参数的…

玩转git第7章节,本地git的用户名和密码的修改

一 本地git的用户名和密码 1.1 本地用户名和密码修改 1.本地用户名修改 2.凭据管理 3.进行修改密码 1.2 代码提交操作

8、Spring_整合Mybatis

五、Spring整合Mybatis 1.添加依赖 添加依赖 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.17.RELEASE</version></dependency><depend…

Nuxt.js--》添加路由、视图和过渡效果

博主今天开设Nuxt.js专栏&#xff0c;带您深入探索 Nuxt.js 的精髓&#xff0c;学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识&#xff0c;还是希望掌握进阶技巧&…

LibreOffice新一代的办公软件for Mac/Windows免费版

LibreOffice是一款免费、开源的办公软件套件&#xff0c;可在多个操作系统上运行&#xff0c;包括Windows、Mac和Linux。它提供了一系列功能强大的办公工具&#xff0c;包括文档处理、电子表格、演示文稿、数据库管理等。 LibreOffice的界面简洁直观&#xff0c;与其他流行的办…

mybatis与spring集成与spring aop集成pagehelper插件

Mybatis与Spring的集成 Mybatis是一款轻量级的ORM框架&#xff0c;而Spring是一个全栈式的框架&#xff0c;二者的结合可以让我们更加高效地进行数据持久化操作。 Mybatis与Spring的集成主要有两种方式&#xff1a;使用Spring的Mybatis支持和使用Mybatis的Spring支持。 使用…

MySQL学习-day1

2023.8.26 今天是8月26号&#xff0c;正式开始学习MySQL&#xff0c;看的是尚硅谷的MySQL教程&#xff0c;每天记录一下自己的学习笔记&#xff0c;以供复盘。 数据库的常见概念 1、DB&#xff1a;数据库&#xff0c;存储数据的容器。 2、DBMS&#xff1a;数据…

kettle实现爬虫

步骤概览 获取请求 请求地址 东方财富网股票请求 自定义常量数据 获取HTTP请求之前&#xff0c;必须先定义一个URL常量作为HTTP client的输入 HTTP client 注&#xff1a;此处得到的数据并不是原生的json字符串&#xff0c;自己可以用文本文件输出测试以下。如下图 JavaScri…

Python实现自动登录+获取数据

前言 Dy这个东西想必大家都用过&#xff0c;而且还经常刷&#xff0c;今天就来用代码&#xff0c;获取它的视频数据 环境使用 Python 3.8 Pycharm 模块使用 requests selenium json re 一. 数据来源分析 1. 明确需求 明确采集网站以及数据内容 网址: https://www.dy.co…