图神经网络与分子表征:1. 分子图和图神经网络基础
CSDN的朋友们大家好,好久没写系列文章了。
近期读了很多图神经网络(GNN)和分子表征(molecular representation)的论文,正好最近不是很忙,所以我决定把自己的学习过程记录下来,与大家共勉。
这个系列总体上将围绕着 GNN for molecular representation 展开,我们从分子图和GNN基础出发。
本文主要参照以下两篇精美的科普文章:
- A Gentle Introduction to Graph Neural Networks
- Understanding Convolutions on Graphs
这两篇文章很出名,很大程度可能因为李沐老师曾出视频讲解过其中第一篇,也有很多同学写了相似的笔记,因此我这里就浅浅记录一下我个人的一些takeaways
分子图
图是具有一定映射关系的点集和边集的集合。
图中每个点和边都有其特定的性质(embedding),整张图也有一个全局的性质(global)。
这种数据结构可能跟传统深度学习的研究对象不一样,例如,CV中是将一张图看做很多的pixel,每个pixel有三元色混合而成。我们此处可将一张图分成点集、边集和全局三块,其实每块儿都可以是相对独立的。看点集时,就可以将每个点看作一个pixel,每个点有很多embedding一样。其他的,边集和全局也是类似的。
图可以表征很多现实世界的物体,例如,图片和自然语言可以由图结构表示,人与人之间的关系也可以由一条条边链接。
当然,最重要的是,分子可以很好的由图的形式表示。分子中的每个原子可被看做图上的节点。分子内成键可以看作连接不同节点的边。
如果我们进一步把每个键近似为一致的,例如,邻接矩阵中对应位置原子成键记为1,不成键记为0。我们就得到了休克尔分子轨道理论中常用的邻接矩阵。该矩阵的特征值与分子稳定性等密切相关,扬州大学的汪洋教授曾基于此发展出了XSI和CSI理论。(好几篇顶刊)
分子、邻接矩阵、分子图示意如下:
图神经网络
OK,请大家暂时忘掉分子图,我们拿到分子后将其转换成了图,后面怎么做神经网络就暂时与分子儿子无关了
OK,请大家再看一下上一节提到的图的三个维度:点,边和全局
目前为止,这只是一张静态的图。我们暂且将神经网络当成一个黑箱,如果不考虑三个维度相互之间的信息交互的话,我们可以给每一个维度写一个黑箱神经网络。原图上的各个embedding在经过黑箱后进行了迭代,形成了新的embedding。我们称这样的现象为update,这样的模块可以是多个,这样的话,图中各个元素的embedding会经过多次的update,如下:
我们现在聚焦到点集上某点的一次update。我们希望该点能够感知到周围点的存在,即,感受到周围的环境。在图神经网络里对应的专业术语是消息传递,message passing,还有一个术语是,信息聚合,aggregate。如下:
多层的消息传递如下:
可以看到,初始图中的局域的性质在经过多次message passing后可以影响到远处的节点,这样的现象又叫做图上的卷积操作。详情请看:Understanding Convolutions on Graphs
embedding update和message passing是图神经网络中的两大基本概念。二者本质上是在进行信息的聚合和迭代,在经过多个block后,输入的图会变成一张信息满满的图,此时,我们在基于此对目标性质进行预测。这一过程叫做图的pooling.
如果任务是预测点的性质,比如,预测分子中每个原子的电荷量。有以下两个思路:1. 每个点对应的embedding feature是多维的,去预测一个标量,可以套用简单的回归模型。2. 边集和全局的embedding feature可以通过适当的方式助力点性质的预测。如下图所示:
同样的,对边的性质做预测时,也可以将点集注入到边集的性质集合中:
当然,我们用的最多的还是对整个图的性质做预测。例如,预测某分子的能量。这样,我们可以将点和边的性质汇总到全局(下图仅为边到全局):
注意到,点集、边集和全局之间的信息交互并非只在预测阶段使用。在信息聚合阶段也经常看到。例如,下图中的,node 和 edge 之间多次交互,向浪一样前进,因此叫做weave layer。
综上,我们得到了GNN工作的完整链条:
输入的图在经过多次的信息聚合和迭代后,形成了一张新的图,基于这张图,我们对目标性质作预测。
相关文章:
图神经网络与分子表征:1. 分子图和图神经网络基础
CSDN的朋友们大家好,好久没写系列文章了。 近期读了很多图神经网络(GNN)和分子表征(molecular representation)的论文,正好最近不是很忙,所以我决定把自己的学习过程记录下来,与大家…...
Spring Boot与Redisson的整合。分布式锁
Spring Boot与Redisson的整合可以帮助您在Spring Boot应用程序中使用分布式锁、缓存等功能。下面是一些基本步骤来整合Spring Boot与Redisson: 添加Maven/Gradle依赖: 在您的Spring Boot项目的pom.xml(Maven)或build.gradle&#…...
Lua中逻辑运算符and,or,not 区别与用法
在Lua中,逻辑运算符包括 and、or 和 not。它们用于对布尔值进行逻辑运算。 and运算符: 当同时满足两个表达式时,返回第二个表达式的值;否则,返回第一个表达式的值。如果第一个表 达式的值为false或nil,则…...
使用 spaCy 增强 NLP 管道
介绍 spaCy 是一个用于自然语言处理 (NLP) 的 Python 库。SpaCy 的 NLP 管道是免费且开源的。开发人员使用它来创建信息提取和自然语言理解系统,例如 Cython。使用该工具进行生产,拥有简洁且用户友好的 API。 如果您处理大量文本,您会想了解更多相关信息。例如,它是关于什…...
【HCIP】08.ISIS中间系统
链路状态协议,传递LSA信息ISIS基于数据链路层封装在OSI时,也有自己的网络层地址和自己的路由协议,即ISIS。之前的ISIS支持OSI的网络层地址,是为OSI中的CLNP(无连接网络协议)网络设计的路由协议,…...
Android 13 Framework 添加自定义的系统服务CustomService
目的: 添加自定义的系统服务,在自定义的服务中开发定制的API接口和功能,独立于系统核心服务,方便开发和维护。 开发环境:Android 13 MTK平台 涉及修改的文件如下 device/mediatek/sepolicy/base/private/service_contexts device/mediatek/sepolicy/base/vendor/platfo…...
前端食堂技术周刊第 95 期:Fresh 1.4、Rollup 迁移至 SWC计划、RSC Devtools、使用开源库的边界、AI 帮你讲论文
美味值:🌟🌟🌟🌟🌟 口味:冰葡美式 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...
【TypeScript】枚举类型
在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。 以下是 TypeScript 中枚举的基本用法和特点: // 声明一个枚举 enum Direc…...
快速通过华为HCIP认证
你可以按照以下步骤进行准备和学习: 华为认证课程和资料--提取码:1234https://pan.baidu.com/s/1YJhD8QbocHhZ30MvrKm8hg 了解认证要求:查看华为官方网站上的HCIP认证要求和考试大纲,了解考试的内容、考试形式和考试要求。 学习相关知识&am…...
派森 #P124. 公式计算
描述 输入数正整数m,输出0! 1! ...m!的计算结果。 样例 输入 5 输出 154 代码: m int(input()) result 1 factorial 1 for i in range(1, m 1):factorial * iresult factorial print(result) # 法2def factorial(n):"""计…...
opencv进阶14-Harris角点检测-cv2.cornerHarris
类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…...
JVM中对象和GC Root之间的四种引用关系
1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用,只有当GC Root不再引用该对象的时候,才会被回收 例子: List<String> list new ArrayList<&…...
【李宏毅机器学习】注意力机制
输出 我们会遇到不同的任务,针对输出的不一样,我们对任务进行划分 给多少输出多少 给一堆向量,输出一个label,比如说情感分析 还有一种任务是由机器决定的要输出多少个label,seq2seq的任务就是这种,翻译也…...
Nginx使用keepalived配置VIP
VIP常用于负载均衡的高可用,使用VIP可以给多个主机绑定一个IP,这样,当某个负载应用挂了之后,可以自动切到另一个负载。 我这里是在k8s环境中做的测试,集群中有6个节点,我给140和141两个节点配置VIP。 1. 安…...
C语言编写图形界面
文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下: #include <windows.h>windows.h是 Windows 操作…...
K8s学习笔记3
Kubernetes功能: Kubernetes是一个轻便的可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Goog…...
ceph集群的扩容缩容
文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph,出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统,8…...
gremlin安装使用 详细步骤
gremlin是一个图数据库查询工具,注意他只是一个工具类似于dbeaver,navicat,sqlyog,是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…...
Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用
下面是一个Java语言编写的计算出租车运输费用的程序: java import java.util.Scanner; public class TaxiFareCalculator { public static void main(String[] args) { Scanner input new Scanner(System.in); System.out.print("请输入出租车行驶的里程&…...
十、flume的安装
1.解压 2.改名 3.修改权限 4.编辑环境变量并source export FLUME_HOME/usr/local/flume export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$SQOOP_HOME/bin:$PIG_HOME/bin:$FLUME_HOME/bin 5.配置 6.查看版本 7.启动Hadoo…...
互联网广告及产品变现认知分析整理
深入学习互联网广告及产品,并且高效利用这一模式进行变现。 字节先是建立了一个非常强大的用户产品——抖音,通过各种渠道让抖音快速成长起来,收获了一大批初始用户。有了用户基础之后,字节开始打造它的广告产品,逐渐…...
item_search_img-按图搜索淘宝商品(拍立淘)
一、接口参数说明: item_search_img-按图搜索淘宝商品(拍立淘),点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…...
OWASP Top 10(2021)漏洞学习(最新)
A01:2021-权限控制失效 从第五位上升到第一位,94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试,该事件的 平均发生率为 3.81%,该漏洞在提供的数据集中出现漏洞的应用数量最多,总发生漏洞应用数量超过31.8万多 次。 …...
mysql 、sql server 游标 cursor
游标 声明的位置 游标必须在声明处理程序之前被声明,并且变量和条件还必须在声明游标或处理程序之前被声明 游标的使用步骤 声明游标打开游标使用游标关闭游标 (sql server 关闭游标和释放游标) sql server 游标 declare my_cursor curs…...
dockers搭建基本服务
1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 拉取mysql-5.6和owncloud的镜像 docker run -d --name mdb --env MYSQL_ROOT_PASSWORD123 cytopia/mysql-5.6 docker run -d -p 90:80 --name webdcloud --link mdb:mdb owncloud 注册的时候,数据…...
微信小程序纯前端从阿里云OSS下载json数据-完整版
起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…...
【微服务实战】01-工程结构概览
文章目录 工程结构概览:定义应用分层及依赖关系1.应用分层2.定义Entity3.仓储层3.1 工作单元:事务管理3.2 仓储层 4.领域事件5.APIController最佳实践 工程结构概览:定义应用分层及依赖关系 1.应用分层 领域模型层基础设施层 ⇒ 仓储应用层 ⇒ Api、后台任务Job共…...
论文导读|European Journal of Operational Research近期文章精选:旅行商问题专题
推文作者:王松阁 编者按 在“European Journal of Operational Research近期论文精选”中,我们有主题、有针对性地选择了European Journal of Operational Research中一些有趣的文章,不仅对文章的内容进行了概括与点评,而且也对文…...
playwright迭代元素
DOM结构 <ul><li>apple</li><li>banana</li><li>orange</li> </ul>迭代元素操作 通过 page.get_by_role("listitem") 会匹配到 apple, banana, orange, 如果要对这一组数据中的每个元素进行操作&#…...
65 | 增长模型案例
增长模型代表了一种综合性的方法论,旨在通过深入了解用户行为、市场趋势和数据洞察,来指导企业制定有效的增长战略。这种方法突破了传统的经验主义,将决策过程建立在数据驱动和实验的基础之上。增长模型不仅仅是一种理论,更是一种实际操作的框架,帮助企业在各个层面实现业…...
建设网站的网站有哪些/企业网络推广网站
2019独角兽企业重金招聘Python工程师标准>>> 数个程序员合作,开发一个项目。某个程序员A开发前端,要调用接口等。另一个程序员B开发后台管理程序。 程序员A希望后台开发的人能帮忙造些数据。为了方便程序员A创建数据,后台开发的程…...
高大上网站建设公司/电商网站对比
YAF中文文档:http://www.laruence.com/manual/index.html 1 YAF框架是用C开发的,属于PHP的扩展框架; 2 YAF的性能相对于源生PHP,性能只降低不到10%; 下面直接切入正题,如何在windows下扩展yaf并生成yaf框架…...
免费申请域名的步骤/免费培训seo网站
在做企业应用集成解决方案中,错误处理这一块是非常重要的一个环节,而相较于于自身原因导致的错误,调用远程服务时出现错误才是最让人头疼的,在人们发挥聪明才智总结出的各类解决方案中,重试无疑是最容易想到且实施的方…...
无锡哪家网站做的好/网络优化行业的发展前景
文章目录代词人称代词物主代词指示代词总结作业代词 代词是为了避免重复而用来代替名词的词语。英语代词分为以下九类:人称代词、物主代词,反身代词、相互代词、指标代词、不定代词、疑问代词、连接代词和关系代词。大多数代词具有名词和形容词的作用。…...
郑州免费做网站的/如何建立自己的网页
修复删除文件 1、debugfs 打开,刚刚被删除文件所在的分区 open /dev/sda2 2、用ls 加-d参数显示刚刚删除文件所在的目录 ls -d /root/data 显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –I <393289> 记下得到的block号b_num。 3、推出debu…...
零基础网站建设教学公司/如何在微信上做推广
以下实例中我们将数据表 runoob_tbl 数据导出到 /tmp/tutorials.txt 文件中: mysql> SELECT * FROM runoob_tbl -> INTO OUTFILE ‘/tmp/tutorials.txt’; 你可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式: mysql> SELECT…...