騰訊AI Lab聯合清華、港中文,萬字解讀圖深度學習歷史、最新進展與應用(6)
4.圖神經網絡的自監(jiān)督/無監(jiān)督學習
前面討論的 GNN 的表達能力、深度和規(guī)模都是基于監(jiān)督式方法,也就是說我們有輸入圖的標簽。但在現實生活中,獲取這些標簽卻并非易事。比如在分子屬性預測任務中,為了獲取基本真值標簽,我們必需專業(yè)人士的協助。此外,訓練任務與測試任務并不總是一致的,比如對于社交網絡推薦任務,我們可能在訓練中使用的是節(jié)點用戶購買商品的數據,但我們卻想知道節(jié)點用戶是否想看某部電影,此時訓練標簽可能對測試就毫無作用了。因此,我們需要研究如何在沒有標簽的情況下訓練 GNN。
目前在自監(jiān)督圖學習方面已經有一些研究成果了。我們可以根據它們的機制將其分為兩大類別:預測方法和基于信息論的方法。而根據所要解決的任務的差異,又可以分為兩種情況:節(jié)點分類和圖分類。
預測方法
首先來看預測方法。Yann LeCun 說過:「自監(jiān)督學習的系統(tǒng)是根據其輸入的某些部分來預測輸入的其它部分。」這就意味著在自監(jiān)督學習中,輸入的結構是很重要的。而圖就是高度結構化的,因此天生就很適合自監(jiān)督學習。
對于節(jié)點分類任務,實現自監(jiān)督學習的方法通常有兩種。一是強制使用相鄰節(jié)點之間的相似性,二是基于鄰近節(jié)點執(zhí)行每個節(jié)點的重建。
首先,我們來看第一種方法,這種方法由 GraphSAGE 引入,其基本思想是強制每個節(jié)點與其鄰近節(jié)點有相似的表征。在這種情況下,設 h_u 為 h_v 的鄰近節(jié)點,則我們的目標是最大化它們的內積。我們稱這些鄰近節(jié)點為正例樣本。然后,我們最小化 h_v 與通過負采樣得到的其它節(jié)點之間的相似性,這些節(jié)點通常是從整個圖均勻采樣的。這樣,我們就可以使用反向傳播來訓練 GNN 的參數了。
至于第二種方法,來自 Durán & Niepert 提出的 EP-B,其首先會計算鄰近節(jié)點的表征的聚合。目標是最小化重建的結果與真實表征之間的距離。與此同時,又最大化這個聚合表征與其它節(jié)點的表征之間的距離。
EP-B 和 GraphSAGE 的主要區(qū)別是 EP-B 強制使用了鄰近節(jié)點和每個其它節(jié)點的聚合之間的相似性,而 GraphSAGE 則直接強制使用了鄰近節(jié)點與每個節(jié)點的相似性。
在圖分類方面又有哪些方法呢?
我們要介紹的第一種方法是 N-Gram Graph。該方法分為兩個階段:節(jié)點表征階段和圖表征階段。節(jié)點表征階段使用了一種傳統(tǒng)的自監(jiān)督式節(jié)點嵌入方法 CBoW 來學習節(jié)點表征。在第二個階段,由于已有節(jié)點表征,則首先會為每條長度為 n 的路徑計算表征,稱為 n-gram 路徑。這個路徑表征是以該路徑中每個節(jié)點的表征的積形式得到的。因此,它們將歷經圖中所有的 n-gram 路徑并歸總所有路徑的表征。最終的圖表征是通過將 1-gram 到 T-gram 的路徑連接起來而得到的。
事實上,這樣的計算就等于沒有訓練的 GNN。N-Gram Graph 的訓練無需任何監(jiān)督。
另一種用于圖分類的方法是 PreGNN,它同樣分為兩個階段:第一個階段是執(zhí)行節(jié)點表征(但使用了兩種全新方法),第二階段是使用簡單的讀出基于所有節(jié)點獲取圖層面的表征。但它是通過一種監(jiān)督式策略交叉熵來訓練圖層面的表征。該研究指出,節(jié)點層面和圖層面的訓練對最終性能而言都很重要。
因為其第二個階段很普通,所以我們只解讀一下第一個階段。
在這一階段,PreGNN 提出了兩種損失函數。周圍結構預測(context prediction)是強制節(jié)點表征與其周圍結構相似。另外我們還執(zhí)行負采樣來最小化 h_v 與其它節(jié)點的周圍結構之間的相似性。這個方法的思路很簡單:每個節(jié)點周圍的結構定義了該節(jié)點的局部拓撲結構。
另一個損失則是屬性掩碼(attribute masking)。這個損失的設計靈感來自強大的 NLP 模型 BERT。簡單來說,就是隨機地使用掩碼替換節(jié)點,然后構建訓練損失函數來預測輸入。方法很簡單,但效果很好。
另一種值得一提的方法是 GCC。該方法使用了對比學習(contrastive learning)來執(zhí)行圖層面的無監(jiān)督學習。不過 GCC 的一大主要問題是沒有節(jié)點層面的訓練。
總結一下,在圖分類任務上,N-Gram Graph 和 PreGNN 都使用了節(jié)點層面的自監(jiān)督,而 GCC 使用了圖層面的自監(jiān)督。那么,我們自然會問:能不能同時使用節(jié)點層面和圖層面的自監(jiān)督?
答案當然是肯定的。這就要談到騰訊 AI Lab 研究團隊提出的 GROVER 了。
GROVER 同樣分為兩個階段。在節(jié)點階段,我們還同時考慮了邊,但為了說明簡單,這里僅討論節(jié)點表征過程。在這一階段,首先為每個節(jié)點提取一個詞典池。我們稱之為 key。然后我們像 BERT 一樣為每個節(jié)點加掩碼,然后預測每個節(jié)點周圍的局部結構。如果局部結構與詞典中的一個 key 匹配,則在該維度上輸出 1,否則便輸出 0。注意這是一個多標簽分類問題,因為每個節(jié)點的局部結構通常有多個。這樣,我們僅需要一類掩碼就能做到 PreGNN 的兩件事。
然后在圖階段,預測是相似的。我們也首先提取 graph motif,其由典型的官能團(比如苯環(huán))構成。然后我們使用 GNN 獲取每個圖的輸出。使用該輸出,我們將預測這個圖是否包含這些 graph motif。注意這也是一個多標簽分類問題。
除此之外,騰訊 AI Lab 還在該研究中提出了一種類似 Transformer 的強大 GNN 模型:GTransformer。其首先會使用一種新提出的名為 dyMPN 的 動態(tài)擴展范圍MPNN 來獲取每個輸入圖的 key、查詢和值,然后會像 Transformer 一樣獲取最終輸出結果。實驗結果證明了這一模式的強大能力。
以上這些就是 GROVER 的關鍵組件。更進一步的,我們還實現了一個分布式的圖訓練框架,最終成功在1000 萬個無標注分子數據上預訓練帶有 1 億個參數的大模型。
使用這個預訓練的模型,我們可以針對下游任務進行微調。在此基礎上,GROVER 可以取得顯著優(yōu)于 MPNN 和 DMPNN 等傳統(tǒng)方法的表現,同時也優(yōu)于 N-Gram 和 PreGNN 等自監(jiān)督方法。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。