徐鈺坪,李治江,2*
(1.武漢大學 圖像傳播與印刷包裝研究中心,湖北 武漢 430079;2.武漢大學 信息管理學院,湖北 武漢 430072)
圖結構數據在現實生活中十分常見,比如社交網絡數據、文獻引用網絡數據和生物化學領域的分子結構等。但是在很多場景下的圖數據會出現標注困難、訓練數據匱乏等問題,比如在社交網路中,新注冊用戶的相關數據有限,需要根據少量的好友關系進行用戶身份標簽分類或者進行興趣群組推薦;另外在用戶商品推薦網絡中,新用戶或新商品也需要基于極其有限的數據或拓撲關系進行用戶商品分類。這些問題無法依賴傳統的大規模圖學習進行解決,需要基于小樣本學習范式[1]模擬人類快速學習過程,僅通過少量的參考數據完成圖上的節點分類任務。與主流的小樣本學習方式相同,圖數據的小樣本學習也遵循兩類基本框架,并且都存在著明顯的問題:一是基于優化的方法[2-5]需要進行精心調參才能獲得較好的性能表現,模型的魯棒性不足;二是基于度量的方法[6-8]在預測表現上遠遠比不上傳統的基于大規模訓練數據的深度學習方法。
通過比較樣本與類別原型的相似程度來進行分類是一類經典的基于度量的小樣本學習方法[6-7],該方法高度依賴于樣本的編碼質量,并且對于原型提取過程中的噪聲節點比較敏感[9-10]。基于以上假設,本文主要從以下兩方面對圖數據的小樣本學習任務進行優化。首先,基于GNN編碼[11]的節點特征學習能夠充分利用圖數據的拓撲結構進行消息傳播和更新,進而更好地學習到圖的全局和局部特征;其次,為了降低噪聲節點在原型提取過程中的干擾,需要對支持集節點進行重要性評估和權值分配。傳統原型提取方案是對支持集節點進行均值化[7]或者加權求和[12],受到圖網絡全局節點的啟發[13],為了在獲取類別原型的過程中抑制噪聲干擾,并更好地關注到全部支持節點的信息。在支持集中引入啞節點作為初始原型節點,再基于注意力機制進行原型節點的自適應權重分配和特征學習。
基于以上幾點考慮,本文提出增強自適應原型重構模型(Enhanced Self-adaptive Prototype Rebuilt , ESPR),即一個基于原型網絡框架的元學習模型,用來解決屬性圖上的小樣本節點分類問題。ESPR采用GCN[14]進行節點編碼,并在原型提取過程中基于transformer[15]框架對原型節點進行自適應重構,最終度量查詢節點與原型節點的距離進行標簽預測。ESPR相比于目前最優模型,在準確率和F1值上獲得大幅提升,特別是在reddit這類大型圖數據集上獲得了超過20%的提升效果。總而言之,本文的貢獻主要有以下三點:
① 提出了ESPR模型,高效、魯棒地解決了屬性圖上的小樣本圖節點分類問題。在4個數據集上進行了對比測試實驗,結果表明ESPR能夠獲得3%~20%的性能提升;
② 提出了一種新的原型提取方式,通過構造原型節點進行類別表征,是對圖領域度量學習方法的有效補充;
③ 優化了原型學習過程,通過增強自適應方式進行原型重構和特征學習,有效抑制了噪聲干擾。
本文的算法流程分為元訓練和元測試兩個過程,整體的模型結構如圖1所示。

圖1 ESPR模型整體結構示意圖
在元訓練過程中,首先構建一個元訓練任務作為一個Episode[6-8],Episode 是一種基本的小樣本學習范式,主要通過構建訓練任務的方式讓模型學習如何根據少量的參考樣本對未知樣本進行分類。一個Episode由支持集和查詢集構成,利用支持集中的參考樣本指導查詢集中樣本的分類,如式(1)所示。
(1)
式中,Tt表示一個任務,St表示支持樣本集,Qt表示查詢樣本集,每個元學習任務針對N個類別的樣本進行分類,其中支持集中的每個類別具有K個樣本,查詢集中的每個類別具有M個樣本。在訓練過程中,模型不斷降低查詢集樣本的預測損失直到收斂,最終獲得對新任務的泛化能力。
在元測試過程中,也需要構建與元訓練任務類似的元測試任務,不同的是該過程不需要進行節點特征學習,而是直接提取節點特征后構造類別原型節點,然后進行原型節點的自適應重構,最后進行節點類別判斷。
圖編碼過程是對鄰居節點信息的迭代聚合和更新,學習圖結構信息和節點特征信息以獲得每個節點新的特征向量。本文采用GCN作為節點特征學習器,通過對局部鄰居信息進行循環聚合和壓縮來獲取節點的潛在語義表征,具體操作如下:
① 基于空間連接性獲取每個節點的直接鄰居集合;
② 對鄰居節點進行聚合操作(如求和、求均值計算);
③ 使用聚合結果更新中心節點隱含狀態。
第l層GCN有如下定義, AGGREGATE表示步驟①和步驟②的聚合過程,UPDATE表示步驟③的更新過程:
(2)
(3)

在圖結構中不同節點之間通過邊相連,而通過多條邊頭尾相連的節點之間存在長距離依賴關系,為了能夠獲取這些節點之間的長距離依賴關系,可以將幾個圖卷積層進行堆疊。值得注意的是,如果堆疊層數過多可能會導致過平滑現象[16],所以本文中只使用了兩層GCN。
類別原型是指在一個樣本簇中,存在一個表征可以歸納描述該簇樣本的基本特點,從而作為該簇的原型表征[7, 17]。但是對于常見的類別原型度量學習,提取類別原型的過程只采用了簡單的、不可學習的方法,比如對支持集樣本進行均值化[7, 18]。考慮到構建支持集時是通過隨機采樣的方式進行訓練樣本的提取,采集到的部分樣本可能是噪聲或離群點,即對類別原型正確表征的貢獻很小,甚至起了不良效果[19]。因此無參的、不可學習的類別原型提取方法是一種對噪聲高度敏感的、極度依賴訓練樣本構建質量的方法[10]。針對以上問題,部分工作對原型提取過程進行了優化[12, 20-21],本質上是通過評估每個標簽的樣本信息率和重要程度來優化原型提取的結果,實際上可以看作是一定程度的修正操作,但是這些方法尚不能達到令人滿意的效果。

(4)

(5)
為了能夠將任務無關的編碼轉化為任務相關的編碼,一般將查詢節點和支持節點放入同一個序列中進行轉化,或者同時基于查詢節點和支持節點的交互來獲取各個支持節點的權重分配[12, 22]。但是這些做法會在提取原型的過程中引入查詢節點的信息,最終會給與查詢節點類別不同的原型表征造成干擾。本文為了獲取純粹的類別原型,在原型提取的過程中不引入查詢節點的信息,而是基于自注意力機制只對支持集節點進行自適應學習。

(6)

經過注意力分配和加權求和后得到的轉化啞節點作為最終的類別原型,如下所示:
(7)

利用這些學習到的類別原型可以構建一個softmax分類器,通過比較查詢節點到各個類別原型的距離來獲取屬于相應類別的可能性,如式(8)所示:
(8)

dEuclidean=‖vi-vj‖2。
(9)
在訓練過程中,每個任務的目標是減少查詢集中所有查詢樣本的分類損失,因此損失函數有如下定義:
(10)
2.1.1 數據集
目前常用的圖數據集包括引文網絡數據集(cora/citeseer/Pubmed)、社交網絡數據集(BlogCatalog/Reddit)、生物化學結構數據集(PPI)等。由于本文研究的是圖結構數據下的小樣本節點分類問題,而且要求節點是包含屬性特征的單標簽節點,所以實驗要求的數據集必須滿足以下三點要求,以驗證模型處理小樣本分類能力:① 具有節點特征的屬性圖;② 每個節點只能屬于一種標簽;③ 整個數據集中包含的節點類別足夠多。
根據以上三點要求,本文選取了以下4個公開數據集。
① Amazon-Clothing[23-25]是根據亞馬遜上“Clothing, Shoes and Jewelry”相關商品構建起來的圖結構數據,其中每個節點表示一個商品,節點的特征由商品的描述轉化而來,節點的標簽是商品所屬的類別。邊關系表示兩個商品被同時瀏覽過。本文將數據集標簽劃分40類訓練樣本、17類驗證樣本和20類測試樣本。
② Amazon-Electronics[23-25]與上一個數據集類似,不同的是兩個電子商品之間的邊關系表示它們被一起購買過。數據集標簽劃分成“訓練/驗證/測試”的數目類別為“90/37/40”。
③ DBLP[26-27]是引文網絡,網絡節點為文章,節點特征由文章摘要轉化得到,兩篇文章之間存在引用關系則構建邊。最終數據集標簽劃分成“訓練/驗證/測試”的數目為“80/27/30”。
④ Reddit[14, 28]是一個基于大型在線論壇Reddit建立起來的post-to-post graph。節點表示用戶發的帖子,節點標簽表示帖子所屬的社區或“subreddit”。當兩個帖子被同一個用戶評論時則構建邊關系。本文按照16/10/15的比例劃分訓練集、驗證集和測試集。
2.1.2 模型設置
圖節點編碼模塊采用兩層GCN對節點特征進行學習,兩層GCN的輸出維度分別為64和32。自適應原型重構模塊直接采用transformer API進行模型設計,其中transformer encoder layer 包含了4個頭,feedforward層的輸出維度為64。模型中的三個模塊均采用了相同的ReLU激活函數,并且dropout都設置為0.5。在訓練過程中,不同模塊有獨立的Adam優化器,學習率均為0.005。
本文共采用了8種對比基線模型,各個模型的基本特點如表1所示。

表1 對比基線模型介紹
針對每種數據集,本文設計了兩種小樣本學習的任務場景:5 ways 5 shots和10 ways 5 shots。在測試過程中,查詢集的樣本數目與支持集樣本數目相同。為了避免實驗結果的偶然性,每個任務場景下都要隨機進行50次meta-test tasks,并將這些測試結果的平均值作為模型在該場景下的性能評價。采用Accuracy(ACC)和Micro-F1(F1)兩個評價指標作為實驗評價標準。
重復以上過程10次并求均值,最終獲得的模型評價結果如表2所示。

表2 4個數據集上不同模型的對比結果
通過對所有的實驗結果觀察分析,可以得到以下結論:
① 實驗結果表明,本文提出的方法均優于所有的對比基線模型,不同的數據集提升的幅度不同,其中針對Reddit數據集的準確率和F1值的提升最大,比原來最優模型GPN的實驗結果最高提升了20%左右。即使是性能提升幅度較小的DBLP數據集,準確率和F1值的提升幅度也在2%~3%左右。至于Amazon-Clothing數據集和Amazon-Electronics 數據集,MSPR獲得的性能提升效果也非常可觀,最終的測試結果充分證明了ESPR的有效性。
② 總體而言,DeepWalk和node2vec這兩種基于無監督學習的圖編碼方式的測試表現最差。因為如果要讓所有的節點都獲得較好的特征編碼結果,往往需要構造大量的節點序列進行訓練。當面對像Reddit這種大型圖結構數據時,計算效率十分低下。
③ GCN和SGC的表現也一般,但是由于是GNN-based的方法,利用了圖的拓撲結構進行節點信息的傳播和特征的學習,能夠有效提高特征學習效率和質量,因此測試表現普遍優于DeepWalk和node2vec。但是GCN和SGC這種半監督學習方法往往依賴于大量的標記樣本進行訓練,而在小樣本的場景中可用于訓練的標記樣本非常少,因此GNN-based的方法具有較大的局限性。
④ 對于PN、MAML這些元學習方法,在實驗中各有優勢和不足。原型網絡是一種基于度量的小樣本學習方式,它對于樣本的特征十分敏感,當出現節點的特征學習較差或者在計算類別原型時有噪聲節點干擾等情況時,模型的性能就會大大降低。MAML是一種基于參數優化的元學習方式,模型表現的穩定性不足,而且需要進行大量的參數調優才能獲得性能良好的模型。
⑤ Meta-GNN和GPN的表現均大幅優于其他所有基線模型。Meta-GNN是將MAML與GNN進行結合,能夠較好地適應圖結構數據上的小樣本節點分類問題。GPN將GNN與PN結合,使用GNN進行節點表征學習,同時引入節點重要性評分對提取的類別原型進行優化,所以能夠獲得相對穩定且良好的實驗結果。相較于GPN,本文舍棄了節點評分器,而是對支持集中的每個樣本進行自適應權重分配,進而獲得類別原型,最終結果表明MSPR大幅度優于以上兩種對比模型。
為了證明各個模塊的有效性,本文還設計了額外的實驗進行消融分析。在5 ways 5 shots測試場景中,將模型中的各個模塊進行逐步去除或簡化,通過比較準確率的變化來比較模型性能。
ESPR是本文提出的完整模型,MLP表示只采用簡單的全連接層對節點進行編碼,w/GNN表示使用圖編碼模塊后的模型,w/PN表示使用本文提出的自適應原型重構模塊進行小樣本學習。最終消融實驗的結果如表3所示。

表3 5 ways 5 shots任務上消融實驗結果
實驗結果表明,將GNN編碼替換全連接編碼后,各數據集上的預測準確率得到了大幅提升,說明圖編碼層能高效地進行節點的表征學習,特別是對于Reddit這類大規模圖數據,GNN算法比普通的MLP編碼學得更快,匯集的數據更多。另外,在不引入圖編碼,僅使用MLP編碼和原型學習時,模型也能夠獲得性能的明顯提升,表明所提出的原型提取模塊能夠有效抑制噪聲和其他無效信息的干擾,進而提高模型的性能。
本文針對標注數據匱乏時的圖節點分類問題提出了ESPR模型,為了獲得高質量的節點編碼,采用雙層GCN進行特征傳播和表征學習;同時針對噪聲高度敏感問題,對所構造的原型節點進行自適應重構,最后通過度量計算進行節點分類。對比實驗和消融實驗充分驗證了ESPR模型的有效性,抑制了噪聲和離群點的干擾,是一種簡單的、可遷移性強的圖度量學習方法。