图神经网络和分子表征: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.hqwc.cn/news/106863.html

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

相关文章

分布式秒杀方案--java

前提:先把商品详情和秒杀商品缓存redis中,减少对数据库的访问(可使用定时任务) 秒杀商品无非就是那几步(前面还可能会有一些判断,如用户是否登录,一人一单,秒杀时间验证等&#xff0…

fastadmin在前端调用 /api/common/upload 返回未上传文件或超出服务器上传限制

第一步:在api目录直接调用 域名/api/common/upload 上传图片的时候要在Common.php文件里面把验证登录的 protected $noNeedLogin [init]; 方法注释掉。 // protected $noNeedLogin [init];protected $noNeedLogin *;protected $noNeedRight *; 第二步&#…

【canal系】canal集群异常Could not find first log file name in binary log index file

这里先说明下这边使用的canal版本号为1.1.5 在描述这个问题之前,首先需要简单对于canal架构有个基本的了解 canal工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dum…

小米汽车进入生产调试冲刺阶段,雷军率队完成夏季新车路测

小米汽车通州生产基地即将进入生产调试冲刺阶段,小米集团董事长雷军率领小米汽车高层最近已经在新疆完成夏季新车路测,以争取在获得相关批文后尽快进入新车量产。 小米汽车的整个基地包括六个车间:压铸、冲压、车身、涂装、总装和电池。小米汽…

Pyspark综合案例(pyspark安装和java运行环境配置)

一、RDD对象 PySpark支持多种数据的输入,在输入完成后,都会得到一个:RDD类的对象 RDD全称为:弹性分布式数据集(Resilient Distributed Datasets) PySpark针对数据的处理,都是以RDD对象作为载…

用form表单以post的方式提交数据跳转地址

<script> function JumpPost() {var data { "module": "truck", "type": "html" }// 这里的参数可以根据实际情况&#xff0c;获取跳转到当前页面上你自己传过来的参数 jspost(实际你要请求的接口地址, data); }f…

后端笔试题(2)分频器波形图

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口

Kubernetes (K8s) 解读:微服务与容器编排的未来

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

elementui el-dialog 动态生成多个,点击按钮打开对应的 dialog

业务场景&#xff1a; 根据后端返回的数据&#xff0c;动态生成表单&#xff0c;返回的数据中会有表单字段的类型&#xff0c;如果单选、多选、富文本&#xff0c;其它的属性还好说&#xff0c;重点说在富文本&#xff0c;因为我想通过 dialog 弹窗的方式&#xff0c;进行富文…

【C++】哈希——哈希的概念,应用以及闭散列和哈希桶的模拟实现

前言&#xff1a; 前面我们一同学习了二叉搜索树&#xff0c;以及特殊版本的平衡二叉搜索树&#xff0c;这些容器让我们查找数据的效率提高到了O(log^2 N)。虽然效率提高了很多&#xff0c;但是有没有一种理想的方法使得我们能提高到O(1)呢&#xff1f;其实在C语言数据结构中&a…

JVM类的加载相关的问题

JVM类的加载相关的介绍 学习类的加载的加载过程对深入理解JVM有十分重要的作用&#xff0c;下面就跟我一起学习JVM类的加载过程吧&#xff01; 文章目录 JVM类的加载相关的介绍一、类的加载过程二、双亲委派机制1、类加载器的种类2、为什么JVM要分成不同的类的加载器3、类的加…

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟实践

卫星遥感具有客观、连续、稳定、大范围、重复观测的优点&#xff0c;已成为监测全球碳盘查不可或缺的技术手段&#xff0c;卫星遥感也正在成为新一代 、国际认可的全球碳核查方法。目的就是梳理碳中和与碳达峰对卫星遥感的现实需求&#xff0c;系统总结遥感技术在生态系统碳储量…