LOPS: Learning Order Inspired Pseudo-Label Selection for Weakly Supervised Text Classification
![/6_lops_learning-order-inspired-pseudo-label-selection-for-weakly-supervised-text-classification/featured.png /6_lops_learning-order-inspired-pseudo-label-selection-for-weakly-supervised-text-classification/featured.png](/6_lops_learning-order-inspired-pseudo-label-selection-for-weakly-supervised-text-classification/featured.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。
但是這裡會碰到一個問題,就是選到confience最大的類別,也有可能是錯誤的pseudo label。就像範例中的第二筆資料,他的真實label是運動,而不是紅色框框中的政治類別。
這個問題的主要原因是我們在選擇pseudo label時,依賴的是一開始訓練好的模型,但是如果這個模型的準確率不高,就會造成pseudo label選擇錯誤的情況發生
Related work
在過去有些研究中發現,模型在學習時,會先學習簡單的或是有代表性的樣本,然後才會學困難的樣本。
在上圖中可以看到在訓練階段,在epoch1可以學習到較多正確的樣本。而在epoch1之後幾乎都剩下標籤錯誤的樣本。
hypothesize
因此這篇論文假設每個樣本都有一個學習順序,也就是樣本的難易程度。透過這個學習順序,可以篩選掉許多被標註錯誤的樣本。
以範例來說,模型會先預測樣本,取得所有樣本的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
當我們拿到字串比對後的pseudo label後,會輸入到LOPS演算法中,這裡會經過學習順序的策略和一些挑選後,輸出一個有代表性、乾淨的資料集。再把這個資料集拿去訓練一個新的模型。這個LOPS把一些錯誤的、有噪音的樣本移除後,可以提高模型的效果。
這個LOPS可以看成是一個插件,可以放到任何一個弱監督或是需要篩選unlabeled data的訓練網路中。
Method
Algorithm of LOPS
這裡會說明演算法的流程
首先,假設unlabeled data有1200筆資料,而經過字串比對後,會將其中1000筆資料當作訓練資料並給予pseudo label,而剩下200筆資料可能因為字串比對無法給予pseudo label,當作test資料。
這1000筆資料中,有正確的樣本,也會有被標註錯誤的樣本。
之後把這1000筆資料丟到LOPS演算法中
現在在LOPS演算法內。把這1000筆資料標示成D,D的各類別資料分佈如下圖
- 用D去訓練一個模型
- 用模型去evaluate每一筆資料,取得confidence,並取得最大confidence值的類別當作pseudo label
- 如果經過模型預測出的pseudo label 等於 字串比對的 pseudo label,就通過第一個條件
通過第一個條件後,就要來驗證第二個條件。D_hat是經過LOPS後會輸出的資料集
第二個條件是$\hat D_{correct}$每一個類別的個數都不能超過原始資料D中的$\tau%$。
如果上述兩個條件都成立,則把這一個樣本收集起來
直到第三個epoch時,發現這個資料集已經收集了$\tau%$的資料了
因此提早離開迴圈,退出LOPS演算法
離開LOPS後,可以看到右下角的紫色框框
D經過LOPS後,會輸出一個500筆的資料集,這是經過LOPS認為是乾淨、沒有噪音的樣本集合。
剩下沒有被選上的500筆資料,會跟test dataset合併,因此會有200+500 = 700筆
我們會用乾淨的樣本500筆資料去訓練模型,然後去evaluate test dataset,希望能從test dataset中找出一些新的樣本,這裡的條件是預測出來的confidence值要大於一個人為設定的threshold。
找到一些新的樣本後,加入到訓練資料中,變成1000+50 = 1050,然後再重新跑一次LOPS篩選乾淨的樣本。
learning order
這裡是在計算每一個樣本的學習順序。當該樣本越早被模型學起來,則表示該樣本越容易學習,也越具有代表性。
Experiment
Dataset
Noise Ratio是指原本的unlabeled data經過字串比對後,與真實的label計算,得到的比例
31.8表示100筆unlabeled data中,字串比對猜錯31筆資料
baseline - label selection methods
- MC-dropout
- 訓練模型時,開啟dropout,丟棄一部分的神經元,以此來訓練模型
- 預測時,同樣也要開啟dropout,因此輸入同一筆資料時,會產生不同的輸出
- 把同一筆資料的不同輸出做平均後,取出最高的confidence值的類別當作pseudo label
- entropy
- 用confidence值去計算entropy,取topK個樣本
- Probability
- 用預測出來的機率取樣本
- Random
- 與機率方法類似,但是是使用隨機的方式取樣本
baseline - O2U Net
這是實驗中使用的baseline
他的方法是在模型訓練過程中調整學習率和移除TOPK的樣本後,繼續訓練模型
- 首先會使用固定的學習率和有噪音的資料集去訓練模型
- 循環訓練模型,這一部分會計算每一個樣本的loss,然後更新學習率。
- 模型首先會學習簡單的樣本,之後再學習困難的樣本。當模型在學習簡單樣本時,loss下降得很快,一下子就overfitting。之後再學習困難樣本時,會逐漸underfitting,這樣訓練過程反覆進行
- 之後會輸出乾淨的資料集,再拿去重新訓練一個模型
baseline - Learning Stability
這是另一個baseline方法
這裡的學習穩定度是指在total epoch中,被模型預測後的pseudo label與真實label的有沒有一樣,如果一樣則計數器加一。最後計算在total epoch中,符合條件的總共有幾次,以此去計算學習穩定度。
如果被預測出越多次,表示資料品質越好。
Experiment
這裡的評估標準是Micro F1和Macro F1
Standard表示使用所有資料,也包含有噪音的資料
而LOPS是經過策略性的選擇有代表性的樣本
可以看到在任何資料集上都贏過standard
LOPS也贏過隨機選擇。
表示LOPS這個方法是具有策略性的
- MC-dropout
- 使用機率作為選擇樣本的依據
- LOPS
- 使用學習順序作為選擇樣本方法
這個實驗結果表示單純依靠機率來選擇是不可靠的,因為有些樣本是有噪音的
可以看到紅色框框中的數字,藍色是指標準差很高,紅色是指性能很低
其他的方法在這些資料集上表現很差,且標準差很高,表示不穩定
而LOPS相較於這些方法是較為穩定的
OptimalFilter這個方法是移除所有錯誤標註的樣本
可以看到在某些資料集上,LOPS跟Optimal還是有相當大的差距
Conclusion
- 這篇論文提出考慮學習順序的方法LOPS,可以做為文本分類器和弱監督的插件
- 基於學習順序的方法,比基於機率的方法更穩定且有效