目錄

LOPS: Learning Order Inspired Pseudo-Label Selection for Weakly Supervised Text Classification

./2023-10-17-23-02-35.png

摘要

標題提到的弱監督學習,是指使用labeled data和unlabeled data一起訓練模型,可以使用兩種方式給定pseudo labeled。第一種是人為干預的方法,有TF-IDF或是字串比對,第二種是使用預訓練好的模型,預測輸入資料後,取該樣本最大機率的類別當作pseudo label。

當我們在做文本分類時,通常只有少量的labeled data,以及大量的unlabeled data。我們希望能透過unlabeled data,從中找到一些樣本,並標記pseudo label。

但是不論是模型或是人為干預,所標記的pseudo label不一定都是正確的。當我們把錯誤的pseudo label拿去給新的模型訓練時,可能會傷害模型性能。

因此這篇論文提出一個基於學習順序的方法,這個想法是模型會在訓練階段的初期,先學會簡單或是具有代表性的資料,也就是設計一個挑選pseudo label給模型學習的策略。

實作上會把unlabeled data輸入到LOPS演算法中,經過一連串的挑選後,會剩下比較乾淨、容易學習的資料,再給模型學習。

Introduction


Machine Learning

當我們在做一個文本分類任務的時候,會根據手上的資料有沒有標籤來決定訓練方式。

如果都有標籤,我們會使用監督式學習,這裡會根據任務分為兩種。第一種是分類任務,第二種是回歸任務。

如果都沒有標籤,會使用無監督學習,最具有代表性的是聚類。

Supervised & Unsupervised Learning Challenge

當我們使用監督式學習時,會碰到的問題是資料標籤數量不夠,這時就會需要請專家來幫忙標註,這樣會產生很高的成本。

而如果是使用無監督學習,會碰到群數應該要設定多少,或是資料有雜訊或異常值等問題

Weakly supervised learning

為了能有效利用unlabeled data來輔助模型學習,就會使用弱監督學習。

弱監督學習是利用label 和 unlabel 資料來讓模型學習,也就是用對unlabeled data用一些方法,產生出pseudo label,並加入到labeled data中,再去訓練模型

弱監督有三種任務型態。

  • Incomplete supervision不完全監督
    • 有些資料有標籤,有些沒有標籤
  • Inexact supervision不確切監督
    • 某幾個資料共用一個標籤,但那幾個資料本身沒有標籤
  • Inaccurate supervision不準確監督
    • 資料中有正確的標籤,也有錯誤的標籤。

Task

這篇的任務是要降低pseudo label中噪音出現的問題。

在任務中,未標記資料會經過模型或是人為干預,並給予pseudo label。之後會經過一個filter,希望能挑選出有價值的、有代表性且是正確的pseudo label資料

Straightforward solution:high confidence

一種最簡單最直覺的方式是先利用labeled data訓練一個模型。

把unlabeled data丟到模型中做evaluate,可以得到每一筆資料的confidence。挑選每個樣本中confidence值最大的當作該樣本的pseudo label。

./Untitled.png

但是這裡會碰到一個問題,就是選到confience最大的類別,也有可能是錯誤的pseudo label。就像範例中的第二筆資料,他的真實label是運動,而不是紅色框框中的政治類別。

這個問題的主要原因是我們在選擇pseudo label時,依賴的是一開始訓練好的模型,但是如果這個模型的準確率不高,就會造成pseudo label選擇錯誤的情況發生

在過去有些研究中發現,模型在學習時,會先學習簡單的或是有代表性的樣本,然後才會學困難的樣本。

./Untitled%201.png

在上圖中可以看到在訓練階段,在epoch1可以學習到較多正確的樣本。而在epoch1之後幾乎都剩下標籤錯誤的樣本。

hypothesize

因此這篇論文假設每個樣本都有一個學習順序,也就是樣本的難易程度。透過這個學習順序,可以篩選掉許多被標註錯誤的樣本。

./Untitled%202.png

以範例來說,模型會先預測樣本,取得所有樣本的confidence,這時候可以看到在較高的confidence中有許多被標註正確的樣本,也有很多被標註錯誤的樣本。但是在較低confidence中,幾乎都是被標註錯誤的樣本。

而另一張圖是說明模型在訓練過程中,第一個epoch中可能就已經把所有正確的樣本都學過了,剩下epoch所學到的可能都是錯誤的知識。

LOPS: Learning Order Inspired Pseudo-Label Selection

以下是LOPS的架構圖。

首先,我們有unlabeled data,透過字串比對,幫每一個樣本都標註一個pseudo label,然後再去訓練模型

訓練好模型後,會對原本的unlabeled data做evaluation,挑選一些樣本後再重新訓練,這就是self training。

但是我們前面有提到,這樣只依靠模型挑選的方式有可能會挑選到許多錯誤的pseudo label。因此這篇論文提出LOPS

./Untitled%203.png

當我們拿到字串比對後的pseudo label後,會輸入到LOPS演算法中,這裡會經過學習順序的策略和一些挑選後,輸出一個有代表性、乾淨的資料集。再把這個資料集拿去訓練一個新的模型。這個LOPS把一些錯誤的、有噪音的樣本移除後,可以提高模型的效果。

這個LOPS可以看成是一個插件,可以放到任何一個弱監督或是需要篩選unlabeled data的訓練網路中。

Method


Algorithm of LOPS

這裡會說明演算法的流程

./Untitled%204.png

首先,假設unlabeled data有1200筆資料,而經過字串比對後,會將其中1000筆資料當作訓練資料並給予pseudo label,而剩下200筆資料可能因為字串比對無法給予pseudo label,當作test資料。

這1000筆資料中,有正確的樣本,也會有被標註錯誤的樣本。

之後把這1000筆資料丟到LOPS演算法中

現在在LOPS演算法內。把這1000筆資料標示成D,D的各類別資料分佈如下圖

./Untitled%205.png

  1. 用D去訓練一個模型
  2. 用模型去evaluate每一筆資料,取得confidence,並取得最大confidence值的類別當作pseudo label
  3. 如果經過模型預測出的pseudo label 等於 字串比對的 pseudo label,就通過第一個條件

通過第一個條件後,就要來驗證第二個條件。D_hat是經過LOPS後會輸出的資料集

./Untitled%206.png

第二個條件是$\hat D_{correct}$每一個類別的個數都不能超過原始資料D中的$\tau%$。

如果上述兩個條件都成立,則把這一個樣本收集起來

./Untitled%207.png

直到第三個epoch時,發現這個資料集已經收集了$\tau%$的資料了

./Untitled%208.png

因此提早離開迴圈,退出LOPS演算法

離開LOPS後,可以看到右下角的紫色框框

./Untitled%209.png

D經過LOPS後,會輸出一個500筆的資料集,這是經過LOPS認為是乾淨、沒有噪音的樣本集合。

剩下沒有被選上的500筆資料,會跟test dataset合併,因此會有200+500 = 700筆

我們會用乾淨的樣本500筆資料去訓練模型,然後去evaluate test dataset,希望能從test dataset中找出一些新的樣本,這裡的條件是預測出來的confidence值要大於一個人為設定的threshold。

找到一些新的樣本後,加入到訓練資料中,變成1000+50 = 1050,然後再重新跑一次LOPS篩選乾淨的樣本。

learning order

./Untitled%2010.png

這裡是在計算每一個樣本的學習順序。當該樣本越早被模型學起來,則表示該樣本越容易學習,也越具有代表性。

Experiment


Dataset

./Untitled%2011.png

Noise Ratio是指原本的unlabeled data經過字串比對後,與真實的label計算,得到的比例

31.8表示100筆unlabeled data中,字串比對猜錯31筆資料

baseline - label selection methods

./Untitled%2012.png

  • MC-dropout
    • 訓練模型時,開啟dropout,丟棄一部分的神經元,以此來訓練模型
    • 預測時,同樣也要開啟dropout,因此輸入同一筆資料時,會產生不同的輸出
    • 把同一筆資料的不同輸出做平均後,取出最高的confidence值的類別當作pseudo label
  • entropy
    • 用confidence值去計算entropy,取topK個樣本
  • Probability
    • 用預測出來的機率取樣本
  • Random
    • 與機率方法類似,但是是使用隨機的方式取樣本

baseline - O2U Net

這是實驗中使用的baseline

./Untitled%2013.png

他的方法是在模型訓練過程中調整學習率和移除TOPK的樣本後,繼續訓練模型

  1. 首先會使用固定的學習率和有噪音的資料集去訓練模型
  2. 循環訓練模型,這一部分會計算每一個樣本的loss,然後更新學習率。
    1. 模型首先會學習簡單的樣本,之後再學習困難的樣本。當模型在學習簡單樣本時,loss下降得很快,一下子就overfitting。之後再學習困難樣本時,會逐漸underfitting,這樣訓練過程反覆進行
  3. 之後會輸出乾淨的資料集,再拿去重新訓練一個模型

baseline - Learning Stability

這是另一個baseline方法

./Untitled%2014.png

這裡的學習穩定度是指在total epoch中,被模型預測後的pseudo label與真實label的有沒有一樣,如果一樣則計數器加一。最後計算在total epoch中,符合條件的總共有幾次,以此去計算學習穩定度。

如果被預測出越多次,表示資料品質越好。

Experiment

./Untitled%2015.png

這裡的評估標準是Micro F1和Macro F1

Standard表示使用所有資料,也包含有噪音的資料

而LOPS是經過策略性的選擇有代表性的樣本

可以看到在任何資料集上都贏過standard

./Untitled%2016.png

LOPS也贏過隨機選擇。

表示LOPS這個方法是具有策略性的

./Untitled%2017.png

  • MC-dropout
    • 使用機率作為選擇樣本的依據
  • LOPS
    • 使用學習順序作為選擇樣本方法

這個實驗結果表示單純依靠機率來選擇是不可靠的,因為有些樣本是有噪音的

./Untitled%2018.png

可以看到紅色框框中的數字,藍色是指標準差很高,紅色是指性能很低

其他的方法在這些資料集上表現很差,且標準差很高,表示不穩定

而LOPS相較於這些方法是較為穩定的

./Untitled%2019.png

OptimalFilter這個方法是移除所有錯誤標註的樣本

可以看到在某些資料集上,LOPS跟Optimal還是有相當大的差距

Conclusion


  • 這篇論文提出考慮學習順序的方法LOPS,可以做為文本分類器和弱監督的插件
  • 基於學習順序的方法,比基於機率的方法更穩定且有效