图神经网络和分子表征:4. PAINN

如果说 SchNet 带来了【3D】的火种,DimeNet 燃起了【几何】的火苗,那么 PAINN 则以星火燎原之势跨入 【等变】时代。

在 上一节 中,我们提到, PAINN 在看到 DimeNet 取得的成就之后,从另一个角度解决了三体几何问题,顺带着建立起了首个超越不变网络的等变模型。在本篇博客中,我们将详细解读 PAINN 原文。

PAINN 故事背景

虽然 PAINN 作者不会在文章里写,他们的灵感源泉,他们受哪篇论文启发。但 PAINN 字里行间都透露着对 DimeNet 的模仿。

例如,PAINN 的 Table 1, Figure 1 都在讲,我这个模型是如何处理角度信息的,以及这种处理方式的优越性。甚至整个 Figure 4 都在 diss DimeNet。虽然这么说显得笔者非常不专业,但笔者依然认为,PAINN 这篇工作就是受 DimeNet 启发展开的。

那 DimeNet 是怎么引入三体信息的呢?下面请允许我进行简单的 前情回顾 。
在这里插入图片描述
我们套用简单的国王-大臣-乡绅模型。
国王(i)要向下收税,委托大臣(j)办事,大臣收集完各个乡绅的税( m k 1 j m_{k_1j} mk1j, m k 2 j m_{k_2j} mk2j, m k 3 j m_{k_3j} mk3j)以后进行整合( m j i m_{ji} mji),最后传给 国王 (i)。
这其中涉及到了简单的三体信息,即国王、大臣和乡绅构成的夹角。
DimeNet 巧妙地利用 2-hop 的消息传递模型将角度信息纳入,在多个数据集上取得了当年的 SOTA.

谁看谁不眼馋啊!

作为 AI for Molecular property 的老祖师爷,schnet 的课题组很快跟进了这项工作,只不过他们看待问题的视角更加物理。

PAINN 的故事

可极化

Schnet 的一作叫 Schutt ,但在很多场合里,Schutt 并不说 Schnet 是 Schutt,而说是 Schrodinger(薛定谔) Net 。借此可见他们讲故事的能力。

那这个 PAINN 是什么的缩写呢?官方给的解释是:Polarizable Atom Interaction Neural Network (PAINN) 可极化原子相互作用神经网络。

在 Schutt 课题组的文章中很少出现 message passing 的字眼。因为他们认为,原子 A 传给原子 B 的信息,事实上是原子 A 与 原子 B 的相互作用(Interaction),所以大家看 SchNet 和 DTNN 这两篇论文经常会云里雾里,啥是相互作用(Interaction)?啥又是连续卷积?不明觉厉!

实际上所谓的相互作用(Interaction)就是原子之间的消息传递,所谓的连续卷积就是构建消息的时候使用 MLP 和一个衰减函数对距离的 embedding 做了一个过滤,连续二字指 MLP 中的激活函数换成了连续可导的 shifted softplus 函数(就是换了一个激活函数)(详情见系列第2篇文章)

那么 PAINN 中的可极化原子又是啥嘞?听起来文邹邹的。

这里要再回顾一下之前的模型,在 PAINN 之前,大家 embedding 原子的时候都会调用 pytorch 里默认的一个 look up table:

from torch.nn import Embedding

点进去这个模块,注释是这样写的:

class Embedding(Module):r"""A simple lookup table that stores embeddings of a fixed dictionary and size.This module is often used to store word embeddings and retrieve them using indices.The input to the module is a list of indices, and the output is the correspondingword embeddings.

也就是说,对于同样的输入,这个类会返回同样的一个 embedding 向量。

同样的原子得到的初始的特征向量是一致的,因为原子所处环境不同,多轮消息传递后,各个原子的特征向量往往大相径庭,最后对目标性质的预测也是基于原子所携带的这些特征向量进行的(在 schnetpack 里叫 outputnet )。不过这些都是后话了。重点是,每个原子最开始取的都是一个一维的特征向量。这些特征向量只能代表标量信息,无法代表原子的任何有方向的信息。

PAINN 正是瞄准这一点展开的,即,每个原子最开始取特征向量时,不仅取标量,还要取一个向量。(严谨的说,最开始的时候这个向量是零)这些向量可以代表原子有方向的性质,例如偶极矩等,还可以更进一步通过张量积的形式表示高阶特征。

作者举了一个例子,电荷密度在空间某处的多级展开。
零阶 q 对应该点处的 电荷
一阶 u 对应该点处的 偶极
二阶 Q 对应四极
在这里插入图片描述
之前的工作如果只对原子进行标量特征嵌入的话,最多只能表达电荷密度。但如果给原子一个向量嵌入,可以下探至 偶极,更进一步通过张量积就可以实现 四极 的拟合。
在这里插入图片描述
这就是 PAINN 名字中 可极化 的含义。

角度信息的引入

在拿到向量形式的特征向量后,我们可以通过对向量的简单加和完成角度信息的引入,同时能将计算量从 o ( n k 2 ) o(nk^2) o(nk2) (DimeNet 2-hop)降至 o ( n k ) o(nk) o(nk)(1-hop)。
在这里插入图片描述
作者在表 1 中详细对比了 3 种方式。

  1. 对于键长的变化,只有距离信息能够捕捉。
  2. 对于键角的变化,显式的 angle 和隐式的 direction 都能捕捉,但是 隐式的 direction 是 1-hop 的消息传递,只依赖第一圈的邻居,而 angle 则需要 2-hop,两圈的邻居。(虽然comenet里,这一点已经降到了 1-hop)

此外,作者指出,隐式的 direction 还能鉴别出更多的分子结构:
在这里插入图片描述
上图中,如果使用显式的 angle,无法鉴别(左)
但如果使用 隐式的 direction (右),则可以很好的鉴别。

这一发现后面衍生出了 Geometric W-L test 的工作:GNN Expressive

等变开山之作?

并不是。在 PAINN 原文中,作者指出,先前已经有很多人尝试了等变表征,但均未取得预期成果:
在这里插入图片描述
但 PAINN 的伟大在于,他是第一个将等变模型调参到超越不变模型的。
PAINN 对于等变做了哪些小心翼翼的调整呢?
在这里插入图片描述
在消息传递模块,所有对 向量特征 的变换都要遵循线性变化。可以是 scale, 可以是 线性的 MLP,矩阵的线性加和。但不能包含非线性(例如非线性的激活函数)。

另一方面,对于 标量特征 ,可以进行任何的 非线性操作。(上图第一条)

此外,PAINN 在输出时设计了一个巧妙的模块融合向量和标量:
在这里插入图片描述
这个模块可以保证等变的向量特征在经过消息传递后,预测向量/张量目标性质时,依然保持等变!这就不得不提到 PAINN 最后一个令人叹服的点了。

不忘初心:解决物理问题

写到这里,我已经吹累了。但还没完。

作为一篇 232 被引的文献,PAINN:

  1. 在 1-hop 消息传递成本下,引入了角度信息
  2. 首个超越不变模型的等变模型
  3. 刷爆了数据集(略夸张)

此外,PAINN 还不忘初心,教大家怎么用“可极化”解决真实的物理问题。

例1:
分子偶极矩的预测。
PAINN 之前:
在这里插入图片描述
PAINN:
在这里插入图片描述
相当于零阶展开进化到1阶展开!

例2:
极化张量:
在这里插入图片描述
(翻译累了,自己看吧(其实我也没看懂(捂脸)))
总之就是用张量积将一阶向量升维到了二阶张量。
例3:
拉曼红外也能预测了!!
在这里插入图片描述
一个字,绝!

好,收,下篇见!

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

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

相关文章

『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用

08 Qt Designer中容器布局和绝对布局的使用 1 容器布局1.1 设计容器布局1.2 保存文件并执行2 绝对布局2.1 设计绝对布局2.2 保存文件并执行1 容器布局 1.1 设计容器布局 先拖入一个容器Frame容器,然后拖入几个控件: 把拖入的控件拖入容器中: 选中容器,右键-布局-栅格布局:…

Node基础and包管理工具

Node基础 fs 模块 fs 全称为 file system,称之为 文件系统,是 Node.js 中的 内置模块,可以对计算机中的磁盘进行操作。 本章节会介绍如下几个操作: 1. 文件写入 2. 文件读取 3. 文件移动与重命名 4. 文件删除 5. 文件夹操作 6. …

mysql索引为什么提高查询速度(底层原理)

一、索引原理图 二、索引数据存储到硬盘而不是内存? 硬盘内存 成本低成本高 容量大容量小 读写速度一般读取速度快 断电后数据永久存储断电后数据清空 三、硬盘数据为什么要读取到内存?为啥不直接…

【狂神】Spring5笔记(四)之Mybatis和事物的整合

一、整合Mybatis方式一 目录结构: 大致内容结构: 主要难点就在于applicationContext.xml中相关配置的理解 代码图片如下 这个类就专门用于对象的创建就可以了 测试类: 实现类: SqlSessionTemplate 二、整合Mybatis方式二 相关代码…

Go在安装Gin时出现Failed to connect 报错问题的解决方案(已解决)

在命令行中输入:go get -u github.com/gin-gonic/gin指令安装Gin第三方包时出现连接错误与连接超时的情况如下: 在较新版本的Go中引入了全新的包管理机制,出现上述错误可能是包管理机制设置不恰当的问题,尝试在终端窗口输入如下…

9-AJAX-3原理

AJAX-原理 目录 XMLHttpRequest 的学习Promise封装简易版 axios案例 - 天气预报 学习目标 了解原生 AJAX 语法 - XMLHttpRequest(XHR)了解 Promise 的概念和使用了解 axios 内部工作的大概过程(XHR Promise)案例 - 天气预报 …

DHCP工作过程详解

只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。如果发现不是呢?Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关。 因为网关要和当前的网络至…

Vue3响应式源码实现

Vue3响应式源码实现 初始化项目结构 vue-proxy ├── effect.js ├── effect.ts ├── index.html ├── index.js ├── package.json ├── reactive.js ├── reactive.ts └── webpack.config.jsreactive.ts import { track, trigger } from "./effect&q…

leetcode 第 361 场周赛

2843. 统计对称整数的数目 核心思想:枚举每一个数是否是对称整数,第一种写法为python写法,第二种为一般写法我觉得更好,非常有思想性。 2844. 生成特殊数字的最少操作 核心思想:枚举特殊数字结尾的几种可能。其实自己做的时候一…

k8s环境部署配置

目录 一.虚拟机准备 二.基础环境配置(各个节点都做) 1.IP和hosts解析 2.防火墙和selinux 3.安装基本软件 4.配置时间同步 5.禁用swap分区 6.修改内核参数并重载 7.配置ipvs 三.docker环境(各个节点都做) 1.配置软件源并…

高数刷题笔记

在标准解答的时候可以用极限趋向于0去证明。上上图 性质解答则可以直接略去高阶,只看低阶。 先用等价无穷小将sin x换为x再看! 反函数此题可以用洛必达,也可以像这样去换自变量。 1-cosx2sin^2(x/2)x^2/2; 圈2表示了sinx ,x,tan x之间的差距…

MyBatis关系映射

文章目录 前言一、一对一映射1.1 创建实体1.2 xml配置 二、一对多映射2.1 创建实体2.2 resultMap配置2.3 测试 三、 多对多映射3.1 创建实体3.2 resultMap配置3.3 测试 前言 MyBatis是一个Java持久化框架,它提供了一种将数据库表和Java对象之间进行关系映射的方式。…

神经网络NLP基础 循环神经网络 LSTM

用的时候,只关心token的输入,以及hidden state就好了 sequence的length是多少,lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现

【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务

【SpringBoot应用篇】SpringBoot集成MinIO对象存储服务 对象存储服务MinIOMinIO简介MinIO特点开箱使用docker安装启动管理控制台 快速入门Java 上传文件到minio配置访问权限 封装MinIO为starter创建模块zy-minio-starter配置类封装操作minIO类对外加入自动配置其他微服务使用 安…

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步,智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式,智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等,可实现海洋管理的数字化转型。 传统的…

【【萌新的STM32的学习--非正点原子视频的中断设计思路】】

萌新的STM32学习–非正点原子视频的中断设计思路 我们分析而言 我们对于PA0 的设计就从此而来 对于边沿触发的选择我们已经有所了解了 我们下拉,但是当我们摁下开关的时候 从0到1 导通了 所以这个是下拉 上升沿触发 而对于KEY0 我们摁下是使得电路从原来悬空高阻态…

MySQL之事务与引擎

目录 一、事物 1、事务的概念 2、事务的ACID特点 3、事务之间的相互影响 4、Mysql及事务隔离级别(四种) 1、查询会话事务隔离级别 2、查询会话事务隔离级别 3、设置全局事务隔离级别 4、设置会话事务隔离级别 5、事务控制语句 6、演示 1、测试提交事务 2、测试事务回滚 4…

Linux(基础IO)

Linux(基础IO) 前言C语言文件IO什么叫当前路径stdin/stdout/stderr 系统文件IOopenclosewriteread 文件描述符文件描述符的分配规则 重定向输出重定向原理追加重定向原理输入重定向原理dup2添加重定向功能到minishell 缓冲区模拟实现一个缓冲区 理解文件…

python webdriver 测试框架数据驱动json文件驱动的方式

简介: 数据驱动excel驱动方式,就是数据配置在excel里面,主程序调用的时候每次用从excel里取出的数据作为参数,进行操作, 需要掌握的地方是对excel的操作,要灵活的找到目标数据 测试数据.xlsx: 路径-D:\test\0627 E…

手写Mybatis:第15章-返回Insert操作自增索引值

文章目录 一、目标:Insert自增索引值二、设计:Insert自增索引值三、实现:Insert自增索引值3.1 工程结构3.2 Insert自增索引值类图3.3 修改执行器3.3.1 修改执行器接口3.3.2 抽象执行器基类 3.4 键值生成器3.4.1 键值生成器接口3.4.2 不用键值…