深度森林(deep forest)
前言
最近幾周,沉迷論文,不能自拔,忽視了專欄建設,在此道歉~~~
深度森林簡介
deep forest是周志華今年提出來的一個集成的森林模型,是傳統的森林的模型在廣度和深度上的一種集成,雖然實際操作是佔用內存多,效果也不如深度學習,但是對於傳統的機器學習來講,又提供一種集成的思想。
deep forest是不同種類的森林在寬度和深度上的一種stack,作者周志華一貫認為學習樣本中的差異性得到足夠的體現的時候,集成學習器的效果才會得到提高。所以深度森林的stack是分成兩種目的:其一,體現出輸入數據的差異性,其二,提高輸入數據的分類能力。前者,被稱為多粒度掃描,後者被稱為級聯森林。
多粒度掃描
多粒度掃描(Multi-Grained Scanning)就是用多個大小不同的滑窗在原始數據上進行滑動取值,(論文中的多個是3個,大小不同是指d/16,d/8,d/4,論文中也提出5個滑窗的情況,效果比3個的好)滑窗取值的過程中可以順便進行pooling操作,也就是採樣。滑窗取值的結果作為產生的數據輸入到多粒度掃描的stack森林中,標籤對應原始數據的標籤。多粒度的stack森林深度只有1層,寬度也只有2,森林種類分別是完全隨機和隨機森林兩種,森林中的決策樹的數量是500,深度最深100。多粒度掃描輸出的就是分類概率結果,若之前的某個尺度的滑窗生成N個取值,原始數據中一種有M個分類,那麼最終結果該尺度下的輸出概率分類結果為N×M個結果。不同尺度的輸出分開存放,以便於後續的級聯分類。下圖所示為一維數據的多粒度掃描過程。二維數據的掃描就是滑窗分別在x,y軸上移動的結果,造成的結果就是佔用居多的磁碟空間~~~
級聯森林
級聯森林部分是分類任務的核心,即使沒有多粒度掃描也可以直接用級聯森林進行分類。原始級聯森林的輸入為多粒度掃描最後輸出的轉換特徵,各個尺度上的多粒度掃描的結果分別輸入級聯森林的第一級森林,級聯森林中每個森林最後輸出都是一組分類結果(所有葉節點的分類概率結果平均值),假設有C個森林,第一級森林的輸出為C×M;之後的級聯森林的每一級輸入都變成轉換特徵和前一級輸出的拼接(augmented);最後一層的森林輸出為C個森林輸出的平均值。級聯森林模型中,最後一層森林的確定是由兩項因素決定的:一,森林的深度(論文為8),二,早停止控制(early stop)。early stop 也就是原文中的驗證增益,級聯森林訓練層數的增加的同時,選擇模型其中的幾層作為驗證層在驗證集上做實驗,當驗證集上的增益不再增加時,模型訓練就可以停止了。換而言之,模型的深度不一定是8,可能比8小,若增益一直增加,增加深度森林的深度,可以得到更好的效果(在論文的補充實驗中,有一個10層的森林效果明顯好於8層)。深度森林的整體架構如下
疑惑
級聯森林中每次森林的輸出僅僅佔到特徵總量的很少一部分,隨著森林的加深,這些佔有少數的森林輸出特徵真正改變了輸出的分類的結果嗎?此處不是很理解~~~
嚴禁轉載!!!
推薦閱讀:
※引領深度學習革命--CNN架構全解析
※《大演算:機器學習的終極演演算法將如何改變我們的未來,創造新紀元的文明》
※機器學習基礎與實踐(二)----數據轉換
※一文弄懂神經網路中的反向傳播法——BackPropagation
TAG:機器學習 |