日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GNN图神经网络

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GNN图神经网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?論文鏈接:A Gentle Introduction to Graph Neural Networks (distill.pub)

零基礎多圖詳解圖神經網絡(GNN/GCN)【論文精讀】_嗶哩嗶哩_bilibili

?文章分為四塊:

什么樣的數據可以表示為一張圖

圖和別的數據有什么不一樣的地方 為什么要做圖神經網絡

構建GNN 看一下各個模塊長什么樣子

搭建了GNN的playground

圖神經網絡基于圖的對稱性的假設?

一、什么樣的數據可以表示為一張圖

圖就是表示實體(點nodes)的一些關系(邊edges)

U表示全局的信息

?點 用長度為6的向量來表示

邊用長度為8的向量來表示

全局信息用長為5的向量表示

?核心就是怎么樣把信息表示成向量,以及這向量是不是能夠通過數據來學到

圖可以分成兩類,一種是有方向的,一種是沒有方向的

怎么樣把數據表示成圖

把圖片表示成圖

0-0點表示第0列第0行,這樣就把圖上的每一個像素映射成圖上的每一個點

0-0的鄰居是1-0,1-1,0-1,對應最右邊0-0有三條邊

中間的 矩陣叫鄰接矩陣,他的每一行、每一列都是一個頂點,如果第i行和j列之間值為一的話有

藍色的點,表示i、j節點之間有邊,白色表示沒有邊,通常是一個很大的稀疏化的矩陣

在圖上面有什么樣的問題

三個問題:在圖層面、頂點層面、邊層面

圖層面:

哪個圖有兩個環?

頂點層面:

空手道比賽中有兩個指導老師,有一天這兩個老師因為政見不合決裂了,要求判斷學生是站在老師A這邊還是老師B這邊

邊層面:

預測邊上的屬性

?圖像場景理解是邊緣層次推理的一個實例。除了識別圖像中的對象,深度學習模型還可以用來預測它們之間的關系。我們可以將其稱為邊緣級別分類: 給定表示圖像中對象的節點,我們希望預測這些節點中的哪些節點共享邊緣,或者邊緣的值是什么。如果我們希望發現實體之間的聯系,我們可以認為圖是完全連通的,并根據它們的預測值修剪邊到達一個稀疏圖

?

?機器學習用在圖上面會遇到的挑戰

首先需要思考如何表示圖,讓圖和神經網絡兼容

圖上面有四種屬性,分別是頂點、邊、全局信息、和連接性

頂點 邊 全局信息都是用像兩個表示

連接性就是頂點之間邊的鏈接,用鄰接矩陣表示,節點*節點用稀疏矩陣形式存儲,但稀疏矩陣高效運算是一個比較難的問題,運算效率很低

還有一個問題是鄰接矩陣可以對相同的連通性進行編碼,而且不能保證這些不同的矩陣在CNN中會產生相同的結果(也就是說他們不是置換不變的)

表示稀疏矩陣的一種節省內存的方法是將其作為鄰接表

每個點、邊、全局信息的屬性用標量表示?

鄰接列表的長度=邊數,第i項表示連接的是第i條邊鏈接哪兩個點,在存儲上只存邊和屬性,且與順序無關,可以打亂邊和定點順序,只需要更新鄰接列表即可

GNN

A GNN is an optimizable transformation on all attributes of the graph (nodes, edges, global-context) that preserves graph symmetries (permutation invariances).?

圖的對稱信息,把頂點變換之后結果不變

GNN是圖輸入,圖輸出,更新屬性,不改變圖結構

最簡單的GNN

對定點向量、邊向量、全局向量,分別構造一個MLP,這三個MLP就組成了一層GNN,輸入輸出都是圖,頂點、邊、全局向量分別經過對應MLP然后得到輸出,作為它的更新

對每個頂點做預測

最后一層輸出是圖,頂點由向量表示,然后加輸出為2的全連接層,然后softmax得到輸出?

?只有一個全連接層,所有的頂點會共享全連接層的參數

存在缺失值時怎么做預測

pooling匯聚

假設這個點沒有自己的向量,但想得到他的預測,我們就把這個點連接的邊、全局向量拿出來

?例如下圖中的頂點,把他的兩個邊向量、一個全局向量加起來,就得到代表這一個點的向量

注意,以上假設他們頂點、邊、全局向量的維度一樣,若不一樣需要做投影

?假設我們只有邊的向量,要得到頂點的向量,通過匯聚層把邊的向量匯聚到頂點上,最后到頂點共享的輸出層得到輸出

假設只有定點向量,沒有邊向量?

?

?假設只有頂點向量,沒有全局向量

?

?缺點:在這個最簡單的 GNN 公式中,我們根本沒有在 GNN 層中使用圖的連通性。每個節點、每個邊以及全局上下文都是獨立處理的。我們只在為預測匯集信息時使用連接。

?改進GNN以考慮圖的信息

信息傳遞:在更新節點時,他的鄰居節點向量加上自己的節點向量得到匯聚向量,匯聚向量進入MLP,得到頂點更新

下圖,頂點會通過距離為1的鄰居(1近鄰)把她的消息傳過來,即pv-v的匯聚過程,也就是最簡單的信息傳遞

這件事情可以不用再最后一步做

?

?先更新邊,然后更新節點

?

?節點后邊,或者交替更新(同時都做)

全局信息

?假設圖比較大,且連接不是很緊密的時候,消息從一個點傳遞到另一個點會經過很長的路程,解決方案就是加一個master node或者是context vector, 它是一個虛擬的點,他可以和所有的頂點和所有的邊相連

?在對邊更新的時候要匯聚頂點和全局信息,把和自己相關的向量都拿過來一起做預測

基于消息傳遞的圖神經網絡?

?實驗

作者做了一個比較小的分子圖的預測數據集,可以調節神經網絡的超參數,來看實際訓練的效果

邊框代表預測值,里面的顏色代表實際值22,只要邊框和內部的顏色一樣代表預測正確,否則錯誤

GNN對超參數很敏感,多少層,匯聚(aggregation)的操作(加起來、求平均、求最大),頂點、邊全局向量的大小,怎么做信息傳遞

?超參數對模型影響的解釋

?模型的大小和auc之間的關系

x軸是參數個數,y是測試的auc,可以看到模型參數變大時,整個auc的上限往上增加了

?每個屬性向量長度

中間橫線代表中值,中間的bar表示25%和75%的分位數,下面偶爾會有outlier,我們希望中值越大越好,bar不要特別長,bar長的話表示他很敏感

從作者的實驗模型來看,匯聚方式不太影響性能,層數越高你的中值就越高,但也需要調好剩下的參數,消息傳遞越多越好,但是值傳遞節點和全局信息效果也很好,似乎可以論證不傳遞邊也不是很重要

總結

以上是生活随笔為你收集整理的GNN图神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。