文章目录
- 摘要
- 文献阅读
- 1-1 题目
- 1-2 创新点
- 1-3 本文工作
- 2-1 题目
- 2-2 什么是图
- 2-3 图神经网络
- 2-4 信息传递
- 3-1 题目
- 3-2 创新点
- 3-3 本文工作
- 深度学习
- 1.GNN的构建步骤
- 2.构建图的方法
- 3.GNN的简单样例
- 总结
摘要
本周阅读了三篇文章,第一篇是基于物理信息深度学习和激光雷达测量的时空风场预测,它将将Navier-Stokes方程编码到深度神经网络中,从而减小模型产生的误差,同时解决了深度学习中常遇到的过拟合问题;第二篇是图神经网络的简单介绍,从什么数据可以表示成一张图、图跟别的数据不同在哪、GNN模型是怎么样的以及提供一个GNN的环境这四个方面去探索和说明图神经网络的原理;第三篇是用于属性预测的几何增强分子表征学习,它提出了一个几何的GNN模型,能够利用到以前方法忽视的空间信息,即键角信息;实验结果表明,该方法明显优于其他基线。
I read three articles this week. The first is a spatiotemporal wind prediction based on deep learning of physical information and liDAR measurements, which will code Navier-Stokes equations into deep neural networks, thereby reducing the errors generated by the model and solving the overfitting problem often encountered in deep learning. The second part is a brief introduction of graph neural network, exploring and explaining the principle of graph neural network from four aspects: what data can be represented as a graph, what is the difference between graph and other data, how GNN model is, and providing a GNN environment. The third part is about the geometric enhanced molecular representation learning for property prediction. A geometric GNN model is proposed in this paper, which can make use of the spatial information neglected by previous methods, that is, the bond Angle information. Experimental results show that this method is significantly better than other baselines.
文献阅读
1-1 题目
文献链接:Spatiotemporal wind field prediction based on physics-informed deep learning and LIDAR measurements
1-2 创新点
1.能够对整个流域的流动动力学预测,包括无法测量的空间位置;通过NS方程隐式地考虑了测量之间的时空相关性,使得模型的精度高;通过强制物理约束去解决深度学习中经常遇到的过拟合问题。
2.首次将物理定律和数据融合到风力应用的深度学习模型训练中,以最小化拟合LIDAR测量值和执行NS方程的误差。
3.实验结果表明,该方法在多种不同场景下都能很好地预测整个流域的时空流速,同时验证了该方法的鲁棒性。
1-3 本文工作
1.具有大自由度的深度神经网络结构可以近似为由偏微分方程控制的复杂非线性系统,于是构建了一个深度全连接神经网络,共12层,隐藏层神经元数为128;然后将Navier-Stokes方程(提供了非常好的大气边界层流动描述)编码到深度神经网络中,并将一个观测过程嵌入到神经网络中,使深度神经网络具有在整个流域内学习流场演化动力学的能力。
2.采用基于高保真度风电场模拟器SOWFA对该方法进行了评估,结果表明该方法准确地预测了风速和风向,这是因为在不同位置测量的视线风速之间的相关性通过Navier-Stokes残差项被隐含地考虑在内,从而减小模型产生的误差。
3.采用的Navier-Stokes方程是二维的,目前的研究没有捕捉到三维的流动结构和热效应,模型的性能会受到潜在物理定律的限制。因此,需要考虑更精确的物理模型,即三维Navier-Stokes方程来提高预测性能。
2-1 题目
文献链接:A Gentle Introduction to Graph Neural Networks
2-2 什么是图
1.图是表示实体之间的关系,其中实体就是一个点,关系就是一条边。
2.图上有四种信息,顶点的属性、边的属性、全局的信息以及连接性。
3.怎么表示连接性?
1)邻接矩阵:有n个顶点,邻接矩阵是n*n的矩阵。存在的问题是,矩阵非常大,又比较稀疏,放在GPU上浪费计算资源。
2)邻接列表:表的长度与边的个数一样,第i项代表第i条边。具有储存高效,对顺序无关的特点。
2-3 图神经网络
1.GNN是一个对图上所有的属性,包括顶点、边、全局的上下文进行一个可以优化的变换,这个变换是能够保持住图的对称信息的,而对称信息是指将这些顶点进行另外一个排序后,整个结果仍然保持不变。
2.GNN采用一个信息传递的框架,输入是一个图,输出也是一个图。
3.GNN的构造
1)针对顶点集、边集、全局性构造一个MLP,即一个GNN的层;输入的大小和输出的大小一致,取决于输入的张量;最后得到的输出是属性都被更新过,但结构没有发生变化的。
2)MLP只对张量独自作用,不会考虑所有的连接信息。
4.汇聚
当有某个顶点没有张量信息的时候,可以通过pooling汇聚的操作得到这个顶点的信息。在CNN中,常见的pooling方法是maxpooling和maxpooling。
5.局限性
1)GNN blocks中并没有使用图的结构信息,即在对每个属性做变换的时候,每个属性进入MLP,但不会注意这个顶点与其它相连边的信息。
2)并没有把整个图信息更新进入属性中,导致最终结果并不能充分利用这个图所蕴含的信息。
2-4 信息传递
1.多轮消息传递的本质是多层汇聚,是更新节点嵌入的重要手段。类似于CNN的多层卷积,网络末端层的一个元素可由输入层多个元素汇聚而成。
2.两个阶段:
1)某节点向周围所有相连的节点发出消息
2)该节点从周围节点接收消息,并更新自身,也从而了解周边环境
3.全局信息
假设构建的图比较大且连接不紧密,又因为信息的传递是顶点到相邻顶点的,导致相距较远的点传递信息很慢。因此设置一个master node,它是一个虚拟的点,它可以与所有的边相连。
4.模型的可解释性
为了知道模型从图中学到了什么,可以从中抓取子图进行观察。
5.存在的问题
1)图上面做优化很困难,因为它是一个稀疏的架构,每个结构是动态的,如何在GPU上进行计算很困难。
2)对超参数、采样、优化都非常敏感。
3-1 题目
文献链接:ChemRL-GEM: Geometry Enhanced Molecular Representation Learning for Property Prediction
3-2 创新点
1.设计了一个几何的GNN架构,可以同时模拟分子中的原子、键和键角。
2.给一个分子设计双图,一张图编码了原子键关系,另一张图编码了键角关系。
3.提出了几种新的几何级自监督学习策略,利用局部和全局分子三维结构来学习空间知识。
3-3 本文工作
1.设计了一个基于几何的GNN来学习原子-键-角关系,该GNN通过在原子-键图之上引入键-角图来利用键角信息;将原子和键的拓扑结构视为一个图,并将每个元素的消息传播给相邻元素,编码分子的拓扑和几何信息。
2.构建了多种几何级自监督学习方法来预测分子几何形状,即键长预测,键角预测,原子距离矩阵预测,以获取分子三维空间知识,解决标记数据稀疏的问题。
3.进行大量实验,与多个竞争性基线进行了比较,实验结果表明在12个基准测试中显著优于其他方法。
4.在未来工作中,将考虑其他几何参数,如扭转角,以进一步提高分子表示能力;还将研究将分子表征应用于其他分子相关问题的性能,包括预测药物-靶标相互作用和分子之间的相互作用。
深度学习
1.GNN的构建步骤
1)定义图结构:首先明确问题是基于图数据的,构建一个图,用节点表示实体,边表示节点之间的关系。然后给每个节点和边分配特征,将这些特征用于模型的输入。
2)选择合适的GNN模型:如GCN、GGNN、GAT等,根据数据集的性质来确定,因为有些要考虑到空间信息,因此就需要更为合适的模型。同时,需要确定定义模型的层和激活函数,以及在每一层中执行节点更新和信息聚合的方式。
3)定义信息传播规则:这一部分非常关键,有了信息传递的方式就可以使模型学习整个图的信息。其中每个节点根据其邻居节点的信息进行更新,因此需要注意到如何聚合邻居节点的信息并将其与当前节点的特征进行融合之类的问题。
4)模型的训练和调优:因为GNN对超参数、采样、优化都非常敏感,因为这一步也同样关键,一个简单的改变就会产生差异较大的变化。
2.构建图的方法
对于GNN来说,图的构建十分重要,主要取决于处理的问题和可用的数据:
1)如果数据相对简单,只需要明确定义节点和边,并将它们映射到数据集中的实体和关系上,就可以手动构建图。
2)根据关联矩阵构建图,用每行和每列分别表示图中的节点,矩阵的元素表示节点之间的关联或权重。
3)根据空间位置构建图,用节点表示地理位置,边表示地理接近性或连接性。
4)基于知识图谱构建图,构建自己的知识图谱,并将其转化为图结构。
3.GNN的简单样例
以下是一个基于Pytorch实现的GNN代码示例,实现了一个有两个GraphConvLayer层的GNN模型。具体来说,模型的输入为一个特征矩阵X和邻接矩阵A,输出为一个预测标签。在训练过程中使用交叉嫡损失函数和Adam优化器来优化模型。在测试过程中,使用新的输入和邻接矩阵来进行预测。
import torch
import torch.nn as nn
import torch.optim as optimclass GraphConvLayer(nn.Module):def __init__(self, input_dim, output_dim):super(GraphConvLayer, self).__init__()self.linear = nn.Linear(input_dim, output_dim)def forward(self, X, A):X = self.linear(X)X = torch.matmul(A, X)return Xclass GraphNet(nn.Module):def __init__(self, input_dim, hidden_dim, output_dim):super(GraphNet, self).__init__()self.conv1 = GraphConvLayer(input_dim, hidden_dim)self.conv2 = GraphConvLayer(hidden_dim, hidden_dim)self.linear = nn.Linear(hidden_dim, output_dim)def forward(self, X, A):X = self.conv1(X, A)X = torch.relu(X)X = self.conv2(X, A)X = torch.relu(X)X = self.linear(X)return X# 构造模型和数据
input_dim = 10
hidden_dim = 16
output_dim = 2
model = GraphNet(input_dim, hidden_dim, output_dim)X = torch.randn(32, input_dim)
A = torch.randn(32, 32)
target = torch.randn(32, 2)# 定义损失函数和优化器
loss_fn = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())# 训练模型
for epoch in range(100):optimizer.zero_grad()output = model(X, A)loss = loss_fn(output, target)loss.backward()optimizer.step()# 测试模型
X_test = torch.randn(16, input_dim)
A_test = torch.randn(16, 16)
output_test = model(X_test, A_test)
总结
我们可以知道GNN的出现解决了传统深度学习方法难以应用到非规则形态数据上的痛点,大大扩展了神经网络的应用空间,并在一些问题上改进了模型的可解释性。同时,GNN也遇到了一些挑战,因为图与之前的图像和文本不同,图的每个节点连接的邻居个数、节点类型以及边的类型不一样,就制造了很多不规则的运算,每个节点需要运算的程度不一样。然而,计算机特别适合规则运算,却不适合不规则运算,图的计算就是不规则运算,因此很难去解决这个问题。于是,怎么处理数据去构造图,以及怎么构建不同网络结构下 GNN是非常必要的。本周学习GNN的知识点,理解其中的关键点,实现了一个简单示例,因此下周会实现更实际的GNN模型,这会使模型具有更加复杂和更强的表达能力。