碎片筆記|圖數據與圖神經網絡基礎介紹

前言:前段時間了解了一下圖神經網絡,本篇博客記錄一下相關知識,以備不時之需。

強烈推薦這篇博客(作者來自 Google Research),個人認為是圖神經網絡基礎入門的不二選擇!

目錄

  • 一、圖數據
    • 1.1 定義&表示形式
    • 1.2 相關任務
      • 1.2.1 圖層面的分類 / 回歸
      • 1.2.2 節點層面的分類 / 回歸
      • 1.2.3 邊層面的分類 / 回歸
    • 1.3 建模難點
  • 二、圖神經網絡
    • 2.1 工作原理
    • 2.2 經典模型
      • 2.2.1 Graph Convolution Networks (GCN)
      • 2.2.2 Graph Sample and Aggregate (GraphSAGE)
      • 2.2.3 Graph Attention Networks (GAT)


一、圖數據

隨著機器學習、深度學習的發展,語音、圖像、自然語言處理逐漸取得了很大的突破,然而語音、圖像、文本都是很簡單的序列或者網格數據,是很結構化的數據,深度學習很善于處理該種類型的數據。
在這里插入圖片描述

然而現實世界中并不是所有的事物都可以表示成一個序列或者一個網格,例如社交網絡、知識圖譜、復雜的文件系統等,也就是說很多事物都是非結構化的。

在這里插入圖片描述

1.1 定義&表示形式

圖數據是由節點(Node)和邊(Edge)組成的數據,最簡單的方式是使用鄰接矩陣來表示圖形結構,從而捕捉圖形中的節點和邊的相關性。假設圖中的節點數為n,那么鄰接矩陣就是一個n*n的矩陣,如果節點之間有關聯,則在鄰接矩陣中表示為1,無關聯則為0。如下圖,魯班與其他英雄都沒有關聯,表現在鄰接矩陣當中就是它所在的行與列為全零。
在這里插入圖片描述
圖數據的信息包含3個層面,分別是節點信息(V)、邊信息(E)、圖整體(U)信息,它們通常是用向量來表示。而圖神經網絡就是通過學習數據從而得到3個層面向量的最優表示。

1.2 相關任務

1.2.1 圖層面的分類 / 回歸

例:分子是天然的圖,原子是節點,化學鍵是邊。現在要做一個分類,有一個苯環的分子分一類,兩個苯環的分子分一類。這是圖層面的分類任務。

在這里插入圖片描述

1.2.2 節點層面的分類 / 回歸

例:假設一個跆拳道俱樂部里有A、B兩個教練,所有的會員都是節點。有一天A、B兩個跆拳道教練決裂,那么各個學員是愿意和A在一個陣營還是愿意和B在一個陣營?這是節點層面的分類任務。

在這里插入圖片描述

1.2.3 邊層面的分類 / 回歸

例:UFO拳擊賽上,首先通過語義分割把臺上的人和環境分離開來。賽場上的人都是節點,現在要做一個預測,預測的是這些人之間的關系,是對抗關系?還是觀眾watch的關系?還是裁判watch的關系?這是邊層面的分類任務。

在這里插入圖片描述

1.3 建模難點

相比于簡單的文本和圖像,這種網絡類型的非結構化的數據非常復雜,處理它的難點包括:

  • 圖的大小是任意的,圖的拓撲結構復雜,沒有像圖像一樣的空間局部性
  • 圖沒有固定的節點順序,或者說沒有一個參考節點
  • 圖經常是動態圖,而且包含多模態的特征

那么對于這類數據我們該如何建模呢?能否將深度學習進行擴展使得能夠建模該類數據呢?這些問題催生了圖神經網絡。


二、圖神經網絡

相比較于神經網絡最基本的網絡結構全連接層(MLP),特征矩陣乘以權重矩陣,圖神經網絡多了一個鄰接矩陣。計算形式很簡單,三個矩陣相乘再加上一個非線性變換。

在這里插入圖片描述

2.1 工作原理

一個比較常見的圖神經網絡的應用模式如下圖,輸入是一個圖,經過多層圖卷積等各種操作以及激活函數,最終得到各個節點的表示,以便于進行節點分類、鏈接預測、圖與子圖的生成等任務。

在這里插入圖片描述
對圖神經網絡有一個直觀的感受與理解之后,我們來了解一下它的工作原理,如下圖所示,GNN是對圖中的所有屬性進行的一個可以優化的變換,它的輸入是一個圖,輸出也是個圖。它只對屬性向量(即上文所述的V、E、U)進行變換,但它不會改變圖的連接性(即哪些點互相連接經過GNN后是不會變的)。在獲取優化后的屬性向量之后,再根據實際的任務,后接全連接神經網絡,進行分類和回歸。大家可以把圖神經網絡看做是一個圖數據的在三個維度的特征提取器。

在這里插入圖片描述

GNN對屬性向量優化的方法叫做消息傳遞機制。比如最原始的GNN是SUM求和傳遞機制;到后面發展成圖卷積網絡(GCN)就考慮到了節點的度,度越大,權重越小,使用了加權的SUM;再到后面發展為圖注意力網絡GAT,在消息傳遞過程中引入了注意力機制;目前的SOTA模型研究也都專注在了消息傳遞機制的研究。見下圖所示。

在這里插入圖片描述

接下來將以幾個經典的GNN models為線來介紹圖神經網絡的發展歷程。

2.2 經典模型

2.2.1 Graph Convolution Networks (GCN)

論文信息:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS (ICLR, 2017)
代碼:https://github.com/tkipf/pygcn
數據集:https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz

GCN可謂是圖神經網絡的“開山之作”,它首次將圖像處理中的卷積操作簡單的用到圖結構數據處理中來。

GCN的缺點也是很顯然易見的,第一,GCN需要將整個圖放到內存和顯存,這將非常耗內存和顯存,處理不了大圖;第二,GCN在訓練時需要知道整個圖的結構信息(包括待預測的節點), 這在現實某些任務中也不能實現(比如用今天訓練的圖模型預測明天的數據,那么明天的節點是拿不到的)。

2.2.2 Graph Sample and Aggregate (GraphSAGE)

為了解決GCN的兩個缺點問題,GraphSAGE被提了出來。在介紹GraphSAGE之前,先介紹一下Inductive learning(歸納學習)和Transductive learning(轉導學習)。注意到圖數據和其他類型數據的不同,圖數據中的每一個節點可以通過邊的關系利用其他節點的信息。這就導致一個問題,GCN輸入了整個圖,訓練節點收集鄰居節點信息的時候,用到了測試和驗證集的樣本,我們把這個稱為Transductive learning。然而,我們所處理的大多數的機器學習問題都是Inductive learning,因為我們刻意的將樣本集分為訓練/驗證/測試,并且訓練的時候只用訓練樣本。這樣對圖來說有個好處,可以處理圖中新來的節點,可以利用已知節點的信息為未知節點生成embedding,GraphSAGE就是這么干的。

GraphSAGE是一個Inductive Learning框架,具體實現中,訓練時它僅僅保留訓練樣本到訓練樣本的邊,然后包含Sample和Aggregate兩大步驟,Sample是指如何對鄰居的個數進行采樣,Aggregate是指拿到鄰居節點的embedding之后如何匯聚這些embedding以更新自己的embedding信息。

2.2.3 Graph Attention Networks (GAT)

GAT在傳播過程引入自注意力(self-attention)機制,每個節點的隱藏狀態通過注意其鄰居節點來計算。

論文信息:GRAPH ATTENTION NETWORKS (ICLR, 2018)
代碼:https://github.com/Diego999/pyGAT

在這里插入圖片描述


參考資料

  1. A Gentle Introduction to Graph Neural Networks (distill.pub)
  2. Understanding Convolutions on Graphs (distill.pub)
  3. 圖神經網絡(GNN)最簡單全面原理與代碼實現! - 知乎 (zhihu.com)
  4. 圖神經網絡從入門到入門 - 知乎 (zhihu.com)
  5. 圖神經網絡入門(一)GCN圖卷積網絡 - 知乎 (zhihu.com)
  6. pytorch框架下—GCN代碼詳細解讀_gcn代碼詳解_MelvinDong的博客-CSDN博客
  7. Graph Attention Networks (GAT)pytorch源碼解讀 - 知乎 (zhihu.com)
  8. 零基礎多圖詳解圖神經網絡(GNN/GCN)【論文精讀】_嗶哩嗶哩_bilibili
  9. 1. 1.1_圖基本知識_嗶哩嗶哩_bilibili

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40043.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows上使用FFmpeg實現本地視頻推送模擬海康協議rtsp視頻流

場景 Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽: Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽_nginx rtmp 海康攝像頭_霸道流氓氣質的博客-CSDN博客 上面記錄的是使用FFmpeg拉取海康協議攝像頭的rtsp流并推流到流媒體服務器。 如果在其它業務場景…

TCP/IP協議組

TCP/IP通信協議是目前最完整、使用最廣泛的通信協議。它的魅力在于可使不同硬件結構、不同操作系統的計算機相互通信。TCP/IP協議既可用于廣域網,也可用于局域網,它是Internet/Intranet的基石。TCP/IP通信協議事實上是一組協議。 TCP/IP協議可分為5層也可…

使用 Redis 實現共享 Session 的高效解決方案

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要共享 Session?二、使用 Redis 實現共享 Session1.安裝和配置 Redis2.實現 Session 存取操作3.使用 Session 數據三、測試共享 Session四、注意事項總結前言 在分布式系統中,實現共享 Session 是一個重要的問題。本文將…

GT Code - 圖譯算法編輯器(集成QT、C++、C、Linux、Git、java、web、go、高并發、服務器、分布式、網絡編程、云計算、大數據項目)

目錄 項目概述 發文意義 項目介紹 功能分析 設計概要 功能展示 項目文檔 項目概述 “GT Code 圖譯算法編輯器”是一款跨平臺、輕量級的代碼編輯器,主要面向軟件開發人員,它實現了編輯、編譯、繪制代碼流程圖、生成調試演示動畫等功能,以…

go版本glog/klog 參數使用方法心得

問題 glog很好用,但是官方文檔卻很爛,對于很多參數并沒有做詳細說明,于是通過看源碼測試,總結出以下使用方法 可選參數 flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error in…

空間分析專屬 Python 學習資料

空間數據分析能夠幫助我們更好地理解地理空間中的模式和關系,從而為決策提供支持。例如,城市規劃者可以使用空間數據分析來確定城市發展的最佳方向,環境科學家可以使用空間數據分析來評估污染的影響,而商業分析師可以使用空間數據…

react go實現用戶歷史登錄列表頁面

refer: http://ip-api.com/ 1.首先需要創建一個保存用戶歷史的登錄的表,然后連接go 2.在用戶登錄的時候,獲取用戶的IP IP位置,在后端直接處理數據即可(不需要在前端傳遞數據) (1)增加路由&am…

使用Java服務器實現UDP消息的發送和接收(多線程)

目錄 簡介:1. 導入必要的庫2. 創建服務器端代碼3. 創建客戶端代碼4. 實現多線程處理5. 測試運行示例代碼:函數說明服務器端代碼說明:客戶端代碼說明: 總結: 簡介: 在本篇博客中,我們將介紹如何…

genism word2vec方法

文章目錄 概述使用示例模型的保存與使用訓練參數詳解([原鏈接](https://blog.csdn.net/weixin_44852067/article/details/130221655))語料庫訓練 概述 word2vec是按句子來處理的Sentences(句子們) 使用示例 from gensim.models import Word2Vec #sent…

《起風了》C++源代碼

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C創建一個 .cpp 文件&#xff0c;直接粘貼賦值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …

目錄——車載網絡安全

本文主要匯總車載網絡安全專欄文章,以方便各位讀者閱讀。 ISO21434 概述(一) ISO21434 組織網絡安全管理(二) ISO21434 項目網絡安全管理(三) ISO21434 分布式網絡安全(四) SO21434 持續進行的網絡安全(五) ISO21434 概念階段網絡安全(六)

線性代數(四) 特征值相似矩陣

前言 前面主要講述的是方程組和矩陣的關系&#xff0c;現在了解下矩陣和矩陣的關系 方陣的特征值與特征向量 假設A為n階方陣&#xff0c;對于一個數 λ \lambda λ 若存在&#xff1a;非零列向量 α \alpha α&#xff0c;使得&#xff1a; A α ? λ α ? A\vec{\alp…

2022年電賽C題——小車跟隨行駛系統——做題記錄以及經驗分享

前言 自己打算將做過的電賽真題&#xff0c;主要包含控制組的&#xff0c;近幾年出現的小車控制題目&#xff0c;自己做過的真題以及在準備電賽期間刷真題出現的問題以及經驗分享給大家 這次帶來的是22年電賽C題——小車跟隨行駛系統&#xff0c;這道題目指定使用的是TI的單片…

spring ico容器 spring注入方式 spring與tomcat整合

一、簡介 1、什么是spring&#xff1f; Spring是一個開源的輕量級Java應用開發框架&#xff0c;它提供了一種簡單、高效、靈活的方式來構建企業級應用程序。Spring框架的核心特點是依賴注入&#xff08;Dependency Injection&#xff09;和面向切面編程&#xff08;Aspect-Ori…

SpringBoot整合Redis完整篇

SpringBoot整合Redis完整篇 1、在springboot項目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

分布式鎖有哪些應用場景和實現?

電商網站都會遇到秒殺、特價之類的活動&#xff0c;大促活動有一個共同特點就是訪問量激增&#xff0c;在高并發下會出現成千上萬人搶購一個商品的場景。雖然在系統設計時會通過限流、異步、排隊等方式優化&#xff0c;但整體的并發還是平時的數倍以上&#xff0c;參加活動的商…

WebRTC音視頻通話-實現GPUImage視頻美顏濾鏡效果iOS

WebRTC音視頻通話-實現GPUImage視頻美顏濾鏡效果 在WebRTC音視頻通話的GPUImage美顏效果圖如下 可以看下 之前搭建ossrs服務&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 之前實現iOS端調用ossrs音視頻通話&#xff0c;可以查…

2023秋招筆試

檸檬微趣 將java的鏈表升序排序&#xff0c;鏈表用Class Node{int val,Node next}實現 import java.util.Comparator; import java.util.PriorityQueue; import java.util.Scanner;/*** 輸入一串數字&#xff0c;放入list中&#xff0c;實現sortList&#xff0c;返回升序的li…

將單個訓練數據集文件拆分為:image文件和label文件(pytorch學習+螞蟻蜜蜂數據集)

螞蟻蜜蜂分類數據集下載鏈接&#xff1a;https://download.pytorch.org/tutorial/hymenoptera_data.zip 要實現如圖操作&#xff1a; 將ants分為ants_image和ants_label 將bees分成bees_image和bees_label 創建ants_label和bees_label&#xff0c;并且以圖片名作為txt文件的…

Apche Kafka + Spring的消息監聽容器

目錄 一、消息的接收1.1、消息監聽器 二、消息監聽容器2.1、 實現方法2.1.1、KafkaMessageListenerContainer2.1.1.1、 基本概念2.1.1.2、如何使用 KafkaMessageListenerContainer 2.1.2、ConcurrentMessageListenerContainer 三、偏移 四、監聽器容器自動啟動 一、消息的接收 …