1. 程式人生 > 實用技巧 >元學習—半監督原型網路

元學習—半監督原型網路

元學習—半監督原型網路

本文主要參考文獻META-LEARNING FOR SEMI-SUPERVISED FEW-SHOT CLASSIFICATION,有興趣的讀者可以參考該文獻。

1 介紹

大量的可用資料可以使得深度學習模型在很多人工智慧任務上取得非常不錯的效果。例如,語音識別,物體識別,和機器翻譯等等。然而,當前的深度學習方法面臨著資料缺少的問題。具體的,當前的多數方法都擅長處理擁有大量資料的單個任務。這些方法能夠利用僅僅缺少一點標籤的資料來處理大量的任務。另外一個方面,人類很容易去學習到一個新的類別,比如當我們去一個熱帶國家的時候,能夠很容易的學習一些新的型別的水果。這對於機器學習和人類之間存在著一個巨大的鴻溝,這也為深度的學習的發展提供了豐富的基礎。

基於上述的原因,最近對於小樣本的學習的網路結構在不斷的增加,其中考慮了具體演算法的設計,使其能夠在只有一點標籤的訓練集上的有更好的效果。這裡,我們著重關注於小樣本分類的情況,其中每一個分類中都僅僅包含已經標記的資料。一種進行小樣本學習的方法是採用元學習的形式,其從大量的利用已標記樣本學習的分類問題中進行遷移學習,到一個新的,類別在訓練過程中不可見的分類問題上去。元學習可能採用學習一個共享度量的形式,一種常見的對於小樣本分類器的初始化方式,或者一個通用的推理框架。

大量元學習的形式在小樣本的分類中已經取得了重大的突破。然而,這種方式受限於對於小樣本學習片段的設定,這與人類學習新的概念在很多場景下是不同的。在本篇文獻中,我們目標是通過兩種方式進行設定。首先,我們考慮下面的一個場景:新的類別通過額外的未標記的資料進行學習得到。儘管有很多應用中使用半監督學習的方式將視為一個單個的分類任務,其中類別在訓練和測試過程中是一致的。這種工作並沒有解決遷移到一個在訓練過程沒有見過的新的類別上的挑戰。這是值得我們考慮的。第二個場景,我們考慮這樣的一個情況,學習的類別不是孤立的,即未標記的樣本可能來源於多個類別。這裡存在的干擾的類別的引入造成的對於小樣本學習問題的額外的,現實的難度。

本文中的工作首先研究的是小樣本學習的半監督學習形式。首先,我們定義問題和適應於Omniglot和miniImageNet資料上的評估標準。我們通過有干擾類別和無干擾類別兩個方面對於上述的兩個資料進行了擴充套件性的研究。第二,我們提出對於傳統原型網路的三種新的擴充套件形式。一個靜態的小樣本學習方法,應用於半監督學習的設定。最終,我們演示了我們的實驗,能夠成功的在監督學習的原型網路中利用未標記的資料。

2 背景介紹

2.1 小樣本學習

根據下面的一個片段示例,小樣本的學習取得了不錯的進展。考慮這樣一個情形,我們對於一個類別集合 C t r a i n C_{train} Ctrain擁有大量的已標記資料集。然而,通過對於 C t r a i n C_{train}

Ctrain上的資料集的訓練,我們的最終目標為與 C t r a i n C_{train} Ctrain不相交的測試集 C t e s t C_{test} Ctest生成分類器。而 C t e s t C_{test} Ctest中的僅僅存在一些已標記的資料可以利用。這種情況背後的解決思想是利用訓練樣本集 C t r a i n C_{train} Ctrain中大量已標記的訓練樣本集來處理所有在 C t e s t C_{test} Ctest中出現的各種小樣本的問題。

更為具體的是,模型通過K-shot(每個類別的樣本數量),N-way(類別數量)的片段來進行構建,首先是對於 C t r a i n C_{train} Ctrain中的類別進行取樣,生成N個類別,然後進行下面的操作:

  1. 定義一個支援(訓練)集 S = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . , ( x N ∗ K , y N ∗ K ) } S=\{(x_1,y_1),(x_2,y_2),....,(x_{N*K},y_{N*K})\} S={(x1,y1),(x2,y2),....,(xNK,yNK)},其中包含了N個類別,每個類別中包含了K個樣本。
  2. 定義一個查詢(測試)集 Q = { ( x 1 ∗ , y 1 ∗ ) , ( x 2 ∗ , y 2 ∗ ) , . . . . , ( x N ∗ K ∗ , y N ∗ K ∗ ) } Q=\{(x_1^*,y_1^*),(x_2^*,y_2^*),....,(x_{N*K}^*,y_{N*K}^*)\} Q={(x1,y1),(x2,y2),....,(xNK,yNK)}
  3. 其中支援集和查詢集中的 x i x_i xi的維度為D,表示的原始的輸入向量,每一個 y i y_i yi表示的樣本的標籤。
    整個的過程通過支援集進行訓練,並且通過查詢集進行損失函式,更新引數。
    從某一個角度出發,我們的模型能夠訓練出一個有效的演算法。整個模型需要依靠一組已標記的資料並且產生一個能夠被用於新樣本的上的預測器。更多地,這種訓練方式能夠對於查詢集中的新的樣本產生不錯的效果。與此類別,基於上述示例的訓練經常被描述為學會去學習或者元學習。

在另外一個方面,將片段中的內容稱為訓練集和測試集,將這些片段的學習過程稱為元學習或者元訓練。為了清楚起見,我們將片段中的內容稱之為支援集和查詢集,將迭代過程稱之為訓練。

2.2 原型網路

原型網路是一個小樣本學習的模型,其優點是簡單並有著不錯的效果。從更高的層次來看,其使用了支援集S來抽取每個類別的原型向量,並且對於查詢集中輸入的查詢向量,依照其對於原型向量的距離進行分類。

進一步,原型網路學習到通過神經網路表示的一個編碼公式 p ( x ) p(x) p(x),其將相同類別的樣本對映到一個空間中,不相同的類別的的向量距離很遠。原型網路的所有引數依賴於該編碼函式。為了計算每一個類別c的原型向量 p c p_c pc,其生成方式利用到了所有的樣本的均值形式,其具體定義如下:
p c = ∑ i h ( x i ) z i , c ∑ i z i , c , w h e r e z i , c = 1 [ y i = = c ] p_c=\frac{∑_ih(x_i)z_{i,c}}{∑_iz_{i,c}} \ ,where z_{i,c}=1[y_i==c] pc=izi,cih(xi)zi,c,wherezi,c=1[yi==c]
這些原型資訊定義了一個預測器,用來對於新的查詢樣本 x ∗ x^* x進行分類,基於 x ∗ x^* x與各個類別的距離,為每一個類別分配一個概率權重。其具體的定義形式如下:
p ( c ∣ x ∗ , { p c } ) = e x p ( − ∣ ∣ h ( x ∗ ) − p c ∣ ∣ 2 2 ) ∑ c ′ e x p ( − ∣ ∣ h ( x ∗ ) − p c ′ ∣ ∣ 2 2 ) p(c|x^*,\{p_c\})=\frac{exp(-||h(x*)-p_c||_2^2)}{∑_{c'}exp(-||h(x^*)-p_{c'}||_2^2)} p(cx,{pc})=cexp(h(x)pc22)exp(h(x)pc22)
原型網路的損失函式通過給定的訓練片段來進行定義,基於查詢集中的所有的樣本來進行計算,其具體的定義形式如下:
− 1 T ∑ i l o g p ( y i ∗ ∣ x i ∗ , { p c } ) -\frac{1}{T}∑_ilogp(y_i^*|x_i^*,\{p_c\}) T1ilogp(yixi,{pc})
訓練的過程就是為了最小化這個均值損失,在訓練的用的資料片段上,利用梯度進行迭代更新。

3 半監督小樣本學習

我們現在對於小樣本學習定義其半監督的形式。訓練資料集可以採用已標記資料和未標記資料元組的形式進行描述,即(M,R),其中已標記的資料集M用於構建支援集S,支援集內部包含了輸入的變數和其對應標籤的元組。除了這種傳統的小樣本學習方式,我們還引入了未標記的樣本集合R,其內部只包含了輸入樣本,即 R = { x 1 ′ , x 2 ′ , . . . , x k ′ } R=\{x_1',x_2',...,x_k'\} R={x1,x2,...,xk}。其基本的設定如下圖所示:

在這裡插入圖片描述
通過上圖所示,訓練過程中,支援集中包括已標記的資料和未標記的資料,以及一個查詢集。訓練的目標是利用支援集中已標記的資料和未標記的資料為查詢集中的資料打上標籤,並且在查詢集上產生很好的表現。對於支援集中未標記的資料,或者他們是與已標記資料相關類別的,或者其本質就是干擾項,即其所代表的類別並沒有在當前的訓練片段中出現。但是實際上模型中沒有對未標記實際是否為干擾項進行說明,這裡使用+、-是為了便於展示。在測試的過程中,我們能夠獲取新的片段,其中包括了新的類別,即在訓練過程中沒有發現的類別。我們用於評估元學習的方法。

3.1 半監督原型網路

對於傳統形式,原型網路並沒有一個具體的形式來利用未標記的資料R,從這個角度出發,我們提出基於原型向量 p c p_c pc的各種擴充套件形式。然後使用未標記資料R細化了原型向量 p c p_c pc。具體如下圖所示:
在這裡插入圖片描述
根據上圖所示,左半部分是對原型向量細化之前,可以看到,每一個原型網路的都是通過已標記的資料來生成的。右半部分是細化之後的原型向量的生成過程,可以發現,原型向量通過已標記的資料和未標記的資料共同生成。
在獲取了細化的原型向量之後,每一個模型的訓練都採用了與傳統的原型網路相同的Loss函式。即上述所定義的損失函式。至此,查詢集中的每一個樣本可以被劃分到N個分類中的一箇中去。劃分的過程依然基於樣本的編碼和各個細化的原型向量的相似性來進行的。

3.1.1 基於soft-kmean的原型網路

我們首先為細化的原型向量考慮一個簡單的,利用未標記資料的方式。其基本的思路來源於半監督聚類。將每一個原型向量視為聚類的中心。細化的過程可以試著去調整中心的位置來更好的適應支援集中的資料。基於這種思路,聚類為支援集中的樣本分配一個已知類別的標籤,並且調整每一個樣本的標籤。細化的過程必須可以預測出支援集中未標記樣本的標籤,並且根據結果能夠調整聚類的位置。
一種比較自然的選擇來源於soft k-means。我們相比於hard k-means而言,更喜歡這種soft k-means,因為hard k-means是不可微的。我們開始於傳統的原型網路 p c p_c pc,將其作為聚類的中心。對於未標記的資料,其可以獲取一個可以獲取部分的類別分配 ( z j , c ′ ) (z_{j,c}') (zj,c)來針對於每一個分類c。這種分配是基於歐式距離來進行計算的。最終,細化的原型向量可以通過結合未標記的資料進行生成。整個過程可以通過下面的公式就行描述:
p c ′ = ∑ i h ( x i ) z i , c + ∑ j h ( x j ′ ) z j , c ′ ∑ i z i , c + ∑ j z j , c ′ , w h e r e z j , c ′ = e x p ( − ∣ ∣ h ( x j ′ ) − p c ∣ ∣ 2 2 ) ∑ c ′ e x p ( − ∣ ∣ h ( x j ′ ) − p c ′ ∣ ∣ 2 2 ) p_c'=\frac{∑_ih(x_i)z_{i,c}+∑_jh(x_j')z_{j,c}'}{∑_iz_{i,c}+∑_jz_{j,c}'}\ ,\ where\ \ z_{j,c}'=\frac{exp(-||h(x_j')-p_c||_2^2)}{∑_c'exp(-||h(x_j')-p_c'||_2^2)} pc=izi,c+jzj,cih(xi)zi,c+jh(xj)zj,c,wherezj,c=cexp(h(xj)pc22)exp(h(xj)pc22)
對於查詢集樣本的預測可以使用上述的距離計算公式進行分配。實際上,我們可以採用很多種方式來完成這個細化的過程,比較常見的是使用k-means的方式。然而,我們進行了大量的實驗,發現多種細化方式並沒有提升多大的效果。

3.1.2 使用soft k-keans和一個干擾聚類項的原型網路

在上述的soft k-means中,存在一個這樣的假設,即每一個未標記的資料在一個片段中,都屬於某一個類別。然而,如果不採用這種假設,並且設定一個新的類別來作為干擾項,將會使得模型更具一般性。這種干擾項我們稱之為干擾項類別。例如,如果我們想區分單輪腳踏車和踏板車的圖片,並決定通過從網路上下載圖片來新增未標記的圖片集,則會出現這種情況。顯然,基於上述的假設,將所有的圖片劃分到單輪腳踏車或者踏板車上是不現實的。即使進行了重點搜尋,也有一些可能來自類似的類別,例如自行車。

通過soft k-means的形式將其軟分類到所有的類別上。干擾項可能是有害的,並且會干擾到細化的過程。因為原型向量可能會根據這些干擾項進行錯誤的調整。一個簡單的方式來解決這個問題的方式是新增一個額外的聚類中心,其主要任務就是捕捉干擾項的資訊。因此能夠阻止這些干擾項對於各個類別聚類的干擾,下面給出具體的定義形式:
p c = { ∑ i h ( x i ) z i , c ∑ i z i , c f o r c = 1 , . . . N 0 f o r c = N + 1 p_c=\left\{ \begin{aligned} \frac{∑_ih(x_i)z_{i,c}}{∑_iz_{i,c}} & & for & &c=1,...N \\ 0 && for && c=N+1 \end{aligned} \right. pc=izi,cih(xi)zi,c0forforc=1,...Nc=N+1
這裡我們簡單的假設干擾項類初始時擁有一個聚類中心。同時我們考慮引入長度尺度 r c r_c rc來表示類別內部的距離變化。具體的定義形式如下:
z j , c ′ = e x p ( − 1 r c 2 ∣ ∣ x j ′ − p c ∣ ∣ 2 2 − A ( r c ) ) ∑ c ′ e x p ( ( − 1 r c 2 ∣ ∣ x j ′ − p c ′ ∣ ∣ 2 2 − A ( r c ′ ) ) w h e r e A ( r ) = 1 2 l o g ( 2 π ) + l o g ( π ) z_{j,c}'=\frac{exp(-\frac{1}{r_c^2}||x_j'-p_c||_2^2-A(r_c))}{∑_{c'}exp((-\frac{1}{r_c^2}||x_j'-p_{c'}||_2^2-A(r_{c'}))}\\ \frac{}{}\\ where \ A(r)=\frac{1}{2}log(2π)+log(π) zj,c=cexp((rc21xjpc22A(rc))exp(rc21xjpc22A(rc))whereA(r)=21log(2π)+log(π)

在實際的實驗中, r 1 , . . . N r_{1,...N} r1,...N為實現設定的分類,干擾聚類為 r N + 1 r_{N+1} rN+1

3.1.3 2 使用soft k-keans和一個Masking的原型網路

通過一個聚類項來對於未標記資料的干擾項進行建模有些過於簡單。的確,其與我們的假設,即每一個聚類項反應一個類別是不一致的。因為干擾樣本可能很好的覆蓋超過一個類別的情況。繼續我們上面單板腳踏車和踏步車的例子,我們的web搜尋的未標記的資料不僅僅是自行車,還有可能是三人車或者汽車。這也被反應在我們的實驗中,我們構建的片段生成過程,因此能夠從多個類別中取樣干擾項。

為了解決這個問題,我們提出了改進的方法,除了使用高層聚類變體來步驟干擾項資訊,我們以對干擾項建模為例,干擾項內部不包含任意合法類原型。這裡在未標記中的資料通過引入soft的掩蓋機制來完成。在更高的層次,我們希望更接近原型的未標記資料能夠被mask的數量要少於更遠的。

更具體的,我們修改了soft k-means的細化方式,我們開始計算一個標準化的距離 d j , c ′ d_{j,c}' dj,c,其表示樣本 x j ′ x_j' xj和原型 p c p_c pc的距離:
d j , c ′ = d j , c 1 M ∑ j d j , c , w h e r e d j , c = ∣ ∣ h ( x j ′ − p c ) ∣ ∣ 2 2 d_{j,c}'=\frac{d_{j,c}}{\frac{1}{M}∑_jd_{j,c}},where\ d_{j,c}=||h(x_j'-p_c)||_2^2 dj,c=M1jdj,cdj,cwheredj,c=h(xjpc)22
然後,我們定義每一個原型的閾值 β c β_c βc和坡值 γ c γ_c γc,通過一個小的神經網路以及原型網路中的各種統計資料來生成,即:
[ β c , γ c ] = M L P ( [ m i n j ( d j , c − ) , v a r j ( d j , c − ) , s k e w j ( d j , c − ) , k u r t j ( d j , c − ) ] ) [β_c,γ_c]=MLP([min_j(d_{j,c}^-),var_j(d_{j,c}^-),skew_j(d_{j,c}^-),kurt_j(d_{j,c}^-)]) [βc,γc]=MLP([minj(dj,c),varj(dj,c),skewj(dj,c),kurtj(dj,c)])
這允許每個閾值使用有關聚類內變化量的資訊來確定其應如何刪除未標記的樣本。
然後,soft mask m j , c m_{j,c} mj,c計算對於每一個樣本分配到每一個類別中。通過比較閾值和標準化的距離,具體形式如下:
p c ′ = ∑ i h ( x i ) z i , c + ∑ j h ( x j ′ ) z j , c ′ m j , c ∑ i z i , c + ∑ j z j , c m j , c w h e r e m j , c = σ ( − γ c ( d j , c − − β c ) ) p_c'=\frac{∑_ih(x_i)z_{i,c}+∑_jh(x_j')z_{j,c}'m_{j,c}}{∑_iz_{i,c}+∑_jz_{j,c}m_{j,c}}\\ \frac{}{}\\ where \ \ \ m_{j,c}=σ(-γ_c(d_{j,c}^--β_c)) pc=izi,c+jzj,cmj,cih(xi)zi,c+jh(xj)zj,cmj,cwheremj,c=σ(γc(dj,cβc))
其中σ表示的是sigmoid函式。

4 總結

對於半監督的小樣本,作者主要進行了三個方面的擴充套件,包括簡單的支援集擴充套件,引入干擾項類,mask。其基礎是soft k-means方法。基本上都是對於原型向量計算的修改。如果有疑問,建議閱讀原文。

5 參考

  1. META-LEARNING FOR SEMI-SUPERVISED FEW-SHOT
    CLASSIFICATION