子曰:『工欲善其事,必先利其器。
昨天提到依照 Ground truth 改變的速度會讓不同任務的標註有各種難易度:
而依照不同的難度會有不同的標註方法,接下來就讓我們來談談各種標註方法吧。
持續創造訓練資料集。
最常見的例子為真實 vs. 預測的點擊率 (CTR),若使用者真的有點擊就標注為 True,反之為 False,其標注流程如下:
其優點為:
缺點為:
常用的方法為日誌分析 (log analysis),因為大部分資料都來自於監控系統時產生的日誌。
其中開源的日誌分析工具有:
若使用雲端平台則有以下雲端日誌分析工具:
由人類手把手教學。
基本上就跟想像的一樣,在前面已經討論很多了,這裡再複習一下步驟:
以上兩種方法為比較常見的方法,接下來介紹一些進階方法,它們的中心思想都是自動化標註流程以減少高昂的人力成本 (以標籤的正確性為代價),那就讓我們繼續吧。
只手工標注一部分資料,剩下讓演算法幫忙。
其做法為將少數由人類標注的資料與大量的未標註資料結合,利用已標註資料在特徵空間中的 cluster 或結構來推論剩餘的標籤為何。
假設不同類別的標籤在特徵空間中必須 cluster 在一起或具有某些可辨別的結構。
此方法的優點如下:
用來標註的半監督式演算法稱為標籤傳遞 (Label propagation),它會以未標註資料和已標註資料的相似性或群體關係 (community structure) 作為標註的基準。
以 Graph-based label propagation 為例,它會利用相鄰的已標註資料來進行標註,而這些標籤則會傳遞到該 cluster 剩餘的資料中:
*圖片修改自 MLEP — Semi-supervised Learning
Label propagation 屬於 轉導推理 (transductive learning),也就是不學習映射函數,直接利用樣本自身進行映射。
依據現有資料來智能取樣尚未標注的資料 (專注於最重要的部分)。
主動學習 (Active Learning) 指的是可以智能取樣資料的演算法,它會找出較能提升模型預測性的樣本,因此特別適用於以下情境:
其中心思想為選擇最能幫助模型學習的已標註資料,又細分為以下兩種策略:
*圖片修改自 MLEP — Active Learning
而主動學習的整體流程為:
以下為常見的主動學習技巧:
程序化 (Programmatic) 的標注方法,通常藉由 subject matter experts 設計的規則來標注。
弱監督是指使用若干不同來源的資訊產生標籤,通常這些來源都是 SME 設計的規則,因此產生的標籤是不完美的 (會有 "雜訊" 產生),也就是說不一定 100% 正確。
更精確來說,它會使未標註的資料存在數個 noisy 的條件分佈,而其目標就是學習一個生成式模型來衡量這些雜訊來源的權重。
Snorkel 為最受歡迎的 weak supervision 框架,它不需要手動標注,可以程序化地建立與管理訓練集,其原理如下:
以上就是今天的內容,我們當然還可以搭配前幾天提到的資料增強 (Data Augmentation) 來增加有標籤的資料量,藉由提升特徵空間的涵蓋率可以改善模型表現,但今天就到此為止啦,明天見囉!!