這篇論文是2018年ICLR 的一篇Few-Shot Learning 論文:Few-Shot Learning With Graph Neural Networks,論文鏈接。

文中主要將有類別標籤和無類別標籤樣本基於消息傳遞想法利用圖神經網路把標籤信息通過圖推理傳遞到沒有標籤的樣本上。

  • 問題設置:

對部分有標籤服從獨立同分布 P 的圖像樣本集合 left(mathcal{T}_{i}, Y_{i}
ight)_{i}

mathcal{T}=left{left{left(x_{1}, l_{1}
ight), ldotsleft(x_{s}, l_{s}
ight)
ight},left{	ilde{x}_{1}, ldots, 	ilde{x}_{r}
ight},left{overline{x}_{1}, ldots, overline{x}_{t}
ight} ; l_{i} in{1, K}, x_{i}, 	ilde{x}_{j}, overline{x}_{j} sim mathcal{P}_{l}left(mathbb{R}^{N}
ight)
ight} 和待分類樣本的標籤集合 Y=left(y_{1}, ldots, y_{t}
ight) in{1, K}^{t} 。其中 s 是有樣本標籤的數量, r 是沒有標籤樣本的數量, r>0 適用於半監督和主動學習的場景。 t 是待分類樣本的數量。 K 是類別數量。文中關注 t=1 的場景,即每個任務 mathcal{T} 僅對一個樣本進行分類。 這裡這個mathcal{P}_{l}left(mathbb{R}^{N}
ight) 指特定類別在 mathbb{R}^{N} 上的分布, Y_{i} 與沒有標籤圖像樣本 overline{x}_{1}, dots, overline{x}_{t} in T_{i} 的類別相關。標準的監督學習的訓練目標是:

min _{Theta} frac{1}{L} sum_{i leq L} ellleft(Phileft(mathcal{T}_{i} ; Theta
ight), Y_{i}
ight)+mathcal{R}(Theta)\ 這裡 Phi(mathcal{T} ; Theta)=p(Y | mathcal{T}) 是文中的模型, mathcal{R} 是一個標準的正則化目標。

針對三種場景的設置:

Few-Shot Learningr=0, t=1s=q K 。集合中僅有一個無標籤的樣本。 q 是每個類樣本(支持集)的數量, K 是類別數。

Semi-Supervised Learningr>0t=1 ,輸入包含輔助圖像樣本 	ilde{x}_{1}, ldots, 	ilde{x}_{r} ,模型利用這些樣本從常見分布中抽取出來作為確定輸出的樣本,用來提高預測精度。

Active Learning:主動學習設置中,模型可以在無標籤集合 left{	ilde{x}_{1}, dots, 	ilde{x}_{r}
ight} 的子集中預測出置信度高的樣本標籤,並將這些樣本合併在訓練集中來提升半監督模型的性能。

  • 模型

圖模型小樣本學習的目的是將標籤信息從有標籤的樣本傳播到無標籤的查詢圖像。這種信息傳播可以形式化為對輸入圖像和標籤確定的圖形模型的後驗推理。

每類僅有一個樣本的圖模型架構

如圖, phi(x) 是一個表徵函數,一般對於圖像使用卷積神經網路提取特徵,每類的一個樣本得到其特徵向量後與已有的標籤(用One-Hot向量)信息連接在一起作為圖的一個頂點,對於無標籤的樣本,即待分類樣本與零向量連接在一起作為圖的頂點。之後經過本文的圖神經網路模型的預測得到其待分類樣本的標籤。

  • 圖神經網路
圖神經網路的細節

1.初始頂點的構造:將具有已知標籤 l_{i} 的圖像樣本 x_{i} in mathcal{T} 和其標籤的One-Hot向量連接,之後輸入到 GNN 中:

mathbf{x}_{i}^{(0)}=left(phileft(x_{i}
ight), hleft(l_{i}
ight)
ight) 這裡 phi 是卷積神經網路和 h(l) in mathbb{R}_{+}^{K} 是標籤的One-Hot向量。對於無標籤的圖像樣本 	ilde{x}_{j}

overline{x}_{j^{prime}} 的標籤向量通過簡單的均勻分布(類別數的倒數)或零向量代替,例如具有 K 個類的均勻分布來代替標籤的編碼向量: V_{j}=left(phileft(	ilde{x}_{j}
ight), K^{-1} mathbf{1}_{K}
ight) ,對於 	ilde{x}_{j} 也是類似的。

2.獲取圖的鄰接矩陣:受到消息傳遞演算法的啟發,一些人用 GNN 當前頂點的隱層的信息去學到一個的邊緣特徵 	ilde{A}^{(k)} (可學習的帶權鄰接矩陣):

	ilde{A}_{i, j}^{(k)}=varphi_{overline{	heta}}left(mathbf{x}_{i}^{(k)}, mathbf{x}_{j}^{(k)}
ight) 其中 varphi 是一個對稱函數,例如用神經網路參數化。在文中,使用在兩個頂點向量差的絕對值之後疊加一個多層感知器(多層神經網路):

varphi_{	ilde{	heta}}left(mathbf{x}_{i}^{(k)}, mathbf{x}_{j}^{(k)}
ight)=operatorname{MLP}_{	ilde{	heta}}left(a b sleft(mathbf{x}_{i}^{(k)}-mathbf{x}_{j}^{(k)}
ight)
ight) 這裡 varphi 可以稱之為一種度量,它通過對兩個頂點各個特徵之間的差的絕對值進行非線性組合來學習的。並具有很好的距離屬性 varphi_{	ilde{	heta}}(a, b)=varphi_{	ilde{	heta}}(b, a)varphi_{	ilde{	heta}}(a, a)=0 。經過這個函數後通過每行使用 softmax 將其歸一化。然後將 	ilde{A}^{(k)} 添加到運算元族 mathcal{A}=left{	ilde{A}^{(k)}, 1
ight} 中,這裡就是將學習到的鄰接矩陣連接了一個單位陣(代表頂點自我連接)。

3.整體圖模型:給定加權圖 G 頂點的輸入 F in mathbb{R}^{V 	imes d} ,考慮圖的一個線性運算元族 mathcal{A} 它作用於這個輸入,例如鄰接運算符: A : F mapsto A(F) ,這裡有 (A F)_{i} :=sum_{j sim i} w_{i, j} F_{j} ,意思是一個鄰接矩陣(本文通過上一步的方法得到的可訓練的鄰接矩陣)乘這個頂點矩陣,屬於圖的傳播操作,頂點之間的邊 (i, j) in Ew_{i, j} 是邊的權重。一個 GNNmathrm{Gc}(cdot) 輸入是 mathbf{x}^{(k)} in mathbb{R}^{V 	imes d_{k}} 併產生輸出 mathbf{x}^{(k+1)} in mathbb{R}^{V} 	imes d_{k+1} :

mathbf{x}_{l}^{(k+1)}=operatorname{Gc}left(mathbf{x}^{(k)}
ight)=
holeft(sum_{B in mathcal{A}} B mathbf{x}^{(k)} 	heta_{B, l}^{(k)}
ight), l=d_{1} ldots d_{k+1} 其中, Theta=left{	heta_{1}^{(k)}, ldots, 	heta_{|mathcal{A}|}^{(k)}
ight}_{k}	heta_{B}^{(k)} in mathbb{R}^{d_{k} 	imes d_{k+1}} 是可訓練的參數,為了匯聚當前層的每個頂點和其鄰接頂點更新為下一層頂點, 
ho(cdot) 是一種激活函數,文中選用leaky ReLU激活函數。文中實驗的詳細計算過程如下圖:

一層GNN計算迭代流程圖
  • 與現有模型的關係

Siamese Networks:Siamese Networks可以看作本文模型的單次信息傳播的迭代,使用相同的初始頂點的構造: mathbf{x}_{i}^{(0)}= left(phileft(x_{i}
ight), h_{i}
ight) ,但使用的是不可訓練學習的鄰接矩陣:

varphileft(mathbf{x}_{i}, mathbf{x}_{j}
ight)=left|phileft(x_{i}
ight)-phileft(x_{j}
ight)
ight|, 	ilde{A}^{(0)}=operatorname{softmax}(-varphi) 一次信息傳遞後得到標籤的估計:

hat{Y}_{*}=sum_{j} 	ilde{A}_{*, j}^{(0)}leftlanglemathbf{x}_{j}^{(0)}, u
ight
angle 這裡的 u 可以在 mathbf{x} 中選擇標籤欄位。在這個模型中任務主要是學習到樣本的一個嵌入 phileft(x_{i}
ight) (圖像的嵌入主要就是卷積網路的特徵抽取),用歐式距離度量與已知標籤樣本的相似度最後得到其預測標籤。

Prototypical Networks:Prototypical networks通過聚合具有相同標籤的頂點而得到每個類的原型點之後與Siamese Networks的步驟類似。該模型也可以用以下 GNN 完成,首先:

	ilde{A}_{i, j}^{(0)}=left{egin{array}{cl}{q^{-1}} & {	ext { if } l_{i}=l_{j}} \ {0} & {	ext { otherwise }}end{array}
ight. 這是由先驗信息得到的鄰接矩陣, q 是每個類的樣本數量( q -Shot),之後:

mathbf{x}_{i}^{(1)}=sum_{j} 	ilde{A}_{i, j}^{(0)} mathbf{x}_{j}^{(0)} 得到每類的原型點,進而去預測標籤,這裡 mathbf{x}^{(0)} 與Siamese Networks的定義相同。最後使用先前的鄰接矩陣 	ilde{A}^{(1)}=operatorname{softmax}(varphi) 作用於 mathbf{x}^{(1)} 最終得到標籤的估計:

hat{Y}_{*}=sum_{j} 	ilde{A}_{*, j}^{(1)}leftlanglemathbf{x}_{j}^{(1)}, u
ight
angle Matching Networks:Matching Networks對 mathcal{T} 中的圖像集合使用集合表示,與本文的圖神經網路模型類似,但有兩個重要區別。第一,匹配網路提到的在圖像集合表示中考慮的注意力機制類似於本文的邊緣特徵的學習(可訓練的鄰接矩陣),不同之處在於該機制遵循相同的頂點嵌入,而不是本文中的多層感知器堆疊的鄰接矩陣的學習,這接近於Transformer中的注意力結構,換句話說就是把可學習的鄰接矩陣代替為匹配網路里的注意力核,匹配網路用的注意力機制相當於是 	ilde{A}_{*, j}^{(k)}=varphileft(mathbf{x}_{*}^{(k)}, mathbf{x}_{j}^{(T)}
ight) ,其中 mathbf{x}_{j}^{(T)} 是對支持集(有標籤的樣本)的編碼函數,通過雙向的LSTM獲得,在這種情況下,編碼獨立於查詢圖像(無標籤樣本)樣本計算的。第二,匹配網路中的樣本欄位和圖像欄位在模型中單獨處理,最後用可訓練的線性核函數聚合標籤,這樣可能會阻止模型在中間階段利用標籤和圖像樣本之間的複雜依賴關係。

  • 訓練

1. 小樣本(Few-Shot)和半監督學習:在這個場景下,僅要求模型預測與圖像相應的標籤 Y 來分類 overline{x} in mathcal{T} ,這個待分類樣本由圖中頂點 * 代表。 GNN 的最後一層通過 softmax 將待分類頂點特徵映射到 K 分類預測(最終就是 K 個特徵,每個特徵代表每個類的概率,概率最大的即為預測的類別),用交叉熵計算頂點 *loss

ell(Phi(mathcal{T} ; Theta), Y)=-sum_{k} y_{k} log Pleft(Y_{*}=y_{k} | mathcal{T}
ight) 對於半監督的設置的唯一不同點是:頂點的初始標籤欄位將被對應於 	ilde{x}_{j} 的頂點上的均勻分布填充。

2. 主動學習:在主動學習的設置中,模型具有得到 left{	ilde{x}_{1}, ldots, 	ilde{x}_{r}
ight} 中的一個標籤的能力。圖模型根據有標籤樣本的信息去對 overline{x} in mathcal{T} 進行分類,通過使用 softmax 關注圖中未標記的頂點,在 GNN 的第一層之後完成查詢。函數 gleft(mathbf{x}_{i}^{(1)}
ight) in mathbb{R}^{1} 可以將未標記的矢量頂點(每個頂點有多個特徵)映射到一個標量值, g 是兩層神經網路。 softmax 用於函數 g 之後獲得的標量值 {1, dots, r}

operatorname{Attention}=operatorname{Softmax}left(gleft(mathbf{x}_{{1, ldots, r}}^{(1)}
ight)
ight) 為了只查詢一個樣本,在向量 Attentionin mathbb{R}^{r} 中保留一個元素其它全置為 0 。在測試時保持最大值,訓練時根據多項式分布(二項分布的推廣)概率隨機抽取一個值,然後將這個採樣注意力乘以標籤向量:

w cdot hleft(l_{i^{*}}
ight)=leftlangle	ext { Attention }^{prime}, hleft(l_{{1, ldots, r}}
ight)
ight
angle 獲得查詢向量 hleft(l_{i^{*}}
ight) 的標籤,並由權重 w in(0,1) 放縮。然後將這個值匯聚到當前的頂點 mathbf{x}_{i^{*}}^{(1)} 中,由於在 GNN 模型中使用密集連接,可以將 w cdot hleft(l_{i^{*}}
ight) 直接加到均勻分布的標籤連接的位置:

mathbf{x}_{i^{*}}^{(1)}=left[mathrm{Gc}left(mathbf{x}_{i^{*}}^{(0)}
ight), mathbf{x}_{i^{*}}^{(0)}
ight]=left[mathrm{Gc}left(mathbf{x}_{i^{*}}^{(0)}
ight),left(phileft(x_{i^{*}}
ight), hleft(l_{i^{*}}
ight)
ight)
ight] 將標籤求和到當前頂點後,信息向前傳播,其中的注意力的部分和網路的其它部分由 GNN 輸出的損失反向傳播來訓練。在圖像數據集上的實驗細節及結果可以詳閱論文。

總結:文中GNN模型也是在圖卷積這條路上繼續發展的,在Few-Shot學習上主要是用了信息傳遞的思想。本文模型的公式有助於統一多個訓練設置,如小樣本學習、主動學習、半監督學習。此文同樣是偏模型應用,對於圖模型基礎理論還是要靠自己深入鑽研,對於文中許多不清楚的地方,多查閱相關文獻,加深自己的理解。


推薦閱讀:
相关文章