2023.09.10 学习周报

文章目录

  • 摘要
  • 文献阅读
    • 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模型,这会使模型具有更加复杂和更强的表达能力。

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

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

相关文章

【C++】学习STL中的list

❤️前言 大家好!,今天为大家带来的一篇博客是关于STL中的list,内容主要包括list的介绍使用、list的模拟实现。以及list与vector的对比。 正文 list的介绍和使用 首先,让我们看看list的文档介绍: list是可以在常数范…

PaddleOCR学习笔记3-通用识别服务

今天优化了下之前的初步识别服务的python代码和html代码。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <meta charset"utf-8"> …

数据挖掘的学习路径

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

Docker实战:docker compose 搭建Sonar

1、docker-compose-sonar文件准备 进入/home/docker目录&#xff0c;新建docker-compose-sonar.yml文件&#xff0c;内容如下&#xff1a; version: 3 services: sonar:image: sonarqube:8.9.6-communityrestart: always container_name: sonarqubevolumes:# 设置与宿主机时间…

Redis常见命令

命令可以查看的文档 http://doc.redisfans.com/ https://redis.io/commands/ 官方文档&#xff08;英文&#xff09; http://www.redis.cn/commands.html 中文 https://redis.com.cn/commands.html 个人推荐这个 https://try.redis.io/ redis命令在线测试工具 https://githubfa…

Hive_Hive统计指令analyze table和 describe table

之前在公司内部经常会看到表的元信息的一些统计信息&#xff0c;当时非常好奇是如何做实现的。 现在发现这些信息主要是基于 analyze table 去做统计的&#xff0c;分享给大家 实现的效果某一个表中每个列的空值数量&#xff0c;重复值数量等&#xff0c;平均长度 具体的指令…

9、补充视频

改进后的dijkstra算法 利用小根堆 将小根堆特定位置更改,再改成小根堆 nodeHeap.addOrUpdateOrIgnore(edge.to, edge.weight + distance);//改进后的dijkstra算法 //从head出发,所有head能到达的节点,生成到达每个节点的最小路径记录并返回 public static HashMap<No…

分享 8 个 VSCode 插件,提升你的编码体验

大多数开发者都在不断寻找让开发工作更轻松的方法&#xff0c;我也是如此。合适的工具可以帮助你实现这一目标。 在本文中&#xff0c;我们将探讨我个人使用的八个扩展&#xff0c;以优化我的编码体验。让我们来看看这些扩展的列表&#xff0c;亲自体验它们如何改善你的编码体验…

leetcode897. 递增顺序搜索树(java)

递增顺序搜索树 题目描述中序遍历代码演示 递归专题 题目描述 难度 - 简单 LC - 897. 递增顺序搜索树 给你一棵二叉搜索树的 root &#xff0c;请你 按中序遍历 将其重新排列为一棵递增顺序搜索树&#xff0c;使树中最左边的节点成为树的根节点&#xff0c;并且每个节点没有左子…

如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?

:::info 本文是“在Serverless平台上构建AIGC应用”系列文章的第一篇文章。 ::: 前言 随着ChatGPT 以及 Stable Diffusion,Midjourney 这些新生代 AIGC 应用的兴起&#xff0c;围绕AIGC应用的相关开发变得越来越广泛&#xff0c;有呈井喷之势&#xff0c;从长远看这波应用的爆…

解除百度安全验证

使用chrome浏览器用百度浏览时&#xff0c;一直弹百度安全验证&#xff1a; 在设置里进行重置&#xff1a; 然后重启浏览器就可以了。

Leetcode:【169. 多数元素】

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 难度&#xff1a;简单 题目链接&#xff1a;169. 多数元素 示例 1&#xff…

“系统的UI”——SystemUI

SystemUI的实现 以StatusBar为例&#xff0c;来分析下Android系统具体是如何实现它们的。 相关代码分为两部分&#xff0c;即&#xff1a; Service部分 代码路径&#xff1a;frameworks/base/services/java/com/android/server。 应用部分 代码路径&#xff1a;frameworks…

对接西部数据Western Digital EDI 系统

近期我们为国内某知名电子产品企业提供EDI解决方案&#xff0c;采用知行之桥 EDI 系统作为核心组件&#xff0c;成功与西部数据Western Digital&#xff08;简称西数&#xff09;建立EDI连接&#xff0c;实现数据安全且自动化传输。 EDI实施需求 EDI连接 传输协议&#xff1a;A…

c++ 学习之 静态成员变量和静态成员函数

文章目录 前言正文静态成员变量初始化操作如何理解共享一份数据访问权限 静态成员函数访问方式静态成员函数只能访问静态成员变量访问权限 前言 静态成员分为 1&#xff09;静态成员变量 所有对象共享一份数据在编译阶段分配空间类内声明&#xff0c;类外初始化 2&#xff09…

Spring 怎么解决循环依赖的呢?

Spring 怎么解决循环依赖 什么是循环依赖那 Spring 怎么解决循环依赖的呢&#xff1f;为什么要三级缓存&#xff1f;⼆级不⾏吗&#xff1f; 什么是循环依赖 Spring 循环依赖&#xff1a;简单说就是自己依赖自己&#xff0c;或者和别的 Bean 相互依赖。 只有单例的 Bean 才存在…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下&#xff1a; 1、页面链接检查&#xff1a; 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换正…

设计模式系列-原型模式

一、上篇回顾 上篇创建者模式中&#xff0c;我们主要讲述了创建者的几类实现方案&#xff0c;和创建者模式的应用的场景和特点&#xff0c;创建者模式适合创建复杂的对象&#xff0c;并且这些对象的每 个组成部分的详细创建步骤可以是动态的变化的&#xff0c;但是每个对象的组…

剑指 Offer 07. 重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 解题思路 首先&#xff0c;根据前序遍历结果确定根节点。前序遍历的第一个元素即为根节点的值。 接下来&#xff0c…

第29节-PhotoShop基础课程-滤镜库

文章目录 前言1.滤镜库2.Camera Raw滤镜 &#xff08;用来对图片进行预处理&#xff0c;最全面的一个&#xff09;3.神经滤镜&#xff08;2022插件 需要先下载&#xff09;4.液化&#xff08;胖-> 瘦 矮->高&#xff09;5.其它滤镜1.自适应广角2.镜头矫正 把图片放正3.消…