本文從不平衡學習的基礎概念和問題定義出發,介紹了幾類常見的不平衡學習算法和部分研究成果。總體來說,不平衡學習是一個很廣闊的研究領域,但受筆者能力和篇幅的限制,本文僅對其中部分內容做了簡單概述,有興趣深入學習或研究的讀者可以參閱下文所列參考文獻或其他相關資料。來自: 哈工大訊飛聯合實驗室
3.5 不平衡學習算法的實際應用效果對比
上面4小節已經給出了很多針對數據不平衡問題的處理算法,下面將對這些算法的實際應用效果進行對比,本節的所有數據與圖表都來自于Buda, M.等人于2017年發表在Arxiv上的文章《A systematic study of the class imbalance problem in convolutional neural networks》。

圖 3.10 數據不平衡的形式。(a)和(b)為階梯性不平衡,(c)為線性不平衡。
在這篇文章中,作者定義了2種數據不平衡的形式:階梯性不平衡和線性不平衡,兩種形式見圖 3.10。評價指標為ROC AUC,實驗了四種不平衡學習算法:
1)隨機過采樣
2)隨機降采樣
3)使用隨機過采樣方法預訓練CNN模型,然后再使用原始數據集對模型最后一層做微調
4)使用隨機降采樣方法預訓練CNN模型,然后再使用原始數據集對模型最后一層做微調
作者在MNIST、CIFAR-10和ImageNet這3個數據集上分別進行了實驗,實驗配置均在下表中列出:

3.5.1 在階梯性不平衡數據上的實驗結果

圖 3.11 在階梯狀不平衡數據上,隨不平衡比例變化的各個算法的表現。(a)(b)(c)為在MNIST上的結果,(d)(e)(f)為在CIFAR-10上的結果
從圖 3.11中可以看到:相比于簡單任務(MNIST),數據不平衡對CNN在復雜任務(CIFAR-10)上的表現影響更大;隨機過采樣方法在幾乎所有情況下都要優于其他方法。

圖 3.12在階梯狀不平衡數據上,隨少數類數量變化的各個算法的表現。(a)(b)(c)為在MNIST上的結果,(d)(e)(f)為在CIFAR-10上的結果
從圖 3.12中也可以看出:使用隨機過采樣之后效果幾乎始終優于原始的不使用任何不平衡學習算法的效果;預訓練方法的效果始終介于非預訓練方法和原始方法之間。
3.5.2 在線性不平衡數據上的實驗結果

圖 3.13 線性不平衡數據上的實驗效果
從圖 3.13可以看出:隨機過采樣對于實驗效果始終有促進能力;隨機降采樣的效果則會隨著不均衡比例的提升而逐漸下降。

上表給出了作者在ImageNet上的實驗效果,可以看到,隨機過采樣方法還是始終優于隨機降采樣方法,但要差于不使用任何不平衡學習算法的Baseline方法。因為,我們在將采樣方法應用于復雜任務時,需要格外小心。
3.5.4 過采樣/降采樣比例對實驗結果的影響

圖 3.14 過采樣/降采樣比例對實驗結果的影響
從圖 3.14可以看到:隨機過采樣方法會在過采樣到各類別完全均衡的情況下取得較好效果;隨機降采樣方法所需的較佳降采樣比例則隨著數據變化而變化。
3.5.5 對采樣方法泛化能力的研究

圖 3.15 在CIFAR-10 階梯性不平衡數據集上的實驗結果
圖 3.15比較了不使用任何不平衡學習算法、隨機過采樣和隨機降采樣的泛化能力。從圖中可以看出,對于該任務中使用的CNN模型,隨機過采樣方法可以在測試集上取得最優的分類準確率,并且不會導致更嚴重的過擬合。
4、不平衡學習的成果
上一節給出了不平衡學習算法的分類、幾個經典算法的介紹和性能比較。本節將關注不平衡學習的研究進展,著重介紹兩篇論文:
1)Lin, H.等人2018年發表在ACL上的《Adaptive Scaling for Sparse Detection in Information Extraction》
2)Huang, C.等人2016年發表在CVPR上的《Learning Deep Representation for Imbalanced Classification》
4.1 《Adaptive Scaling for Sparse Detection in Information Extraction》
4.1.1 引言
檢測任務是信息抽取領域非常常見的任務,典型的任務如命名實體識別、關系抽取和事件檢測等。在做檢測任務時,我們可以把待檢測的標簽作為正例,其他標簽作為反例,從而將檢測任務轉換為標準的分類任務。在這種分類任務中,一般使用交叉熵作為損失函數,正例的F值作為評價指標。由于正例(待檢測的標簽)往往非常稀疏,因此這是一個數據不平衡的分類任務。

可以看到,在計算F值時,正例和反例并非是等價的,這導致評估指標和優化目標出現了背離。因此在設計模型訓練方法時,需要考慮到這種差異,盡量保證訓練目標與評估指標的一致性。
一種做法是使用cost-sensitive的方法,對不同類別樣本設置不同的損失權重,但在權重的設置上,過去的研究一般是手動設置或者是在大規模數據集上多次實驗搜索得到,這些方法費時費力而且可遷移性較差。論文針對這一問題,提出一種自適應調整權重的算法,稱為Adaptive Scaling。
4.1.2 Adaptive Scaling
Adaptive Scaling算法借鑒了經濟學中的邊際效用理論:指每新增(或減少)一個單位的商品或服務,它對商品或服務的收益增加(或減少)的效用。在分類任務中,將邊際效用理論中的“商品或服務”替換為分類樣本,收益即為評估指標(F值),此時的邊際效用定義為:每新增(或減少)一個分類正確(錯誤)的樣本,它對評估指標F值增加(或減少)的效用。由此,可以使用每個類別對F值的邊際效用作為其重要程度的衡量。
實際計算時,可以將評估指標對TP和TN的偏導值作為正例和反例的邊際效用值。如果是把Accuracy作為目標,計算正例和反例的邊際效用可以得到:
可以看到,當把Accuracy作為目標時,正例和反例的邊際效用始終是恒定而且相等的,如果是將F值作為目標,可以得到:

這樣就得到了能夠自動在訓練過程中調整樣本權重的Adaptive Scaling算法,而且該算法不需要引入任何額外的超參數。相比于傳統的cost-sensitive方法,其特點在于:
1)正例和反例的相對重要程度既與正反例的比例有關,也會受到當前模型的分類能力影響
2)反例的重要性會隨著正例分類準確率的提升而增加
3)反例的重要性也會隨著反例分類準確率的提升而增加
4)當precision比recall更重要時,反例的重要性也會增加
4.1.3 Batch-wise Adaptive Scaling
在訓練神經網絡時,最常用的是batch-wise的方法,如果用TP和TN在當前batch下的預測值作為近似,我們就得到了Batch-wise Adaptive Scaling算法。
具體來說,當前batch下,TP和TN的近似值按照下式計算:

再忽略掉PE對結果的影響(比較微弱),得到:

由此,在每個batch訓練時,首先可以根據前向預測結果估計得到正例和反例的相對權重,然后計算cost-sensitive的交叉熵損失,最后反向傳播更新模型參數。
可以將Batch-wise Adaptive Scaling視為一個插件,運行在前向預測和反向傳播之間,不會影響到前后流程的正常運行。
4.1.4 實驗驗證

圖 4.1 實驗效果驗證
論文在事件檢測任務上進行了驗證實驗。測試數據為TAC KBP 2017 Event Nugget Detection Evaluation(LDC2017E55)官方提供的驗證集,包含167篇英文文檔和167篇中文文檔。
圖 4.1給出了多種算法的效果比較,可以看到,Adaptive Scaling(A-Scaling)算法幾乎在各項指標上都達到了State-of-the-Art的效果。

圖 4.2 穩定性分析
圖 4.2給出了多次實驗下,不同算法結果的穩定性比較,同樣可以看到,Adaptive Scaling算法在穩定性上也要好于傳統的采樣方法或者代價敏感型方法,尤其是在數據不平衡程度更高的中文數據集上,Adaptive Scaling表現明顯更加穩定。
4.2 《Learning Deep Representation for Imbalanced Classification》
4.2.1 引言
計算機視覺領域的很多數據集都存在數據不平衡的問題。例如在人臉識別任務中,正例和反例的數據就極為不平衡。傳統的應對數據不平衡的算法有采樣方法和代價敏感型方法等,這些方法在經典的“淺層”機器學習算法上已經有充分的研究,但在深度學習模型上還缺乏系統的研究。
針對計算機視覺領域的數據不平衡問題,論文提出一種在不平衡數據下的更有效的深度表征并結合kNN做分類的算法:Large Margin Local Embedding (LMLE)-kNN(LMLE-KNN)。該算法包括2個步驟:首先使用CNN模型從不平衡數據集中學習得到每個樣本的深度表征(embedding向量),然后使用改進的k近鄰分類算法對embedding向量分類。
4.2.2 從不平衡數據中學習深度表征
給定一個數據不均衡的計算機視覺數據集,論文希望先對每個樣本學習一個embedding向量表示f(x),學習到的embedding既具有區分性又能不包含本地的類別不均衡。為了實現這一目標,論文首先從不平衡數據中采樣獲取多個五元組,如圖 4.3所示。

圖 4.3 (a)傳統的三元組表示 (b)五元組表示

相比于傳統的三元組方法,這種五元組方法的優勢在于:
1)五元組包括四個距離,這四個距離的大小需要滿足一定的排序關系,這種排序關系可以提供更加豐富的信息和更強的約束。
2)盡管在做五元組采樣時,我們會限制錨樣本的采樣概率分布使得來自少數類和多數類的數量盡量均衡,這種做法與降采樣有些類似。但與降采樣不同的是,由于這個采樣過程會重復很多次,所以實際上并不會有降采樣的信息丟失。
為了滿足五元組四個距離的不等式要求,論文設計了一種三頭的Hinge loss,表示如下:

這個損失函數應用了Large Margin的思想,引入3個松弛變量限制了五元組四個距離的3個間隔。
論文使用CNN來生成對每張圖片的深度表征,圖 4.4示意了該CNN的的訓練方法。

圖 4.4 CNN模型訓練
訓練時,五元組的五個樣本分別由同一個CNN做編碼,獲得5個embedding向量,然后計算三頭的Hinge loss,最后經過反向傳播更新CNN參數。

圖 4.5 整體訓練流程
圖 4.5給出了訓練獲得樣本數據深度表征的整體流程。
4.2.3 kNN不平衡數據分類
使用上一小節訓練的CNN,可以獲得對于數據集中每個樣本的深度表征,在此基礎上,論文設計了一種基于聚類cluster的kNN分類算法,用于做最終的分類。由于這一部分的算法與本文“不平衡學習”的主題沒有關聯,這里不再贅述,有興趣的讀者可以參閱Huang, C.等人的公開論文。
4.2.4 實驗結果
論文在CelebA面部特性識別和BSD500邊緣檢測兩個數據集上進行了實驗,并與State-of-the-Art的方法做了比較。

圖 4.6 CelebA上的實驗結果。Imbalance level的值越大,該特性數據的不平衡程度越高;評估指標為balanced accuracy=(TP/P + TN/N)/2。

圖 4.7 隨數據不平衡程度增加的相對性能提升變化
圖 4.6和圖 4.7分別給出了在CelebA數據集上的實驗效果比較和隨數據不平衡程度增加的相對性能提升變化。可以看到,LMLE-kNN的分類效果明顯優于其他State-of-the-Art方法,并且數據不平衡程度越高,LMLE-kNN在效果上的提升更加明顯。

圖 4.8 BSD500上的實驗結果
圖 4.8給出了在BSD500上的實驗結果,LMLE-kNN算法同樣取得了與State-of-the-Art方法相當的效果。需要說明的是,圖中的HFL、HED等方法都使用了大型的VGGNet模型,而LMLE-kNN只使用了一個小型的6層CNN。

圖 4.9 一個邊緣檢測的例子。從左到右依次為原始圖像、理想結果、Sketch Token、DeepContour和LMLE-kNN的檢測結果
圖 4.9給出了一個具體的邊緣檢測例子,相比于其他算法,LMLE-kNN算法不會受到太多噪聲邊緣的影響。
5、總結
本文從不平衡學習的基礎概念和問題定義出發,介紹了幾類常見的不平衡學習算法和部分研究成果。總體來說,不平衡學習是一個很廣闊的研究領域,但受筆者能力和篇幅的限制,本文僅對其中部分內容做了簡單概述,有興趣深入學習或研究的讀者可以參閱下文所列參考文獻或其他相關資料。