图神经网络与分子表征:6. EGNN

本文介绍了EGNN,一种基于数学推导的神经网络模型,尤其在扩散生成模型中受到推崇。文章强调了公式化描述在模型设计中的重要性,并对比了EGNN与传统模型如Schnet的区别,指出EGNN通过等变性处理坐标信息,尽管其行文逻辑较为直接,但在实际使用中需注意其不变量特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多人在完成升学考试后便很少参与公式推导这种数学锻炼,导致大家对数学公式避之不及。事实上,很多经典的神经网络框架正是基于简单、直观的数学推导搭建的。本文将要介绍的 EGNN (2021 ICML) 正是其中之一。

前言

EGNN 的诸多作者中并没有长期从事 AI for Science 的研究员。第一通讯 Max Welling 是被引 10w+ 的传统 AI 领域大牛,第一作者 Victor Garcia Satorras 在发完这篇后,似乎没再发过有影响力的作品。倒是第二作者 Emiel Hoogeboom 在这篇论文后发布了鼎鼎大名的 EDM 。由于 EDM 中使用的表征模型正是 EGNN,所以 EGNN 被计算机领域的各路大神奉为圭臬,尤其是各种各样的扩散生成模型,其表征框架一般都是 EGNN。因此说,EGNN 是当下扩散模型的宠儿一点不为过。
在阅读 EGNN 论文时,能明显感觉到作者是行外玩家,行文逻辑中看不到一点化学、物理含义,就是拼凑各种网红关键词的裁缝作品。比如,作者说自己的网络是一个等变网络,就在标题里大大方方写上 Equivariant 。各种引文在引用这篇文章时也不分青红皂白,直接说这是一个等变网络。这里想吐槽下,传统 AI 会议论文有时候真的就是直白、逻辑简单。因为 AI 发展到今天更像是一个搭积木的游戏。很多行外人其实并不关心积木本身是怎么样的,他们大多只是听到一些关键词,比如,等变,等变的好,我就找一个等变的模型,大家都用 EGNN,我也用 EGNN,没了。
OK,闲话少说,咱们进入正题

公式化

使用数学公式清晰、准确的描述先有框架是理性设计新模型的基础。在 EGNN 中,作者首先对 GNN 进行了公式化描述:
在这里插入图片描述

作者将图神经网络的工作流程划分成了三段:

  1. 消息制备:对应图神经网络里的边,消息的制备是由两点距离 aij,周边邻居 j 的隐变量和节点 i 本身的隐变量完成的,外边套一个神经网络 ϕ e \phi_e ϕe ,增加拟合能力。
  2. 消息聚合:一般的 GNN 都是将邻居的消息进行相加。
  3. 隐变量迭代:在完成消息制备和聚合后,我们需要对所有节点的隐变量进行迭代

作者随后对常见神经网络进行公式化,例如,Schnet 如下:
在这里插入图片描述
我们对应下之前的解析
在这里插入图片描述
可以看到,schnet 框架被精准解析,该框架在后两步消息聚合和隐变量迭代跟传统 GNN 并无区别,只是在第一步制备消息时加了一个平滑的激活函数 ϕ c f \phi_{cf} ϕcf

EGNN 公式推导

在对前人工作进行总结之后,EGNN 作者们变开始着手设计等变网络,其设计思路可谓是简单粗暴。
首先,等变是什么?可以参考前一篇文章
简单来说,当分子的输入坐标进行旋转时,分子中原子受力等性质也会随着坐标的旋转而旋转。
那么,为什么之前那么多模型不是等变的呢?
作者指出,之前的模型只用了原子间距离,这是一个标量啊,不会随分子旋转而发生变化。
那怎么把距离信息转化成有方向的矢量呢?作者提出了和 PAINN 同样的思路:使用向量。
但是实操起来,非常简单粗暴,直接把原子坐标信息加到了神经网络的迭代过程中。说实话,看到这里呆住了。不愧是计算机大佬。没那么多弯弯绕。读过我的 PAINN解析 的朋友可能还记得,PAINN 讲了一个非常物理、有深度的故事,一步步将向量引入进来。EGNN 的行文逻辑太简单了:

  • 之前的网络不等变,是因为与坐标相关的信息在提取完原子间距离后直接扔了。这样旋转坐标就无法影响到 target 的方向。
  • 那我直接把坐标加到消息传递的每一步不就好了。
  • 作者扔出了一堆公式:
    在这里插入图片描述
    与上面经典 GNN 相比,消息聚合和节点隐变量迭代维持不变,唯一有所区别的是消息制备过程。公式 (3) 和 Schnet 的框架基本一致,也是提取两原子间的标量距离信息。只不过这里的原子坐标替换成了会变的原子坐标。公式 (4) 指出,原子坐标怎么变比较合适。公式 (4) 可谓是全文的精髓,通过显式的更迭原子坐标,作者实现了迭代后的坐标相对输入坐标的等边性。但也仅此而已。与节点隐变量迭代相关的公式 (3) (5) (6) 均是不变网络。如果整个网络在做下游任务时只用节点隐变量,整个网络还是不变网络。如果能像 PAINN 那样将等变的向量和不变的节点信息进行混合,再进行下游任务,此时将是一个等变网络。这一点,EGNN 的作者一笔带过,只是在最后的附录里给出了证明过程,并承认,节点隐变量是一个不变网络。
    下面我将尝试顺着 EGNN 原文的思路对 EGNN 的等变性进行推导:
  1. 证明对象:
    在这里插入图片描述
    作者首先明确了证明对象。GNN 是由多个消息传递层叠加得到的。EGNN 同样也是,作者将每个消息传递层叫做 EGCL (equivariant graph convolutional layer)。坐标旋转对性质预测的影响可以拆分成,经过每一层时的影响,每一层都等变了,整体就是等变的。
    等式右边表示,输入坐标进行旋转。等式坐标表示,输出的坐标也会随之旋转。这就是等变的标准描述。注意,节点隐变量 h l + 1 h^{l+1} hl+1 并没有随输入坐标变化。因此,节点隐变量是一个不变量。
  2. 逐个击破
    作者引入了四个公式,只要我们挨个证实每个公式都不会对最终的,坐标 x l + 1 x^{l+1} xl+1 造成影响即可。
    在这里插入图片描述
    对于公式 3,作者证明,坐标旋转不会对等变性造成影响:
    在这里插入图片描述
    因此 m i , j m_{i,j} mi,j 是一个不变量。注意到,公式 5,6 在对节点隐变量进行迭代时,仅使用了 m i , j m_{i,j} mi,j,所以,节点隐变量是一个不变量
    下面,作者证明,原子坐标在迭代过程中将维持等变性
    在这里插入图片描述
    这里的证明过程简单直白,就是将公式 4 中的坐标替换成经过旋转后的坐标,再进行简单展开合并即可。
    至此,作者证明完毕。
    值得一提的是,大部分神经网络在使用时仅有效利用节点隐变量,而这一点在 EGNN 中被忽略。EGNN 的节点隐变量是一个不变量,但是大部分使用者不会关心这些细节,他们只是将 EGNN 作为自己的一块积木,说是等变的模型就是等变的。所以大家在使用 EGNN 时需要多加小心。
    在阅读 EGNN 论文的时候,我时常会想起 PAINN。两者架构何其相似,但 PAINN 的行文逻辑物理的多,最后还教大家如何有效利用 vector 信息。
    这篇文章就介绍到这里,谢谢大家。
### 回答1: 在接口测试中,依赖登录状态的接口需要先进行登录操作,获取登录后的token或session等信息,然后将这些信息作为请求参数传递给需要测试的接口。测试时需要验证登录状态是否正确,以及接口返回的数据是否符合预期。同时,还需要测试登录状态失效后的接口返回情况,以保证系统的安全性和稳定性。 ### 回答2: 在接口测试中,当涉及到需要登录状态的接口时,需要特别注意测试。因为这些接口需要保证在正确的登录状态下才能正确地进行操作和返回结果。下面是一些应该考虑到的测试步骤: 1.确定登录状态对接口的影响 在测试依赖登录状态的接口之前,需要明确登录状态对接口的影响。为此,我们应该在测试计划中提供详细的用例。测试人员应该体面地覆盖所有目标结果,并特别注意测试通过不同用户角色的接口,以确保在不同用户角色的登录状态下接口行为的正确性。 2.独立测试登录接口 在测试依赖登录状态的接口之前,需要先独立测试登录接口。如果登录接口出现问题,那么依赖登录状态的接口肯定无法工作。在这种情况下,测试团队必须确保登录接口能够正常的执行和返回预期结果。 3.操纵缓存和Cookies 测试通过操纵缓存和Cookies模拟操作会话失效情况,从而测试依赖登录状态的接口。例如,通过删除或修改Cookies或缓存数据以模拟过期会话,以确保接口的行为和状态正确响应。同时,测试也可以操作在同一时间内的多个会话,以确保会话和管理的正确性。 4.模拟登录和注销场景 测试人员可以通过不同的方式模拟登录和注销场景。例如,测试可以通过模拟重复登录或同时存在多个登录会话的情况来测试接口的准确性,并且在随后的注销场景中,测试可以验证是否安全注销了会话,并且没有留下敏感信息在会话中。 5.模拟会话超时 在实际使用过程中,会话超时是常见的场景之一。测试人员需要模拟会话超时的场景,并且确认接口的响应是否正确。 总之,测试依赖于登录状态的接口是非常重要的。确保正确地测试会话管理,行为和状态会有助于提高整个应用程序的质量,达到用户的期望。 ### 回答3: 在进行接口测试中,遇到依赖登录状态的接口,需要采取一些特殊的测试方法,以确保测试结果的准确性和全面性。以下是一些测试建议: 1. 准备测试数据 登录状态的接口测试需要有一定的测试数据,包括登录用户名和密码。测试数据可以通过手动创建,或者通过自动化测试工具创建。 2. 保持登录状态 在进行接口测试时,需要保持登录状态才能执行后续操作。可以使用手动方式登录,或者通过代码自动化登录,并将登录状态保存下来。 3. 测试正常登录和非法登录的情况 接口测试时需要测试正常登录和非法登录的情况,以确保系统能够正确处理这些情况。正常登录需要输入正确的用户名和密码,而非法登录则需要输入不存在的用户名或错误的密码。 4. 测试登录状态失效的情况 在接口测试中,需要模拟登录状态失效的情况,以确保系统能够正确处理这种情况。可以通过手动方式注销登录,或者在代码中设置登录状态失效。 5. 测试重复登录的情况 有些系统可能不允许用户重复登录,需要测试这种情况。可以通过手动方式和代码自动化方式测试。 6. 针对特定用户测试 如果是针对特定用户进行接口测试,需要使用特定用户的账号进行测试,确保测试结果具有代表性。 综上所述,接口测试中依赖登录状态的接口测试,需要考虑多种情况,依据不同情况采取不同的测试方法,这样才能保证测试结果的准确性和完整性。同时,可以通过自动化测试工具执行测试,提高测试效率和一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值