論文標(biāo)題:《DeepGBM: A Deep Learning Framework Distilled by GBDT for Online Prediction Tasks》
論文地址:https://www.microsoft.com/en-us/research/publication/deepgbm-a-deep-learning-framework-distilled-by-gbdt-for-online-prediction-tasks/
背景
目前兩種主流的算法在在線學(xué)習(xí)推薦系統(tǒng)中被廣泛的應(yīng)用屉栓,包括以GBDT為主的tree-model,以及NN模型(wide and deep荡澎、deepfm等)辞槐。但是目前這兩種學(xué)習(xí)方法都有各自無(wú)法解決的困難。
首先GBDT在處理密集的連續(xù)型數(shù)值特征中表現(xiàn)出非常好的學(xué)習(xí)性能和效果何恶,但是GBDT不能進(jìn)行在線學(xué)習(xí)也不能很好的處理大量的稀疏特征,因?yàn)镚BDT通常需要訓(xùn)練全量的數(shù)據(jù)而不能進(jìn)行局部的更新,而且大量的稀疏特征會(huì)帶來(lái)過(guò)擬合和空間爆炸的風(fēng)險(xiǎn)背率。,
其次NN能進(jìn)行在線學(xué)習(xí)做到按batch進(jìn)行更新嫩与,也能通過(guò)embeding的手段很好的處理大量的稀疏特征寝姿,但是在處理連續(xù)性特征的能力上卻遠(yuǎn)遠(yuǎn)不如GBDT。
盡管已經(jīng)有很多研究將這兩種方法整合划滋,嘗試去融合兩者的優(yōu)點(diǎn)饵筑,但是卻仍然達(dá)不到。
相關(guān)工作
就像我們之前提到的处坪,我們現(xiàn)在將GBDT和NN廣泛的應(yīng)用于在線推薦系統(tǒng)中根资。下面我們首先回顧一下現(xiàn)在很多將GBDT和NN結(jié)合起來(lái)去解決他們各自缺點(diǎn),融合他們優(yōu)點(diǎn)的一些相關(guān)工作同窘。并且基于之前的經(jīng)驗(yàn)去構(gòu)建一個(gè)有效的在線學(xué)習(xí)的模型玄帕。
我們之前提到過(guò),GBDT用于在線學(xué)習(xí)主要是會(huì)存在兩個(gè)問(wèn)題想邦,一個(gè)是tree model的不可拆分性裤纹,導(dǎo)致tree model不能局部更新,而是需要經(jīng)過(guò)大量的離線數(shù)據(jù)的訓(xùn)練丧没。第二個(gè)是GBDT不能非常有效的處理稀疏型的類別特征鹰椒∥疲基于這兩個(gè)缺點(diǎn),我們先回顧一下大家為了解決這個(gè)問(wèn)題所做的一些工作吹零。
1.有一部分研究嘗試用流式的數(shù)據(jù)來(lái)訓(xùn)練tree model罩抗,但是這種方式只能用在單個(gè)tree model和并行的tree model適應(yīng),對(duì)于gbdt這種boosting的模型就不太適用了灿椅。而且這種模型拋棄掉了歷史的數(shù)據(jù)套蒂、只用更新的數(shù)據(jù)會(huì)有偏。
2.對(duì)于gbdt不能處理稀疏的類別特征茫蛹,因?yàn)椴黄胶獾南∈杼卣鞯姆植嫉男畔⒃鲆娣浅P〔俚丁:芏嗟难芯繃L試將稀疏的類別特征編碼成連續(xù)性特征,但是這些編碼方式會(huì)損失掉很多信息婴洼。還有一些方法會(huì)直接枚舉左右的二進(jìn)制分區(qū)骨坑,但是由于我們的特征稀疏,只有少量的數(shù)據(jù)是有值的柬采,這樣會(huì)導(dǎo)致過(guò)擬合欢唾。
3.還有很多方式將GBDT和NN結(jié)合,如Deepforest和mGBDT等粉捻,但是他們都不能解決這兩個(gè)關(guān)鍵的問(wèn)題礁遣。
對(duì)于NN的改造,現(xiàn)在很多的NN的方式都集中于解決大量的稀疏特征肩刃,而對(duì)于連續(xù)性的特征并沒(méi)有很好的解決祟霍,F(xiàn)CNN為了解決這種辦法才去全鏈接的方式來(lái)解決稠密連續(xù)特征。但是FCNN的性能不能滿足要求盈包。因?yàn)槿B接會(huì)帶來(lái)復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)使得超參數(shù)的學(xué)習(xí)變得非常的復(fù)雜而且容易陷入局部最優(yōu)解沸呐。另外的方式是直接把稠密的數(shù)值特征離散化,但是離散化帶來(lái)的非線性特征使得模型變得復(fù)雜而且容易過(guò)擬合呢燥。
對(duì)于NN+gbdt組合的改造崭添,主要有三類:
1.Tree-like NN
2.Convert Trees to NN
3.Combining NN and GBDT:直接將GBDT和NN組合,facebook直接將GBDT的葉子結(jié)點(diǎn)組合作為NN的類別特征喂給NN叛氨。Microsoft使用GBDT去訓(xùn)練NN的殘差滥朱,但是這些都沒(méi)有解決模型的線上問(wèn)題
deepGBM結(jié)構(gòu)
本文提出的deepGBM主要包含兩部分:CatNN和GBDT2NN,結(jié)構(gòu)示意圖如下:
GBDT2NN for Dense Numerical Features
目前很多的研究方法只將GBDT的輸出作為輸入放入NN中去學(xué)習(xí)力试,這樣會(huì)損失tree model的結(jié)構(gòu)和很多的信息。本文我們用NN去模擬GBDT的結(jié)構(gòu)排嫌。盡可能多的獲取GBDT的結(jié)構(gòu)信息畸裳。
1.特征選擇。對(duì)于單顆樹的蒸餾淳地,我們可以將GBDT使用的特征的index輸入到NN中怖糊,而不是將所有的特征都輸入到NN中去帅容。我們知道NN的模型是對(duì)所有的特征進(jìn)行學(xué)習(xí),沒(méi)有特征選擇的過(guò)程伍伤,而根據(jù)GBDT的原理并徘,tree model的產(chǎn)生并不依賴于所有的特征,而是只選擇部分的特征來(lái)做樹的分裂和抉擇扰魂。所以NN直接將用GBDT用到的特征來(lái)構(gòu)建GBDT的結(jié)構(gòu)麦乞。我們約定It 作為樹t選擇的特征。所以我們選擇用x[It]作為NN模型的輸入劝评。
2.樹結(jié)構(gòu)姐直。 根據(jù)樹模型的特征會(huì)將不同label的樣本分到不同的結(jié)點(diǎn)中,而同一結(jié)點(diǎn)的label是一樣的蒋畜。所以我們使用以下公式來(lái)近似我們的這種樹結(jié)構(gòu):
其中n是樣本的數(shù)量声畏,N()表示NN的網(wǎng)絡(luò)結(jié)構(gòu),0表示網(wǎng)絡(luò)的參數(shù)姻成, Lt,i是當(dāng)前結(jié)點(diǎn)輸出的葉子結(jié)點(diǎn)的onehot的表示形式插龄。L是損失函數(shù),如logloss等科展。
3.樹模型的輸出均牢。通過(guò)上述的學(xué)習(xí),我們只需要知道我們的樹結(jié)構(gòu)(葉子結(jié)點(diǎn)index)到模型輸出的映射關(guān)系就可以了辛润。這種index到value的相關(guān)性的表示為pt = lt * qt膨处,qt表示當(dāng)前樹的values。所以最終模型的輸出可以表示為:
以上是我們對(duì)單顆樹的蒸餾砂竖,然后GBDT作為一種boosting的算法真椿,經(jīng)常是有很多的樹組成的,那么對(duì)于多棵樹的蒸餾又是怎樣的呢乎澄?
對(duì)于多棵樹的蒸餾我們主要提出了兩種方法突硝。首先為了減少樹結(jié)構(gòu)的維度,我們可以將葉子結(jié)點(diǎn)由原先的onehot方式變?yōu)橛成涞揭粋€(gè)低維的embedding空間中置济。
其中wt和w0都是trainable的參數(shù)解恰,pt,i是leaf index對(duì)應(yīng)的value值。Ht,i是我們輸出的embedding值浙于。L是和樹訓(xùn)練時(shí)一樣的loss函數(shù)护盈。
所以現(xiàn)在模型的學(xué)習(xí)目標(biāo)變?yōu)?/p>
其次我們將一定數(shù)量的tree進(jìn)行組合,讓他們共享embedding的參數(shù)羞酗,這樣能減少模型訓(xùn)練的復(fù)雜度腐宋。組合的方式有很多種,你可以選擇模型結(jié)構(gòu)高度相似的trees進(jìn)行組合,或隨機(jī)組合胸竞。本文選擇隨機(jī)組合欺嗤,將m顆樹分為k組,那么每個(gè)組合包含m/k樹卫枝。所以現(xiàn)在的embedding損失變?yōu)椋?br>
而模型的訓(xùn)練目標(biāo)變?yōu)椋?br>
模型最后的輸出為: