圖神經網路的預訓練詳述

近年來,圖神經網路(GNN)對基於圖結構資料的機器學習任務產生了深刻的影響,如節點分類、連結預測以及圖分類等。該方向的早期研究重點是把神經網路應用到非歐氏空間的圖結構資料上,並完成相關任務。隨著圖卷積網路(GCN)的誕生及其在半監督節點分類任務上的出色表現,不同架構的圖神經網路不斷湧現,比如圖注意力神經網路(GAT)。鑑於其強大的表達能力,圖神經網路被廣泛應用到其他領域,如推薦系統、量子化學、生物醫療以及知識問答和認知推理。與此同時,越來越多的研究開始關注圖神經網路的泛化能力和理論基礎。

儘管圖神經網路在過去幾年取得了巨大的成功,但如同大多數有監督或半監督機器學習模型一樣,為了學習到強大的表達能力,它需要大量的標籤資料定義並最佳化學習目標。大規模標籤資料,尤其是基於圖結構的標籤資料通常很難獲取,而且不同資料的標註需要對應的專業領域知識。類似地,自然語言處理和計算機視覺等領域也面臨同樣的問題,其主要解決方案是在文字或影象資料上設計自監督的學習任務,從無標籤的資料中透過預訓練得到相應的機器學習模型(一般為神經網路模型),比如著名的BERT、 Deep InfoMax(DIM)、Contrastive Predictive Coding(CPC)、Momentum Contrast(MoCo)等模型。受此啟發,我們是否也可以透過在無標註的圖結構資料上進行自監督學習來預訓練圖神經網路呢?

1。 圖神經網路

圖神經網路的輸入通常是一個帶節點或連邊屬性的圖結構,即包括該圖的鄰接矩陣A和對應的屬性資訊X。其最終輸出一般取決於具體的任務,比如節點分類輸出節點的標籤,圖分類輸出圖的標籤,連結預測輸出連結存在與否。以節點分類為例,圖神經網路根據圖結構和輸入節點屬性訓練圖中每個節點的隱式向量表示,其目標是讓該向量表示包含足夠強大的表達資訊,使其能夠幫助每個節點進行分類。

圖神經網路模型學習的主要過程是透過迭代對鄰居資訊進行聚合和更新。在一次迭代中,每一個節點透過聚合鄰居節點的特徵及自己在上一層的特徵來更新自己的資訊,通常也會對聚合後的資訊進行非線性變換。透過堆疊多層網路,每個節點可以獲取到相應跳數內的鄰居節點資訊。經典的圖卷積網路、圖注意力神經網路、GraphSage等模型都遵循此過程。在圖卷積網路模型中,每一節點對一跳鄰居節點和自己當前的特徵進行平均化聚合;圖注意力神經網路模型進一步透過引入注意力機制對收集到的鄰居資訊進行加權平均聚合;GraphSage則提出多種方式對鄰居資訊進行有效聚合。

2。 自監督學習與預訓練

大多數情況下,我們很難獲得大量標籤資料,所以有監督的機器學習方法很難施展其強大的學習能力。而我們可以相對容易地獲取海量的原始無標註資料,比如網際網路上的文字、影象、關係型或結構化資料。那麼,是否可以從大規模無標註資料中創造偽標籤作為監督訊號?比如以部分輸入資料預測剩餘部分的資料?這就是無監督學習的主要思想。從高層面來看,輸入資料是完全無標註的,所以屬於無監督學習的範疇;但具體到模型的學習過程,其利用了部分輸入資料構造監督訊號,對模型進行有監督學習,從而有效地學習到資料中的潛在特徵和資訊。經典的語言模型、自編碼器等生成模型,都屬於自監督學習的範疇。以BERT掩碼語言模型為例,對於輸入的無標記資訊的句子,透過隨機掩蓋15%的單詞作為監督訊號來訓練底層的模型。

由於自監督學習直接作用於無標籤資料,通常情況下得到的模型為通用的預訓練模型。當需要解決具體的下游任務時,我們可以直接使用預訓練模型來進行微調,從而避免為每一個下游任務從零開始訓練全新的模型。由於預訓練模型可以從大規模無標籤資料中學習到資料中的通用規律,其在自然語言處理、視覺、語音等領域取得了廣泛的成功。

從廣義上來講,DeepWalk、node2vec、metapath2vec和基於自編碼器的無監督圖表示學習方法也屬於自監督學習的範疇,它們學習得到的節點向量表示(即預訓練模型的引數),一般在下游任務中保持不變,並直接作為特徵為下游任務作貢獻。該類自監督模型並不會產生一個預訓練的模型,因此很難為下游任務的新模型進行初始化和微調。

圖神經網路的預訓練詳述

3。 圖神經網路的預訓練

從方法論的角度,目前主流的自監督學習方法可以分為基於生成式的和基於對比學習的兩大主要類別。基於生成式的自監督學習方法透過讓模型對輸入資料進行生成重建學習到資料的潛在特徵;基於對比學習的方法則主要是從輸入資料中構造出正負樣本,讓模型在隱式表示空間對正負樣本進行判別。這兩種思路是透過不同方式從無標記的輸入資料中構建預訓練任務,即監督訊號。

(1)基於生成模型的預訓練

生成模型旨在將觀測資料生成機率最大化,該思想與自監督學習的目標天然吻合,即把輸入資料本身作為模型的監督訊號。生成式自監督學習已經在自然語言處理領域取得了巨大的成功,例如以BERT和GPT系列為代表的預訓練語言模型,已經在10多個不同自然語言理解任務上取得了里程碑式的成果。我們是否可以借鑑該思想,將其用於圖神經網路的自監督學習任務呢?

受BERT啟發,有人提出了基於生成式的圖神經網路預訓練框架(Generative Pre-Training of Graph Neural Networks,GPT-GNN)。其預訓練的主要思路是透過將輸入圖資料的生成機率最大化,來產生模型訓練的自監督訊號。鑑於輸入圖資料一般包括圖結構A和節點屬性資訊X,因此,GPT-GNN將預訓練任務對應地分為結構生成和屬性生成兩個子任務。與此同時,GPT-GNN採用自迴歸的方式對圖的生成機率進行建模,即對輸入網路的所有節點隨機(或根據資料中的時間資訊)預定義一個順序,在該順序下依次進行節點連邊及其屬性的生成。在每輪(epoch)訓練過程中,採用不同的節點順序進行自迴歸式的生成建模。此外,為了給圖神經網路的預訓練提供有效的自監督訊號,GPT-GNN並沒有忽略網路結構與節點屬性之間的依賴關係,即利用結構資訊生成節點屬性,反之亦然。

具體來說,對於一個帶節點屬性的輸入圖,GPT-GNN首先對網路中的所有節點進行隨機排序,然後,將其隨機遮蓋的節點的連邊和屬性作為模型生成的目標,對每個遮蓋的節點,比如節點3,其目標是根據觀測到的資料分別生成它的屬性和連邊。為防止資訊洩露,目標節點3的屬性和結構被分別抽象為兩個虛擬節點—屬性生成節點和連邊生成節點。為生成節點3的屬性節點,模型根據前序節點1和2的所有資訊及觀測到的節點3的部分連邊進行預測。預測到的節點3的屬性節點則進一步用來生成它的其他連邊結構,即其連邊節點。模型會根據節點的標記順序來對剩餘節點4和5分別進行屬性生成和結構生成。至此,GPT-GNN完成了對輸入圖資料在當前節點排序下的一次生成過程。在此過程中,節點屬性預測和連邊預測扮演了圖神經網路的預訓練任務角色。

GPT-GNN嘗試解決領域內的圖神經網路預訓練問題,即預訓練和下游任務使用相同分佈的圖資料。透過生成式自監督學習,從所關心的圖資料中預訓練得到通用的圖神經網路,然後對同一資料上的不同下游任務分別進行模型微調。GPT-GNN作者透過對億級規模網路進行預訓練得到的圖神經網路,可以顯著提升多個下游任務的效能。GPT-GNN預訓練後的模型在僅使用10%~20%標記資料的情況下,比相同架構且使用全部(100%)標籤資料的未預訓練模型取得的結果更好。該發現對解決大規模圖挖掘應用中標籤資料稀疏的現實挑戰提供了可行性思路。有人為了對化學分子圖進行圖神經網路預訓練,同樣提出了以節點屬性掩碼預測作為自監督學習的一個任務,該任務也是基於BERT思想的生成式預訓練思路。此外,該工作還提出了基於對比學習的圖結構上下文預測的預訓練任務。

(2)基於對比學習的預訓練

基於對比學習的自監督學習模型在影象和基於序列的資料結構上取得了很大的成功,主要代表模型包括DIM、CPC和MoCo。該思路主要是從輸入資料中構造出不同的樣本,透過引導預訓練模型在隱式表示空間對正負樣本進行判別來學習輸入資料中的特徵。受此啟發,基於對比學習的圖神經網路預訓練任務和模型也被相繼提出,如基於DIM的Deep Graph Infomax(DGI)和基於MoCo的Graph Contrastive Coding(GCC )。

受DIM啟發,有人提出了基於互資訊的圖神經網路自監督學習框架DGI。基於隨機遊走定義的目標函式過度強調節點之間的近鄰相似度,忽略了節點在整個圖中的全域性結構資訊。而DGI基於互資訊的核心思想是衡量節點的區域性表示與其所屬圖的全域性表示之間的相似關係,這樣便可以跳出近鄰相似度的約束,讓節點向量表示同時捕獲到全域性圖的資訊。

DGI預訓練框架包括編碼器、readout函式和損失函式,關鍵點在於基於圖結構的正負例設計。編碼器可以採用任意一種圖神經網路,為每個節點學習一個表示。Readout函式可以設計為將所有節點的表示平均並經過一個啟用函式,以獲取圖級別的表示。損失函式接收一個節點和一個圖結構,根據該節點的區域性向量表示與該圖的整體向量表示,判斷該節點是否屬於該圖。由DIM可知,兩個變數的聯合分佈和兩個變數邊緣分佈乘積之間的Jensen-Shannon(JS)散度越高,兩個變數之間的互資訊就越大,也就是這兩個變數的關聯性越強。DGI使用一個判別器透過噪聲對比估計,以二分類交叉熵為損失,透過最佳化損失讓判別器正確區分正負例,來增大JS散度,從而達到增大區域性節點表示和全域性圖表示互資訊的作用。而增大互資訊使得每個區域性節點表示能夠儲存整個圖的資訊,即能夠探索和儲存不同節點之間的相似性,例如能學得兩個不相鄰卻有著相似結構的節點之間的相似性。

InfoGraph在DGI的基礎上做了兩點改進,一是InfoGraph中節點的向量表示是將圖神經網路編碼器不同層的表示拼接在一起得到的,使得其包含不同規模的子圖資訊;二是損失函式中使用的是JS互資訊估計器(MI estimator)為了避免負遷移效果,InfoGraph使用了兩個編碼器,一個學習監督資料,另一個根據無監督資料將圖和節點表示之間的互資訊最大化,與此同時,也將這兩個編碼器每層得到的圖表示之間的互資訊最大化。

有人提出了可以從多領域圖資料中對圖神經網路進行預訓練的框架GCC,其目標是透過自監督學習的方式,讓圖神經網路從不同圖資料中捕捉到它們遵循的潛在普適規律,從而賦予其對未知領域圖資料進行表示學習的能力。以GCC的具體實驗為例,在預訓練階段,透過對社交網路、學術合作網、電影合作網、線上部落格網等6個圖資料進行圖神經網路的自監督學習;在微調階段,預訓練得到的模型被應用到航空交通網、線上論壇網等多個不同領域的圖資料上解決相應的下游任務。

GCC預訓練的主要思路也是透過從無標註的輸入圖資料中構造正負例來進行對比學習,以此作為自監督訊號。如何從多個圖資料中構造正例和負例呢?GCC首先以任意節點為起點進行隨機遊走,生成以該節點為中心的鄰居子圖。GCC假設從同一中心節點出發生成的兩個子圖應該具有相似的結構屬性,因此被作為正例;對於從不同節點(包括相同網路或不同網路中的節點)出發生成的多個子圖,則應該具有與中心節點相關的獨特結構屬性,也就是說彼此間不具有結構相似性,因此構成負例。在輸入空間構造的各子圖透過圖神經網路編碼得到子圖在隱空間的整體向量表示,GCC的預訓練任務則是在隱空間表示下在詞典中為查詢子圖(query)q找到與之相似的鍵子圖(key)k,即採用對比學習常用的InfoNCE損失函式。此外,GCC採用了MoCo中的佇列機制,來維護足夠大且支援動態更新的鍵子圖詞典。

GCC中的子圖判別任務為圖神經網路的跨圖資料預訓練提供了有效的自監督訊號。對6個不同圖資料進行預訓練得到的圖神經網路模型,可以幫助完成完全不同領域的圖資料上的下游任務,如節點分類、圖分類、相似度搜索。也就是說,GCC的預訓練機制能夠讓圖神經網路捕捉到不同圖資料中的通用結構規律,進而賦予其在下游圖挖掘任務上的領域遷移能力。

從上述介紹可以看出,如何進行資料增強(augmentation),即如何在圖結構上設計負例進行對比訓練的自監督訊號,對基於對比學習的圖神經網路預訓練的成功起著至關重要的作用。DGI中的負例是透過對原始圖結構進行隨機變換而獲得的。在InfoGraph和GCC中,所有樣本都是從輸入圖中得到真實網路結構,其正負例則由樣本的具體來源而定,如根據其是否來源於同圖結構。此外,GCC等方法都是透過隨機遊走(或傳播)的方式對輸入圖進行資料增強,從而產生預訓練的監督訊號。雖然目前的幾種資料增強方法都在具體實驗中得到了驗證,但它們的理論基礎以及是否存在更合理的圖資料增強方法仍需進一步探索。

TAG: 節點神經網路模型資料學習