知物由學 | 機器聰明過人,“半監督”與“自監督”結合讓AI模型訓練事半功倍
購物網站為消費者推薦心儀的產品,導航為司機選擇最佳路徑,裝置透過使用者的生物特徵鑑定身份,智慧投資顧問監測、制定、投資複雜的金融產品組合……
目前,深度學習,尤其是有監督訓練,已經廣泛應用於各行業中。在各位AI訓練師的精心訓(調)練(參)下,計算機更“懂”人類,而AI訓練師也面臨一些成長的煩惱:
“找資料、提標註、做篩選、訓網路”的流程是否已成為日常工作中的常規操作?
“泛化效能不足”、“模型過擬合”等問題是否頻繁影響著模型效果?
當透過新增更多標註資料來解決上述問題時,花費高昂、耗時漫長的資料標註過程,是否嚴重拖慢了演算法最佳化週期?
令人頭禿的是,AI訓練師發現到後來“加資料”也不再靈了,“泛化性差”、“過擬合”、“訓練退化”像是難以擺脫的幽靈,一直潛伏著壓制模型表現?
有監督訓練方式嚴重依賴資料標註的準確性和資料規模等因素,不僅為模型最佳化帶來高額標註成本,也存在“泛化效能差”、“模型過擬合”等“劣根性”問題。
基於這樣的背景,半監督、自監督學習方法透過引入大規模無標籤資料和無監督訓練任務,來改善有監督訓練的模型效果和資料成本問題。
本文中,我們首先總結分析了半監督、自監督領域中一些典型演算法成果,再介紹了易盾演算法團隊提出的自監督、半監督結合的深度模型訓練最佳化演算法,展示了半監督、自監督演算法在內容風控領域中成果落地案例,力求為各位演算法同學在該領域的最佳化上帶來一點啟發。
01
半監督
Pseudo-Label 分支
為了更準確的偽標籤而不斷努力
Pseudo-Label 一詞明確提出於2013年,方法思想是透過教師模型,藉助有標籤和無標籤資料,來提升學生模型的效果。具體做法是先利用有標籤資料訓練出一個教師模型,再用其對無標籤資料打標預測出偽標籤 (Pseudo-Labe),並篩選出合適的無標籤資料與其偽標籤,與有標籤資料一起訓練出一個學生模型。Pseudo-Label 演算法在使用時,會多次進行“打標、篩選、訓練”的過程,直至得到一個效果達標的學生模型。
本文在此重點介紹 Pseudo-Label 分支在2020~2021年的兩篇重點工作,並對該領域的發展做出總結:
1.1 Noisy student training (CVPR 2020)
Background:
Facebook 在2019年曾利用十億級別無標籤資料進行自訓練,演算法效果達到了 SOTA 水平,以此為代表的 Pseudo-Label 方法最佳化方向大多是擴充無標籤資料集的規模。
Motivation:
對 Pseudo-Label 方法在訓練學生模型環節提出新的最佳化方向,讓學生模型有更強的學習能力和更嚴苛的學習環境,從而超越教師模型。
Action:
圖1 | Noisy student training 演算法流程圖
Noisy student training 方法採用了傳統的 Pseudo-Label 訓練結構:“打標、資料篩選、訓練”的多輪迭代。方法的創新點主要體現於兩點:
為了保證學生模型有更強的學習能力,作者創新地採用了比教師模型更復雜的模型結構;
為了讓學生模型有更嚴苛的學習環境從而超越教師模型,作者在學生模型訓練過程中新增了不同種類的噪聲(資料增強、模型 dropout、模型隨即深度等)。
Result:
訓練過程新增 noise、增大學生模型複雜度、引入無標籤資料集、多次迭代,這些操作都提升了學生模型的效果,在 ImageNet 測試集上僅用了300M的無標籤資料集,就超過了當時的 SOTA 效果。
藉助無標籤資料、各種型別的噪聲等因素,Noisy student training 訓練方式對學生模型的魯棒性有明顯提升。
Summary:
文章重點在於改造學生模型的訓練過程,擴大模型結構和增加訓練噪聲,突破了傳統自訓練和蒸餾演算法。
文章中實驗詳實,消融實驗部分非常值得演算法同學借鑑,在資料選擇策略、資料訓練方式、資料組合比例、偽標籤的格式等方面,有很多理論和實操上的寶貴經驗。
“joint training”, “strong augmentation”, “soft p-label”, Noisy student training 中的這些因素和 Consistency Regularization 方法不謀而合,這也暗含著 Pseudo-Label 方法和 Consistency Regularization 方法在本質上的統一。
1.2 Meta Pseudo-Labels(2021)
Background:
本篇和上篇 Noisy student training 屬於同一個作者團隊,此前這一分支的主要最佳化方向包括提升偽標籤的準確性、最佳化學生模型訓練過程等。
Motivation:
教師模型要收到學生模型的反饋,為了得到更準確、讓學生模型學習效果更好的偽標籤。
Action:
圖2 | Meta Pseudo Labels 演算法流程圖
Meta Pseudo-label 方法的最重要創新點在於教師模型在訓練過程中顯式地收到了學生模型的反饋。教師模型和學生模型同時訓練,分別根據各自的 Loss 來進行引數更新:學生模型在有標籤資料集上的表現用來計算教師 loss,學生模型在無標籤資料集上的表現用來計算學生 loss。
此外,還可以給教師模型附加別的 loss,或者是在 Meta Pseudo-Labels 訓練完成後令學生模型在有標籤資料集上進行微調,這些操作都可以近一步提升演算法效果。
Result:
Meta Pseudo-Labels 在 ImageNet 測試集上超越了之前 SOTA 的效果。
Summary:
方法初衷非常直觀合理,“老師根據學生的實際表現來調整教材”,頗有點“因材施教”的意思。其實傳統的 Pseudo-Labels 演算法中,每次迭代結束時對教師模型的替換,也屬於隱式的學生模型對教師模型的反饋,但 Meta Pseudo-Labels 演算法第一次將這樣的反饋直接作為演算法最佳化方向。
本文是該領域發展的一個轉折點:Pseudo-Labels 演算法對獲取更準確偽標籤的初衷沒有變,但接下來的演算法必須要進階到“教師模型參考學生模型的反饋來調整訓練策略”,該領域接下來一定會有更多基於此考慮的精妙設計。
1.3 Pseudo-Labels 分支總結
1)總體發展目標和對應採取措施:
Motivation 1:更準確、效果更好的偽標籤
Action:
更靠譜的打標模型,例如規模更大、或者數量更多的教師組合進行打標,或者是對偽標籤進行矯正。(2019年Pseudo-labeling and confirmation bias)
更大規模的無(弱)標籤資料集。(2019年Facebook billion-scale)
教師模型接收到學生模型的反饋,對偽標籤進行調整。(2020 meta Pseudo-Labels)
Motivation 2:學生模型訓練過程更好、更高效
Action:
提高學生模型複雜度,更強的能力去擬合大規模無標籤資料集(2020 noisy-student-training)
為訓練過程適當新增noise干擾,更嚴苛的訓練條件。(2020 noisy-student-training)
2)未來發展和實操建議:
Pseudo-Labels 分支中,上述兩個 motivation 最終會殊途同歸,統一到一個方向上:根據學生模型的實際表現反饋,更精細化地調整學生模型單獨訓練或學生+教師模型聯動訓練的具體訓練策略,我們易盾演算法組也一直在根據這個發展方向不斷做出創新嘗試。
02
半監督
Consistency Regularization 分支
看似面目一新,實則殊途同歸
相比於 Pseudo-Label,一致性正則(Consistency Regularization)方法對一些演算法同學來說可能稍顯陌生。
這一流派的初衷非常直觀:透過對輸入資料、中間特徵、模型引數等方面適當新增干擾(Perturbation),同時限制模型保持輸出的一致性(Consistency),以此來提升模型的整體效果和魯棒性。
一致性正則方法在應用時會在傳統有監督損失函式基礎上再新增一個無監督損失函式(Consistency Loss),主要對無標籤資料進行計算,因此屬於半監督學習演算法。
本文在此重點介紹該分支在2017、2020年的兩篇重點工作,並對該領域的發展做出總結:
2.1 Temporal Ensembling(ICLR 2017)
Background:2015~2016年,已經陸續有作者著手 Consistency Regularization 算法的研究,不過所提出的演算法結構較為複雜。
Motivation:設計出一個端到端的訓練演算法;同時利用有標籤資料和無標籤資料訓練;對無標籤資料進行 Consistency Regularization 計算;儘量少地引入計算負擔。
Action:作者設計了以下兩種半監督訓練演算法:
(1) Π-model :
圖3 | Π-model演算法流程圖
訓練過程:對有標籤資料計算 Supervised Loss;對無標籤資料進行兩次前向計算,隨機對輸入資料、模型進行干擾,兩次預測結果之間計算 Consistency Loss。兩個 loss 的加權之和構成了訓練的總 loss。
(2)Temporal Ensembling:
圖4 | Temporal ensembling 演算法流程圖
訓練過程:作為上述 Π-model 的改進版本,有標籤資料的 Supervised Loss 維持一致;無標籤資料部分,一方面對同一個輸入資料在過去多個 epoch 的輸出結果進行融合作為最佳化目標(target),另一方面對輸入資料進行一次前向計算得到預測結果(prediction),兩者之間計算 Consistency Loss。兩個 loss 的加權之和作為整體 loss。
Result:
文章所提出的兩種訓練演算法,提升了模型在多個測試集上的表現效果,尤其在有標籤資料集較少時,提升效果更明顯。
Summary:
這篇文章來自 NVIDIA,被 ICLR 2017接收,提出了兩個簡潔、有效的 Consistency Regularization 訓練流程:П-model 和 Temporal ensembling。
Temporal ensembling 中參考過去多個 epoch 結果的設計,不僅提升了訓練的時間效能,也避免了單次 epoch 中噪聲對演算法效果的負面影響。
本篇論文所提出的 Consistency Regularization 演算法結構,在該領域後續多篇工作中都有被沿用和借鑑,對後來的研究工作產生了深遠影響。
2.2 FixMatch (NeurIPS 2020)
Background:
同團隊曾先後發表 MixMatch(NeurIPS 2019)、ReMixMatch(ICLR 2020),Google 另一個團隊也提出了 UDA(NeurIPS2020),這些都屬於 Consistency Regularization 領域的工作。
Motivation:
為 Consistency Loss 獲取更準確的偽標籤,並簡化當前 Consistency Regularization 演算法流程。
Action:
整體演算法流程與 UDA 方法類似:
圖5 | UDA演算法流程圖
有標籤資料計算 Supervised Loss;無標籤資料進行 weakly 和 strongly 兩個版本的資料增強操作,weakly-augmented 資料經過前向計算得到預測結果,將其變換為one-hot形式的偽標籤,作為 Consistency Loss 的 target,同時 strongly-augmented 資料經過前向計算得到預測結果,其與 target 共同進行 Consistency Loss 計算。兩個 loss 的加權之和作為整體 loss,負責模型引數更新。
相比於 MixMatch 和 ReMixMatch 方法,FixMatch 在 target 獲取過程中省去了很多偽標籤後處理操作,類似於 Pseudo-Label 方法直接對偽標籤取 one-hot 形式,避免了相應的超引數設計。
Result:
Consistency 計算部分流程得以簡化,再結合精細的調參,FixMatch 達到了 Consistency Regularization 領域的 SOTA 效果。
Summary:
這篇文章來自 Google 團隊,被 NeurIPS 2020接收,對同團隊的 MixMatch、ReMixMatch 進行了有效簡化,不過整體設計思想變化不大。
FixMatch 標誌著當前 Consistency Regularization 分支與 Pseudo-Label 分支的殊途同歸,可認為是目前 Consistency Regularization 領域中一個暫時的分號,暗示著接下來該領域如果想繼續發展就需要有更大的創新。
2.3 Consistency Regularization 分支總結
1)總體發展目標和對應採取措施:
Motivation 1:對無標籤資料獲取更準確的偽標籤,作為 Consistency Loss 的 target。
Action:
採用更準確的教師模型(或組合)進行打標;
區分 weakly 和 strongly 資料增強操作,使用前者的預測偽標籤作為計算 Consistency Loss 的 target;
為了實現熵最小化(Entropy Minimization),對前述偽標籤的後處理操作。
Motivation 2:更多樣、程度更強、更有效的 perturbation 手段
Action:
多種干擾方式結合,包括資料干擾、模型干擾、中間特徵層干擾;
應用更強大的資料增強操作,例如 RandAugment、AutoAugment、CTAugment 等。
2)未來發展和實操建議:
Consistency Regularization思想中更強的擾動(perturbation)和輸出一致性(Prediction Consistency)之間存在權衡關係,該領域的幾篇新方法中都採用了強大的資料增強操作,這種情況下維持 Prediction Consistency 是否還有意義,需要視具體任務、資料、資料增強操作而定。
Consistency Regularization 的初衷是很好的,但是當前的實現方法和 Pseudo-Label 分支類似,比如 FixMatch 中採用了 one-hot 形式的 target,這時 Consistency Regularization 和 Pseudo-Label 實現起來已經基本一致,沒有引入新的創新性的約束。期待未來關於 Consistency Regularization 有新的實現手段。
03
自監督
對比學習(Contrastive Learning)
三分相像的兄弟
除了以上半監督學習兩個主流分支的成果外,自監督學習的對比學習(Contrastive Learning)方向在2019年底到2011年初也經歷了“神仙打架”似的飛速發展期,下圖列舉了三大科研陣營在此期間提出的一些對比學習演算法成果:
圖6 | Contrastive Learning發展記錄
Facebook AI Research (FAIR) :MoCo v1、MoCo v2, SwAV,Simsiam
Google Research, Brain Team:SimCLR v1、SimCLR v2
DeepMind Research:BYOL
自監督學習中的對比學習(Contrastive Learning),和半監督學習中的一致性正則(Consistency Regularization),兩者從方法原理上來看非常相近,均可近似抽象理解為鼓勵模型對相近輸入的預測保持一致性。
兩者的主要差異體現在訓練目標(target)的不同:對比學習的訓練目標是任務無關的(task-agnostic),而一致性正則的訓練目標是任務有關的(task-specific);除此以外,兩個分支中不同方法在正負樣本選取、損失函式的選擇、是否和有監督任務一起訓練等方面也略有差異。
04
半監督在易盾
借鑑了以上半監督、自監督學習領域在近年來的研究成果,易盾演算法團隊針對數字內容風控業務的實際特點,設計出一套自監督與半監督學習結合的深度模型訓練方案,具體來說:
Motivation:
利用自監督學習方法,提升模型對任務無關特徵(task-agnostic)的提取能力;
利用半監督學習方法,提升模型對特定業務任務的表現;
做好不同資料域之間的銜接和過渡。
Action:
下圖展示了我們易盾團隊設計的自監督與半監督學習結合的深度模型訓練方案:
圖7 | 易盾雙段式自監督 + 半監督深度模型訓練方案
兩段式自監督預訓練:ImageNet 資料域上的自監督預訓練+業務資料域上的自監督預訓練。
特定業務任務上,結合學生模型反饋的半監督訓練:針對特定業務任務,利用大規模無標籤業務資料,根據學生模型的具體表現反饋來實時精細化修改訓練策略,例如修改偽標籤數值、無標籤資料篩選範圍、無標籤資料參與計算總 Loss 的比例等。
Result:
演算法效果方面:
特定任務整體的召回、精度,均有相對30%以上的明顯提升。
對特定樣例的泛化效能有明顯提升。不需要收集特定樣本加入訓練,就可以有解決這些問題的能力,替代了以往“遇到問題->收集資料->加入訓練”的被動模式。
對某些攻擊手段、資料增強方法的魯棒性有所提升。
資料標註方面:
有效縮減資料標註成本。採用自監督+半監督的訓練方法,達到同樣訓練效果的前提下,資料標註需求可縮減到原來的三分之一至十分之一。
05
總結
本文簡要回顧了半監督、自監督領域在過去幾年的部分演算法成果,探討了偽標籤演算法(Pseudo-Label)、一致性正則(Consistency Regularization)、對比學習(Contrastive Learning)這三個流派方法之間的聯絡與區別,並介紹了我們易盾演算法團隊對這些理論成果的實際創新與落地嘗試。誠如文中所提,Pseudo-Label、Consistency Regularization 這些流派都相應來到了各自發展的轉折點,我們在此與各位演算法同學一起期待半監督、自監督領域未來能有更多創新、有效的演算法設計。
相關文章
- Hinton新作!越大的自監督模型,半監督學習需要的標籤越少2020-10-30模型
- 一圖看懂監督學習、無監督學習和半監督學習2020-02-18
- 機器學習——監督學習&無監督學習2019-07-24機器學習
- 基於自編碼器的表徵學習:如何攻克半監督和無監督學習?2018-12-22
- 自監督學習2024-04-15
- 機器學習:監督學習2022-12-04機器學習
- 【機器學習基礎】半監督學習簡介2021-12-23機器學習
- 自監督、半監督和有監督全涵蓋,四篇論文遍歷對比學習的研究進展2020-09-15
- 自監督學習概述2020-10-29
- 監督學習,無監督學習常用演算法集合總結,引用scikit-learn庫(監督篇)2022-03-19演算法
- 【機器學習】李宏毅——自監督式學習2022-12-19機器學習
- 【半監督學習】MixMatch、UDA、ReMixMatch、FixMatch2020-04-18REM
- LUSE: 無監督資料預訓練短文字編碼模型2021-07-31模型
- 監督學習2024-06-05
- 機器學習7-模型儲存&無監督學習2021-01-22機器學習模型
- 只有條件GAN才能穩定訓練?對抗+自監督的無監督方法瞭解一下2019-01-02
- python 無監督生成模型2024-06-30Python模型
- 有監督學習——高斯過程2023-03-18
- 機器學習個人筆記(三)之無監督學習2020-10-27機器學習筆記
- 監督學習之支援向量機2020-02-14
- 【ML吳恩達】3 有監督學習和無監督學習2020-11-19吳恩達
- 吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習2020-11-28吳恩達Mac筆記
- 003.00 監督式學習2019-09-17
- Facebook AI 108頁ppt 講述自監督學習在最新2020-04-20AI
- 機器學習--有監督學習--演算法整理2024-06-07機器學習演算法
- 【機器學習基礎】無監督學習(3)——AutoEncoder2022-05-07機器學習
- 【機器學習基礎】無監督學習(1)——PCA2022-01-22機器學習PCA
- 如何解決 Iterative 半監督訓練 在 ASR 訓練中難以落地的問題丨RTC Dev Meetup2022-06-27dev
- 監督學習or無監督學習?這個問題必須搞清楚2020-05-02
- 有監督學習——梯度下降2023-03-11梯度
- 監督學習基礎概念2020-02-14
- 監督學習之迴歸2019-08-30
- 知物由學 | 弱監督語義分割:從影像級標註快進到畫素級預測2022-03-30
- [計算機視覺]非監督學習、AutoEncoder、AI換臉demo2020-05-19計算機視覺AI
- Python機器學習基礎篇三《無監督學習與預處理》2020-12-26Python機器學習
- 基於attention的半監督GCN | 論文分享2019-03-05GC
- 【火爐煉AI】機器學習024-無監督學習模型的效能評估--輪廓係數2018-09-05AI機器學習模型
- 吳恩達機器學習筆記 —— 14 無監督學習2018-07-25吳恩達機器學習筆記