多層梯度提升決策樹(個人理解)
來自專欄機器學習筆記1 人贊了文章
原文:馮霽,俞揚,周志華 Multi-Layered Gradient Boosting Decision Trees
1.簡介
深度神經網路成功的關鍵主要是通過構建多層結構從原始數據取得特徵。目前大多數神經網路都是利用反向傳播進行參數更新的。而目標傳播被提出作為一個可選的方法,但是目前還是處於實驗階段。反向傳播仍然是神經網路在可微學習系統中最有效的訓練方法。
另一方面,非可微模塊構建的深度神經網路的訓練有探索的需求性。在離散數據方面,隨機森林或梯度提升樹有顯著的優勢,所以探索基於樹的多層結構模型是重要。2.演算法
一個有 個中間層和一個輸出層的多層結構。 表示第 的輸出,對於輸入數據 ,每一層對應的輸出為 。學習任務可認為是找尋一個映射函數: ,以至於最終的輸出的損失函數 最小。對於可微的模塊,可利用反向傳播訓練,而對於不可微的情況下,反向傳播不在可用,這時可假設 表示一梯度提升樹處理。
在第 輪, 表示前一輪取得的梯度提升樹。定義偽逆映射 : 。為了取得 ,可利用最小化輸出值 和重構值之間的損失函數 取得。即:
其中, 是添加的隨機雜訊,增加構建函數的魯棒性。
定義偽標籤 ,則對於 ,可基於偽殘差 構建經典的梯度提升樹。
對於 有 ,對應的偽殘差為 ,構建出梯度提升樹得到 ,進而得到 。訓練圖如下:
神經網路的參數初始化可以通過隨機高斯雜訊取得,對於樹結構,可以通過在中間層基於隨機高斯雜訊產生輸出,構建初始的梯度提升樹。
演算法流程如下:
1.初始化
2.迭代循環,在第t輪,得到為標籤
4.從頂層向底層開始構建得到
利用前一輪得到的 應用在當前輪,即
對輸出加入高斯雜訊,加強魯棒性,即
利用誤差函數 構建出梯度提升樹
更新下一底層的偽標籤
5.從底層向頂層開始構建得到
利用前一輪得到的 應用在當前輪,即
利用誤差函數 構建出梯度提升樹
6.回到步驟2,直到迭代終止
3.演算法理解
相當於編碼器, 相當於解碼器,模塊在訓練過程構成一自編碼器,模型的訓練過程相當於結構變為自編碼器n-自編碼器n-1-...-自編碼器1。在訓練階段,從自編碼器n開始,中間表示通過梯度下降法得到理想的表示,編碼器進一步擬合理想表示得到更加完善的編碼器,另一方面,藉助於解碼器得到理想的目標輸入,即為自編碼器n-1的理想表示,此時自編碼n-1藉助這一理想表示進一步完善自身,以此迭代下去。
吉布斯採樣通過遍歷每個變數 ,固定其他變數,對變數 進行採樣,最終會平穩分布的樣本。類比於該思想,演算法從訓練開始階段,目標就是基於梯度下降不斷擬合出目標輸出,然後在每一階段,都是固定其他階段,"採樣"得到優化後的編碼器,最後整體會達到穩態收斂。
參考文獻
馮霽,俞揚,周志華 Multi-Layered Gradient Boosting Decision Trees
推薦閱讀:
※Isolation Forest介紹
※《Scikit-Learn與TensorFlow機器學習實用指南》第3章 分類
※數據是未來的石油
※使用Keras進行深度學習:(六)GRU講解及實踐