繆澤鑫,張會生,任 磊
(1. 大連海事大學信息科學技術學院,遼寧 大連 116026;2. 大連海事大學理學院,遼寧 大連 116026)
AdaBoost是一種重要的集成學習算法[1]。它首先從弱學習算法出發(fā),通過反復學習得到一組弱分類器,最終將弱分類器組合成強分類器。其思想是:對于復雜任務而言,將多個專家的判斷進行適當綜合而作出的判斷,往往要比其中任何一個專家的單獨判斷好。AdaBoost有很多良好特性:首先弱分類器權重可以通過計算得到而非人工調整;其次在數(shù)學上可以證明隨著訓練次數(shù)的增加,訓練誤差以指數(shù)速率下降[1]。正因如此,它已被廣泛應用于人臉識別、目標檢測等領域。AdaBoost的學習過程可以分成三個步驟:①找到若干個誤差相互獨立的弱分類器;②訓練得到弱分類器的權重;③弱分類器合并得到最終的強分類器。
廖紅文等人[2]對AdaBoost及其改進算法進行綜述,他們介紹了AdaBoost算法在權值更新方法上的研究進展,指出原始AdaBoost算法在弱分類器權重和樣本權重的訓練問題上存在缺陷。
從數(shù)學上看,AdaBoost的弱分類器參數(shù)的設定可以看作函數(shù)空間中的梯度下降算法[3],它在每一步選擇與負梯度下降方向最接近的分類器作為下降方向,并用精確線搜索確定下降步長。這種計算方法本質上是一種貪心算法,即只根據(jù)當前樣本的分布來搜索使得誤差下降最快的方向和步長,但在全局上并不一定能保證最優(yōu)。針對該問題,蔣焰等人[4]認為訓練樣本的分布不僅與當前分類器有關,而且也需要考慮前面的若干分類器。他們進而提出的新算法在每一個分類器集成進來后會對前面產生的某些分類器權重進行修正,所以前面訓練好的弱分類器的權重不再是固定值,而會根據(jù)整體性能進行調整。
從實際問題出發(fā),李闖等人[5]指出弱分類器的加權參數(shù)不但與錯誤率有關,還與其對正樣本的識別能力有關,并在此基礎上提出AD AdaBoost算法。該算法采用更為有效的參數(shù)求解方法,使其在目標檢測問題上具有更好的效果。Richard Machlin[6]認為后來的分類器更關注于之前沒有被正確分類的樣本,因此可以猜想到之后的分類器在某些類別的樣本上表現(xiàn)很好,而在其它類別的樣本上表現(xiàn)一般。所以對于一個分類器來說,不考慮其對樣本擅長處理與否而使用相同的權重,是不合理的。針對該問題,其提出的RegionBoost算法能對弱分類器權重進行動態(tài)調整。
在樣本權重的調整問題上,對多次分類錯誤的樣本,弱分類器會不斷增加其權重進而導致過擬合。針對該問題,Allende等人[7]提出了RADA算法,通過對誤分類樣本的權重作閾值限制,有效解決了誤分類樣本權值偏高的問題。Yunlong[8]提出的EAdaBoost算法則先用KNN剔除噪聲樣本再進行樣本訓練。
不同于上述分別單獨從樣本的權重調整或弱分類器的權重調整的角度對AdaBoost開展的研究,本文考慮將樣本和弱分類器的權重優(yōu)化納入統(tǒng)一框架,提出引入注意力機制的AdaBoost算法。這里注意力機制的思想是:對于損失函數(shù)的優(yōu)化而言,每一個樣本和分類器所提供的貢獻是不同的,因此可利用神經(jīng)網(wǎng)絡強大的自學習能力,為樣本和弱分類器的重要程度自動打分。此模型不僅通過對損失函數(shù)引入關于樣本權值的L2正則項來控制錯分類樣本權重的過分增長,而且為弱分類器的動態(tài)調整問題提供了除多步校正算法[4]外的另一途徑。
AdaBoost算法的具體流程[1]如下:
設訓練數(shù)據(jù)集T={(x1,y1),(x2,y2),…,(xN,yN)},其中xi∈X?Rn,yi∈Y={-1,+1}。初始化訓練集的權重分布
對m=1,2,…,M
(a)使用具有權值分布Dm的訓練數(shù)據(jù)集學習,得到基本分類器
Gm(x):X→-1,+1
(b)計算Gm(x)在訓練數(shù)據(jù)集上的分類誤差率
(1)
(c)計算Gm(x)的權重系數(shù)
(2)
(d)更新訓練數(shù)據(jù)集的權值分布
Dm+1=(wm+1,1,…wm+1,i,…,wm+1,N)
(3)
(4)
這里Zm是規(guī)范因子,
(5)
得到基本分類器
(6)
和最終的分類器
(7)
其中sign(f(x))是使得結果為1或-1的符號函數(shù)。
機器學習中的注意力機制[9]源自于人類視覺的注意力機制:將有限的注意力集中在重點信息上,從關注全局到關注重點,從而節(jié)省資源,快速獲得最有效的信息。從注意力機制的實現(xiàn)角度,可將其理解為一種權重參數(shù)的分配機制,目標是協(xié)助模型捕捉重要信息。
目前注意力機制已經(jīng)應用到越來越多的領域,如在機器翻譯[10]中引入注意力機制,只關注與當前狀態(tài)有關的上下文,提高了翻譯系統(tǒng)的準確度。在推薦系統(tǒng)方面,通過在原始的FM模型[11]上加上一個注意力層來自動調節(jié)二階特征的權重,AFM模型[12]相比FM模型提高了預測準確度。
引入注意力機制的AdaBoost模型結構如圖1所示,其中第一個注意力層用來為樣本打分,第二個注意力層為弱分類器打分后輸出損失函數(shù)。定義損失函數(shù)
(8)
(9)
(10)
其中h1、h2分別是兩個神經(jīng)網(wǎng)絡的全連接層到softmax輸出層的權重向量,W1、b1分別是弱分類器到神經(jīng)網(wǎng)絡全連接層的權值矩陣和偏置向量,W2、b2分別是樣本到神經(jīng)網(wǎng)絡全連接層的權值矩陣和偏置向量。通過softmax層歸一化后樣本和弱分類的注意力得分為
(11)
(12)
模型的具體執(zhí)行過程如下:首先隨機初始化樣本和弱分類器的得分,并將樣本輸入到第一個注意力網(wǎng)絡層中,樣本經(jīng)過注意力層得到新的得分后輸入到第一個弱分類器中,弱分類器對樣本預測后輸入到第二個注意力層中得到損失函數(shù)。利用隨機梯度下降法最小化損失函數(shù)來反向更新樣本和弱分類器的注意力得分。當?shù)谝粋€弱分類器訓練結束后將樣本輸入到第二個弱分類器中,而在第二個弱分類器訓練時綜合考慮當前弱分類器和之前弱分類器的損失,即
floss=f第一個弱分類器的損失+f第二個弱分類器的損失
(13)
并重新更新第一個弱分類器的得分。第一個弱分類器在第二次訓練時只更新弱分類器得分而不改變之前樣本在其上的得分,這樣保證了樣本在不同弱分類器上采用不同的得分。之后每次均采用相同方式更新弱分類器得分。同理在計算第n個弱分類器的注意力得分時會結合之前n-1個弱分類器的損失并更新前n-1個弱分類器的注意力得分。傳統(tǒng)的 Adaboost 算法在訓練弱分類器時每一次都是由貪心算法來獲得局部最佳弱分類器權重,不能確保全局最佳。而本文考慮了整體性,認為新加入的弱分類器會對之前的弱分類器權重產生影響,所以當加入了新的弱分類器后會結合之前所有的弱分類器重新訓練,最終求得一組最優(yōu)的弱分類器權重。模型參數(shù)的學習借鑒了GAN[13]網(wǎng)絡的訓練方式,分為兩個過程。首先固定后半部分,先訓練樣本的權重,當樣本權重收斂后固定前半部分,再訓練弱分類器的權重。
圖1 引入注意力機制的AdaBoost模型
在(8)式中,在損失函數(shù)中引入了L2正則項,下面簡要分析該正則化方法對樣本權重的影響。為方便表述,將(8)式改寫為
(14)
其中
(15)
(16)
由于采用隨機梯度下降法更新參數(shù),對損失函數(shù)關于參數(shù)cj求偏導可得
(17)
此時權值的更新公式變?yōu)?/p>
(18)
(19)
實驗數(shù)據(jù)集分別來自Kaggle的Titanic[14]、信用卡欺詐[15]和員工離職率以及科賽網(wǎng)的銀行精準營銷解決方案[16],數(shù)據(jù)集的具體統(tǒng)計信息如表1所示。實驗在表2所示的實驗環(huán)境中完成。
表1 實驗數(shù)據(jù)集
表2 實驗環(huán)境及配置
通過數(shù)值實驗將本文算法與動態(tài)調整權重算法(MSC-AdaBoost)[4]、RegionBoost[6]以及對樣本作閾值限定的RADA-AdaBoost[7]算法作對比。本文算法采用Cart作為弱分類器,設置最大迭代次數(shù)為100。注意力層采用ReLU函數(shù)作為激活函數(shù)。取各數(shù)據(jù)集前75%的樣本作為訓練集,后25%作為驗證集。首先嘗試將本文算法的正則項系數(shù)設置為0。表3對比了不同隱藏層個數(shù)對模型的影響。從表3可以看出,隨著網(wǎng)絡層數(shù)增加算法的準確率不斷上升,在n=3時本文算法在所有數(shù)據(jù)集上已經(jīng)優(yōu)于文獻中算法。由于n=4時與n=3相比準確率提升較小,但是會額外增加較大計算量,所以接下來的實驗都取三個隱藏層。通過網(wǎng)格搜索找到本文算法在四個數(shù)據(jù)集上的最優(yōu)正則項系數(shù)分別為:0.4,1.2,6.4和3.2,對應的準確率分別為:0.8274,0.9301,0.9524和0.8704。由此可以看出,相比于原始沒有正則項的算法,加入了正則項之后算法準確度有了一定提升。圖2到圖5繪制了隨著弱分類器個數(shù)的增加四種算法在正則項系數(shù)最優(yōu)情況下的誤差變化曲線。從圖中可以看出本文算法的性能整體上優(yōu)于其它三個改進的算法,從而驗證了其有效性。
表3 不同網(wǎng)絡層數(shù)四種算法的對比
圖2 Titanic數(shù)據(jù)集下四種算法的性能對比
圖3 信用卡欺詐數(shù)據(jù)集下四種算法的性能對比
圖4 銀行精準營數(shù)據(jù)集下四種算法的性能對比
圖5 員工離職數(shù)據(jù)集下四種算法的性能對比
針對AdaBoost算法的弱分類器權重無法動態(tài)調整以及對多次分類錯誤的樣本設置過高權重這兩個缺陷,本文提出了結合注意力機制的改進算法,通過引入兩個注意力層,利用神經(jīng)網(wǎng)絡分別為樣本和弱分類器的重要程度打分,實現(xiàn)了弱分類器權重的動態(tài)調整,并結合L2正則化方法有效控制了錯分類樣本權值的大小,數(shù)值實驗驗證了所提算法的有效性。未來工作包括如何將深度學習和打分機制結合來進一步提高算法性能以及將此算法推廣應用到多分類任務中去。