Task02 消息傳遞圖神經(jīng)網(wǎng)絡(luò)

參考鏈接:https://github.com/datawhalechina/team-learning-nlp/blob/master/GNN/Markdown%E7%89%88%E6%9C%AC/4-%E6%B6%88%E6%81%AF%E4%BC%A0%E9%80%92%E5%9B%BE%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C.md

一、引言

消息傳遞范式是一種聚合鄰接節(jié)點(diǎn)信息來(lái)更新中心節(jié)點(diǎn)信息的范式,它將卷積算子推廣到了不規(guī)則數(shù)據(jù)領(lǐng)域,實(shí)現(xiàn)了圖與神經(jīng)網(wǎng)絡(luò)的連接。消息傳遞范式因?yàn)楹?jiǎn)單、強(qiáng)大的特性,于是被人們廣泛地使用。遵循消息傳遞范式的圖神經(jīng)網(wǎng)絡(luò)被稱為消息傳遞圖神經(jīng)網(wǎng)絡(luò)。

二、 消息傳遞范式介紹

下圖展示了基于消息傳遞范式的聚合鄰接節(jié)點(diǎn)信息來(lái)更新中心節(jié)點(diǎn)信息的過(guò)程:


image-20210516110407207.png
  • 1.圖中黃色方框部分展示的是一次鄰接節(jié)點(diǎn)信息傳遞到中心節(jié)點(diǎn)的過(guò)程:B節(jié)點(diǎn)的鄰接節(jié)點(diǎn)(A,C)的信息經(jīng)過(guò)變換后聚合到B節(jié)點(diǎn),接著B(niǎo)節(jié)點(diǎn)信息與鄰接節(jié)點(diǎn)聚合信息一起經(jīng)過(guò)變換得到B節(jié)點(diǎn)的新的節(jié)點(diǎn)信息。同時(shí),分別如紅色和綠色方框部分所示,遵循同樣的過(guò)程,C、D節(jié)點(diǎn)的信息也被更新。實(shí)際上,同樣的過(guò)程在所有節(jié)點(diǎn)上都進(jìn)行了一遍,所有節(jié)點(diǎn)的信息都更新了一遍。
  • 2.這樣的“鄰接節(jié)點(diǎn)信息傳遞到中心節(jié)點(diǎn)的過(guò)程”會(huì)進(jìn)行多次。如圖中藍(lán)色方框部分所示,A節(jié)點(diǎn)的鄰接節(jié)點(diǎn)(B,C,D)的已經(jīng)發(fā)生過(guò)一次更新的節(jié)點(diǎn)信息,經(jīng)過(guò)變換、聚合、再變換產(chǎn)生了A節(jié)點(diǎn)第二次更新的節(jié)點(diǎn)信息。多次更新后的節(jié)點(diǎn)信息就作為節(jié)點(diǎn)表征。

消息傳遞圖神經(jīng)網(wǎng)絡(luò)遵循上述的“聚合鄰接節(jié)點(diǎn)信息來(lái)更新中心節(jié)點(diǎn)信息的過(guò)程”,來(lái)生成節(jié)點(diǎn)表征。
注(1):神經(jīng)網(wǎng)絡(luò)的生成節(jié)點(diǎn)表征的操作稱為節(jié)點(diǎn)嵌入(Node Embedding),節(jié)點(diǎn)表征也可以稱為節(jié)點(diǎn)嵌入。這次學(xué)習(xí)規(guī)定節(jié)點(diǎn)嵌入只代指神經(jīng)網(wǎng)絡(luò)生成節(jié)點(diǎn)表征的操作。
注(2):未經(jīng)過(guò)訓(xùn)練的圖神經(jīng)網(wǎng)絡(luò)生成的節(jié)點(diǎn)表征還不是好的節(jié)點(diǎn)表征,好的節(jié)點(diǎn)表征可用于衡量節(jié)點(diǎn)之間的相似性。通過(guò)監(jiān)督學(xué)習(xí)對(duì)圖神經(jīng)網(wǎng)絡(luò)做很好的訓(xùn)練,圖神經(jīng)網(wǎng)絡(luò)才可以生成好的節(jié)點(diǎn)表征。
注(3),節(jié)點(diǎn)表征與節(jié)點(diǎn)屬性的區(qū)分:遵循被廣泛使用的約定,此次學(xué)習(xí)約定,節(jié)點(diǎn)屬性data.x是節(jié)點(diǎn)的第0層節(jié)點(diǎn)表征,第h層的節(jié)點(diǎn)表征經(jīng)過(guò)一次的節(jié)點(diǎn)間信息傳遞產(chǎn)生第h+1層的節(jié)點(diǎn)表征。不過(guò),節(jié)點(diǎn)屬性不單指data.x,廣義上它就指節(jié)點(diǎn)的屬性,如節(jié)點(diǎn)的度等。

三、MessagePassing基類初步分析

Pytorch Geometric(PyG)提供了MessagePassing基類,它封裝了“消息傳遞”的運(yùn)行流程。通過(guò)繼承MessagePassing基類,可以方便地構(gòu)造消息傳遞圖神經(jīng)網(wǎng)絡(luò)。構(gòu)造一個(gè)最簡(jiǎn)單的消息傳遞圖神經(jīng)網(wǎng)絡(luò)類,只需定義message()方法(\phi、update()方法(\gamma,以及使用的消息聚合方案aggr="add"、aggr="mean"aggr="max")。

四、MessagePassing子類實(shí)例

主要從以下幾個(gè)步驟實(shí)現(xiàn):

  1. 向鄰接矩陣添加自環(huán)邊。
  2. 對(duì)節(jié)點(diǎn)表征做線性轉(zhuǎn)換。
  3. 計(jì)算歸一化系數(shù)。
  4. 歸一化鄰接節(jié)點(diǎn)的節(jié)點(diǎn)表征。
  5. 將相鄰節(jié)點(diǎn)表征相加("求和 "聚合)。

步驟1-3通常是在消息傳遞發(fā)生之前計(jì)算的。步驟4-5可以使用MessagePassing基類輕松處理。

五、結(jié)語(yǔ)

消息傳遞范式是一種聚合鄰接節(jié)點(diǎn)信息來(lái)更新中心節(jié)點(diǎn)信息的范式,它將卷積算子推廣到了不規(guī)則數(shù)據(jù)領(lǐng)域,實(shí)現(xiàn)了圖與神經(jīng)網(wǎng)絡(luò)的連接。
該范式包含三個(gè)步驟:
(1)鄰接節(jié)點(diǎn)信息變換;
(2)鄰接節(jié)點(diǎn)信息聚合到中心節(jié)點(diǎn);
(3)聚合信息變換。
因?yàn)楹?jiǎn)單且強(qiáng)大的特性,消息傳遞范式現(xiàn)被人們廣泛地使用?;诖朔妒?,可以定義聚合鄰接節(jié)點(diǎn)信息來(lái)生成中心節(jié)點(diǎn)表征的圖神經(jīng)網(wǎng)絡(luò)。在PyG中,MessagePassing基類是所有基于消息傳遞范式的圖神經(jīng)網(wǎng)絡(luò)的基類,它大大地方便了我們對(duì)圖神經(jīng)網(wǎng)絡(luò)的構(gòu)建。
要掌握基于MessagePassing基類構(gòu)建自己的圖神經(jīng)網(wǎng)絡(luò)類的方法,我們不能僅停留于理論理解層面,還需要通過(guò)逐行代碼調(diào)試,觀察代碼運(yùn)行流程,最終掌握對(duì)MessagePassing基類的實(shí)際應(yīng)用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容