在前面的幾個章節中,我們介紹了幾種基於不同半監督假設的模型優化方案,包括Mean Teacher等一致性正則約束,FGM等對抗訓練,min Entropy等最小熵原則,以及Mixup等增強方案。雖然出發點不同但上述優化方案都從不同的方向服務於半監督的3個假設,讓我們重新回顧下(哈哈自己抄襲自己):
MixMatch則是集各家所長,把上述方案中的SOTA都融合在一起實現了1+1+1>3的效果,主要包括一致性正則,最小熵,Mixup正則這三個方案。想要回顧下原始這三種方案的實現可以看這裡
本章介紹幾種半監督融合方案,包括MixMatch,和其他變種MixText,UDA,FixMatch
- Paper: MixMatch: A Holistic Approach to
Semi-Supervised Learning- Github: https://github.com/YU1ut/MixMatch-pytorch
針對無標註樣本,MixMatch融合了最小熵原則和一致性正則, 前者最小化模型預測在無標註樣本上的熵值,使得分類邊界遠離樣本高密度區,後者約束模型對微小的擾動給出一致的預測,約束分類邊界平滑。實現如下
針對有標註樣本,作者在原始Mixup的基礎上加入對以上無標註樣本的使用。
最終的損失函數由標註樣本的交叉熵和無標註樣本在預測標籤上的L2正則項加權得到
Mixmath因為使用了多種方案融合因子引入了不少超引數,包括融合輪數K,溫度引數T,Mixup融合引數\(\alpha\), 以及正則權重\(\lambda_u\)。不過作者指出,多數超慘不需要根據任務進行調優,可以直接固定,作者給的引數取值,T=0.5,K=2。\(\alpha=0.75,\lambda_u=100\)是推薦的嘗試取值,其中正則權重作者做了線性warmup。
通過消融實驗,作者證明了LabelGuessing,Sharpening,Mixup在當前的方案中缺一不可,且進一步使用Mean Teacher沒有效果提升。
- Paper: MixText: Linguistically-Informed Interpolation of Hidden Space for Semi-Supervised Text Classification
- Github:https://github.com/SALT-NLP/MixText
MixText是MixMatch在NLP領域的嘗試,關注點在更適合NLP領域的Mixup使用方式,這裡只關注和MixMatch的異同,未提到的部分基本上和MixMatch是一樣的
- Paper:Unsupervised Data Augmentation for Consistency Training
- official Github: https://github.com/google-research/uda
- pytorch version: https://github.com/SanghunYun/UDA_pytorch
同樣是MixMatch在NLP領域的嘗試,不過UDA關注點在Data Augmentation的難易程度對半監督效果的影響,核心觀點是難度高,多樣性好,質量好的噪聲注入,可以提升半監督的效果。以下只總結和MixMatch的異同點
Data Augmentation
MixMatch只針對CV任務,使用了隨機水平翻轉和裁剪進行增強。UDA在圖片任務上使用了複雜度和多樣性更高的RandAugment,在N個圖片可用的變換中每次隨機取樣K個來對樣本進行變換。原始的RandAugment是搜尋得到最優的變換pipeline,這裡作者把搜尋改成了隨機選擇,可以進一步增強的多樣性。
針對文字任務,UDA使用了Back-translation和基於TF-IDF的詞替換作為增強方案。前者通過調整temperature可以生成多樣性更好的增強樣本,後者在分類問題中對核心關鍵詞有更好的保護作用,生成的增強樣本有效性更高。這也是UDA提出的一個核心觀點就是資料增強其實是有效性和多樣性之間的Trade-off
Pseudo Label
針對無標註樣本,MixMatch是對K次弱增強樣本的預測結果進行融合得到更準確的標籤。UDA只對一次強增強的樣本進行預測得到偽標籤。
Confidence-Based Maskin & Domain-relevance Data Filtering
UDA對無標註樣本的一致性正則loss進行了約束,包括兩個方面
- Paper:FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence
- official Github: https://github.com/google-research/fixmatch
- pytorch version: https://github.com/kekmodel/FixMatch-pytorch
在生成無標註樣本的偽標籤時,FixMatch使用了UDA的一次預測,和MixMatch的弱增強Flip&Shift來生成偽標籤,同時應用UDA的置信度掩碼,預測置信度低的樣本不參與loss計算。
一致性正則是FixMatch最大的亮點,它使用以上弱增強得到的偽標籤,用強增強的樣本去擬合,得到一致性正則部分的損失函數。優點是弱增強的標籤準確度更高,而強增強為一致性正則提供更好的多樣性,和更大的樣本擾動覆蓋區域,使用不同的增強方案提高了一致性正則的效果