圖神經網絡與圖注意力網絡

圖片

????????隨著計算機行業和互聯網時代的不斷發展與進步,圖神經網絡已經成為人工智能和大數據的重要研究領域。圖神經網絡是對相鄰節點間信息的傳播和聚合的重要技術,可以有效地將深度學習的理念應用于非歐幾里德空間的數據上。本期推送圍繞圖神經網絡與圖注意力網絡相關知識進行概述。

1.什么是圖

1.1?定義

????圖表示的是一系列實體(節點)之間的關系(邊)。

  • V:節點信息(節點標識、節點鄰居數)

  • E:邊信息(邊標識、邊權重)

  • U:全局信息(節點數、最長路徑)

1.2?embedding

????為了深入表示每個節點、邊和整個圖,可以使用如下存儲方式:

圖片

????????把節點信息、邊信息和全局信息做embedding,通俗說即把這些信息存儲為向量的形式。例如上圖用向量來表示節點,形成一個長度為6的向量,表示節點的6個信息,高矮代表了值的大小。

1.3?將多種類型的數據表示成圖

(1)images as graphs(將圖片表示為圖)?
  • ?把每個像素作為一個點,存在鄰接關系則形成一條邊

圖片

(2)text as graphs(將文本表示為圖)
  • 把詞表示為頂點,詞與詞存在有向邊

圖片

(3)將現實生活中的關系表示成圖
  • 分子結構(原子之間的關系)、社交網絡(人物交互圖)、引用(文章引用關系)

  • 例如下圖為話劇《奧賽羅》中的人物交互圖,通過將同時出現在一個場景里的人物連上一條邊,將人物關系表示成圖。

圖片

1.4?在圖上可定義的問題類型

(1) 圖層面的任務
  • 比如,給定一張圖,對該圖進行分類。

圖片

????????如上圖,預測出哪些分子是具有兩個環的。這個例子比較簡單,可以用圖的遍歷來完成,當圖非常復雜的時候,圖神經網絡可以發揮巨大作用。

(2)節點層面的任務
  • 比如,將節點分類到不同的陣營。

圖片

????上圖是空手道俱樂部數據集,將學員分類到兩個老師的隊伍中。

(3)邊層面的任務? ??
  • 比如,已知節點,學習節點之間的邊的信息。

圖片

????????在這個例子中,邊的預測是通過語義分割把人物、背景拿出來,然后分析實體間的關系。也就是給出節點之間的圖,對邊上的屬性進行預測。比如黃衣服的人在踢綠衣服的人,他們都站在地毯上。

1.5?在圖上使用神經網絡的挑戰

????????圖上有節點屬性、邊的屬性、全局信息、連接性四種類型的信息。

????????前面三個比較容易與神經網絡兼容,因為其可以表示成向量的形式。在利用連接性這種類型的信息時,通常會使用鄰接矩陣——但是存在圖太大無法存儲、交換行列本質不變但矩陣變化的情況。于是很多情況下會使用鄰接列表表示圖上的連接性關系。

圖片

????????如上圖,這張圖有8個頂點,7條邊。鄰接列表的長度與邊數相同,第i項表示第i條邊連接的哪兩個節點。

2.圖神經網絡

圖神經網絡的基本思想就是:

  • 基于節點的局部鄰居信息對節點進行embedding。直觀來講,就是通過神經網絡來聚合每個節點及其周圍節點的信息。

圖片

對于這個圖來說,要計算節點A的Embedding,有以下的兩條想法:

  • 節點A的Embedding,是它的鄰接節點B、C、D的Embedding傳播的結果

  • 而節點B、C、D的Embedding,又是由它們各自的鄰接節點的Embedding傳播的結果。

????為了避免無窮無盡,以下圖為例,做兩層,可以構造該圖的傳播關系。

圖片

第0層即輸入層,為每個節點的初始向量,稱為初始Embedding。

第1層:

  • 節點B的Embedding來自它的鄰接點A、C的Embedding的傳播。

  • 節點C的Embedding來自它的鄰接點A、B、E、F的Embedding的傳播。

  • 節點D的Embedding來自它的鄰接點A的Embedding的傳播。

第2層:

  • 節點A的Embedding來自它的鄰接點B、C、D的Embedding的傳播。

????????但是,目前我們還不知道傳播到底是什么,圖中的小方塊在做什么,下面就對傳播機制進行介紹。

小方塊主要就做了兩件事情:

  • 收集(Aggregation)

????????對上一層的所有鄰接節點的Embedding,如何進行匯總,獲得一個Embedding,供本層進行更新。

  • 更新(Update)

????????對本層已“收集完畢”的鄰接點數據,是否添加自身節點的上一層Embedding,如果是,如何添加、如何激活等等,最終輸出本層的Embedding。

下面使用公式介紹一個具體例子:

圖片

符號解釋:h表示節點的embedding,下標v或u表示節點的索引,上標k表示第幾層,σ表示激活函數,??或??表示矩陣,N(v)表示節點v的鄰接點集合。

公式解釋:使用節點的輸入特征向量來初始化第0層節點的embedding。為了計算第k層節點v的embedding,需要用到上一層中節點v本身的embedding、節點v的鄰居節點在k-1層中的embedding平均值。

操作步驟:

  • 收集——對上一層鄰居節點的Embedding求平均。

  • 更新——收集完畢的Embedding與本節點上一層的Embedding進行加權和,然后再激活。

3.圖注意力網絡

3.1?基本思想

根據每個節點在其鄰節點上的attention,來對節點表示進行更新。

3.2?改進

  • GCN無法允許為鄰居中的不同節點指定不同的權重,GAT和GCN的核心區別在于如何收集并累和距離為1的鄰居節點的特征表示。

  • 圖注意力網絡GAT用注意力機制替代了GCN中固定的標準化操作。

3.3?優點

  • 在GAT中,圖中的每個節點可以根據鄰節點的特征,為其分配不同的權值。

  • 引入注意力機制之后,只與相鄰節點有關,即共享邊的節點有關,無需得到整張圖的信息。

3.4?GAT架構

圖注意力層的輸入:N個節點特征的集合h

圖注意力層的輸出:經過學習之后的N個節點的特征向量h'?

特征增強:為了使得節點特征表達得更清晰,首先對每一個節點進行一個線性變換,即乘上一個權重向量。【W維度為𝐹′×𝐹,作用:比如將一個長向量轉為一個短向量,使得特征更容易提取】

對每個節點實行自注意力機制:注意力系數為

e_{ij} = a(W\vec{h_i},W\vec{h_j})

其中,??代表節點j的特征對節點i的影響,a代表計算兩個節點(特征向量)相關度的函數。

本文通過masked attention將圖結構加入到機制中,masked attention的含義是:僅將注意力分配到節點i的鄰居節點集上(包括i本身)。

為了使得注意力系數更容易計算和便于比較,引入了softmax對所有的i的相鄰節點j進行正則化。

公式2的含義:節點j對i的影響/節點i一階鄰居對i的影響之和。

注:??和??都叫做“注意力系數”,只不過??是在??基礎上進行歸一化后的。

圖片

????將公式1和2進行綜合,注意力系數??的計算過程即如上圖所示:W乘上i的特征,W乘上j的特征,然后連接起來,乘上權重向量a,形成圈里的值是??,再使用??進行歸一化,形成新的注意力系數。

????通過上述運算得到了歸一化后的不同節點之間的注意力系數,可以用來預測每個節點的輸出特征:

3.5?多頭注意力機制

????????因為多個注意力機制學習到的attention側重點可能略有不同,所以將K個獨立的注意力機制的結果進行級聯或者求平均,確保GAT更加穩定。下圖展示是K=3的情況,使得結果更加穩定。

圖片

4.總結

????????本期推送從什么是圖、圖神經網絡的基本思想、圖注意力網絡的基本思想三個方面對圖神經網絡相關的基礎知識進行了介紹。圖神經網絡從提出發展到現在,針對不同的領域一直在進行改進和優化,已經可以應用到非常多的方面,因為其解決圖相關問題的能力強大,所以未來仍有非常大的發展空間,會有更多優秀的模型被提出,解決更加復雜的問題。

5.參考文獻

[1] Distill《A Gentle Introduction to Graph Neural Networks》

[2] Hamilton W L, Ying R, Leskovec J. Representation learning on graphs: Methods and applications[J]. arXiv preprint arXiv:1709.05584, 2017.

[3] Velickovic P, Cucurull G, Casanova A, et al. Graph attention networks[J]. stat, 2017, 1050: 20.

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

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

相關文章

dockerfile多階段構建

我理解多階段構建 多階段構建就是為了鏡像更小更容易維護,易讀,最終從一個階段的核心內容復制到另一個階段,而不必需要那些非核心的內容。 舉例說明 FROM registry.cn-hangzhou.aliyuncs.com/2qqq/node:14 as build COPY ./app WORKDIR /app…

RK3588平臺開發系列講解(嵌入式AI篇)嵌入式AI模型的部署

文章目錄 一、嵌入式AI模型的部署二、AI模型訓練框架有哪些三、rknn-toolkit可支持轉換的模型沉淀、分享、成長,讓自己和他人都能有所收獲!?? ?? 本篇將給大家介紹嵌入式AI模型的部署。 一、嵌入式AI模型的部署 模型的部署,是指將訓練好的模型放到運行環境中進行推理的…

【11月比賽合集】48場可報名的數據挖掘大獎賽,任君挑選!

CompHub[1] 實時聚合多平臺的數據類(Kaggle、天池…)和OJ類(Leetcode、牛客…)比賽。本賬號會推送最新的比賽消息,歡迎關注! 以下信息僅供參考,以比賽官網為準 目錄 Kaggle(9場比賽)阿里天池(…

PHP curl常見CURLESSLCACERT (60)錯誤及get,post實例

常見的 CURLE_SSL_CACERT (60) 錯誤, 解決辦法: 從 https://curl.haxx.se/ca/cacert.pem (opens new window)下載最新的 可直接下載2022 年 3 月 22 日 配置 php.ini 文件,搜索 [curl] ,在下方添加 curl.cainfo "D:\php…

HarmonyOS(三)—— 應用程序入口—UIAbility

前言 學習過android的同學都是知道Activity,Activity是Android組件中最基本也是最為常見用的四大組件之一,用戶可以用來交互為了完成某項任務。 Activity中所有操作都與用戶密切相關,是一個負責與用戶交互的組件,可以通過setCon…

10個容易被忽視的FastAPI實用功能

大家好,FastAPI是一種現代、高性能的Python Web框架,用于構建Web應用程序和API。它基于Python的異步編程庫asyncio和await語法,以及類型注解和自動文檔生成等特性,提供了快速、易用和可靠的開發體驗,接下來本文將介紹1…

ElasticSearch之Nodes info API

查看當前集群中各節點的信息,執行如下命令: curl -X GET "https://localhost:9200/_nodes?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"本接口允許指定節點和指標。 當前支持的指標&#…

機器視覺公司為什么寧愿高薪招新人,也不愿加薪留老員工?老員工特殊時間特殊照顧,新人必須常照顧

?職場常出現的“薪酬倒掛”現象。其實這是正常的職場規律,實際上是企業管理不得不面對的一種選擇。 很多企業寧愿老員工離職也不加薪,卻高薪請新員工?這就是職場上的鯰魚效應,一些高層領導認為一個企業,老員工好比沙…

基本的彈層,點擊彈出

<div class"role"><el-button type"primary" size"mini" click"showDialog true">添加角色</el-button></div><!--控制彈框的顯示隱藏visible .sync可以點擊X關閉彈框 --> <el-dialog width"…

Spring Cloud學習(十一)【深入Elasticsearch 分布式搜索引擎03】

文章目錄 數據聚合聚合的種類DSL實現聚合RestAPI實現聚合 自動補全拼音分詞器自定義分詞器自動補全查詢completion suggester查詢RestAPI實現自動補全 數據同步數據同步思路分析實現elasticsearch與數據庫數據同步 集群搭建ES集群創建es集群集群狀態監控創建索引庫1&#xff09…

【RocketMq系列-02】RocketMq的架構解析和高性能設計

RocketMq系列整體欄目 內容鏈接地址【一】RocketMq安裝和基本概念https://zhenghuisheng.blog.csdn.net/article/details/134486709【二】RocketMq的架構解析和高性能設計/font>https://zhenghuisheng.blog.csdn.net/article/details/134559514 RocketMq的架構解析和高性能設…

CentOS 防火墻查看已開發的端口

在CentOS上&#xff0c;你可以使用 firewall-cmd 命令來查詢當前防火墻規則&#xff0c;以查看已經開放的端口。以下是一些常見的查詢命令&#xff1a; 查詢已開啟的端口&#xff1a; sudo firewall-cmd --list-ports這將列出所有已經開啟的端口。 查詢已開啟的服務&#xf…

leetcode:520. 檢測大寫字母

一、題目&#xff1a; 鏈接&#xff1a;520. 檢測大寫字母 - 力扣&#xff08;LeetCode&#xff09; 函數原型&#xff1a;bool detectCapitalUse(char* word) 二、思路&#xff1a; 本題較為簡單&#xff0c;分為三種情況&#xff1a; 1.首字母大寫&#xff0c;其余小寫 2.首字…

外網IP和內網ip的區別

首先得先知道什么是ip地址&#xff0c;它就是唯一標識連接網絡的設備的&#xff0c;即IP地址充當了設備在網絡中的“住址”&#xff0c;使得設備能夠相互通信和交換數據。 我們常聽開發人員說外網內網&#xff0c;那么它們有什么區別呢&#xff1f; 外網可以理解為互聯網&…

RT-Thread Sensor框架使用 - 1

RT-Thread Sensor框架使用 - 1 簡介Sensor框架結構函數說明rt_device_findrt_device_openrt_device_read 簡介 使用氣體傳感器&#xff0c;對接到sensor框架中使用。 Sensor框架結構 device框架 --》sensor框架 --》具體的設備 函數說明 rt_device_find 查找設備時的名稱…

【Docker】從零開始:6.配置鏡像加速器

【Docker】從零開始&#xff1a;5.配置鏡像加速器 什么是鏡像加速器&#xff1f;為什么要配置docker鏡像加速器?常見的Docker鏡像加速器有哪些&#xff1f;如何申請Docker鏡像加速器如何配置Docker鏡像加速器 什么是鏡像加速器&#xff1f; 鏡像加速器是一個位于Docker Hub之…

vue2.x中使用JS與路由守衛配置、vue2.x中使用TS與路由守衛的配置和vuex的配置以及TS在vue2.x中的使用說明

vue2.x 事件修飾符 <button click.stop.self"handleDelete(item)"></button>在使用 $confirm 時&#xff0c;使用 await 方式時&#xff0c;需要添加 catch 回調&#xff0c;否則無法獲取 $confirm 關閉和取消時的標識值&#xff0c;并且后續代碼停止執…

騰訊微服務平臺TSF學習筆記(二)--如何使用spring cloud zuul實現線上流量復制

需求提了n遍了&#xff0c;好好好&#xff0c;那這個需求就由我測試來做 1.在zuul端配置&#xff1a; ●假設provider-mirror是provider-demo的灰度應用 package com.tencent.tsf.msgw.zuul1.filter;import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.Re…

北航計算機學院 嵌入式系統實驗踩坑

今天上課在實驗室配置交叉編譯環境時&#xff0c;用機房的電腦一次就配成功了&#xff0c;但是下課后用自己的電腦裝了一個虛擬機安裝了Ubuntu 22.04系統&#xff0c;卻怎樣也配不成功&#xff0c;后面仔細閱讀文檔才發現&#xff0c;交叉編譯環境arm-linux-gcc居然是32位的&am…

PHP反序列化簡單使用

注&#xff1a;比較簡陋&#xff0c;僅供參考。 編寫PHP代碼&#xff0c;實現反序列化的時候魔法函數自動調用計算器 PHP反序列化 serialize(); 將對象序列化成字符串 unserialize(); 將字符串反序列化回對象 創建類 class Stu{ public $name; public $age; public $sex; publi…