一 背景介紹
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.