目錄

Neighborhood-Regularized Self-Training for Learning with Few Labels

Neighborhood-Regularized Self-Training for Learning with Few Labels

Introduction


這篇論文的題目是Neighborhood-Regularized Self-Training for Learning with Few Labels(鄰域正則化自我訓練,用於少標籤的學習)

Task

假設手邊有文本資料,可以做分類任務。

Problem - few label data

我們會希望在訓練模型時,手邊有許多有標籤的資料。

但實際上,我們只有一些資料是有標籤的,絕大多數的資料都是沒有標籤的

因此,我們如果要提升模型的效果,我們需要從未標註的資料中,請專家標註,但這樣的成本太高了

Self-training

./Untitled.png

因此,希望能透過自訓練Self-training找到一些pseudo label去幫助模型訓練。

  • 首先,我們先用labeled data去訓練一個教師模型,做模型初始化
  • 之後讓模型預測所有unlabeled data,並且透過一些策略篩選能幫助模型訓練的pseudo labeled data
  • labeled data 與 pseudo labeled data合併為training dataset,一起去訓練學生模型
  • 學生模型訓練完後,將參數傳遞給教師模型,讓教師模型繼續篩選下一批unlabeled data
  • 重複step 2 ~ step 4
  • 學生模型輸出為最終模型

Challenge of self-training

同樣的,自訓練也是有一些潛在問題的

./Untitled%201.png

  • 例如
    • over-confident
      • 當教師模型一開始沒有學好labeled data,就去預測unlabeled data,這會有模型過度自信的問題。也就是模型對於自己的預測認為是對的,即使與正確答案不同
    • biased
      • 經過錯誤的預測後,得到的pseudo labeled data是具有偏差的,也就是模型預測的結果會偏向某一類別,導致該類別的數量比其他類別還有多很多
    • training instability
      • 每一倫在預測時,因為教師模型在預測時可能有預測很多錯誤的pseudo label,因此學生模型在這一輪學習到的與下一倫學習到的可能是不同的標籤,造成學習不穩定

Hypothesize

根據之前一些研究的論點,提到

  • 相似的標籤具有相似的表示法

    the categories are becoming well-separated. Category representative words gather around their corresponding category in the embedding space, which encourages other semantically similar words to move towards their belonging categories as well

    翻譯蒟蒻
    - 在訓練的早期階段,不同類別的單字混合在一起。在訓練過程中,類別之間的界線變得更加清晰。類別代表詞在嵌入空間中聚集在其相應類別周圍,這鼓勵其他語義相似的詞也向其所屬類別移動

    - Discriminative Topic Mining via Category-Name Guided Text Embedding

./Untitled%202.png

假設有一個labeled data,經過模型後,得到的資料分布,與pseudo labeled data 加上噪音後的相似,則我們可以說這個pseudo label可能是正確的

Solution

有了前面提到的假設,我們現在要來解決前面提到的三個問題

./Untitled%203.png

  • 首先,一樣會先訓練初始的教師模型
  • 教師模型預測unlabeled data,與之前不同的是,這次會幫每一筆unlabeled data計算一個分數,這個分數是模型要不要選擇這筆資料的依據
  • 如果分數高,則模型把這筆unlabeled data與training data合併後一起去訓練學生模型
  • 重複上述流程,直到學生模型收斂並輸出最終模型

NeST(Neighborhood Regularized Self-Training)

./Untitled%204.png

Method


Neighborhood-Regularized Sample Selection

./Untitled%205.png

這裡是要去找出每一個unlabeled data與K個最接近的labled data,根據我們前面提到的假設

  • 相似的標籤具有相似的表示法

因此unlabeled data如果與多個labeled data的表示法也很接近,表示他也可能是屬於該類別的資料

  • 首先,unlabeled data經過教師模型預測後,得到embedding
  • 將unlabeled embedding 與 labeled embedding 計算KNN,K=3
  • 並把找到的labeled data point收集進 Neighbor set (N),表示這筆unlabeled data的鄰居集合

Divergence-based Sample Selection

因為我們前面提到要計算每一筆unlabeled data的分數,因此這裡是要求出unlabeled data和labeled data的機率分佈差異

./Untitled%206.png

左邊是我們的unlabeled data,下方是該筆unlabeled data與他的鄰居集合

右邊是KL divergence的公式

右下方是這篇論文提出來計算unlabeled data分數的公式。可以看到他分別計算兩項數值

  • unlabeled data 與 鄰居集合計算KL divergence
  • labeled data 內部計算divergence

Unlabeled Divergence Du

./Untitled%207.png

假設好數值後,套上公式

可以得到這筆unlabeled data得到的分數是3.442

Labeled Divergence Dl

./Untitled%208.png

labeled data也假設數值。

因為這裡有兩個黑點、一個綠點,所以label是兩個0,一個1

再根據公式計算完後,得到鄰居集合內的分數是1.9125

Divergence-based Sample Selection

./Untitled%209.png

全部算完之後,套上論文中提供的係數 0.1 ,之後加總起來,得到該筆unlabeled data最終得分為3.6332

Aggregation of Predictions from Different Iterations

./Untitled%2010.png

前面提到,如果前期模型沒有學好,我們就相信模型的判斷來篩選unlabeled data,這樣會造成bias和訓練不平衡。

因此這裡為了緩解問題,不直接利用目前算出來的得分($D(x_j)$)直接篩選資料,而是透過前一次得到的分數與這次計算得到的分數來計算,這樣可以讓模型更有魯棒性,不會因為前期訓練不好導致偏差

./Untitled%2011.png

這是論文中的公式,可以透過超參數m來控制要相信目前的分數,還是盡量保留前一次的得分,來計算最終得到的分數

./Untitled%2012.png

計算如上圖所示

./Untitled%2013.png

計算如上圖所示

Robust Aggregation of Predictions from Different Iterations

現在假設程式已經執行了四次,同一筆資料已經被模型預測且打分了四次

./Untitled%2014.png

我們要不要選擇這筆資料的依據,並不只是看分數高低,還要看前一次與這一次的分數是否差距過大。

  • 如果差距太大,像是 $x^u_1$ ,epoch 3 分數預測為0.9,epoch 4卻變成 2.2
    • 這種模型在不同epoch給出不一致的預測結果,如果給學生模型拿去訓練,會傷害模型
  • 如果差距小, 像是 $x^u_3$ ,epoch 1 ~ epoch 4 都維持一致低分
    • 模型在不同epoch預測結果一致,表示模型很確定

./Untitled%2015.png

一般來說,模型預測一筆資料後,會給出一個機率分佈

那NeST計算完分數後,也應該給出一個機率分佈,因此要透過上面的公式將分數轉換為機率分佈

./Untitled%2016.png

計算如上圖所示

./Untitled%2017.png

計算如上圖所示

Experiment


Dataset

./Untitled%2018.png

Baseline - Mean Teacher

./Untitled%2019.png

這個Mean Teacher與NeST最大的不同在於,學生模型在傳遞參數給教師時,會將模型的參數平均後才傳遞,這樣做可以提高模型學習的速度和分類的準確性。

Baseline - Virtual Adversarial Training(VAT)

./Untitled%2020.png

VAT是虛擬對抗訓練的簡稱,他是將labeled or unlabeled data加入noise後,兩個資料一起經過模型預測,得到的機率分佈差異越小,表示這個模型抵抗噪音的容忍度越好。

那VAT跟這篇的不同在於有對資料做加入噪音的處理

Baseline - Self-training(ST)

./Untitled%2021.png

這裡的self-training與前面提到的差不多。

Baseline - Uncertainty-aware Self-training(UST)

./Untitled%2022.png

UST是用MC dropout將unlabeled data預測多次後,將該筆資料所預測的所有結果聚合起來做ensemble,得到該筆資料的標籤。

之後可能設定一個閥值,該筆資料的置信度高於此閥值才會被選到,以此來篩選確定性高的樣本

Baseline - Unsupervised Data Augmentation(UDA)

./Untitled%2023.png

這裡是用data augmentation的方式來與原本的樣本計算是否有一致

Baseline - MixText

./Untitled%2024.png

將兩筆資料,labeled data和unlabeled data組成pair一起輸入到模型中,假設現在是使用BERT,總共有12層。

假設現在在第七層要將兩筆資料的embedding取出,並且拿來做內插,得到一筆新的embedding,之後將這個embedding繼續往下一層輸入,最終我們可以得到一筆新的embedding和一個標籤。

這個方法可以建立很多個embedding,也就是創造很多新資料

Baseline - Contrast-Enhanced Semi-supervised Text Classifcation(CEST)

./Untitled%2025.png

先用data augment將unlabeled data擴增,然後用MC dropout的方式預測每一筆資料,最後使用確定估計去選擇樣本

Experiment

./Untitled%2026.png

這裡先使用AG News來比較各個方法,首先看到紅框中的方法。

  • 這些方法都是將所有的unlabeled data預測為pseudo labels,之後再用來訓練模型

  • 可以看到有加入pseudo labeled data的效果比原本的BERT還要好,因為本來拿來訓練的總數就差很多

./Untitled%2027.png

再來是比較UDA、MixText和NeST,目前使用每個類別各30個labeled data

  • UDA和MixText是透過data augmentation,增強unlabeled data,再拿去訓練模型,因此有可能造成錯誤的pseudo label讓模型混淆
  • 而Nest沒有使用資料增強,反而是使用KNN來篩選目前現有的資料,因此可能選到的資料噪音比較小,所以預測率比較高

./Untitled%2028.png

紅框中的方法都是有透過策略篩選資料的

  • 這些方法跟NeST的不同之處是,他們都依賴於模型在某一次iteration的預測
  • 而NeST在選擇樣本時,有聚合前一個iteration的分數,所以不會依賴某一次的模型預測,這樣會更有魯棒性

./Untitled%2029.png

這是所有的資料集以及實驗結果,NeST在不同的資料集下都有不錯的表現

Ablation Studies

./Untitled%2030.png

K 是 KNN的數量

  • 當K越大,準確率會隨著上升
    • 因為unlabel能找到更多距離相近的labeled data,因此經過模型計算後會得到較低分的divergence,
    • score低的unlabel就有較高的機率被選到,會讓模型訓練更穩定
  • 當K=7之後,準確率會下降
    • 如果有些label與unlabel距離很遠,但是K設定為7,會讓unlabeled強制要找到7個以上的labeled data,導致unlabel與label的分歧性變高,計算後得到的score就會變高,模型就會訓練不穩定

./Untitled%2031.png

c是一個epoch要選擇多少樣本的倍數,論文這裡是設定 [3,5,10,20]

  • 如果現在有label=30*4 = 120筆,則要取20x120=2400筆的unlabel,
  • 當c=3時,取的數目不夠多,所以準確率不高
  • 當c> 10,選擇進來的pseudo data 太雜亂,品質不好,會擾亂模型學習

./Untitled%2032.png

在前五個epoch中,可以看到Nest的效果比其他模型的效果更好,表示在前期已經選到一些能幫助模型學習的pseudo label

Error of Pseudo Labels

./Untitled%2033.png

這個實驗是比較pseudo label的錯誤率

  • ST、UST這兩種方法是依賴模型的預測去選擇pseudo label,如果模型學得不好,則有可能會選到錯誤的pseudo label,所以這裡可以看到ST、UST有較高錯誤率

  • NeST的error rate在各個資料集都有顯著降低,表示NeST在選擇pseudo label時,有足夠的信心選到對的pseudo label

Running time of different methods

./Untitled%2034.png

這裡是比較模型訓練的速度

  • 因為UST , CEST這兩種方法要使用模型對unlabel進行多次預測,才能用不確定性估計去選擇樣本,造成性能降低
  • NeST是用KNN計算,且這個KNN是跑在GPU上,可以平行運算,論文中說只要兩秒就可以把所有資料都用KNN跑過一次

Conclusion


  • propose NeST to improve sample selection in self-training for robust label efficient learning

    • 提出 NeST 來改進self training中挑選樣本的方法,以實現一個穩健且有效的標籤學習
  • design a neighborhood-regularized approach to select more reliable samples based on representations for self-training

    • 設計一種基於表示法的鄰域正則化方法,在self-training中選擇更可靠的樣本
  • propose to aggregate the predictions on different iterations to stabilize self-training

    • 提出聚合不同iterations的預測,讓self-training更穩定

Ref