1.GCN的概念
傳統CNN卷積可以處理圖片等歐式結構的數據,卻很難處理社交網絡、信息網絡等非歐式結構的數據。一般圖片是由c個通道h行w列的矩陣組成的,結構非常規整。而社交網絡、信息網絡等是圖論中的圖(定點和邊建立起的拓撲圖)。
傳統CNN卷積面對輸入數據維度必須是確定的,進而CNN卷積處理后得到的輸出數據的維度也是確定的。歐式結構數據中的每個點周邊結構都一樣,如一個像素點周圍一定有8個像素點,即每個節點的輸入維度和輸出維度都是固定的。而非歐式結構數據則不一定,如社交網絡中A和B是朋友,A有n個朋友,但B不一定有n個朋友,即每個節點的輸入維度和輸出維度都是不確定的。
所以不能使用CNN來對社交網絡、信息網絡等數據進行處理,因為對A節點處理后得到輸出數據的維度和對B節點處理后得到輸出數據維度是不一樣的。為了得到社交網絡、信息網絡的空間特征所以我們使用GCN(Graph Convolutional Network)來處理。
2. GCN工作原理

圖1 一個GCN的實例(圖片來源網頁[3])
2.1 概念定義
概念 | 定義 |
---|---|
G | 一個拓撲圖定義為G=(V,E) 其中V是節點集合,E是邊集合。 |
N | N是圖中節點個數,即|V| |
F | 節點的特征數,不同學習任務F不同 |
X | 網絡初始化矩陣, X是N行F列的矩陣 |
D | 圖的度矩陣,Dij表示點i和點j是否存在連接 |
A | 圖結構表征矩陣, A是N行N列的矩陣,A通常是G的鄰接矩陣 |
Hi | GCN中每層輸出矩陣 Hi是一個N行F列矩陣 |
Wi | GCN中每層權值矩陣 Wi是一個F行F列矩陣 |
2.2 GCN計算方式
在GCN中,第1層又H0 = X,從i層到i+1層網絡計算其中一個簡單傳播規則,即傳播規則1:
其中激活函數σ一般為ReLu函數。盡然這個規則下GCN是一個簡單模型,但已經足夠強大,當然實際使用傳播規則是下面幾個:
傳播規則2
傳播規則3
傳播規則4
傳播規則5
其中\({\bf{\hat A}}{\rm{ = }}{\bf{A}}{\rm{ + }}{\rm I}\),I是一個N×N的單位矩陣。而\({\bf{\hat D}}\)是\({\bf{\hat A}}\)
是一個對角線矩陣,其中${{\bf{\hat D}}{ii}} = \sum\limits_j {{{{\bf{\hat A}}}{ij}}} $。
最后根據不同深度學習任務來定制相應的GCN網絡輸出。
3 GCN在文本分類中的應用
3.1 文本分類常用算法
文本分類是自然語言處理比較常見的問題,常見的文本分類主要基於傳統的cnn、lstm以及最近幾年比較熱門的transform、bert等方法,傳統分類的模型主要處理排列整齊的矩陣特征,也就是很多論文中提到的Euclidean Structure,但是我們科學研究或者工業界的實際應用場景中,往往會遇到非Euclidean Structure的數據,如社交網絡、信息網絡,傳統的模型無法處理該類數據,提取特征進一步學習,因此GCN 應運而生,本文主要介紹GCN在文本分類中的應用。
3.2 GCN在文本分類中具體應用
首先我們將我們的文本語料構建拓撲圖,改圖的節點由文檔和詞匯組成,即圖中節點數|v|=|doc|+|voc| 其中|doc|表示文檔數,|voc|表示詞匯總量,對於特征矩陣X,我們采用單位矩陣I表示,即每個節點的向量都是one-hot形式表示,下面我們將介紹如何定義鄰接矩陣A,其公式如所示,對於文檔節點和詞匯節點的權重,我們采用TF-IDF表示,對於詞匯節點之間的權重,我們采用互信息表示(PMI, point-wise mutual information),在實驗中,PMI表現好於兩個詞匯的共現詞匯數,其公式如所示:

其中#W(i)表示在固定滑動窗口下詞匯i出現的數量,#W(i, j)表示在固定滑動窗口下詞匯i,j同時出現的數量,當PMI(i, j)為正數表示詞匯i和詞匯j有較強的語義關聯性,當PMI(i, j)為負數的時候表示詞匯i,j語義關聯性較低,在構建完圖后,我們代入GCN中,構建兩層GCN,如下:

我們采用經典的交叉熵來定義損失函數:

其中YD表示帶標簽的文擋集合,Ydf 表示標注類別,Zdf為預測的類別。
下面介紹GCN在多個公開數據集上的實驗結果,其中數據源為:

GCN在文本分類上的實驗結果見表2。

這種新穎的文本分類方法稱為文本圖卷積網絡(Text-GCN),巧妙地將文檔分類問題轉為圖節點分類問題。Text-GCN可以很好地捕捉文檔地全局單詞共現信息和利用好文檔有限地標簽。一個簡單的雙層Text-GCN已經取得良好地成果。
參考文獻
[1] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.
[2] Yao L, Mao C, Luo Y. Graph convolutional networks for text classification[J]. arXiv preprint arXiv:1809.05679, 2018.
[3] http://tkipf.github.io/graph-convolutional-networks/