Everybody has a different definition of the good side. — Will Wright
美劇《菜鳥新移民》中有一段 潔西卡 (Jessica Huang) 向伊蓮李 (Elaine Lee) 詢問了教養建議,她回答重點在於讓孩子混淆,用標準不一讓孩子更努力,這當然是喜劇效果,不會有人真的這麼做 (對吧?),特別在教導模型時更不能這麼做,它會很容易學壞的!
所以我們今天就來談談如何定義資料吧。
定義資料的挑戰在於,只要有一點點模糊空間,就可能造成資料不一致,使得模型錯亂。
以下圖為例,三個標註者接到同一個指令卻產生三種不同的標註風格:
雖然這些標法都不算錯,各自拿來訓練的話效果也不差,但如果訓練集混搭了這些風格,模型便會錯亂,導致表現不佳。
而造成標註風格不同的原因就在於指令不夠明確。
就連結構化資料也會有標註不明確的問題,以使用者 ID 合併為例,大家覺得下面兩個帳號是同一個人嗎:
在這類任務中,一般會利用監督式演算法判定兩筆資料是否屬於同一個人,而訓練這個演算法的資料,除非使用者設定了帳戶連結,不然實際上真的會請人來標註,但它們是否屬於同一個人本身的 Ground Truth 就很不確定,所以不同標註者的判斷就可能產生分歧。
因此在定義資料時,必須釐清以下幾個重要的問題:
Input X 是什麼?
Target label Y 是什麼?
可以看到上面重複出現的概念就是 label 的一致性,特別對資料較少的情況來說,label 的正確性與一致性真的非常非常重要,如果 label 很好,就算只有五筆資料也能擬合出正確的曲線:
*圖片來源:MLEP, Small data and label consistency
數據越少越得注意拆分訓練、驗證、測試集時的取樣方法,最好使用 Stratified sampling,才能使每個資料集具有代表性。
我們可以使用以下步驟來提升 label 的一致性:
以上的流程可能會把不同的風格統一或把界線模糊的類別合併,而其終極目標在於建立清楚的標註指南作為後續一致的標準,因此如果很難達到共識,甚至可以創造一個 class/label 來捕捉不確定的部份,例如語音辨識的 [unintelligible],如此一來也能增加標注的一致性。
有些團隊為了增加準確度,可能會讓所有人同時標註所有資料再從中投票以決定最終的標籤 (consensus),但這是最後手段,清楚的標註指南才是王道。
以上就是今天的內容,明天我們會再重新檢視一次 Human-level Performance (HLP) 作為 baseline 在資料上的功用為何,那麼就明天見啦~