宮振華 王嘉寧 蘇 翀*
1(南京機電職業技術學院 江蘇 南京 211135)2(江蘇科技大學電氣與信息工程學院 江蘇 蘇州 215600)
現時,深度學習網絡模型取得了長足的進步和發展,這一切要得益于大數據時代的到來。雖然深度學習網絡模型為數據分析提供了有力的工具,但其所具有的大量調解參數和復雜的網絡結構都在一定程度上決定了模型的學習效果。此外,由于深度學習網絡模型在訓練時需要大量的訓練樣本,因此,整個過程既耗時又對設備有較高的要求。而深度森林DF是一種基于深度模型提出的級聯隨機森林方法,它具有較少的調節參數,允許使用者可以根據設備的資源決定訓練的耗費,并能自適應地調節訓練模型層數。文獻[1]的實驗結果充分表明,相較于深度學習網絡模型,深度森林取得了更好的分類性能。在結構層面,深度森林由多粒度掃描和級聯森林兩個部分組成[1]。其中,多粒度掃描通過滑動窗口技術獲取多個特征子集,以增強級聯森林的差異性。級聯森林則是將決策樹組成的森林通過級聯方式實現表征學習。可以說,深度森林沿用了深度學習對樣本特征屬性的逐層處理機制,利用多級結構實現表征學習。與深度學習不同之處主要表現在以下幾個方面:
(1) 深度森林的級數是隨著訓練的不斷不深入自動調節的;
(2) 深度森林具有很少的超參數且對超參數不敏感;
(3) 深度森林具有較低的訓練開銷,既適用于大規模數據集,也適用于小規模數據集;
(4) 其結構適用于并行處理。
深度森林在結構上由多級組成,每級分別由隨機森林[2]和完全隨機森林[3]兩種森林組成。就每個樣本而言,每個森林將其各個子樹預測的類概率向量進行算術平均后,作為該森林的預測結果,并與樣本的原始特征向量拼接,作為下一級的輸入。由于森林中各個子樹的預測精度是各不相同的,算術平均會導致子樹的錯誤預測對整個森林的預測產生影響,進而隨著級數增加,有可能使錯誤被進一步放大。為了避免上述影響,本文提出了一種加權的深度森林WDF(Weighted Deep Forest)。主要思想是根據森林中每棵子樹的預測精度計算其相應權重,再對各個子樹的預測概率向量進行加權求和,以提高深度森林的預測精度,降低級聯級數。
深度森林與深度神經網絡都是通過多級結構進行表征學習[4],但深度森林以其簡單的訓練模型以及不依賴于大量數據進行訓練的特點彌補了深度神經網絡的缺點,并逐漸被應用于工程實踐中[5-6]。
深度森林由多粒度掃描和級聯森林兩個部分組成。多粒度掃描主要處理高維數據和圖像數據。假設長度為n的一維特征向量,若使用長度為m的窗口進行滑動且每次滑動一個單位長度,將產生n-m+1個具有m維特征向量的數據子集;類似地,對于一個n×n的二維圖像數據,若使用m×m的窗口進行滑動,每次滑動一個單位長度,將產生(n-m+1)2個具有m×m特征向量的數據子集。這些數據集將分別輸入到1個完全隨機森林和1個隨機森林。對于c個類別的分類問題,經過兩個不同的隨機森林分類后,長度為n的一維特征向量將產生長度為2c(n-m+1)的類向量;類似地,對于一個n×n的二維圖像數據,將產生長度為2c(n-m+1)2的類向量。隨后,這些類向量將被拼接到原始的樣本的特征空間里,作為后面級聯森林的輸入特征。整個多粒度掃描結構如圖1所示。

圖1 多粒度掃描
級聯森林主要由隨機森林和完全隨機樹森林兩種森林組成。森林之間通過層級方式形成級聯結構。對于每一級森林,首先,訓練樣本通過k折交叉驗證,訓練其中各棵子樹,與此同時,每棵子樹對每個訓練樣本給出一個預測的類概率向量;其次,將測試樣本輸入訓練得到的森林,每棵子樹對每個測試樣本也給出一個預測的類概率向量;再次,森林對所有子樹預測的類概率向量按訓練樣本和測試樣本分別計算平均類概率向量;最后,該級的所有森林將所有樣本上的平均類概率向量與樣本的原始特征向量拼接后作為下一級森林的輸入特征。每級結束預測后,會在驗證集上對預測結果進行評估,以決定是否擴展下一級。如果不再擴展,則在已擴展的級中,找出最優評估結果所對應的級,將所有森林在測試樣本上的平均類概率向量算術平均后,取概率最高的類向量作為整個深度森林的預測結果。其中,級聯森林結構和單個森林的結構分別如圖2和圖3所示。

圖2 級聯森林結構

圖3 單個森林結構
深度森林中各棵子樹對應不同的預測精度,簡單的算術平均法,忽略了各棵子樹之間的預測差異,使預測錯誤率較高的子樹對整個森林的預測結果產生較大影響。為此,本文對森林中各棵子樹的結合策略進行改進,提出一種加權的深度森林WDF,其中每個森林的結構如圖4所示。

圖4 單個加權森林結構
假設訓練樣本集T和測試樣本集S的示例個數分別為m和n,類別標記的個數為c,記為L={l1,l2,…,lc}。設森林F包含t棵子樹,記第k棵子樹為Tk(k∈[1,t]),第i個訓練樣本被子樹Tk預測為類lj的概率為pij,則在訓練樣本集T上,子樹Tk預測的類概率矩陣如下所示:
(1)
定義函數Max(X)表示獲取二維矩陣中行向量X的最大值元素所對應的列下標,當有多個相同的最大值時,取最小的列下標。令列下標從1開始,則子樹Tk對訓練樣本集T的預測結果向量如下所示:
(2)
定義函數Acc(X1,X2)表示兩個同維向量X1、X2中相同位置元素相等的個數所占的比例。例如:
令Y(T)是由訓練樣本集T的真實類映射到類集合中的下標所組成的向量,則子樹Tk對訓練樣本集T的預測準確率ak為:
ak=Acc(Predict(Tk,T),Y(T))
(3)
至此,第k棵子樹的權重[7-8]Wk為:
Wk∝log2(ak/(1-ak))
(4)
最后,森林F在訓練樣本集T和測試樣本集S上預測的類概率矩陣分別為:
(5)
(6)
更進一步,假設級聯森林中每一級又包含h個森林,那么第e級森林組合Ce在訓練樣本集T和測試樣本集S上預測的類概率矩陣分別為:
(7)
(8)
類似地,如果把上述矩陣改寫成行向量組的形式,可分別得到第e級森林組合Ce對訓練樣本集T和測試樣本集S的預測結果向量,具體如下:
(9)
(10)
同理,令Y(T)、Y(S) 分別表示由訓練樣本集T、測試樣本集S的真實類映射到類集合中的下標所組成的向量,則第e級森林組合分別在訓練樣本集T和測試樣本集S上預測準確率Aet和Aes分別為:
Aet=Acc(Predict(Ce,T),Y(T))
(11)
Aes=Acc(Predict(Ce,S),Y(S))
(12)
當級聯森林不再擴展時,則在已擴展的級中,找出在訓練樣本集T上預測準確率最高值所對應的級,將該級森林組合在測試樣本集S上預測結果向量和預測準確率作為整個加權深度森林的預測結果。加權的深度森林(WDF)如算法1所示。
算法1加權的深度森林(WDF)
輸入 訓練集T,測試集S,森林中子樹的數目N,每一級森林的數目M
1 ifT是高維數據集 then
2T=多粒度掃描(T);
3 end if
4 for i=1 to M
5 for j=1 to N
6 使用T訓練子樹;
7 根據式(1)-式(3)計算子樹的準確率;
2)市外電源方面,形成了2+X格局:(1)華東電網內的安徽煤電基地,(2)華東電網外的三峽和金沙江等西南水電,并在華東電網內參與建設核電、抽水蓄能等項目。
8 根據式(4)計算當前子樹的權重;
9 輸入測試集T到當前子樹;
10 end for
11 根據式(5)、式(6)分別計算當前森林在訓練集T和測試集S上的預測類概率矩陣;
12 end for
13 根據式(7)、式(8)分別計算當前級聯森林在訓練集T和測試集S上的預測類概率矩陣P;
14 if 評估后繼續擴展下一級 then
15 將概率矩陣P拼接到原始特征空間,形成新的訓練集T*和測試集S*;
17 else
18 在所有擴展的級中找出訓練集上預測準確率最高的那一級opt_lay_id,并輸出該級在測試集S預測的結果;
19 end if
對比圖2和圖4可以發現,加權的深度森林可以利用權重值修正森林的類概率矩陣。當修正的概率矩陣作為下一級的輸入時,會使下一級森林在訓練過程中不斷優化并提高其預測精度,在一定程度上,不僅能提高最終預測精度,還可以減少擴展級數。
本文在高維和低維數據集上分別對深度森林(DF)和加權的深度森林(WDF)進行實驗比較。實驗平臺配置如下:160 GB內存、24核CPU、64位Ubuntu16.04操作系統、Anaconda2(Python2.7)、類庫包括Numpy、Scikit-learn、Tensorflow等[9-10]。

采用文獻[1]中所使用的實驗數據集,與原文相同,每個數據集的80%用于訓練,20%用于驗證。參與實驗的高維數據集有:GTZAN[11]、SEMG[12]、MNIST[13]以及IMDB[14];低維數據集有:ADULT[15]、YEAST[16]、和LETTER[17],其中,低維數據集無需進行多粒度掃描。參與實驗的數據集描述如表1所示。

表1 實驗數據集
實驗分別采用測試集上的準確率和擴展的級數作為評價指標。具體實驗結果如表2所示。

表2 實驗結果
從表2可以看出,在低維數據集上,加權的深度森林預測準確率要略高于深度森林,但擴展級數多于深度森林。與此相反的是,在高維數據集上,無論準確率還是擴展級數,加權的深度森林都要優于深度森林。出現這一現象,主要有以下幾點原因:
(1) 低維數據集包含的特征數較少,造成了森林中訓練得到的子樹之間的差異較少,則每棵子樹的預測準確率較為接近。從式(4)可以看出,每棵子樹的權重也較為接近。因此,其性能提高有限。
(2) 高維數據集往往包含較多的特征數,再經過多粒度掃描處理后,非常有利于增加后續級聯森林中訓練所得子樹之間的差異。由于每棵子樹的預測準確率波動較大,最終導致差異較大的權重分布。
由上述分析可知,深度森林中訓練得到的子樹之間的差異往往決定了最后的預測精度和級聯數,而子樹之間的差異性卻受到數據集中特征數的影響。這與級聯森林主要由隨機森林和完全隨機樹森林兩種森林組成有關。通過表1和表2可以看出,由于高維數據集上訓練得到的子樹之間的差異性增加,每棵子樹的預測準確率差異也較大,加權的思想會賦予準確率高的子樹較大的權重,以增加其在決策中的作用。因此,加權深度森林優勢在高維數據集上具有明顯的優勢,在準確率提高的同時,森林的級聯數也有所減少,降低了訓練時間;而在低維數據集上,由于權重之間差異性較小,延緩了收斂速度,增加了森林的級聯數,雖然增加了訓練時間。但與原算法相比,還是獲得了可比的性能。綜上所述,加權的深度森林更適合利用多粒度掃描處理高維數據集。
深度森林沿用了深度學習對樣本特征屬性的逐層處理機制,但克服了深度學習參數依賴性強、訓練開銷大以及僅適用于大數據等不足之處。然而,深度森林中各個子樹的預測精度是各不相同的,簡單算術平均會導致子樹的錯誤預測,對整個森林的預測產生影響,進而隨著級數增加,有可能使錯誤被進一步放大。為此,本文提出了一種根據森林中每棵子樹的預測精度進行加權的深度森林。通過在高維和低維數據集上進行實驗,結果表明:加權的深度森林在高維和低維數據集上性能都獲得了一定提升,特別在高維數據集上,這一優勢較為明顯。由于目前所使用的加權方式較為簡單,下一步將進一步考慮更為全面的權重評估方式,比如綜合集成分類器的多樣性和分類性能的權重評估方式等。