--- title: A survey of GNN for Text Classification --- ###### tags: `機器學習` `GNN` `TextClassification` # Introduction 隨著人工智慧的發展越來越成熟,越來越多應用在現實生活中,比如推薦系統根據使用者在網頁上的行為來進行物品推薦、使用者將文字打入網頁中進行翻譯或是上傳一張圖片系統顯示這張照片裡面有貓還是有狗。 而這些應用與Neural Network息息相關,歸功於反向傳播的演算法才能有重大突破,而這也促進了與影像辨識相關的Convolutional Neural Network以及與時間序列相關的Recurrent Neural Network的發展。 而近幾年Graph彈性的資料結構也漸漸被應用在Neural Network當中並在得到相當的成就而漸漸被注意。 ## Graph 那為什麼Graph應用在Neural Network當中被認為是相當有潛力的呢? 在圖論中定義了 $G = (V,E)$ 其中V跟E分別為node跟edge set則表示一個Graph裡面它是由很多的node跟edge所組成,node代表某個節點可能是貼文、使用者或是文字而edge則代表node之間的互動關係例如貼文之間的引用、使用者間的關係或是文字之間的連接關係。 因為這樣非方格式且任意地且彈性的資料結構,所以被認為是有潛力的研究方向之一  左圖為我們一般常見的Graph,但在電腦系統中為了讓用數學表示我們常用下面三個Matrix來表示分別為 1. 節點連接數量的Degree Matrix 2. 節點間的連結關係Adjacency Matrix 3. 整合兩者資訊的Laplacian Matix ## Graph Neural Netwok (圖神經網路) 而目前為止GNNs的任務主要有node classification、link prediction以及graph classification等 GNNs根據不同任務會有幾個主要的Functions分別為 Construction、Aggregation以及Readout ### Construction 首先要先建立一個Graph,Node可以為一個文章、文字及使用者基本資料等,而Edge的部分則可以是文章間的引用關係、文字間是否相鄰或者使用者間的互動。 ### Aggregation 而在GNN演算中Aggregation的功能就是整合鄰居節點的特徵資訊,比如說我有一個朋友他最近買了一台電腦,而透過Aggregation發現我跟朋友間的相似度極高,所以就可以知道我可能也喜歡與電腦相關的東西。 ### Readout Readout的功能則是在Graph Classification中常被用到,例如蛋白質預測任務中GNNs透過每個原子間的特性或是鍵結的類型強度最後整合出分子可能對人體有哪些反應。 ## 半監督式學習 在實作中model需要先定義好輸入以及輸出的形式才能進行訓練,但這樣的實作方式並無法直接適用在結構彈性的Graph當中也就是說當有新的節點新增到Graph中就必須重新定義model的參數重新訓練,因此延伸出了兩個學習模式。 ### Transductive Learning (直導式學習) 因為上述所說的限制,所有學者就提出了Transductive的訓練方式。在建圖過程中將所有資料集全部塞入到整個圖中用label去區分訓練集跟測試集。 在訓練過程中做節點分類時將測試節點遮罩掉避免在反向傳播中遇到測試節點時也進行調參。 在訓練過程中有可能會取得測試節點的特徵。 <!-- 1. 將整個資料集建成整張大圖 2. 透過node label來區分Training 跟 Testing 3. 建立(設計)GNN模型 4. 在訓練過程中將Training Node進行分類並調參 5. 在測試過程中將Testing Node進行分類 --> 但在現實中資料集是會變動的,雖然這樣可以訓練出模型出來但無法擴展到現實生活中,這樣的方法被提出來時候並沒有實際應用。 ### Inductive Learning (因導式學習) 為了解決GNN有固定輸入的問題,有學者提出了一個方法。 在建圖的過程中先建立大圖並標記label為Training跟Testing來區分節點類別,接下來透過Sample的方式來產生大小相同的子圖,進行訓練。 注意在訓練過程中是不會Sample到測試集中的節點,所以機器在訓練過程是無法取道測試節點的特徵。 <!-- 1. 將整個資料集建成整張大圖 2. 透過node label來區分Training 跟 Testing 3. 建立(設計)GNN模型 4. 在訓練過程中將Sample出大小相同的子圖丟入模型中進行訓練。 5. 在測試過程中以node label 為Testing的節點為Target node sample出大小相同的子圖進行推論。 --> ## Text Classification (文本分類) 文本分類在自然語言處理中是一個很基礎的問題,許多下游如機器翻譯、語音辨識詞性標註都是基於文本分類再往上延伸的任務。 傳統演算法如Bag-of-Word(BOW)或是Term Frequency–Inverse Document Frequency(TF-IDF)等,雖然已經有不錯的表現但這些方法並無法解決上下文問題,所以無法真正地將語意資訊分離出來。 為了改進語意資訊無法分離的問題,所以相繼提出了Word2Vec跟GloVe等特徵提取工具可以在參考上下文的狀況下將資訊提取出來。 後來隨著深度學習的發展以及反向傳播演算法陸續有學者提出使用CNNs以及RNNs來提取上下文資訊發現這樣的表現優於使用特徵提取工具。 ### 目前所遇到的挑戰 圖中描述了如果字詞距離過遠,字詞間意思相同但無法對應。比如"Maryam"跟下一句的"She"兩文字代表相同意義但在機器無法對應。 儘管使用了CNNs及RNNs系列的model來減緩字詞距離問題,但如果過遠的話依然會有資訊消失或是訓練運算龐大的問題。為了解決這樣的問題相繼提出了兩個解決方法分別是引入Attention Mechanism或引入GNNs的技術。 #### Attention Mechanism 2017年Google提出的論文"Attention is all you need"中所提出的Transformer成功的將Attention運算發揚光大。它是被證明可以無視距離來參考周圍資訊的一種機制。 但它也有缺點 1. 位置資訊在運算過程消失 2. 參考周圍資訊過多導致運算量龐大 #### Graph Neural Network 因為Graph的資料結構以及目前GNNs運算的特性,所以也被認為是可以解決文本分類中的字詞距離問題。 下面將會介紹GNN運用在Text Classification的例子。 # GNNs on Text Classification 而在這邊會介紹,過去一些透過GNN方法來做Text Classification的幾個論文研究。主要會拆成Initialization、Graph Construction、GCN Model以及Learning來區分各個文本分類的演算方法。 ## TextGCN (Yao et al.)  ### 向量初始化 one-hot vector ### 建圖方法 建立一個有Document跟Word兩種節點類型的異質圖其連接方式為分成Document-Word跟Word-Word兩種。 如果為Document-Word則是將文件內含有的Word全部連接在一起,而連接強度則是利用TF-IDF來計算。 而如果為Word-Word則是透過Sliding Window並設定Window size將其掃過整個文本將Window中含有的字互相連接其強度透過PPMI來計算。 ### 模型架構 使用Kipf and Welling (2017)所提出的Graph Convolutional Network來做圖卷積運算。最後以Target Node的Document節點做節點分類任務。 ### 訓練方法 Transductive Learning ## TextING () # Reference
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up