2023/4/16周报

news2024/9/29 3:21:28

目录

摘要

论文阅读

1、标题和现存问题

2、模型构建

3、方法实现

4、实验结果

5、扩展实验

深度学习

1、GNN特点

2、原理

3、GNN数据处理

总结

摘要

本周在论文阅读上,阅读了一篇基于图神经网络的技术识别链接预测方研究论文。通过融合了时间特征的专利IPC共现网络,训练图神经网络模型实现链接预测 方法,为技术发现和知识供给提供参考。但文章模型对于运算成本和时间成本较其他模型需求更高,这是以后应当进行优化的方向。在深度学习上,复习了GNN的特点和原理,同时对GNN的数据集制作也进行了学习。

This week,in terms of thesis reading,perusaling a research paper on graph neural network-based technology for identifying link predictors.By using a patent IPC co-occurrence network that integrates temporal features, a graph neural network model is trained to implement link prediction methods, providing reference for technology discovery and knowledge supply.However, the article model has higher requirements for computational and time costs compared to other models, which should be optimized in the future.In deep learning,reviewing the characteristics and principles of GNN, as well as also learning about the production of GNN datasets.

论文阅读

1、标题和现存问题

标题:基于图神经网络的技术识别链接预测方研究

现存问题:现有的链接预测方法可以分为基于相似性和基于学习的方法。在基于相似性链接预测方法上存在依赖相似性度量、不适用于大规模网络、无法处理缺失数据等问题;在基于学习链接预测方法上存在需要大量数据和计算资源、可能存在过拟合问题、模型解释性较差等问题。

2、模型构建

GCN其卷积思想主要体现在节点之间的信息共享,每一层都共享卷积核参数,但是如果只有一阶共享,也就意味着节点只收 到了它周围一阶邻居的影响,因此可以继续叠加K层图卷积层,从而扩大远方邻居的影响力,聚合函数公式:

 

在GCN模型中,节点的属性信息和结构信息同时进行训练和学习的,二者具有良好的互补关系,能够协同影响节点的表示。但GCN本身是“直推式 学习”,只能学习当前数据,无法做到灵活泛化,因此提出了 GraphSAGE(“归纳式学习”模型)来进行邻居采样和归纳式学习。其中包含2个步骤Sample(邻居采样)和 Aggregate(信息聚合)。在采样环节,先得到节点的K阶邻居集合,在对邻居采样时只均匀采样固定数量的邻居节点;在聚合环节,每次迭代搜索时只学习信息聚合函数,由远到近聚合邻居节点的信息。经过采样和聚合得到的节点嵌入向量再作为输入送入下游的 其他任务。

文章将时间特征作为节点的属性纳入图神经网络训练,并参与到后续的邻居信息聚合当中,时间关注度是基于心理学领域遗忘曲线所表示的偏好保持,研究提出记忆和遗忘变化是呈指数形式的变化,且遗忘先快后慢。记忆量的保持函数:

 

IPC 的时间关注度公式:

 

IPC 的时间稳定性公式(方差越小,稳定性越高,):

 

3、方法实现

文章的研究数据来自Incopat专利数据库

 

首先随机抽取数据集中已经存在的边,即IPC组合对,作为测试集中的正样本,之后负采样生成相同数量的负样本,将正负样本合并划分训练集和测试集,使得训练集和测试集中的正负样本比例为1:1,初始设置训练集80%,测试集10%,验证集10%。

在图神经网络的搭建过程中,主要有节点表示和链接表示两个模块。在进行节点表示时需要经历邻居采样和信息聚合两个阶段。在邻居采样过程中,设置超参数 K,即节点采样的K阶邻居,即定义K层GrapSAGE。当得到各个节点的表示之后就需要对两点之间的链接即组合来进行表示,该表示可以认为是两节点未来存在链接的概率得分。

在得到节点和链接的表示后设置激活函数、损失函数和优化器对链接预测模型进行训练,实验过程中在前向传播时选用ReLU为激活函数,采用Adam优化器,学习率设为0.01,以交叉熵作为损失函数进行反向传播训练。

文章采用AUC来评估基于GNN的链接预测模型效果。AUC指标常作为衡量二分类算法整体准确度的指标,它的含义是二分类中,给定正负两个样本,正样本判定为正比将负样本判定为正大的概率值。AUC指标结果越高,表明模型表现的效果越好。

4、实验结果

下面表示Dot_Predictor和MLP_Predictor采用mean、pool和lstm三种不同的信息聚合函数时在不同的节点表示维度上的实验效果。在相同的维度下,采用不同得分预测的函数情况下,均值聚合的效果总要优于池化聚合和LSTM聚合。相比来说,当在相同向量维度下,相同聚合函数采用MLP_Predictor预测得分的效果要显著优于Dot_Predictor得分预测函数,因此文章将采用12维向量表示IPC节点,在邻居信息聚合过程中使用均值函数计算目标节点的表示,最后采用自定义的 MLP_Predictor来对IPC节点组合之间的链接进行预测,并将其与其他模型进行对比分析。

 文章选择的基线模型是在链接预测领域比较经典的基于节点相似性的计算方法,在以往的链接预测研究中应用甚广,分别为AA指标、CN指标、Jaccard系数、PA指标、RA指标,除此外,基线模型还包括学习节点路径特征的图游走算法Node2Vec。选择ANN作为Node2Vec的相对较优模型进行后续的对比分析。

选定相对较优后对各个模型的效果做整体比较分析,其中为了得到可信的实验结果,通过改变训练集的比例,即训练集分别占比60%、65%、70%、75%、80%、85%、90%进行多次实验来验证实验的效果,具体数值下表所示。

 

相对于各基线模型的最优实验结果,基于图神经网络的链 接预测结果分别提升了28.71%、36.52%、32.22%、37.48%、34.75%、14.11%,证实了该方法的可用性。

训练集占比对耗时影响-基线模型:

 

训练集占比对耗时影响-基线模型和 GraphSAGE_T:

 

图神经网络的实验效果有明显优势,但其本质上是深度学习模型,在训练过程中涉及大量的数学运算,时间成本相对于其他模型也更高。在实际的链接预测任务当中,对于实时性要求不高的作业,图神经网络可以给出更加精确可信的结果,但对于实时性要求更强的任务则需要进行进一步的优化。

5、扩展实验

为了验证 GraphSAGE_T实验中的时间特征是否在节点表示和边预测的任务中都发挥了作用,本节采用此前实验的参数进行拓展实验,将仅剔除时间稳定性特征得到的模型记为GraphSAGE_ V1,将仅剔除时间关注度特征得到的模型记为 GraphSAGE_ V2,将仅剔除年份分布特征得到的 模型记为GraphSAGE_ V3;将剔除所有时间特征得到的模型记为GraphSAGE_ V4。

可见当不考虑IPC的时间稳定性时,模型效果略有下降,相对于最优效果 下降了 2.51%,当不考虑IPC的时间关注度时,下降 2.99%,当不考虑年份分布特征时,效果下降了 4.09%,当不考虑三个时间特征时,效果下降了 7.93%,较为明显,可见本文提出的在专利领域IPC的两个时间特征:时间关注度和时间稳定性会对其链接预测的效果产生一定的正向影响,同时专利IPC号的年度分布这一特征的重要性再一次得到了验证。

深度学习

1、GNN特点

特点:

  1. 图结构建模能力:GNN能够有效地处理图结构数据,包括节点之间的关系、图中的拓扑结构以及图中的属性信息。GNN可以对节点及其邻居的特征进行聚合和传递,从而能够在处理图数据时充分利用节点之间的关联信息。

  2. 上下文感知性:GNN可以通过节点之间的信息传递来捕捉节点的上下文信息。每个节点的表示是通过聚合其邻居节点的表示得到的,从而能够综合考虑节点的局部上下文。

  3. 可扩展性:GNN具有良好的可扩展性,可以应对大规模图数据。GNN通过局部聚合和信息传递的方式进行计算,可以在处理大型图数据时保持较低的计算和存储复杂度。

  4. 泛化能力:GNN可以对未见过的节点进行泛化,即在训练时学到的模型可以应用于未知的节点。这种泛化能力使得GNN在处理具有动态性和不完整性的图数据时具有优势

优点:

  1. 建模图结构能力强:GNN可以有效地处理图结构数据,包括节点之间的关系和属性信息,能够对图数据进行高效的表示学习和预测。

  2. 上下文感知性:GNN能够通过节点之间的信息传递捕捉节点的上下文信息,从而在处理图数据时能够考虑节点的局部上下文,具有较强的表征能力。

  3. 可扩展性:GNN在处理大规模图数据时具有较好的可扩展性,可以有效地处理复杂的图结构数据。

  4. 泛化能力:GNN在处理未见过的节点时具有泛化能力,即在训练时学到的模型可以应用于未知的节点,具有较强的适应性。

缺点:

  1. 计算复杂度高:GNN的计算复杂度通常较高,特别是对于大规模图数据和复杂的图结构,可能需要较大的计算资源。

  2. 超参数选择困难:GNN中包含一些超参数,如层数、隐藏单元数、学习率等,选择合适的超参数对于模型的性能至关重要,但选择合适的超参数可能会比较困难。

  3. 信息传递过程限制:GNN中的信息传递过程通常是局部的

GNN种类:

  1. 图卷积网络(Graph Convolutional Networks,GCN): 是最早和最常见的GNN类型,采用卷积操作在图结构上进行信息传递和特征聚合,通过对节点和其邻居节点的特征进行卷积操作来生成节点的新特征表示。

  2. 图注意力网络(Graph Attention Networks,GAT): 使用注意力机制(attention mechanism)来对节点的邻居节点进行加权聚合,从而使得节点能够更加灵活地选择邻居节点的信息,具有较强的自适应性。

  3. 图池化网络(Graph Pooling Networks): 用于在处理图数据时进行图层间的下采样(downsampling)操作,通过对图中节点的聚合和采样来减少图的规模,从而降低计算复杂度。

  4. 图生成网络(Graph Generative Networks): 用于生成新的图数据,包括图生成模型(Graph Generative Models)和图生成神经网络(Graph Generative Neural Networks),用于生成具有特定属性或拓扑结构的图。

  5. 时空图神经网络(Spatio-Temporal Graph Neural Networks): 用于处理时空图数据,如时空社交网络、交通流量数据等,通过考虑图数据中的时序和空间关系来进行建模和预测。

  6. 异构图神经网络(Heterogeneous Graph Neural Networks): 用于处理包含多种类型节点和边的异构图数据,如社交网络中的用户、商品和评论等不同类型节点的关系。

  7. 多层图神经网络(Multi-layer Graph Neural Networks): 使用多层的GNN模型来进行多阶信息传递和特征抽取,从而能够对更复杂的图结构进行建模。

2、原理

主要原理可以概括为以下几个步骤:

  1. 图数据表示:GNN首先对图数据进行节点和边的表示。通常使用向量或矩阵来表示节点特征,例如节点的属性、标签或位置等信息。边通常用矩阵或张量表示,描述节点之间的关系、连接或权重。

  2. 信息传递:GNN通过在图结构上进行信息传递和特征聚合,从而将节点的特征信息与其邻居节点的特征信息进行交互。这通常通过局部聚合规则来实现,例如通过卷积、池化、注意力等操作,将节点自身的特征与邻居节点的特征进行融合。

  3. 特征更新:GNN通过信息传递和特征聚合操作更新节点的特征表示。通常,更新规则会根据节点自身的特征和邻居节点的特征来计算节点的新特征表示。这一过程可以进行多轮迭代,使节点的特征逐步演化。

  4. 输出预测:GNN可以在图中的节点或边上进行预测,例如节点分类、边预测、图分类等任务。通常,GNN会使用节点的最终特征表示作为输入,通过一个或多个全连接层或其他输出层来生成预测结果。

GNN的原理可以看作是在图结构上进行信息传递和特征聚合,从而实现对图数据的建模和预测。这种方式允许GNN在处理非结构化、异构性和动态性的图数据时具有灵活性和强大的建模能力,并在许多实际应用中取得了显著的成功。

节点更新公式:用于更新节点的特征表示,可以表示为:

 

其中,h_{v}^{(l)}表示节点v在第l层的特征表示,f表示一个非线性激活函数,aggregate表示聚合函数,用于聚合节点v的邻居节点u在第l层的特征表示,N(v)表示节点v的邻居节点集合。

边更新公式:用于更新边的特征表示,可以表示为:

 

其中,e_{vw}^{(l)}表示边v和w在第l层的特征表示,g表示一个非线性激活函数。

节点/边的初始化公式:用于初始化节点/边的特征表示,通常为随机初始化或根据输入数据进行初始化。

输出层公式:用于生成最终的预测结果,可以根据具体任务而定,例如节点分类、边预测或图分类等。

3、GNN数据处理

  1. 图数据加载:首先,需要加载图数据,包括节点和边的信息。通常,图数据可以表示为一个邻接矩阵或者一个节点和边的列表。

  2. 节点特征表示:对于每个节点,需要将其特征表示为一个向量或者矩阵,作为输入传递给GNN模型。节点特征可以包括节点自身的属性,如节点的数值属性、文本属性等,也可以包括节点的邻居信息,如邻居节点的属性、边的属性等。

  3. 边特征表示:对于每条边,也需要将其特征表示为一个向量或者矩阵,作为输入传递给GNN模型。边特征可以包括边的属性,如边的权重、边的类型等。

  4. 图数据预处理:对加载的图数据进行预处理,包括数据归一化、特征缩放、处理缺失值等。这一步骤旨在将图数据转换为适合输入GNN模型的格式,并且确保数据的一致性和合理性。

  5. GNN模型输入构建:将节点特征和边特征组合成输入数据,构建GNN模型的输入。通常,输入可以表示为一个节点特征矩阵和一个边特征矩阵,或者通过邻接矩阵和节点特征矩阵表示。

  6. GNN模型训练:使用构建好的输入数据,将其输入到GNN模型中进行训练。在训练过程中,GNN模型通过节点之间的信息传递和特征更新来学习节点的表示,并最终输出预测结果。

  7. 模型评估和调优:训练完成后,需要对GNN模型进行评估和调优,包括使用验证集和测试集进行性能评估,根据评估结果进行模型调优,如调整超参数、修改网络结构等。

图数据表示是将图中的节点和边表示成适合输入到图神经网络(GNN)模型的格式。一般来说,图数据表示需要将节点和边的特征表示为向量或矩阵形式,以便GNN模型能够对其进行处理。

节点特征表示:节点特征通常包括节点的属性特征,如节点的数值属性、文本属性等。节点特征可以表示为向量或矩阵,其中每个维度对应一个特征。例如,可以使用one-hot编码表示离散属性,使用实数向量表示连续属性。对于文本属性,可以使用词嵌入(word embeddings)或其他文本表示方法将文本转换成固定维度的向量表示。

边特征表示:边特征通常包括边的属性特征,如边的权重、边的类型等。边特征也可以表示为向量或矩阵,其中每个维度对应一个特征。例如,可以使用实数向量表示边的权重,使用二进制编码表示边的类型。

在图神经网络(GNN)中,邻接矩阵(Adjacency Matrix)是一种常用的表示图结构的方式。它是一个方阵,用于表示图中节点之间的连接关系。邻接矩阵的形式可以是二进制矩阵或带权重的矩阵,取决于图中节点之间的连接方式。对于无向图,邻接矩阵一般是对称矩阵,因为边没有方向;对于有向图,邻接矩阵则可能不是对称矩阵,因为边有方向。假设有 N 个节点的图,那么邻接矩阵 A 的维度为 N × N。其中 Ai 表示节点 i 到节点 j 之间是否存在边,或者边的权重(如果有权重的话)。通常情况下,Ai 的取值为 0 或 1,表示没有边或有边的存在。如果图中存在带权重的边,则 Ai 的取值可以是边的权重值。

import numpy as np
​
# 创建一个无向图的邻接矩阵
num_nodes = 5
adj_matrix = np.zeros((num_nodes, num_nodes), dtype=int)
​
# 添加边
edges = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]
for edge in edges:
    adj_matrix[edge[0]][edge[1]] = 1
    adj_matrix[edge[1]][edge[0]] = 1
​
print("邻接矩阵:")
print(adj_matrix)
 

这段代码创建了一个包含 5 个节点的无向图,其中节点 0 到节点 1、节点 1 到节点 2、节点 2 到节点 3、节点 3 到节点 4、节点 4 到节点 0 都存在边连接。邻接矩阵 adj_matrix 就表示了这个图的连接关系,其中的 1 表示节点之间存在边的连接,0 表示节点之间没有边连接。

 

总结

本周对GNN图神经网络展开了学习,主要是重新复习了下整个流程和原理以及基本的数据处理方法,下周将展开进一步的深入学习。

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

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

相关文章

镭速Raysync v6.6.8.0版本发布

最近镭速发布了v6.6.8.0版本,已经发布上线了。主要更新内容有服务器下发任务支持指定客户端,客户端增加日志清理和日志压缩,自动删除源文件保持源目录结构,支持将文件投递给其他成员等功能,详细的更新内容如下&#xf…

ELK日志收集告警

elastic stack elastic search 日志持久化filebeats 日志收集kibana 日志展示elaticalert 日志告警 elastalert官网Elastic Observability APM 指标监控 java-agent 基于logback根据level进行日志的切分聚合宿主机上安装filebeats 配置inputs插件配置采集路径配置多行匹配规则…

第五天 CUDA Runtime API

图中可以看到,Runtime API 是基于 Driver API 之上开发的一套 APIDriver API 基本都是 cu 开头的,而Runtime API 基本都是以 cuda 开头的 Runtime API 概述 CUDA Runtime是封装了CUDA Driver的高级别更友好的APIcudaruntime需要引入cudart这个so文件上下…

系统分析师案例题【系统设计篇(Web开发)】

目录 1、Web综合知识考察 2、单台机器到数据库与Web服务器分离 3、应用服务器集群 3.1 负载均衡 3.2 Session 共享机制 3.3 有状态和无状态 4、持久化技术 5、数据库读写分离化 6、缓存技术 7、Redis 7.1 Redis集群切片与分片 7.2 Redis分布式存储 7.3 Redis数据类…

Windows使用ngrok实现本地程序外网域名访问-详细教程

需求分析 同事要求在外网以域名的方式,访问我本地的程序,故需要将localhost:8080映射到外网,让同事可以通过:域名/接口 的形式访问到本地程序的功能接口 安装 进入官网:https://ngrok.com/ 点击顶部Download&#x…

十三、市场活动:全部导出

功能需求:批量导出市场活动 用户在市场活动主页面,点击"批量导出"按钮,把所有市场活动生成一个excel文件,弹出文件下载的对话框; 用户选择要保存的目录,完成导出市场活动的功能. *导出成功之后,页面不刷新 功能分析:导出市场活动 1.给批量…

打卡Android学习—Compose 布局 和 修饰符

我们将通过解释 布局 和 修饰符 的基础知识 来开始我们的旅程。我们将介绍他们是如何协同工作的,Compose 提供了什么开箱即用的API,以及如何漂亮地设计您的UI 布局——因为 Compose 中的几乎所有内容都是布局 布局是Compose UI的核心组件,使…

( “树” 之 BST) 669. 修剪二叉搜索树 ——【Leetcode每日一题】

二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点。 二叉查找树中序遍历有序。 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&…

机器学习——核函数

问:已知三维空间中的两个样本点分别为(2,4,5)和(1,2,3),定义核函数表达式为:试计算这两个样本点映射到十维空间后的 答:首先计算两个样本点的平方内积2*14*25*325 然后代入核函数表…

互联网医院软件|互联网医院系统开发|在线问诊提高医疗效率

互联网医院系统源码开发设计理念是以患者为中心,将医院的各个科室、医生资源进行有效的整合和调配。互联网医院系统开发是基于最新的Web技术和云计算技术所构建的一种全新的医疗信息化平台,可以通过网页、小程序等多种方式,为患者提供在线预约…

Logstash:通过 lookups 来丰富数据

如果你想了解更多关于 lookup 的内容,请参阅文章 “Elastic:开发者上手指南” 中的 “丰富数据及 lookup” 章节。在今天的文章中,我来总结在 Logstash 中一些常用的 lookups。如下的这些插件可以帮助你使用附加信息丰富数据,例如…

基于深度学习的车型识别系统(Python+清新界面+数据集)

摘要:基于深度学习的车型识别系统用于识别不同类型的车辆,应用YOLO V5算法根据不同尺寸大小区分和检测车辆,并统计各类型数量以辅助智能交通管理。本文详细介绍车型识别系统,在介绍算法原理的同时,给出Python的实现代码…

浏览器强缓存与协商缓存

一、强缓存 强制缓存的思想是,在浏览器内置数据库中缓存每次请求中 “可以被缓存” (受到一些关键字的管控)的静态资源如 image, css, js 文件, 当第二次请求被缓存过的资源时候,会通过校验两个字段 Expires 和 Cache-…

AAAI 2023MOVEDepth:基于单目线索和速度指导的自监督多帧深度估计

文章目录 解决的问题实施细节总结 会议/期刊:2023 AAAI 论文题目:《Crafting Monocular Cues and Velocity Guidance for Self-Supervised Multi-Frame Depth Learning》 论文链接:[JeffWang987/MOVEDepth: AAAI 2023]Crafting Monocular Cue…

Flutter TextField 交互实例 —— 新手礼包

大家好,我是 17。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交互实例 —— 新手礼包 本篇包含所有常…

Unity打包WebGL: 导入Vue

Unity打包WebGL: 导入Vue 1. 介绍 1.1 任务 记录将Unity项目打包成WebGL,并集成到Vue项目中的过程。 1.2 环境 Unity:2021.3Vue: 2 2. Unity项目 2.1 UI界面 2.2 添加插件 构建WebGL项目需要添加一个.jslib文件,用于Unity脚本函数与JavaScript函数…

【FocalNet】学习笔记

1. 介绍 “FocalNet是map-based还是token-based模型呢?” FocalNet是token-based模型,与常见的【基于 feature map 的CNN】不同; 2. 模型代码 2.1 环境配置 [DINO | FocalNet-DINO] 2.1.1 配置CUDA11.1 Summary Driver: Not Selected…

FreeRTOS 时间管理

文章目录 一、FreeRTOS 延时函数1. 函数 vTaskDelay()2. 函数 prvAddCurrentTaskToDelayedList()3. 函数 vTaskDelayUntil() 二、FreeRTOS 系统时钟节拍 一、FreeRTOS 延时函数 1. 函数 vTaskDelay() 在 FreeRTOS 中延时函数也有相对模式和绝对模式,不过在 FreeRT…

epoll进阶

epoll除了提供select/poll那种IO事件的电平触发(Level Triggered)外,还提供了边沿触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提…

经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

0. 简介 对于现在的VSLAM而言,现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中,而最近的这个工作就给出了一个比较合适的方法。《Orbeez-SLAM: A Real-time Monocular Visual SLAM with ORB Features and NeRF-realized Mapping》这篇文章&…