2023.09.10 学习周报

news2025/1/20 3:35:12

文章目录

  • 摘要
  • 文献阅读
    • 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 optim


class 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 X


class 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.coloradmin.cn/o/997180.html

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

相关文章

【LeetCode题目详解】第九章 动态规划part11 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV (day50补)

本文章代码以c为例! 一、力扣第123题:买卖股票的最佳时机 III 题目: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1…

基于springboot+vue的在线课程学习网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

unity实现Perlin噪声

Perlin噪声目的是为了生成连续变化的随机值。这里推荐一个使用unity实现的perlin噪声插件,包含源码,源码下载地址:https://download.csdn.net/download/hulinhulin/88323641https://download.csdn.net/download/hulinhulin/88323641 插件界面…

vscode 下载安装

vscode 下载安装常用插件 vscode 官网: https://code.visualstudio.com/ 点击右上角 Download 进入下载选择页面 选择自己使用操作对应 CPU 架构 下载 本文使用 x86 架构 64位 windows 系统为例 跳转下载页面 自动 开始下载 下载不开始?试试这个直…

关于黑马hive课程案例FineBI中文乱码的解决

文章目录 问题描述情况一的解决情况二的解决 ETL数据清洗知识社交案例参考代码结果展示 问题描述 情况1:FineBI导入表名中文乱码,字段内容正常情况2:FineBI导入表字段中文乱码,表名内容正常 情况一的解决 使用navcat等工具连接…

第九章 Linux实际操作——Linux磁盘分区、挂载

第九章 Linux实际操作——Linux磁盘分区、挂载 9.1 Linux分区9.1.1原理介绍9.1.2 硬盘说明9.1.3 查看所有设备搭载情况 9.2 挂载的经典案例9.2.1 说明9.2.2 如何增加一块硬盘9.2.3 虚拟机增加硬盘步骤 9.3 磁盘情况查询9.3.1 查询系统整体磁盘使用情况9.3.2 查询指定目录的磁盘…

TypeScript对象类型

废话不多说,还是挑点有营养的讲。 对象类型 1、匿名对象 匿名对象类型是在定义变量时直接使用花括号{},来定义一个对象类型。 const person: { name: string, age: number } { name: John, age: 25 }; 2、接口类型 使用接口来定义对象类型&#x…

二叉树的顺序结构以及堆的实现——【数据结构】

W...Y的主页 😊 代码仓库分享 💕 上篇文章,我们认识了什么是树以及二叉树的基本内容、表示方法……接下来我们继续来深入二叉树,感受其中的魅力。 目录 二叉树的顺序结构 堆的概念及结构 堆的实现 堆的创建 堆的初始化与…

LeetCode(力扣)455. 分发饼干Python

LeetCode20. 有效的括号 题目链接代码 题目链接 https://leetcode.cn/problems/assign-cookies/ 代码 从大遍历 class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:g.sort()s.sort()index len(s) - 1result 0for i in range(len(g) -…

老胡的周刊(第107期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 open-interpreter[2] 基于 LLM 为你提供一种…

车载软件架构——基础软件供应商开发工具链(一)

车载软件架构——基础软件供应商&开发工具链(一) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己…

创建 gstreamer 插件的几种方式

系列文章目录 创建 gstreamer 插件的几种方式 使用 gst-template 创建自己的gstreamer 插件 使用 gst-plugins-bad 里面的 gst-element-maker 工具创建gstreamer 插件 文章目录 系列文章目录前言一、gstreamer 官网提供创建插件的方法总结参考资料前言 本系列文章主要介绍如何…

EasyExcel实现指定行列的相同内容单元格合并

ExcelMergeUtil工具类 package com.sdy.resdir.biz.util;import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHold…

机器学习从0到1

机器学习,即machine learning 感谢easyai的精彩讲解: easyai网址 文章目录 机器学习的概念机器学习的原理监督学习,非监督学习,强化学习监督学习非监督学习强化学习 机器学习实操的7个步骤现在举一个具体的任务来说明这些步骤1.收…

Visual studio解决‘scanf: This function or variable may be unsafe. 问题

使用C语言的scanf函数在Visual Studio软件上运行会报如下错误: scanf: This function or variable may be unsafe. Consider using scanf s instead. To disable deprecation, use. CRT SECURE NO WARNINGS. See online help for details. 这个函数或变量可能是不安…

Red-Black Tree红黑树

红黑树特点: 1.根节点必须为黑色; 2.每个节点到子节点经过相同数目的黑色节点; 3.红色节点的子节点必须是黑色; 4.空指针也作为节点 红黑树如何插入新的节点? 1.如果是空树,插入新的黑色节点作为根节点&am…

Wine 8.14 开发版正式发布

Wine 8.14 最新开发版已正式发布。 Wine (Wine Is Not an Emulator) 是一个能够在多种兼容 POSIX 接口的操作系统(诸如 Linux、macOS 与 BSD 等)上运行 Windows 应用的兼容层。它不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是将 …

2023-9-10 Nim游戏

题目链接&#xff1a;Nim游戏 #include <iostream> #include <algorithm>using namespace std;int main() {int n;cin >> n;int res 0;while(n--){int x;cin >> x;res ^ x;}if(res) cout << "Yes" << endl;else cout << …

SICTF-2023-Crypto

文章目录 古典大杂烩RadioMingTianPaoeasy_coppersmith签到题来咯&#xff01;small_eeasy_math 古典大杂烩 题目描述&#xff1a; &#x1f429;&#x1f443;&#x1f42a;&#x1f43c;&#x1f445;&#x1f42f;&#x1f429;&#x1f448;&#x1f447;&#x1f46d;&a…

基于SSM的电子竞技管理平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…