图神经网络学习笔记

news2025/7/29 6:58:20

1 图神经网络应用

芯片设计、场景分析问题推理、推荐系统、欺诈检测风控相关、道路交通动态流量预测、自动驾驶、无人机等、化学医疗等场景

2 图神经网络基本组成

点(vertex)、边(edge)、全局图(global),图神经网络(GNN,Graph Neural Network)主要作用还是跟传统神经网络的作用一样——特征提取,只是提取特征的方式和提取特征的目标不一样。图神经网络主要是为了提取整个图的全局特征而诞生的。

无论图神经网络多么复杂,利用图神经网络的目的就是整合特征

图神经网络最重要的两个点:1.自身权重矩阵 2. 邻接矩阵

核心思想:万物皆可转化为图

3 GNN常见任务

  • 图像和文本任务中,你用过图相关的模型吗?好像木有吧
  • 为啥呢?因为图像和文本数据的格式都贼固定,想一想咱们的预处理
  • 所有图像resize成固定大小,然后进行卷积操作得到特征,格式很固定
  • 文本固定长度和词向量大小,然后也是这么个事,不需要特殊的邻接矩阵
  • 在我们平时的图像或者NLP任务中,我们的输入训练数据格式都是统一的,特别是图像,都由像素点构成,格式很固定,然而对于NLP来讲,我们的输入数据的格式虽然都是固定的,但是通过数据预处理来实现的,大多多退少补,这样会导致语义信息的缺失,从而使得输入的信息不够完整。

结论GNN适合输入数据格式不固定的任务,哪怕100个输入数据格式都不一样,也可以放入GNN进行训练提取特征,输入输出任务可以自己设计。但前提是必须有图结构

4 图神经网络消息传递计算方法

首先要获取到整张图的邻接矩阵,即得到整张图的结构

每个点的特征该如何更新呢?肯定得考虑他们邻居的

具体步骤如下:

  1. 聚合操作可以当作全连接层.

  2. 但是更新的方法有很多,可以自己设置

  3. 结合邻居信息和自身信息:
    m ˉ i = G ( { W j ⋅ x j : j ∈ N i } ) \bar{m}_i=G\left(\left\{\mathbf{W}_j \cdot x_j: j \in \mathcal{N}_i\right\}\right) mˉi=G({Wjxj:jNi})

  4. 汇总:
    h i = σ ( W 1 ⋅ h i + ∑ j ∈ N i W 2 ⋅ h j ) h_i=\sigma\left(W_1 \cdot h_i+\sum_{j \in \mathcal{N}_i} \mathbf{W}_2 \cdot h_j\right) hi=σW1hi+jNiW2hj

在这里插入图片描述

5 多层GNN

GNN的本质就是更新各部分特征

其中输入是特征,输出也是特征,邻接矩阵也不会变的

在这里插入图片描述

每次每个点通过周围点迭代更新自身权重,随着迭代,图神经网络的感受野会越来越大,慢慢的每个点会拥有全局图的特征

在这里插入图片描述

6 图卷积神经网络

图卷积神经网络与卷积神经网络就像老婆与老婆饼、java和javascrit的区别,原理几乎完全不一样,卷积神经网络提取局部特征图卷积神经网络提取全局图的特征,图卷积神经网络并不应用到图像中

如何获取特征呢?

  1. 别再绞尽脑汁各种套路一顿想了 ,交给神经网络神经网络就得了
  2. 通常交给GCN两个东西就行: 1.各节点输入特征; 2.网络结构图

图卷积神经网络并不是一个完全有意义的有监督学习

这个也是GCN优势;不需要全部标签;用少量标签也能训练;计算损失时只用有标签的

许多点是未知的甚至不确定的,实际情况是并不是所有点都有标签,也可以看做是一个半监督的模型,在计算损失的时候只计算有标签的节点

7 GCN特征计算方法

其实就是邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息

有些小问题:光想着别人,没考虑自己。只需要在邻接矩阵加上自己就可以啦:
A ~ = A + λ I N \tilde{A}=A+\lambda I_N A~=A+λIN

矩阵scale

目前公式变成了:
D ~ − 1 ( A ~ X ) = ( D ~ − 1 A ~ ) X \tilde{D}^{-1}(\tilde{A} X)=\left(\tilde{D}^{-1} \tilde{A}\right) X D~1(A~X)=(D~1A~)X
D的逆矩阵相当于scale方法了,但这一步就可以了吗?答案是还不够

左乘相当于对行做归一化,那么列咋办呢?同理,所以咱们现在的公式:
D ~ − 1 A ~ D ~ − 1 X \tilde{D}^{-1} \tilde{A} \tilde{D}^{-1} X D~1A~D~1X
但这样列和行都做了一次归一化,幅度过大,那在公式基础上进行微调:
D ~ − 1 / 2 A ~ D ~ − 1 / 2 X \tilde{D}^{-1 / 2} \tilde{A} \tilde{D}^{-1 / 2} X D~1/2A~D~1/2X

8 GCN基本公式

例如完成一个十分类任务的,F就为10表示输出层

在这里插入图片描述

其中:
A ^ = D ~ − 1 / 2 A ~ D ~ − 1 / 2 \hat{A}=\tilde{D}^{-1 / 2} \tilde{A} \tilde{D}^{-1 / 2} A^=D~1/2A~D~1/2
就是刚才我说的对左右都进行了归一化操作

9 GCN层数

理论上来说肯定越大越好;但是实际的图中可能不需要那么多;在社交网络中,只需6个人你可以认识全世界;所以一-般的GCN层数不会特别多

在多个图数据集中,都可以发现两三层的比较合适,多了反而差了

在这里插入图片描述

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

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

相关文章

Java 集合知识点总结

Java 集合知识点总结总览Collection 接口ListArrayList源码&扩容机制SetQueueMap接口HashMapHashMap源码&底层数据结构HashMap 的遍历LinkedHashMapTreeMapHashtableConcurrentHashMap 源码&底层数据结构本文是个人阅读学习JavaGuide的集合知识的总结笔记。总览 C…

【计算机毕业设计】个人交友网站源码

一、系统截图(需要演示视频可以私聊) 摘 要 本论文主要论述了如何使用JAVA语言开发一个个人交友网站,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中&#xff0…

【最强最全车牌识别算法】支持13种中文车牌识别的云端API部署(可直接获取源码使用)

项目简介 在城市交通管理、视频监控、车辆识别和停车场管理中车辆检测与车牌识别是一项富有挑战而重要的任务。利用深度学习识别不同条件下的车辆及其车牌信息。更具体地说,实时目标检测网络(Yolov5)用于从车辆图像中提取特征并且通过训练对…

[附源码]java毕业设计面试刷题系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于分组码的消息验证码的程序实现

目 录 摘 要 I 1 绪论 1 1.1 课题研究背景和意义 1 1.2 课题研究现状 1 2 CBC MAC的特征和基本工作原理 2 2.1 CBC MAC的特征和码集选择的原则 2 2.2 CBC MAC生成原理 2 2.3 CBC MAC模块结构图 3 3 FPGA和VHDL语言 4 3.1 概述 4 3.2 VHDL语言特点 5 3.2.1 常用硬件描述语言简介…

GUI编程--PyQt5--QAbstractButton

文章目录绘制事件设置文本设置快捷键设置自动重复按钮状态排他性按钮的点击按钮点击有效区域按钮的信号QAbstractButton是一个抽象类,无法直接使用。绘制事件 from PyQt5.QtWidgets import QAbstractButton from PyQt5.QtGui import QPainter, QPen, QColor # 定义…

loki单机对接minio

安装minio 请参考minio官方文档部署 创建Buckets 配置Policy策略 创建一个loki的policy,授权内容如下 (权限配置请参考aws的s3权限配置) { "Version": "2012-10-17", "Statement": [ { …

部署安装yapi

配置环境 部署安装yapi 前提是配置环境,需要 nodejs(7.6)mongodb(2.6) 这里我使用docker 安装上面的nodejs 或 mongodb docker 安装 mongodb 教程: 使用docker 安装MongoDB数据库_小周sir的码农的博客-CSDN博客Doc…

删除pip下载的所有第三方库,最快的方法,没有之一

1、问题描述 初学Python的朋友,经常会使用pip下载各种各样的第三方库,例如自动化办公的专用库:python-office。 下载了很多库会占用电脑空间,而且互相之间有很多依赖关系,也不知道怎么样才能卸载干净。 虽然卸载的方法…

一起学习集合框架之 TreeSet

什么是 TreeSet TreeSet 是一个具有唯一元素的二叉树的集合,又被翻译为 树集。Java 中的 TreeSet 类是 Java 集合框架的一部分,从 Java 6 开始,它实现了 NavigableSet 接口(这个接口增加了几个查找元素以及反向遍历的便利方法&am…

【快速上手系列】使用MD5加密对密码进行加密

【快速上手系列】使用MD5加密对密码进行加密 介绍 MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)应用程序的密码通常不会明文保存,会使用各种各样的加密算法对密码进行加密MD5算法相对来说较为安全。初始的MD5算法是…

开发微信小程序的流程_微信小程序开发的作用

小程序的快速发展和围绕其诞生的产业链逐步完善,更多的平台和流量开始参与到小程序的开发领域,推出属于平台的小程序接口。相较于传统的线下广告宣传模式,小程序的传播和推广拥有互联网便捷高效的属性。用户扫描二维码就能关注公众号&#xf…

【安全测试学习】自动化注入攻击之 FuzzDB和Burp 组合拳

一、FuzzDB 开源的应用程序模糊测试数据库,包含了各种攻击 payload 的测试用例集合。 主要功能: OS 命令注入 目录遍历 文件上传绕过 身份验证绕过 XSS SQL 注入 HTTP 头注入 CRLF 注入 NoSQL 注入等 还包含了一些用不同语言写成的 webshell 与常用的账…

什么是 MQ

MQ的概念 MQ (Message Queue)消息队列,是在消息传输过程中存储消息的容器。多用于分布式系统之间的通信。 队列是基础数据结构中 “先进先出” 的一种数据结构。 消息对列,指把要传输的数据消息放在队列中,用队列机制…

spring之基于p命名c命名空间的注入

文章目录前言一、p命名空间1.1、编写一个普通的Java类1.2、spring配置文件1.3、测试1.4、运行结果二、c命名空间2.1、编写一个普通的Java类2.2、spring配置文件2.3、测试2.4、运行结果总结前言 P命名空间注入: 目的:简化set方法注入 使用p命名空间注入的…

C++ 哈希表的总结与例题

文章目录CSTL哈希表设计哈希集合设计哈希映射哈希集合例题一:只出现一次的数字例题二:快乐数哈希映射例题一:两数之和例题二:两个列表的最小索引总和例题三:字符串中的第一个唯一字符设置键例题一:字母异位…

安全进阶:虚拟防火墙基础实验

实验拓扑 网络拓扑及IP编址如上图所示; 实验需求 PC2与Server2属于一个敏感的业务,这个业务的流量要求与防火墙上的其他流量完全隔离,使用虚拟防火墙技术实现这个需求; PC2要求能够访问Server2;PC2属于Trust域&#…

Exception in thread “main“ java.lang.UnsupportedOperationException解决办法

1.首先报错UnsupportedOperationException 是因为我们用的是 List<Integer> list1 Arrays.asList(2, 3, 5);这个方式获取的集合,该集合底层没有重写一些方法,所以报错 解决方案 定义新集合接收上一步的数据,然后用新集合来操作就行 package day01;import java.util.A…

元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(1)

Saas/内部解决方案 2.1、Data Galaxy 地址&#xff1a;The 360 Data Catalog for datagovernance - DataGalaxy 特点&#xff1a;实现数据治理最佳方式 1、理解业务数据并可以共享通用定义&#xff1b;即由团队成员共同维护定义业务术语词汇的知识库 2、统一企业数据字典&…

DolphinDB Python API 离线安装教程

出于安全考虑&#xff0c;通常生产环境与互联网隔离&#xff0c;因此无法使用 pip install 在线安装 DolphinDB Python API&#xff08;以下简称 Python API&#xff09;。本文介绍如何离线安装 Python API 环境&#xff0c;包括 conda 环境和 wheel 安装两种方式。用户可根据生…