天天看點

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

小樣本學習&元學習經典論文整理||持續更新

核心思想

  本文提出一種采用圖神經網絡(Graph Neural Network,GNN)的小樣本學習算法,将距離度量由歐式空間轉移到非歐空間中,其核心思想還是将有标簽支援樣例的标簽資訊傳遞到無标簽的查詢樣例上去,這種資訊的傳遞可以看做一個圖模型根據輸入的圖像和标簽給出的後驗推斷。那麼具體是如何實作的呢?首先,作者将輸入資料集劃分為三部分

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

其中 ( x 1 . . . x s ) (x_1...x_s) (x1​...xs​)表示帶有标簽的支援集, ( x ~ 1 . . . x ~ r ) (\tilde{x}_1...\tilde{x}_r) (x~1​...x~r​)表示不帶有标簽的訓練集(用于半監督學習和主動學習), ( x ˉ 1 . . . x ˉ t ) (\bar{x}_1...\bar{x}_t) (xˉ1​...xˉt​)表示不帶标簽的查詢集,三個資料集是獨立同分布的。網絡的處理過程如下圖所示

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

  将支援集圖檔 x 1 . . . x 4 x_1...x_4 x1​...x4​和查詢集圖檔 x ˉ \bar{x} xˉ輸入到嵌入式網絡 ϕ ( x ) \phi(x) ϕ(x)中轉化為對應的特征向量,将特征向量與表示标簽的獨熱向量 h ( l ) h(l) h(l)級聯起來,共同輸入到GNN中,最後得到預測結果。前半部分都很好了解,而且也是非常常見的操作。下面詳細介紹一下GNN部分的工作過程。

  GNN是由許多節點和邊構成的圖模型,在本文中,每一個節點都代表一幅輸入的圖像,而每個邊上的權重就表示兩幅圖之間的關系(可以了解為距離或者相似程度)。本文采用的是稠密連接配接的圖,是以每兩個輸入圖檔之間都有邊連接配接起來,鄰接矩陣 B B B就儲存了任意兩個節點之間的權重值。那麼這個權重值是怎樣計算的呢?這裡有許多的計算方式,也衍生出許多GNN的變種,本文受資訊傳遞算法的啟發,采用學習的方式擷取兩個節點之間的權重值,計算方法如下

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

其中 φ θ ~ ( ) \varphi_{\tilde{\theta}}() φθ~​()是一個MLP,輸入兩個節點之間的絕對值差,輸出對應的權重值

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

  将計算得到的 A ~ i , j ( k ) \tilde{A}^{(k)}_{i,j} A~i,j(k)​的每一行都進行softmax處理,保證每個節點與其他所有節點之間的權重之和為1,然後得到鄰接矩陣 B B B。之後就可以利用圖卷積神經網絡(GCN)計算得到下一層網絡,計算過程如下

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

其中 x l ( k + 1 ) x_l^{(k+1)} xl(k+1)​表示第 k + 1 k+1 k+1層網絡的節點, l l l表示節點上特征向量的長度, ρ \rho ρ表示非線性激活層,本文選擇Leaky ReLU, θ \theta θ是一個可以學習的參數,累加符号表示鄰接矩陣 B B B可以采用多種計算方式,并累加起來,但本文中隻有兩種情況:節點與自己本身的連接配接權重為1,與其他節點的連接配接權重為 A ~ i , j ( k ) \tilde{A}^{(k)}_{i,j} A~i,j(k)​。每一個圖卷積子產品的計算過如下圖所示,在訓練過程中還需要将每層網絡的輸入 V ( k ) V^{(k)} V(k)和Gc block的輸出級聯起來構成下級網絡輸入 V ( k + 1 ) V^{(k+1)} V(k+1),測試時不需要這步操作。

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

  整個GNN就是由多個上述的圖卷積子產品構成的,如下圖所示

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

  可以看到圖卷積層并不會改變圖模型的結構,隻改變節點上向量的值(由不同顔色表示),而鄰接矩陣的計算,就會更新兩個節點之間的連接配接權重,是以圖模型的結構也發生了變換。圖中由左向右第三個方框中的 A ~ i , j ( k ) \tilde{A}^{(k)}_{i,j} A~i,j(k)​改為 A ~ i , j ( k + 1 ) \tilde{A}^{(k+1)}_{i,j} A~i,j(k+1)​才更合适,表示網絡的不同層。

實作過程

網絡結構

  文中涉及到多個網絡,首先是用于特征提取的嵌入式網絡 ϕ ( ) \phi() ϕ(),與原型網絡、Matching Network中結構相似,不再詳述;然後是用于度量矩陣中權重計算的 φ θ ~ ( ) \varphi_{\tilde{\theta}}() φθ~​()是由五個全連接配接層構成的,前四個帶有BN和Leaky ReLU層;最後是用于 θ \theta θ學習的網絡,代碼中顯示是由一個全連接配接層構成的。

損失函數

  采用交叉熵損失函數

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

算法推廣

  本文的算法還可以應用于半監督學習和主動學習的方式。半監督學習比較簡單,隻需要将表示分類的獨熱向量 h ( l ) h(l) h(l)改為 K K K個單純型的均勻分布,假設有 K K K個類别,每個類别對應的值都為 1 / K 1/K 1/K。主動學習則需要讓網絡自己決定是否需要标簽資訊,實作方法是在GNN的第一個層之後,對所有無标簽樣例對應的節點增加一個Softmax注意力層

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

  為了保證每次隻詢問一張圖檔,是以令 A t t e n t i o n Attention Attention中隻有一個值為1,其餘值均為0,測試時是選擇最大值置為1,訓練時則是基于多項式機率随機選擇一個值置為1,得到 A t t e n t i o n ′ Attention' Attention′。然後令 A t t e n t i o n ′ Attention' Attention′與标簽向量相乘,就得到了對應的獨熱向量

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

創新點

  • 提出一種采用圖神經網絡解決小樣本學習的算法,利用圖模型計算圖像之間的關系
  • 受資訊傳遞算法的啟發,采用多層感覺機計算節點之間的權重,用于建構鄰接矩陣
  • 将算法推廣至半監督學習和主動學習領域

算法評價

  本文實際上是将原型網絡,Matching Network等一系列采用度量學習思路的網絡推廣到了非歐空間,相關性的度量方式不再局限于餘弦距離,歐式距離等計算方式,而是利用圖神經網絡來描述這一關系。作者還探究了本文的算法與Siamese Network,Prototypical Network,Matching Network之間的關系,他們都可以看做本文算法在歐式空間中的一個變種。由實驗結果來看,本文的算法在多個資料集中都優于Siamese Network,Prototypical Network,Matching Network算法,與TCML相比,也有一定的競争力,但相比于TCML采用深層網絡結構(包含11M的參數量)而言,本文提出的算法僅有400K參數。

如果大家對于深度學習與計算機視覺領域感興趣,希望獲得更多的知識分享與最新的論文解讀,歡迎關注我的個人公衆号“深視”。

論文閱讀筆記《Few-Shot Learning with Graph Neural Networks》

繼續閱讀