
一 背景介紹
1 什麼是主動學習?
上網一搜,出現的大部分回答是“如何讓孩子/學生主動學習”。哎,可惜我幫不了,我講的不是這個。
此處的主動學習(Active Learning,AL)是一種機器學習算法,通過主動找到最有價值的訓練樣本加入訓練集,如果該樣本是未标記的,則會自動要求人工标注,然後再用于模型訓練。簡單而言,就是以更少的訓練樣本訓練出性能盡可能高的模型。
2 解決什麼問題?
- 資料标注成本高,尤其是專業知識領域。
- 資料量巨大,難以全量訓練 ,或訓練機器/時間有限。
3 有什麼價值?
主動學習能減少樣本标注量來節約成本,包括标注成本、和訓練資源成本;并且主動學習能在同等資料量下提升模型性能。
例如,未标注的樣本池有1000w個樣本,應用主動學習從中挑出200w樣本進行标注後訓練,便能訓練出性能與1000w訓練相當的模型。通常認為,主動學習能減少一半以上的樣本标注量。有時主動學習挑選資料集子集進行訓練,模型性能能超越全量訓練。在我們的業務場景下正是如此。
4 我們面對的業務問題是什麼?
- 提升模型性能:CRO内容安全團隊的風控模型每個月都有性能提升。
- 利用回流資料:各個業務場景不斷産生新的違規方式,我們需要對新違規樣本進行防控,而線上回流資料量巨大,對回流資料直接标注并訓練,非常低效,而且标注成本、訓練機器成本、訓練時間成本巨大。
- 處理髒資料:盡管圖檔标注标準唯一确定,但是每位标注員對标準的定義了解有分歧,容易出現錯打标,資料集中存在一定比例的髒資料。
二 主動學習算法簡介
目前主動學習算法中,應用最廣泛的是基于資訊量的方法,這類方法挑選對目前模型不确定性最大的樣本作為訓練資料。另一類廣受關注的是基于委員會查詢的方法,這類方法通過挑選對不同模型最具不确定性的樣本作為訓練資料。下面我們主要分析這兩類方法。
1 基于不确定性的方法:(uncertainty)[1]
基于資訊量的政策由于實用性強,是以被廣泛使用。
思想
不确定性越大,蘊含的資訊量越大,越有訓練價值。
流程
用已打标的資料子集訓練模型,用該模型預測剩餘未打标樣本,根據預測結果使用不确定性衡量标準找出最不确定的樣本,交給打标人員标注,加入訓練集訓練模型,再用該模型進行資料挑選,反複疊代。
代表方法
有3種極具代表性的不确定性衡量方法,衍生為三種主動學習政策,值得注意的是,比較資訊量可以通過比較機率值來代替進行。
1)least confident(LC)
關注模型預測時置信度值很大,“可信度”依舊很低的樣本。缺點是沒關注易混淆的樣本。
其中,
是樣本
分類為
的機率,即通常是模型輸出的score值,
是類别索引。
2)smallest margin(SM)
關注置信度最大的兩個值的差(margin)最小的樣本,即易混淆的樣本,該方案是針對LC的缺點進行的改進。
為樣本
的機率
、
為score值最大和第二大的對應的類别。
3)entropy(ENT)
關注綜合資訊量最大的樣本。
為score值最大和第二大的對應的類别,
以三分類問題為例,上面三種方法各自關注的樣本類型對比:
2 基于委員會查詢的方法(Query-By-Committee,QBC)
将優化ML模型看成是版本空間搜尋,QBC通過壓縮版本空間的搜尋範圍,找到最優秀ML模型。
相同訓練集訓練多個同結構的模型,模型投票選出争議樣本,将争議樣本打标後訓練模型,反複疊代。
2~3個模型組成的Committee就能獲得不錯的性能,diversity是內建模型性能的關鍵[1]:
- H.S. Seung[2]于1992首次提出QBC方法,通過多個模型對分類結果進行投票,選出投票結果最不一緻的樣本。
- DAS[3],2019年發表于arXive,基于深度神經網絡版本的QBC方法:兩個一樣結構的VGG-16網絡,在相同資料集上訓練,挑出判别不一緻的樣本。
- Active-Decorate[4]方法:基于QBC挖掘回新資料,打标後加入訓練集訓練一個新增分類器,與已有模型直接內建為committee,再基于新的committee繼續挑選新資料,反複疊代。
QBC方法的訓練價值計算公式如下:
是分類的類别數,
是類别
得到票數。QBC方法關注的樣本。
3 小結
這兩類方法一個是基于模型目前狀态,衡量不确定性;另一類是通過多不同的模型來衡量不确定性。這兩類方法在主動學習中較為普适高效,對我們的業務比較有價值。
三 基于業務場景設計的方法
雖然我們在業務場景下已積累了大量帶标注資料,但是直接增大訓練資料量并不能提高模型性能。而且在提升模型性能時也面臨着苛刻的要求。例如,當模型較大,訓練集比較大,訓練模型相對耗時,對主動學習算法的挖掘效率就有很苛刻的要求,訓練模型的方式也需要改進;如果需要挖掘百萬級别的訓練資料,那樣本的訓練價值的評價方式也需要做相應改進,否則容易對訓練子集過拟合。下面詳細介紹我們基于業務場景設計的主動學習算法。
1 挖掘效率
現有主動學習方法要麼一次挖掘到一個樣本,要麼一次挖掘到一個batch的樣本。來,我們算算湊齊例如500w樣本的資料要多少輪周期?
騷年别算啦,資源有限,算出來了也不可能實作。
業務場景需要我們的主動學習算法一次性挖掘回數萬或數十萬樣本,和主流paper中的主動學習有所差別。并且我們已經有了許多已打标資料,故業務場景需要算法能夠:
- 充分利用資訊。
- 一次挖掘回數萬或數十萬樣本,加入訓練集,盡量減少訓練疊代周期。
是以,類似QUIRE[5]之類不支援batch選取樣本的方法直接pass掉。我們基于支援batch挑選樣本的方法,調整挖掘資料量,提高了挖掘效率。
2 資料均衡
批量挖掘到有價值樣本放進訓練集訓練模型,就能提高性能?
too young, too simple ! (= =)|||
訓練樣本的各個類别間資料比例均衡,對模型性能影響很大。很多主動學習方法,如QBC方法、entropy方法等,都沒有考慮資料均衡問題,僅挑選其考量方式下最有價值的樣本。我們的經驗是,在控制類别均衡的前提下,再通過主動學習方法考量樣本的價值,按照合理的比例從各類别中挖掘會有價值的訓練樣本。
3 髒資料剔除
批量挖掘到有價值樣本放進訓練集訓練模型,并控制資料均衡,就能提高性能?
too young, too simple, sometimes naive ! orz
模棱兩可的樣本比較有訓練價值,被挖掘回來的機率比較大,而在我們面對的問題裡,這批資料往往容易被錯打标。
我們試過不同的髒資料剔除方法,有開源的算法,也有根據任務自行設計的算法。最後總結出以下經驗分享給大家:
- 髒資料剔除工作是一定要進行的,因其對模型性能影響很大。
- 無法徹底剔除髒資料,因為徹底剔除代價很大。
- 若不考慮噪聲學習技巧,僅通過資料挑選讓髒資料低于一定比例,依舊能得到性能不錯的模型。
4 樣本難度
批量挖掘到有價值樣本放進訓練集訓練模型,并控制資料均衡,剔除髒資料,就能提高性能?
Maybe. May God bless you !
若挖掘到一倍的訓練資料,直接将訓練集double了,模型幾乎無一例外地都學偏了(至少在我們的場景下是如此)。這種根據模型某一狀态的判斷就一步到位地确定大批量訓練資料的方法容易引入“偏見”,訓練出的模型找到的分界面并非最佳分界面。
為了解決這個問題,我們從訓練集樣本構成角度動刀,讓挑選資料集不全是目前模型分界面附近的hard樣本,同時存在一定比例的容易樣本。我們通過在主動學習算法中使用性能較弱的預測模型挑選資料,以實作這個目的。
5 HW主動學習方法
我們業務場景需要算法能夠具備以下特點:
- 批量挖掘資料。
- 控制資料均衡。
- 具備剔除髒資料的能力。
- 控制樣本難度恰當,引入部分非分界面附近的樣本。
- 可利用已有的資料标注資訊。
我們基于least-confident方法進行改進,綜合考慮以上需求設計主動學習方法,對我們的風控業務進行适配,設計出HW主動學習算法,對于樣本集
中每個樣本的訓練價值我們有如下計算方式:
為模型
将樣本
的分類為類别
的機率,
使用不同性能的模型,分類結果不同,挑選到的樣本的hard程度也不同。
是模型輸出中機率最大代表的類别,即分類結果,如果
,則
為1,于是
作為一個名額,基于模型
将挖掘池的樣本區分為hard樣本和wrong樣本,并通過丢棄wrong樣本來對髒資料比例進行調控。為每個樣本計算價值後,便可以根據場景需求的樣本均衡比例和需求的訓練樣本數量,提取價值排序靠前的樣本。
HW方法不僅能簡單高效地挖掘到大批量的具備訓練價值的樣本,也考慮了髒資料剔除和資料均衡,挖掘回的訓練集結構合理,在業務實踐中超越了其他對比算法。
四 實驗&結果
1 小資料集驗證明驗
我們利用業務資料建立一個總量30w的訓練集,對主動學習算法進行快速驗證。并挑選出最合适的方法,在更大規模的資料集上使用,以提升業務模型性能。
我們利用不同的主動學習方法一次性挑選10w資料,加入訓練集,訓練模型,各模型性能對比如下,我們采用FPR=1%時對應的TPR值作為名額:
ROC曲線為:
實驗總結:
HW方法、QBC方法在各個業務場景上性能表現優秀。實作QBC需要訓練多個模型,故從實作效率上HW更勝一籌,尤其當資料量變大時,HW優勢更明顯。
2 業務實踐
如上所述,我們将提出的HW主動學習方法應用于鑒黃業務模型上,得到如下結果,我們采用FPR=1%時對應的TPR值作為名額:
五 總結
主動學習能通過挑選最有價值的訓練樣本加入訓練集,提升模型性能。我們從主動學習的思路入手,設計了一套能一次性挖掘到數十萬樣本的主動學習方法HW,提升了業務模型的性能。
六 問題與展望
本次實踐中還有很多問題懸而未決,例如:
- "髒資料比例"的方法和經驗是否具有普适性?應用噪聲學習方法能否進一步提升該業務模型的性能?
- 除了使用一步到位挖掘到足量訓練資料的方式,能否通過多輪挖掘和訓練,犧牲點挑選效率,換取進一步的模型性能的提升?
問題總比看見的多,歡迎大家交流指教。
參考文獻
[1] B. Settles, “Computer Sciences Active Learning Literature Survey,” Act. Learn. Lit. Surv., no. January, 2009
[2] H.S. Seung, M. Opper, and H. Sompolinsky. Query by committee. In Proceed- ings ofthe ACMWorkshop on Computational Learning Theory, pages 287–294, 1992
[3] J. Phan, M. Ruocco, and F. Scibilia, “Dual Active Sampling on Batch-Incremental Active Learning,” 2019.
[4] Melville P, Mooney R J. Diverse ensembles for active learning[C]//Proceedings of the twenty-first international conference on Machine learning. ACM, 2004: 74.
[5] Huang S J , Jin R , Zhou Z H . Active Learning by Querying Informative and Representative Examples[C]// IEEE, 2014:1936-1949.