周博文,皋 軍
(1.江蘇科技大學 計算機學院,江蘇 鎮(zhèn)江 212032;2.鹽城工學院 信息工程學院,江蘇 鹽城 224000)
神經網絡算法因其強大的性能被廣泛應用,但也存在明顯不足:一個大型的神經網絡模型往往需要調試大量參數,調參工作耗時耗力,而且對訓練模型使用的數據有一定數量要求。Zhou 等[1]提出的深度森林(Deep Forest,DF)模型能在一定程度上緩解上述問題。
但是,傳統(tǒng)模型由于自身的限制而存在不足:①在多粒度掃描階段,需轉換的特征子集是按滑動窗口依次選取,顯然第一維的特征只被掃描到一次,第二維的特征被掃描到兩次……樣本后端的特征同理,所以傳統(tǒng)模型在此階段未充分得到待轉換的特征子集,在一定程度上忽略了樣本兩端特征。假如兩端特征很重要,則無法充分利用[2];②級聯階段只將上一層級生成的類概率向量作為強化特征,忽視了之前生成的類概率向量,并且強化特征的差異性有限,最后求結果時又僅是簡單的求和求平均,使得較低準確率的子分類器和較高準確率的子分類器具有相同權重,沒有重視分類器的權重對后續(xù)產生的類概率影響,一定程度上降低了模型性能。
深度森林及其改進模型因其強魯棒性和方便性被應用在多個領域。文獻[2]提出了深度堆疊森林,隨機抽取特征子集進行特征轉換,并且對二分類任務去除冗余特征,將其應用在檢測軟件缺陷任務中,但不能保證選中的特征子集中恰恰包含重要度大的特征;文獻[3]提出雙視角、深層掃描結構,效仿人眼關注一張圖片時的情形,把圖像中心點作為基準,根據圖片周圍區(qū)域與中心點之間的距離賦予不同的關注度,距離越小則權重越大,將其用于檢測火焰;文獻[4]指出傳統(tǒng)深度森林模型在級聯過程中,級聯特征本身的有效性會不斷退化,從而導致分類性能波動,作者把這種現象稱為疏通連貫性。提出一種全級聯方法,將每層的特征向量級聯到原始特征中;文獻[5]認為全級聯方法加大了時間和空間開銷,故在此基礎上繼續(xù)改進,對之前每層生成的類向量求和取平均值,并且引入Ad?aBoost 思想,不再關注每個文本,而是關注每個特征,改進后的算法應用在情感分類任務上;文獻[6]將RPN 候選區(qū)域網絡并入深度森林模型中實現船體目標檢測任務;文獻[7]改進了深度森林處理小樣本生物數據能力,首先使用不同組的數據訓練并集成模型,校正誤差,給不同的特征賦予不同權重,而且自動確定決策樹參數,算法有效實現了癌癥分類;文獻[8]提出隱語義模型結合深度森林構造隱式融合特征并增加級聯子分類器的差異性,將其應用在人力資源推薦任務中;文獻[9]為了解決深度森林在不平衡數據中的弊端,提出OSEEN-gcFore 算法,解決了原模型在多數類樣本中的過度學習問題并應用在用戶流失預測中;文獻[10]通過特征融合代替細粒度掃描并在級聯過程中自動改變樣本權重,將改進模型應用在近紅外光譜分類中;文獻[11]提出加權的深度森林,對子分類器中的子樹投票機制做出改進,給準確率高的子樹賦予更大權重;文獻[12]通過在多粒度掃描部分增加深度結構,將轉換后的特征與原始特征級聯,結合傳統(tǒng)的目標檢測方法執(zhí)行小目標檢測任務;文獻[13-17]將傳統(tǒng)深度森林算法應用在不同任務中。
由于深度森林的子分類器是隨機森林和完全隨機森林,且子分類器是根據最優(yōu)劃分特征屬性對樣本進行分類的,故可以先通過隨機森林計算特征重要度。理論上原始特征向量中較重要的特征轉換出的類概率作為新特征時也應具有重要的參考價值,所以從兩個階段改進:①針對忽視樣本兩端信息問題,提出一種特征重排序的掃描方法,重要特征盡量集中在中部,保證可以被多次利用,避免了文獻[2]抽取特征過于隨機的問題;級聯階段為了重視每層的類概率向量及特征差異性,選取之前生成的類概率之差作為增強向量,這樣可以使每次級聯的增強特征都與上層保持差異,一定程度上緩解了網絡退化現象;②遵循“好而不同”的集成思想,引入線性邏輯回歸分類器,增加分類器的差異性。最后的投票階段加入softmax 層,根據每個分類器的準確率來賦予不同的權重。
深度森林模型和神經網絡算法類似,通過多級多層結構進行非線性映射來提高模型的表征學習能力和泛化能力。第一階段,多粒度掃描森林可以將原始的樣本特征進行特征轉換,并重組成為更加有效的特征,進而提高第二階段級聯森林的分類能力。原始的樣本經過不同大小窗口的掃描生成更加豐富多樣的特征子集,特征子集作為輸入進入分類器,產生對應的類概率向量,將其作為新的特征拼接成為級聯森林的輸入,過程如圖1、圖2 所示。
Fig.1 Multi-granularity scanning image data圖1 多粒度掃描圖像數據
Fig.2 Multi-granularity scanning sequence data圖2 多粒度掃描序列數據
假如圖像數據大小為n×n,那么首先會按照m×m尺寸大小選擇子窗口,從而生成(n-m+1)2個子窗口;接著把每個子窗口分別送入一個隨機森林和一個完全隨機森林。若任務是c分類的話,每個窗口就會生成一個c維的類概率向量,總共就會生成2(n-m+1)2個類向量。將這些向量拼接,成為一個1×2c(n-m+1)2的輸入向量,相當于把n×n的圖像數據轉換成1×2c(n-m+1)2的序列數據。
序列數據的轉換與圖像數據類似。假若數據是1×n,先按照1×m的窗口滑動選取子特征集,產生n-m+1 個窗口,類似圖像掃描會產生2(n-m+1)個類概率向量,拼接成為一個1×2c(n-m+1)的序列數據。
級聯階段通過引入增強特征來提高表征學習能力,其輸入是經過多粒度掃描階段轉換后的概率特征,若是低維數據,也可直接將原始特征作為輸入。進入每層的訓練層,通過交叉驗證來訓練分類器,以此避免過擬合現象。然后驗證當前層的分類準確率。若層數達到了最大值或者準確率在預先設定的層數閾值內未提升,則停止進入下一層級。在對測試集數據進行驗證時,會級聯到訓練層數最高的一層停止,并把最后一層每個分類器生成的類概率向量求和取平均,根據投票結果預測最終類別。假如多粒度掃描階段轉換后的特征是m維向量,且是c分類任務,那么首先經過隨機森林和完全隨機森林產生4c維的類概率向量,后續(xù)層的輸入為原始特征與4c維特征級聯,共m+4c維。級聯階段如圖3 所示。
Fig.3 Cascade forest圖3 級聯森林
不難發(fā)現,原始深度森林模型在多粒度掃描階段一定程度上忽視了邊緣數據特征,若樣本是n維數據,選取子特征集的窗口大小為m,m>2,則首先被選中的特征子集是從第一維到第m維,接下來被選中的是從第二維到第m+1 維……顯而易見,第一維的特征只被掃描了一次,第二維的特征被掃描了兩次,樣本后端的特征同樣面臨這個問題。只有從第m維到第n-m+1 維,每一維的特征才能夠被充分選中并且進行特征轉換。級聯森林在特征向量更新時,每一層得到的新特征有限,僅考慮到了一層的類概率向量,且在首次級聯后,后續(xù)的特征差異性較小,表征學習能力得不到有效提高,且在投票階段忽略了子分類器的權重。RFDF 從兩個階段分別做出改進,首先通過特征重排序對邊緣數據加以重視,然后考慮到多層的類概率向量并加強差異,增大子分類器的差異性,在投票階段引入soft?max 層來根據準確率賦予子分類器不同的權重。
傳統(tǒng)的深度森林模型在多粒度掃描階段進行特征轉換時,由于模型自身的局限性,不可避免地會忽略樣本兩端所攜帶的部分信息。在窗口掃描過程中,兩端信息不能被充分提取,無法轉換成類向量,從而使含有邊緣特征的部分子集被忽略,從而造成轉換不充分問題。若被忽略的邊緣特征可轉換出較有效的新特征,同時這個更加具有參考價值的新特征只出現一次,則明顯會對生成的概率向量產生一定影響。同時,隨著級聯森林層數的增加,影響逐漸變大,最終導致分類結果出現偏差。若樣本的重要特征存在于數據兩端,那么理論上,由此轉換生成的新特征也會有較大的重要度。文獻[2]通過隨機抽樣來解決這一問題,使每個特征有同樣的機會被選中,但是也不能保證隨機抽取得到的特征子集包含較大重要度的特征,還會由于每次隨機抽到的特征不同造成分類準確率的起伏不定。如果特征屬性很多而抽取的特征有限,就會使模型不夠穩(wěn)定,隨機性較大,因此提出特征重新排序的方法應對此問題。由于深度森林模型的基本組件是隨機森林和完全隨機森林,都是根據基尼指數來劃分特征屬性,而隨機森林的feature_importances_函數也是根據基尼指數來計算數據樣本每個特征的重要度,因而可使用此函數挑選出原始樣本中較重要的特征并將其盡量放在樣本中間,使重要特征被多次選中并轉換出具有較大重要度的新特征,提高生成新特征的質量,構建出較有效的新特征屬性。由于圖像和語音等數據特征之間彼此存在著密切聯系,若進行特征重排序必定會打破原有特征之間的關聯,起到相反的作用,故此算法不太適用于特征之間有關系的數據。具體方法如圖4 所示。
Fig.4 Reorder scan forest圖4 重排序掃描森林
首先通過隨機森林分類器自帶的封裝函數feature_im?portances 來判定數據樣本中每個特征的重要程度,然后根據特征屬性的重要度進行重新排序,將重要度較高的特征盡可能地放到中間,使其能被多個特征子集包含,這樣就提高了特征子集轉換出的對應準確率,換言之在一定程度上提高了轉換出的特征質量,為后續(xù)的級聯打下基礎。
傳統(tǒng)的深度森林模型在進行特征更新時,僅僅選取在前一個層級生成的類概率向量作為增強特征,未考慮到之前每一個層級生成的類概率向量,沒有給予這些類概率向量足夠的重視,文獻[5]稱此問題為疏通連貫性。為了防止信息削弱就級聯之前每一層的類概率向量,但是隨之引發(fā)的問題也很明顯:隨著層次的深入增加了額外的空間開銷,降低了模型的運行效率,而且在最終的投票階段依然是默認每個子分類器具有相同的權重,對各分類器的結果簡單求和取平均。為解決此問題,提出一種加權級聯森林,首先在選擇增強特征時,為了進一步加強級聯新特征的差異性,防止網絡性能退化,算法會選取之前層次類概率的差作為增強的特征和原始特征級聯,并且加入不同于樹形分類器的邏輯回歸分類器,加大了子分類器之間的差異;其次在匯總最終結果時引入softmax 層對分類器賦予不同的權重。原始賦值見式(1):
改進后見式(2):
其中,Ci(i=1,2,……,n)為子分類器權重,yi(i=1,2,……,n)是子分類器產生的類概率,Ci計算公式見式(3):
其中Zi是當前分類器的準確度,要確保概率和相加為1。
算法1 加權級聯森林
Xs(i-1,…,0)代表(i-1)層概率向量減去之前每層向量的差,得到的概率差作為增強特征。第0 層的輸入是多粒度森林輸出,第1 層的輸入是第0 層的輸出和原始向量的拼接。從第2 層起,拼接前會求出與之前層的概率差,作為新的特征向量與原始向量拼接,進行特征更新。當模型的層數達到預先設置的閾值或準確率無明顯提高時則停止生成下一層。投票時自動調整權重,過程如圖5 所示。
算法2 完整RFDF
訓練階段:
Fig.5 Weighted cascade forest圖5 加權級聯森林
高維數據集為二分類任務影評數據Imdb[18]數據集,人工數據集Madelon[19]數據集;低維數據集選擇收入預測數據Adult[20],二分類;字母識別數據Letter[21],二十六分類;酵母菌種類預測數據Yeast[22],十分類,數據劃分比例為0.8 和0.2。由于原數據集過大,故實驗選擇部分數據,如表1所示。
Table 1 Data sets used in the experiment表1 實驗所用數據集
目前有多種深度森林改進算法,文獻[2]和文獻[3]對第一階段改進,但后者僅對于處理圖像數據時作出改進,適用性有限,故本文的對比實驗選擇文獻[2]中提出的算法參與對比實驗。高維數據集對比實驗4 種算法,分別是DF 算法、文獻[2]、文獻[5]以及RFDF 算法。低維數據無須多粒度掃描。文獻[2]和文獻[4]的算法在級聯階段改進方法相同,僅在二分類任務時有所不同,故本實驗在低維數據集上的算法共4 種,分別為DF 算法、文獻[4]、文獻[5]的算法以及RFDF。
為了得到更好的排序效果,避免偶然性,在計算特征重要度時進行20 次計算,取交集特征,而且訓練數據的樣本量在可接受范圍內,所以實驗選取所有訓練數據來計算特征屬性的重要度。高維數據實驗包括50 棵子樹,隨機森林隨機選取的特征數為√d(d 為特征數量)。公平起見,實驗采用與傳統(tǒng)模型同樣的窗口設置,數據集的窗口大小分別為d/4、d/8、d/16,且文獻[2]模型每次抽取的窗口大小和抽取窗口次數都應與傳統(tǒng)深度森林模型相同。多粒度掃描森林中,隨機森林和完全隨機森林個數為1,3 折交叉驗證;低維數據級聯森林中,每層包含2 個隨機森林、2 個完全隨機森林和一個邏輯回歸分類器,隨機森林包括100 棵子樹,數據均采用5 折交叉驗證。窗口設置如表2 所示。
Table 2 High-dimensional data set window size表2 高維數據集窗口大小
計算機配置如下:軟件環(huán)境為Windows 10 系統(tǒng)下的Python3.5,Intel(R)Pentium(R)Gold G5400,3.70GHz,8GB內存。
4.4.1 高維數據結果
高維數據原始樣本的特征重要度分布如圖6、圖7所示。
Fig.6 Imdb data feature importance(Ⅰ)圖6 Imdb 數據特征重要度(一)
Fig.7 Madelon data feature importance(Ⅰ)圖7 Madelon 數據特征重要度(一)
從圖6、圖7 中可直觀地看出,Imdb 數據集較重要的特征大多數集中在后面部分,Madelon 數據集中特征重要度分布不均,兩端同樣有少許較重要特征。在經過特征重排序后樣本的特征重要度分布如圖8、圖9 所示。
Fig.8 Imdb data feature importance(Ⅱ)圖8 Imdb 數據特征重要度(二)
Fig.9 Madelon data feature importance(Ⅱ)圖9 Madelon 數據特征重要度(二)
圖8、圖9 表明,經過排序之后,較重要的樣本數據特征被盡可能地排在了中間部分。
Fig.10 Comparison of the accuracy of Imdb data圖10 Imdb 數據準確率對比
Fig.11 Comparison of the accuracy of Madelon data圖11 Madelon 數據準確率對比
圖10、圖11 表明,Imdb 數據集在傳統(tǒng)深度森林模型上的準確率約為49.67%,文獻[2]模型上的準確率約為47.83%,文獻[4]模型上的準確率約為49.92%,所提算法最高可達51.63%;Madelon 數據集在傳統(tǒng)深度森林模型上的準確率約為60.50%,文獻[2]模型上的準確率約為59.34%,文獻[4]模型上的準確率約為60.83%;所提算法最高可達67.34%。文獻[2]算法的準確率較低,究其原因是因為隨機抽取模型特征,數據樣本維數越多模型的隨機性就會越大,對模型的影響也越大,進而導致模型的準確率起伏不定。RFDF 算法將較重要特征放在中間,增加了其在特征子集中出現的次數,一定程度上提高了新特征質量,文獻[4]和傳統(tǒng)算法基本持平的原因在于二者在掃描階段時方法相同,故轉換的特征向量也基本相同,所以模型性能提高有限。
4.4.2 低維數據結果
圖12-圖14 為低維數據結果。
Fig.12 Accuracy of Adult data圖12 Adult 數據的準確率
Fig.13 Accuracy of Letter data圖13 Letter 數據的準確率
Fig.14 Accuracy of Letter data圖14 Yeast 數據的準確率
圖12-圖14 表明,低維數據集在4 種算法上的準確度基本持平,約為86.26%、86.32%、86.23%、86.43%;Letter 數據集在4 種算法上的準確度約為97.31%,97.38%,97.45%,97.44%;Yeast 數據集在4 種算法上的準確度約為61.62%,61.58%,61.28%,61.61%,并且波動較大,主要原因是此數據集的特征維數較少,并且訓練樣本不夠多;大量實驗發(fā)現,傳統(tǒng)DF 在原始特征和類概率首次拼接時,準確率會得到較明顯提升。深入之后的層級總體呈現下降趨勢,出現網絡退化現象;而RFDF 由于加大了特征差異以及引入加權思想,故一定程度上緩解了此現象。準確率最高的層數如表3 所示。
Table 3 Number of layers with the highest accuracy表3 準確率最高的層數
實驗結果顯示,傳統(tǒng)的深度森林模型平均第2 層最準確,文獻[4]的模型平均為3 層,文獻[5]算法平均為2.3 層,RFDF 平均為2.3 層。由此可知,對于低維數據,4 種改進模型性能都較高,文獻[4]的算法收斂略慢。總體來說,低維數據自身的維數較少,特征不夠有效,不能較準確地對相似數據進行有效分類。實驗結果如表4、表5 所示。
Table 4 High-dimensional data experiment results表4 高維數據實驗結果 (%)
Table 5 Low-dimensional data experiment results表5 低維數據實驗結果 (%)
針對傳統(tǒng)深度森林算法在兩個階段的不足分別進行改進,提出一種特征重排序的加權深度森林。首先將重要度較大的特征屬性盡量排在中間部分,增加重要特征被選中的次數,以此轉換出質量較高的新特征;級聯時加入邏輯回歸分類器,提高分類器的差異性,然后把概率類向量的差值作為增強特征,使新特征的差異性進一步增大,并在最終投票時引入softmax 層來根據子分類器的準確率自動調整權值。在數據集上的實驗證明,此方法一定程度上能夠提高深度森林模型性能。但是模型也存在不足,如在多粒度掃描森林之前會首先計算數據樣本的特征重要度并且重新排序,這無疑增加了時空復雜度;對于低維數據模型性能提高有限。后續(xù)將在如何降低掃描階段的時空復雜度以及如何更有效地提高模型處理低維數據的準確度上展開研究。