[重磅]Deep Forest,非神經網路的深度模型,周志華老師最新之作,三十分鐘理解!

歡迎轉載,轉載請註明:本文出自Bin的專欄blog.csdn.net/xbinworld
技術交流QQ群:433250724,歡迎對演算法、技術感興趣的同學加入。


深度學習最大的貢獻,個人認為就是表徵學習(representation learning),通過端到端的訓練,發現更好的features,而後面用於分類(或其他任務)的輸出function,往往也只是普通的softmax(或者其他一些經典而又簡單的方法)而已,所以,只要特徵足夠好,分類函式本身並不需要複雜——博主自己在做research的時候也深有同感,以前很多paper其實是誤入歧途,採用的feature非常混淆模糊沒有區分性,卻指望在分類器上獲得好的結果,可能麼?深度學習可以說是回到了問題的本源上來,representation learning。

目前DL的成功都是建立在多層神經網路的基礎上的,那麼這種成功能否復刻到其他模型上呢?我相信,是可以的。南京大學的周志華老師嘗試提出一種深度的tree模型,叫做gcForest,用文中的術語說,就是“multi-Grained Cascade forest”,多粒度級聯森林。此外,還提出了一種全新的決策樹整合方法,使用級聯結構讓 gcForest 做表徵學習。


Title:Deep Forest: Towards An Alternative to Deep Neural Networks
作者:Zhi-Hua Zhou and Ji Feng

摘要

在這篇論文裡,我們提出了 gcForest,這是一種決策樹整合方法(decision tree ensemble approach),效能較之深度神經網路有很強的競爭力。深度神經網路需要花大力氣調參,相比之下 gcForest 要容易訓練得多。實際上,在幾乎完全一樣的超引數設定下,gcForest 在處理不同領域(domain)的不同資料時,也能達到極佳的效能。gcForest 的訓練過程效率高且可擴充套件。在我們的實驗中,它在一臺 PC 上的訓練時間和在 GPU 設施上跑的深度神經網路差不多,有鑑於 gcForest 天然適用於並行的部署,其效率高的優勢就更為明顯。此外,深度神經網路需要大規模的訓練資料,而 gcForest 在僅有小規模訓練資料的情況下也照常運轉。不僅如此,作為一種基於樹的方法,gcForest 在理論分析方面也應當比深度神經網路更加容易。[1]

級聯森林(Cascade Forest)

這裡寫圖片描述

級聯森林結構的圖示。級聯的每個級別包括兩個隨機森林(藍色字型標出)和兩個完全隨機樹木森林(黑色)。假設有三個類要預測; 因此,每個森林將輸出三維類向量,然後將其連線以重新表示原始輸入。注意,要將前一級的特徵和這一級的特徵連線在一起——在最後會有一個例子,到時候再具體看一下如何連線。

論文中為了簡單起見,在實現中,使用了兩個完全隨機的樹森林(complete-random tree forests)和兩個隨機森林[Breiman,2001]。每個完全隨機的樹森林包含1000個完全隨機樹[Liu et al。,2008],每棵樹通過隨機選擇一個特徵在樹的每個節點進行分割實現生成,樹一直生長,直到每個葉節點只包含相同類的例項或不超過10個例項。類似地,每個隨機森林也包含1000棵樹,通過隨機選擇sqrt(d) 數量的特徵作為候選(d是輸入特徵的數量),然後選擇具有最佳 gini 值的特徵作為分割。每個森林中的樹的數值是一個超引數。

給定一個例項(就是一個樣本),每個森林會通過計算在相關例項落入的葉節點處的不同類的訓練樣本的百分比,然後對森林中的所有樹計平均值,以生成對類的分佈的估計。如下圖所示,其中紅色部分突出了每個例項遍歷到葉節點的路徑。葉節點中的不同標記表示了不同的類。

這裡寫圖片描述

被估計的類分佈形成類向量(class vector),該類向量接著與輸入到級聯的下一級的原始特徵向量相連線。例如,假設有三個類,則四個森林每一個都將產生一個三維的類向量,因此,級聯的下一級將接收12 = 3×4個增強特徵(augmented feature)。

為了降低過擬合風險,每個森林產生的類向量由k折交叉驗證(k-fold cross validation)產生。具體來說,每個例項都將被用作 k -1 次訓練資料,產生 k -1 個類向量,然後對其取平均值以產生作為級聯中下一級的增強特徵的最終類向量。需要注意的是,在擴充套件一個新的級後,整個級聯的效能將在驗證集上進行估計,如果沒有顯著的效能增益,訓練過程將終止;因此,級聯中級的數量是自動確定的。與模型的複雜性固定的大多數深度神經網路相反,gcForest 能夠適當地通過終止訓練來決定其模型的複雜度(early stop)。這使得 gcForest 能夠適用於不同規模的訓練資料,而不侷限於大規模訓練資料。

(注:級聯數量自動確定可以有助於控制模型的複雜性,實際上在每一級的輸出結果都用ground truth label來訓練的,這裡和CNN的理解不同,CNN認為特徵是逐層抽象的,而本文在每一層都直接拿label的高層語義來訓練——我本人有一些擔憂,直接這樣的級聯會不會使得收益並不能通過級數的加深而放大?比如CNN目前可以做到上百層的net,而這裡會自動確定深度,也就是說可能沒辦法做的很深。希望隨著更多人的分析,可以在這一點上給出一些結論)

多粒度掃描(Multi-Grained Scanning)

深度神經網路在處理特徵關係方面是強大的,例如,卷積神經網路對影象資料有效,其中原始畫素之間的空間關係是關鍵的。(LeCun et al., 1998; Krizhenvsky et al., 2012),遞迴神經網路對序列資料有效,其中順序關係是關鍵的(Graves et al., 2013; Cho et al.,2014)。受這種認識的啟發,我們用多粒度掃描流程來增強級聯森林。

這裡寫圖片描述

滑動視窗用於掃描原始特徵。假設有400個原始特徵,並且使用100個特徵的視窗大小。對於序列資料,將通過滑動一個特徵的視窗來生成100維的特徵向量;總共產生301個特徵向量。如果原始特徵具有空間關係,比如影象畫素為400的20×20的面板,則10×10視窗將產生121個特徵向量(即121個10×10的面板)。從正/負訓練樣例中提取的所有特徵向量被視為正/負例項;它們將被用於生成類向量:從相同大小的視窗提取的例項將用於訓練完全隨機樹森林和隨機森林,然後生成類向量並連線為轉換後的畫素。如上圖的上半部分所示,假設有3個類,並且使用100維的視窗;然後,每個森林產生301個三維類向量,導致對應於原始400維原始特徵向量的1,806維變換特徵向量。

通過使用多個尺寸的滑動視窗,最終的變換特徵向量將包括更多的特徵,如下圖所示。

這裡寫圖片描述

concat成一個3618-dim的原始資料,表示原始的一個資料樣本,第一級的輸出是12 3618=3630,後面也是一樣,直到最後第N級,只有12個輸出,然後在每一類別上做avg,然後輸出max那一類的label,那就是最終的預測類別。

實驗結果

這一部分也是網上大家有疑問的地方,主要是資料集選取都是比較小的實驗資料,這個方法能不能火還是要看在real data上能不能做到和DL一樣的效果。

下面簡單貼幾個結果

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

總結

帶著深度學習的關鍵在於特徵學習和巨大模型的能力這一認識,我們在本文中試圖賦予樹整合這些屬性,並提出了 gcForest 方法。與深度神經網路相比,gcForest在我們的實驗中表現了極高的競爭力或更好的效能。更重要的是,gcForest 具有少得多的超引數,並且對引數設定不太敏感;實際上在我們的實驗中,通過使用相同的引數設定在不同的域中都獲得了優異的效能,並且無論是大規模還是小規模的資料,它的工作都很好。此外,作為一種基於樹的方法,gcForest 應該比深度神經網路更容易進行理論分析,不過這超出了本文的討論範圍。我們很快會提供 gcForest 的程式碼。

出自原文[2]:“構建深度森林還存在其他可能性。作為一個會議論文,我們只朝這個方向進行了一點點探索。如果我們有更強大的計算設施,我們想嘗試大資料和深度森林,這將留待以後討論。原則上,深度森林應該能夠展示出深度神經網路的其他能力,如充當特徵提取器或預訓練模型。 值得一提的是,為了解決複雜的任務,學習模型可能需要更深入。然而,當前的深度模型總是神經網路。本文說明了如何構建深度森林,我們相信它是一扇門,可能替代深度神經網路的許多工。”


這篇文章通俗易懂,要詳細瞭解的話需要對決策樹,random forest稍有了解,可以去看一下我前面的部落格:機器學習方法(四):決策樹Decision Tree原理與實現技巧 以及 機器學習方法(六):隨機森林Random Forest,bagging;和離散類別特徵不同,本文都是基於連續特徵為資料特徵的,比如畫素等等,因此,決策樹都是基於連續特徵構建的。

僅通過本來說DL演算法可取代還為時過早,神經網路有其獨特性,而且存在著設計上的美——計算模式統一,端到端,沒有過多人文設計;而本文說實話,我還是覺得有很多人為設計的痕跡,希望更多的學者可以在tree based learning method方向上找到更多突破。


參考資料

[1] http://it.sohu.com/20170302/n482153688.shtml
[2] Deep Forest: Towards An Alternative to Deep Neural Networks, 2017