如何評價周志華教授新提出的 Deep Forest 模型,它會取代當前火熱的深度學習 DNN 嗎?
目前該模型的paper已經在arXiv上可閱讀:
Towards An Alternative to Deep Neural Networks.
模型的框架結構如圖:
該圖引自上文。
謝邀。
整個演算法看起來不是很複雜。
1. 類似以前Stacking的做法,即每一層都用label進行訓練,訓練完了再疊一層繼續訓練。加了Complete Random Forest很有意思,個人理解是生成了一些看似無關,但對將來的預測有好處的特徵。如果實驗裡面能做些ablation analysis就好了。
2. 用了一些shortcut-connection,把幾層前的數據拿過來連上上一層的輸出一起作為這一層Forest的輸入。
3. Multi-Grained Scanning這部分非常像1D和2D convolution。
另外實驗還只是在小規模數據集上做的,期待CIFAR甚至是ImageNet的結果。深度學習這裡也有一直在提但是一直效果不怎麼好的Layer-by-Layer訓練的思路,如果這個思路能在大數據集上做好,那確實是大突破了。
謝邀啊,現在流行在知乎上review paper哈。先說下面的觀點只針對paper不對人(其實也算是認識作者),歡迎進行友好學術討論。
先說我的結論:相比前兩天引起了廣泛討論的ICLR best paper,這個paper其實更沒有什麼討論的意義。當然作為一個research來說,paper還是可以中的,尤其是對於IJCAI。但是我完全不看好這個paper會有什麼長遠的影響力,以及有人說的可以啟發大量後續研究。下面分別從這個idea,實現方法,以及實驗結果三個方面分析。
1. Idea
不用多說,通過stacking weak learner來提升模型性能的想法已經非常常見。然而這樣一個idea一定不會work,原罪就在於tree based model無法進行fine-tune。這會帶來兩個非常嚴重的問題:
A. 無法進行end to end learning,這會極大程度上影響到模型最終的結果。會使depth完全發揮不出威力。
B. 無法進行feature transfer,CNN最最最重要成功的秘訣就在於可以在ImageNet這樣海量的數據上進行pretrain,然後再把學習到的(approximately) general feature 通過finetune transfer到其他任務中去。如果BP都沒法做,這個就完全無從談起了。
換句話說,如果這樣的Idea能在大數據上work,那麼其實相當於否定了BP存在的意義。以後大家都一層一層加就是了嘛。當然這樣的好事是不存在的。。。
如何把tree based model可以做到e2e訓練,以及拓展開來如何更高效地把更高效的base learner引入神經網路這又是另外一個故事。我們在這方面也做了一些嘗試,但是所有的這一切的基礎都是可以bp。
2. Method
這裡使用了一個stacking random forest的方法來實現上述idea。從創新性上而言,在Kaggle比賽中不同種類模型之間的Stacking和Concatenation早就不是什麼新想法。所以從實現層面上而言,仍舊乏善可陳。而且中間層只是把最終分類的結果concat在一起,都不是把每個tree生成的leaf對應的feature。個人覺得這樣會嚴重影響stack的性能,好歹之前FB還是把GBDT的每個leaf當成一個feature才去train的logisitic regression。
3. Experiment
這是本文槽點最多的部分。看到還在跑MNIST和ORL就知道這完全是做ML的人的玩具。不熟悉別的應用,單就Vision而言,這個結果比ELM其實還沒說服力,而且我相信會有更簡單的模型同樣可以達到類似的結果。比如隨便開開腦洞train個SVM中間加個non-linear transformation什麼的。現在在CVPR大家都知道Cifar都不能算是有信服力的數據集,更何況MNIST和ORL這種。
另外,比較的網路結構也都是拍拍腦袋想出來的,唯一比了一個經典結構LeNet5還沒比過。。不過基於上述第一點的看法,我完全不相信這樣的演算法能在稍微大一些的數據集上取得還不錯的結果。
另外我覺得非常不合適的claim:
1. Table1中畫了很多問號,顯得CNN要調整的參數有非常多。然而實際上,絕大部分參數都是有默認的設置的。剩下的參數也可以快速通過簡單的試錯得到一個還不錯的初始值。對於這個問題,我的觀點一直是每天在抱怨CNN調參困難,在用grid search的人,其實還沒理解CNN。
2. 作者不停在claim說gcForest在小數據好,無需調參。然而這只是在不停強調一個low capacity model的好處,這個事情的另外一面在於low capacity model會很快飽和,喂進去再多數據也不會有性能增長。更進一步說,我絲毫不會奇怪tree based model在同等參數條件下比nn based model結果好。因為tree based model就是可以更好地利用參數,然而上限也很快會到來。
最後給大家羅列幾個非常相似的idea和claim,最後都無法在大數據上取得令人信服結果的工作:
0. DSN:鄧力老師的工作。基本完全一樣的idea,除了是用NN不是forest。
1. ELM:這麼多年了,仍然沒有拿得出手的讓人信服的結果。。。
2. PCANet:好在作者自己就認識到這是一個baseline的工作,嘗試過大數據,並不work。
3. SARM:去年炒的沸沸揚揚的NIPS撤稿了的工作。其實單從方法本身來講著paper並沒啥太大問題。但是請大家注意,這個工作當初引起了諸多大牛的注意就是因為paper實驗中講在ImageNet上做出來很好的結果。不過最終也是證明是由於實驗錯誤導致的。
這裡有一個三年前做的survey,大家可以隨手一看:http://winsty.net/talks/nonNN.pptx
綜上,這個paper作為一個junior PhD練手的工作還好,但是要談多大影響力實在差的還遠。歷史總是在重複上演,這個idea是屬於那種如果有實習生來跟我講這樣一個idea,我絕對不會同意去做的工作。。。
最後吐槽,一個paper的影響力長期來看是會均值回歸的,不會因為某個媒體或者某個人爆炒一波成就一個經典工作。希望在這個浮躁的年代,每個人尤其是研究者保持獨立思考,不要人云亦云。不忘初心,方得始終。
寫完實驗逛一逛知乎,看到這個問題就把論文擼了一遍,由於只看過一遍論文,就粗糙上來回答。如果有不對之處,歡迎指正!
首先,我希望每一份回答都能認真看過論文之後再來評論,我想這是對論文寫作者基本的尊重。縱觀全文,周老師完全沒有用過「replace」這個詞,恰恰相反,這個論文是在學習DNN,學習DNN在representation learning and large model capacity這兩個突出優點,並且改善DNN的「需要大量標記數據,高計算性能設備,大量超參數,對參數敏感以及理論難以分析」這五大缺點,同時,作者發現目前的深度學習都是深度神經網路,那麼是不是非神經網路不可呢?作者提出了「Alternative(這才是全文用的最多的詞,replace是一個主觀的詞,代表作者已經覺得這個模型很成熟,可以取代另外一個,而Alternative是一個客觀的詞,作者只是提出另外一種做「深」的方案,一方面目前並沒有強大的實驗和理論證明它的未來比DNN好,另一方面,也沒有給人一種非它不可的感覺)」的一個深度學習模型:gcforest。作者的本意是「打開深度學習的大門」(就如同論文最後一句,如果成功的話)。
對於具體論文:以下從論文解決DNN五大缺點來討論:
1. 為什麼gcforest能處理小數據集:因為gcforest的層數是自適應確定的。那麼,為什麼DNN不能自適應?這就在於DNN是一個整體的目標函數,只在最後一層才用到監督數據,它每增加一層,整個網路都需要重新訓練,但是gcforest不是的,它每一層都用到了監督信息,它下一層在構造的時候,上一層的輸出已經定了(這裡是通過交叉驗證來多次取平均輸出的,我覺得這也是相當費時的一個操作,),我個人的理解是上一層的輸出已經被存儲起來了,直接訓練下一層就行,這裡感覺用的是「空間換時間」。所以,一旦發現效果不好,就會停止伸長。(有人提到gcforst可能會專註目前短的精度,而導致過早停止,我感覺可以根據數據集給網路一個預期的層數,可能不是精度下降就停止,而是加了幾層以後都下降才停止,這些都是之後可以慢慢改進的,)它通過自適應解決了小數據集的問題。
2. 高性能計算設備:這一點並不太懂,但是gcforest目前基於CPU的運行時間也是和DNN基於GPU可比的,而且gcforest本身就是並行的,計算代價預期應該比DNN低。
3. 大量超參數:這一點,論文裡面有圖可以說明,不加累贅
4. 參數敏感性:這一點很關鍵,gcforest能在不同domain(語音,圖像等等)之間用同一組參數得到很好地效果,但是DNN就表現的很敏感,我個人感覺這應該歸功於gcforest強大的「ensemble」,集成學習裡面的兩大核心是基分類器的「好(accuracy)而不同(diversity)」,而gcforest很好兩者兼備,以前看過一篇論文,在分類裡面,講到基學習器,效果最好的是random forest,而同時,隨機樹的結構之間的diversity也是非常大的,所以他們的集成可以取得很好的效果。(那麼到底效果是集成取得的,還是表示學習學到了好的特徵呢,畢竟論文也一直在講集成,這一點稍後分析)
5. 理論難以分析:畢竟樹的結構很清晰,很早就有把決策樹抽成一條一條規則的論文,決策樹和神經網路就像是理論分析的兩個極端,但是這裡與決策樹也有不同,因為太多隨機性在裡面。
最後這兩個問題,其實才關鍵,是否gcforest學到了DNN的兩個本質優點:representation learning and large model capacity。或者說這兩個優點也是Deep Learning的本質
1. large model capacity
這個應該是可比的,隨機森林的森林,雖然對於神經網路有理論研究其表示任意函數的能力,但是對於樹還沒有(或者我還不知道),但感覺gcforest的模型複雜度還是相當強大的,我也只是感覺而已。
2. representation learning
這是我覺得作者厲害的地方,初級用DNN的人只看到DNN效果好,再者看到了表示學習,再往上,去挖掘表示學習的本質是層層遞進處理特徵和對特徵空間和時間關係的利用(或者它還有更深的本質),最後,就是提出其他模型也利用這兩個本質,層層處理特徵:對應於論文的Cascade Forest,對特徵空間和時間關係的利用:對應於論文的Multi-Grained Scanning。那麼到底gcforest是否真的達到目的了呢?論文也沒來得及驗證,但我覺得有一定提取特徵的能力,但集成在裡面也有很大功勞。
最後,總的來看,我覺得文章最大的貢獻是「作者在努力打開深度學習的大門」,其次,確實目前實驗效果還可以,期待更多的進步,不論gcforest最後能否活下來,跨出這第一步將會產生更多的可能,激發更多的想法,我想,這也是作者所期待的。
我以前聽過一個老師說:他說在研究上真正的好工作分兩種,第一:給很多人提供飯碗。
第二:打了很多人的飯碗。而看這篇文章,如果成功了,我想,這兩個目的都達到了。
讀完了這篇文章,這篇工作提出了gcForest演算法,其有一個重要的特性就是可以自適應地增加cascade層數,以此來變得deep以提高模型複雜度。
自適應地增加ensemble中個體的數量的思想在AdaBoost中就有,是一項很重要的技術。這裡用來疊forest,大開眼界。
和Deep Neural Network比,在我看來有一個主要區別:
1. DNN需要事先搭建好結構,只在最後一層使用監督信息,BP回傳loss的梯度對之前所有層進行訓練。
2. gcForest在cascade的每一層都使用了監督信息,逐漸生成新的層。在新的一層訓練時,舊的那些層是固定不動的。
這給gcForest帶來的優勢是,參數少,不用預先確定結構(要知道DNN可是每做一個任務就要精心設計一套結構)。
但沒有免費的午餐,從這個區別上看,個人認為gcForest會傾向於「短期」的分類精度,導致模型的複雜度隨著cascade層數的提升不能有很大的提升,不能吃下巨量的數據。等公布了代碼之後,非常想觀察層數增長與數據規模/問題複雜程度的關係,若能自動增長來實現適應,那就太強大了。
我出現在文章的Acknowledge里,在公開之前讀過
這篇文章講了什麼
神經網路雖然目前在一些大量數據的領域上表現很好,但缺陷也很明顯,否則也不會出現被其他方法奪取熱點的歷史,如果不對其他模型進行探索,很有可能不久之後NN難以克服的缺陷會導致整個領域的衰退。本文並沒有說gcForest壓倒deep NN,這篇文章要講的就是文中所claim的「it may open a door towards alternative to deep neural networks for many tasks」,我認為這個claim並沒有什麼問題。
我很喜歡樹模型,自認為樹玩的比較熟,在小數據上NN不如random forest已是公認的結論(例如JMLR 2014 Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?)但是以圖像像素這樣的低層次語義為特徵的高維數據上,雖然有人有過一些嘗試,但並不被認為具有非常優秀的性能。現在拿到這類數據,幾乎沒人會去嘗試用樹的方法。
文中在低層次語義數據上的實驗,雖然不算很大的數據,能與deep NN相當甚至可以超過,對於我來說是非常鼓舞人心的結果(當然你可以對著測試錯誤一陣調參說NN會更好)。如果能激發他人朝著這一方向繼續探索,那就是這篇文章的成功。更近一點說,如果讀完一篇文章,能帶來一些思考、改變一些觀念,我覺得就是很好的文章。
我覺得有不少人對這篇文章有些誤解,誤解的來源在於對一件事不清楚:一個機器學習學者在想什麼
機器學習研究者是在發明演算法嗎?不完全是。對於看重學習原理的學者,可以說演算法只是原理的副產品,演算法只是為了說明一個想法是有可能的,僅此而已。當然這對於偏工程的領域,例如CV,可能比較難理解,因為工程里就是性能為王,所以可以理解為什麼很多人都在盯著數據大不大、精度有沒有超過xxx在看。但不是所有人都如此看,一個例子就是前段時間LipNet被ICLR拒了,理由大致是這工作僅僅是個好應用而沒有原理上的貢獻,這就是價值觀的不同。
關於其他帖子的comments
1. end-to-end learning:所謂end-to-end learning就是系統整體優化,且不說end-to-end learning造成多難的優化問題、這些優化問題僅憑梯度搞不搞得定的事,也不說end-to-end是不是一定比拆開求解問題的方式好的事,這個世界上除了BP還有很多優化演算法,有相當一部分是可以做到整體優化的,即使是用樹模型。
2. low capacity model:首先,這不是capacity的問題,CNN的capacity比full connection NN低,但在圖像數據上性能更好。其次,樹模型可不是low capacity model,樹的capacity完全可以比NN高,capacity高的模型還有很多,比如最簡單的1近鄰。增加數據而測試錯誤不下降不一定因為capacity不夠,增加數據導致訓練錯誤增加才是capacity不夠。真正的關鍵問題是,如何控制capacity,挑選合適的、去掉不需要,才能取得更好的泛化性能。
3. 好歹之前FB還是把GBDT的每個leaf當成一個feature: 這能成為一個comment,是因為寫帖子的作者嘗試過這種方法最好,還是因為這是FB做的?據我了解這種做法已被嘗試過,效果並不好。
謝邀。剛讀完,淺談感想。
A)覺得最抓心的是 Cascade Forest 這部分。細說。
1)Cascade Forest Structure
結構如圖:
文中以一個three-class classification問題為例。
Level 1:用input feature vector(假設維度是m)訓練兩個完全隨機樹森林和兩個隨機森林。樣本label就是該樣本真實的label。每一個森林的訓練都是獨立的監督學習。這也是為什麼說Deep Forest很自然地方便平行計算——單層之間的各個森林本來就是互相獨立,單個森林裡的基決定樹也是互相獨立的。每個森林輸出分類概率分布,相當於3個新feature。四個森林就相當於在Level 1得到了12個擴充特徵(augmented features)。得到了新的representation,維度m+12。
單個森林如圖:
Level 2:用Level 1得到了m+12維representation作為新的input feature vector訓練Level 2。再次得到12個擴充特徵。Level 2 representation習得,維度m+24。(注意這個時候,Level 1的森林已經訓練好,固定了。Level 2的訓練不會再影響到Level 1的森林。這裡沒有梯度傳播的事。Cascade Forest的訓練是level-wise的。)
Level 3:重複Level 2的過程。習得m+36維的representation。.
...
每訓練完一個Level的森林,用該Level的四個森林再validation set上看看錶現是否繼續提升。如果提升不明顯,就不再生成的新Level。
Level N:對四個森林預測的分類概率分布(class vector)求一下均值,作為最後的預測。相當於四個森林作基學習器的集成分類器。
2)和深度神經網路簡單比較:
- Level-wise training。避免了訓練深度神經網路時非常複雜的learning dynamics。gcForest每一層每一個模型都是簡單的監督學習。
- 超參數極少,訓練不需要藝術。默認設置的gcForest表現就非常好。Level深度也是自適應,模型的表達能力和複雜度由gcForest訓練時自己決定。gcForest最主要的超參數是,每一個Level用幾個森林,每一個森林用幾個決定樹。本文里分別是每層四個森林,每個森林含1000個決定樹。優化演算法簡潔,不再需要玄妙的tricks。而Deep Neural Networks的超參數就很多了,對於特定問題該用什麼用的architecture很難預先知曉。最優化演算法也需要藝術加工。
- 小樣本學習優勢顯著。發揮了集成學習的特長。
最後想從Ensemble Learning和Deep Learning的角度討論一下。
3)從集成學習角度來看,
gcForest是一種高超的集成學習模型。基於集成學習器多層representation learning的集成學習(ensemble of ensembles)。小樣本訓練主要也是發揮了集成學習的力量。
gcForest最讓我吃驚的地方在於,僅僅是每層四個森林就能習得兼具accuracy和diversity的擴充特徵。太意外了。暫時不能get到周志華老師為什麼能想到隨機森林+完全隨機樹森林就能習得如此好的representation。可能沒有理論上的解釋,不過有些theoretical insight也是好的。目前的集成分類理論研究只能非常粗淺地描述diversity的問題。
按理來說,每層擴充的新特徵都只是分類概率分布(class vector)。隨機森林是享有盛名的分類器各種數據比賽,Random Forest幾乎必用。訓練高效,表現健壯。所以accuracy可以理解,但一邊增加accuracy,還一邊增加diversity。這怎麼回事?
當然diversity最終會收斂到class vector上。而gcForest在Level N自動終止了,可以被表述為,Level N擴充的新特徵diversity已經不是很好了(當然accuracy肯定沒問題)。所以這個模型的深度是不能隨便加的。diversity也反過來限制了Deep Forest的深度。
gcForest從low-level到high-level一層層習得擴充特徵的diversity從何而來?可能是一個值得深入探討的問題。不僅有助於我們理解Deep Forest這個新方法,也有助於我們選擇更合適的集成模型來提升每個Level的diversity。
4)從深度學習來看,
我們先瞧瞧把每一個森林都換成三個邏輯回歸(對應3類)有什麼結果?是sigmoid nonlinearity的神經網路——與通常深度神經網路的區別是,第i+1層的unit是和第1層到第i+1層所有的unit都有connection的。這樣的神經網路優化也會容易(逐層監督訓練總是很快的),但泛化(generalization)能力會好嗎?不會。
因為這些簡單nonlinearity學習到的擴充特徵沒有diversity。也就不能從low-level feature學到high-level feature了。
想一想為什麼現在的深度神經網路喜歡用特別簡單的nonlinearity,比如Relu。因為理論上來講,隨便選一個nonlinearity對深度神經網路的表達能力影響都不大。所以我們傾向於選擇梯度簡單的nonlinearity,方便訓練時的梯度傳播。
為什麼我們一般限定相鄰的layer有connection?還是因為表達能力沒問題,需要限制模型複雜度,也讓learning dynamics簡單很多。
我們也可以把gcForest看做特殊的(森林nonlinearity)深度神經網路。可為什麼森林nonlinearity泛化就好,經典的Sigmoid/ReLu函數等就不好?(吃驚臉)
現在看來,森林nonlinearity和現在深度學習常用的nonlinearity對於representation learning是有質的差異啊。森林nonlinearity的representation優勢讓一層網路就變得足夠強大,讓逐層訓練成為一個可行的方案。
這直接就解開了訓練過程中各層weight耦合在一起的動力學演化。非常複雜的超高維learning dynamics變成了N*4*1000個簡單的動力學演化(決定樹)。這在物理上算是,一個複雜系統在超高維相空間的動力學演化就這樣被分解成有限個簡單系統在低維相空間的動力學演化了。
森林nonlinearity對representation learning和generalization的提升來源於決定樹還是集成模型?如果來源於決定樹,我們幾種集成方法的基學習器隨機集成會不會有助於diversity?如果來源於集成模型,基學習器換成多種簡單的分類器會不會有助於diversity?
我們過去大多覺得nonlinearity簡單非線性就好。Deep Forest對我們說,不。神經網路的nonlinearity視角可能是另一條值得探索的路。
B)Multi-Grained Scanning
這部分覺得比較自然,只簡單說。這種windows-sliding的技巧在文本、語音等sequence data和圖像等數據都普遍用到。一般來說,只要特徵呈現某種拓撲結構,這種技巧都有有用。周志華老師這裡比較特別的一點是——每一個window框到的數據都作為一個樣本(有點像集成學習的bagging/random subspace)。從raw input學習input feature vector,然後以兩個森林輸出的class vector作為新的樣本representation。
機器學習接觸得久一些,但在深度學習還浸潤不長,特別一些早期的發展可能不太熟。
如有謬誤,歡迎指正,歡迎各種feedback。
暫且如此,有空再補充。
謝邀。
作為論文參與者之一,我做的很有限,在這裡擅自談談我個人對周老師gcForest的一點愚鈍看法。這裡聲明:所有觀點僅僅代表我個人。
先說幾點個人的結論:
1. 這是一個Deep Model,只不過building blocks是決策樹。
這篇工作不是來砸深度學習的場子的,深度學習蠻好,而基於神經網路的深度模型探索的差不多了,我們想探索一下基於樹的深度模型的可能。
個人認為沒有合理理由能夠確認基於決策樹的深度模型的嘗試是徒勞,而決策樹的集成本身具有很多神經網路所不具備的性質,所以花一些時間和精力進行研究是很值得的事情(至少比調參強)。
2. 這只是個開始。
決策樹有很多蠻恐怖的性質,目前我只想說其實我們對森林的力量一無所知,裡面的潛力巨大,有待開發。深度學習從06年提出到12年,中間花了差不多6年的時間不斷發揚光大,如果指望一篇文章就能搞定這麼多年,這麼多學者,以及這麼多資金的事情,這也是不可能的。
3. 性能
很抱歉,出於我個人的懶惰,沒怎麼調整這個森林的結構。因為我們注重的是通用性。。
前一陣又大致把森林複雜度做了一下,MNIST是99.39%(上升餘地依然存在,因為我僅僅把森林double了一下。。),我知道很多做視覺的朋友覺得CIFAR/ImageNet應該跑,這裡稍微說幾句:
a) 做視覺的朋友覺得CIFAR/ImageNet的模型性能是宇宙中心,但其實並不是做機器學習的人的中心,在這篇工作中,我們更關注一個通用的框架。
b) 也想跑來著,但是沒有實現分散式演算法,而我的單機內存有限,後來還是優化了一下程序,CIFAR10是能跑起來了,每加一塊兒內存條,性能往上走4個點,目前單機能到70%。AlexNet是83%,相比之下有10%的差距。但是請注意:深度全鏈接神經網路(MLP)是47%,Alex用Deep Belief Network(這可是深度學習的第一個重要模型)在cifar10上是65%, 而其他所有非神經網路的模型都是55%以下(如果對輸入不作任何變化的話)。我個人揣度作為deep forest的第一篇工作,這個結果也算是夠了?(至少比深度限制玻爾茲曼機的性能和普適性強點兒?)
c) 這是第一篇工作,目的是提出一個較為通用的框架和方向,未來會有基於計算機視覺應用的專門優化。
d) 你們誰送我幾塊兒內存條使使?
其他的內容,請大家看周老師的論文原文就好了。
再回應一些評論:
1. 「沒有BP肯定不行。」
很抱歉,這個不大同意。BP是一個很棒的演算法,也在我個人最喜歡的演算法top5. BP在神經網路中很重要,但是,如果認為沒有BP肯定不行,那就有些思維定勢了,類似於沒有翅膀就不能上天 這種論斷。。飛上天的不僅僅有鳥和飛機,還有火箭。
舉個栗子:
雖然不是做神經網路的,但是也清楚有不少現成的神經網路模型沒有BP,比如大名鼎鼎的NEAT。(如果我沒記錯的話,有一個GAN 的工作就是用NEAT做的G?)
再舉個稍微跑題的栗子:
上個月OpenAI的Evolution Strategies as a Scalable Alternative to Reinforcement Learning (這個標題很酷啊,偷笑)
...No need for backpropagation. ES only requires the forward pass of the policy and does not require backpropagation (or value function estimation), which makes the code shorter and between 2-3 times faster in practice.
所以其實BP在很多任務里並不是加分項,並不是說少了BP就玩兒不轉了。。
有不少做神經網路的大神也一直在嘗試做一些取代BP的事情,這個不是什麼密事:連我都知道。
2. 「無法feature transfer。」
抱歉,這個也大不同意。自己覺得沒法做,和別人也沒法做是兩回事。。。這個現在還不能講太多。
3. 「無法End to End。」
這也算是深度學習從業者裡面常見的一個cliché. 類似於BP,E2E不是模型能夠work的必要條件。另外說句題外話,如果看機器學習的歷史的話,有很多非神經網路的e2e模型並不work的。。
4. 「希望在這個浮躁的年代,每個人尤其是研究者保持獨立思考,不要人云亦云。不忘初心,方得始終。」
這句話本身說的很對。我很贊成。
需要商榷的是:什麼是始,什麼是終,什麼又是初心呢?
為了準確度,在神經網路上反覆調參的難言之隱,這,是初心嗎?
兩年前的Embedding + Everything, 一年前的GAN + Everything 而寫出來上千篇文章,這,是初心嗎?
拿著榔頭滿世界找釘子而搞出來的上萬篇應用,這,是初心嗎?
把深度神經網路炒作成強人工智慧時代的來臨,用一些具有誤導性的demo來「展示」機器已經具備了人類的情感,這,是初心嗎?
個人認為,不同的群體,初心應該是不一樣的:
作為計算機視覺/自然語言處理等做應用的人來說,拋棄了所有領域知識,只會用神經網路,個人覺得也算是忘記初心了吧。。個人比較懷疑樣做是解決CV/NLP的終極途徑。。我不是做應用的,這方面不好多談,斗膽建議大家讀一下UCLA教授,計算機視覺的大神之一朱松純教授的訪談:「初探計算機視覺三個源頭兼談人工智慧」 http://it.sohu.com/20161129/n474464488.shtml 我猜,朱教授所提到的源頭,大概應該算作是計算機視覺的「初心」吧。
作為機器學習這門學科的研究者,初心應該是不斷推出有一些創新性的方向,從理論上有所啟迪,或者提出的模型讓下游的應用學科人有所收穫。例如在別人不看好CNN的時候,Yann LeCun能默默的堅持下來,將神經網路的潛力發揮到極致,這算是不忘初心,這是真牛叉。
而拿幾個demo刷刷分找找風投,水水文章,工作做的四平八穩之餘,去嘲笑和否定真正啃硬骨頭的人,似乎不是一件非常酷的事情。當然灌水沒什麼丟人的(弱菜如我,這事兒幹起來無比來勁兒),為某一個理論添磚加瓦更是現代科學精神的體現。可是,你得允許世界上存在那麼一小撮人,他們有嘗試其他事情的權利。這就是價值觀的不同了。
5. 「如果有實習生來跟我講這樣一個idea,我絕對不會同意去做的工作。。」
這個。。。內心其實是有些慶幸。
我甚至覺得可以作為南大LAMDA組招生的宣傳語:「在我們學科組,可以做一些以深度學習為技術核心的公司里絕對會被斃掉的好玩工作。」
那就宣傳幾句吧,其實LAMDA組的方向很全面,有專門做理論證明的高尉教授,他用了5年時間證明了一個boosting裡面的一個懸而未決的大問題,是當年機器學習理論界的年度突破之一(很多人不認為能證出來),有專門做大規模分散式機器學習演算法的李武軍教授(每周5個小時馬拉松式的組會雷打不動),有專門做深度學習的,同時也是MINIEYE的首席科學家吳建鑫教授(他的學生你們肯定知道,知乎大神 @魏秀參),有把人工智慧技術引入軟體工程學科的黎銘教授,還有在所有人都不看好強化學習的時候就在該領域默默耕耘獨樹一幟的俞揚教授(現在RL火的一塌糊塗,真是風水輪流轉。。)以及做優化的大神張利軍教授,度量學習的詹德川教授(碼力超群,又萌又胖),半監督學習的李宇峰教授,機器學習理論的王魏教授等等。。當然還有學術洞察力深刻到令人髮指的周老師鎮樓,這就不用多說了。鄙組教授們方向之全,頗具優勢,共同點只有一個:不隨波逐流,是嚴肅做研究的主。作為組裡的學生,在機器學習的大部分領域遇到問題,直線距離30-50米之內就能找到正確的教授,面對面給予你真正專業的幫助與輔導,這在其他地方是很難做到的。本科生開放日就要到了,請學弟學妹們關注招生情況。比心。
第一次在知乎答題,點贊破五百就把代碼在六一節前放上來,作為兒童節獻禮。
至少拿去刷刷Kaggle競賽還是挺好使的。。
最後,祝大家不忘初心,方得始終(這句片兒湯話實在是百搭啊。。。)算了,劃掉。
你若安好,便是晴天。
轉載請註明來源
(點贊是玩笑話啦,敝組的工作code沒有不開源的,目前還在review,合適的時候肯定會放上來,據我了解是在6.1前。無關幾個讚)
===================================
請直接訪問LAMDA官方主頁 數據與代碼 - LAMDA 搜索相應code即可(gcForest)
或者 https://github.com/kingfengji/gcforest
====================================
話說一篇文章剛放出來第二天,就有如此大的影響力,作為科研人員,默默地增加了仰望大牛的角度。
首先,這篇論文的內容就不細說了,很多人也作了很細緻的分析。創新在於兩方面:1)思想上,深度學習也可以不用千篇一律的神經網路,而採用其它淺層的分類器。2)方法上,採用了級聯+集成的方法來實現了一個深度隨機森林。我估計很多研究者也都有1的想法(其實我就有過),但能找到一個實現方法估計也只有周老師他們能做出來了,這裡面確實需要有大量的集成學習技術。
下面說下我的觀點(是否 Alternative):
1)深度網路和神經網路的解構
其實,現在深度學習已經不再僅僅是多層神經網路了。現在的很多深層模型一般有一個比較複雜的架構,包含幾個部件。每個部件分別由神經網路來實現。比如Neural Turing Machine,再比如AlphaGo。在這些複雜模型里神經網路已經部件化。
記得最早2014年時讀了Jason Weston的論文[1410.3916] Memory Networks。作者構建了一個記憶網路的框架,每個部件可以是SVM或決策樹等。當時覺得作者的想法太瘋狂了,腦洞大開。但是,最後實現時還是採用了神經網路(原因見下)。
2)End-to-End訓練和Layer-wise訓練
當實現一個複雜的系統(比如問答系統)時,我們一般的想法是分解,有助於我們理解,然後一步步來實施。這裡面有兩個問題,一是這些分解的部件是松耦合,必須單獨訓練,且每個部件的優化目標和最終的系統目標並不完全一致。二是錯誤傳播問題。神經網路出現以後這些問題都迎刃而解了,因為這些部件都可以是神經網路,並且還可以連起來一起End-to-End訓練,因此最大的痛點消失。
再來看下Layer-wise訓練。當我們可以把一個系統解構成分層解構時,我們可以求助於Layer-wise訓練,這時每一層的訓練目標可以加入一些先驗知識。這種方法有優點也有不足,不再展開。但是,如果一個系統不能分割為逐層結構,我們很難找到類似layer-wise的訓練手段,End-to-End訓練是比較好的選擇,這時除了神經網路也沒有更好的選擇。
總之,周老師的工作無疑開啟了一個很好的方向,但要想真的Alternative,裡面還有很多東西需要研究,其難度可能一般人搞不定。
補充:
這篇論文的工作是將非神經網路的部件加到深度模型里,這樣子難度很大且有需要很多trivial的工作。其實更有效的做法是反著來,就是大框架是傳統方法,其中每個部件換成神經網路,這樣做就容易很多,且也往往很有效。
簡單看了一下文章。 這篇文章提出了一種新的多層分類器, 分類器的第一層 (Multi-grained scanning)用來提取特徵, 接下來每一層(Cascade forst) 用來不斷精鍊分類。 每一層的結構都是隨機森林 (輸入特徵到標註概率分布的映射)和完全隨機森林 (輸入特徵到輸入特徵聚類的映射)的組合, 後面分類森林的層數可以根據訓練數據自適應。 文章在多個不同領域的任務上都取得了比論文中設定的傳統分類器好的效果, 尤其是在訓練數據少時效果明顯。
一個很新穎的點是把多個隨機森林的輸出概率和原始特徵串聯起來當作新的特徵給下一階段的輸入, 使得分類器有了深度的概念, 可以不斷精鍊輸出結果。特徵提取器中每一層多個隨機森林和完全隨機森林並聯的設計也非常巧妙,避免了隨機森林的直接輸出分類概率作為下一層輸入而丟失太多原始信息(完全隨機森林起到的功能是把相近的輸入映射到相近的輸出, 與標註無關)。 另外按照文章的描述, 這個方法對超參數不敏感, 實驗簡單。
我覺得存在的一個問題是特徵提取器的表達能力跟CNN比起來還是會有不小差距。這個Multi-grained scanning的輸出是概率的串聯, 感覺概率包含的信息跟原始圖像比就少了很多。 文章沒有詳細描述隨機森林的分裂函數, 如果是默認的比較固定兩維線性組合是否大於一個閾值的話跟卷積比起來還是差的很多。。只有固定大小的scan size而且決策樹的層與層之間沒有特徵傳遞, 沒有感受野的概念。另外作為一層的部件, 隨機森林訓練先隨機再選擇最優值的訓練方式跟梯度下降相比也顯得低效。
文章沒有實驗具體描述每個部件的貢獻。。例如, 既然每一層都是一個完整的分類器, 在測試的時候可以依次輸出每一層的分類準確度看深度增加的變化趨勢是什麼樣; 可以觀察每一層都是隨機森林或都是完全隨機森林時表現如何;每一層的隨機森林換層其他能輸出概率的分類器會怎麼樣;在RGB圖(CIFAR)上的表現怎麼樣。。等等
總體來說這個方法跟隨機森林/SVM的作用相近, 並不覺得是跟神經網路同等級的東西。。另外個人並不覺得需要調參數是深度學習的一個大問題。經驗是用跟現有文章一樣的網路結構/超參數就能適用大部分情況了。但想辦法給隨機森林加上深度確實是一個很有意思的方向。可以弄出很多神經網路沒有的性質。。我來談談我的理解。
從本質上的區別來看,如果把深度網路看作一棟從低到高,將低層特徵聚集成高層語義表達而建起的高樓,那gcForest就是一道把由低到高各級特徵(邊緣,顏色,形狀或者高層特徵)一起翻炒的「大雜燴」。
周志華老師提出的gcForest真的有這麼神嗎?有的,實驗結果為證。
那真的就完全超越了DNN了嗎?並非。為什麼後面我會詳述。
開始以前,我先無恥的貼一下我的隨機森林教程 對於隨機森林的通俗理解
--------------------------------------------------------------------------------------------------------------------------------
首先說說論文的思想。
gcForest模型還是把訓練分成兩個階段:
第一個是G階段(Multi-Grained Scanning),這一步主要是feature extraction,具體做法和卷積神經網路類似(如下圖),n*n的窗口滑動來獲得raw feature,只不過這裡不再有權值了,20*20大小的圖片,用10*10的窗口按滑動步長1來取的話,會生成121個特徵,然後直接將121個10*10像素的圖放到Forest裡面,產生121個三維的類概率向量,兩個Forest就是2*121個三維類概率向量,以此類推。同理在用5*5或者15*15的窗口重複上述步驟,最後把所有向量聚合,形成一個維度非常高的feature。重要的是,這個過程是全程受監督的,已經有答主說了,gcForest的feature extraction過程是受label監督的,而DNN的feature extraction過程是由高層BP傳下來的梯度指導更新的,在DNN較深的情況下,高層傳下來的梯度容易受到各種因素的影響而波動,這是gcForest優於DNN的一點。
第二個是C階段(Cascade Forest),它由下圖所示的級聯隨機森林構成,每個Forest也是輸出3維的類概率向量,有的同學會說那不是一步就完成了嗎?當然不是的,如下圖4個Forest輸出的4*3維向量要和原Input聚合,再做為下一層的輸入,以此類推,當我們發現結果已經較優了的時候,就可以停止,取平均後最大值對應的類作為輸出。為什麼要將輸出和原Input聚合作為下一層的輸入?這種做法我的理解是為了使得輸出越來越向某一個值靠近,即讓級聯隨即森林趨於收斂和穩定。
--------------------------------------------------------------------------------------------------------------------------------
然後再來說說和DNN的不同。
文首我已經概括了我理解的最本質的不同,即gcForest是受監督形成feature,然後所有的特徵共同指導分類,而DNN則是end-to-end的」一條龍」服務。
另一點不同是,gcForest的中間數據可以直接作為結果輸出,這也解釋了為什麼gcForest可以「動態加層」,而DNN不行,因為DNN的層間數據沒有特定意義,獲得結果必須通過對應的「loss layer」。
因為全程受label的監督,所以gcForest需要的超參比較少,而DNN則需要嚴格的網路結構設計和調參技巧,一旦有任何差錯,網路的小波動會導致整個系統無法運行。
再說說可擴展性吧,label的監督對於gcForest來說既是一項優點,又是最大的缺陷所在,gcForest對標籤依賴太嚴重,個人認為它甚至不能勝任無監督任務,這也是傳統機器學習方法的通病。在Unsupervise-Learning越來越重要的當今,四項全能的Deep Neural Network的地位我認為依然無法撼動。
引用文中一句話,「If we had stronger computational facilities, we would like to try big data and deeper forest, which is left for future work」,我已經能夠預感到一大波「going deeper with forest」,「forest in forest」,「deep residual forest」的到來了。
--------------------------------------------------------------------------------------------------------------------------------
寫在最後:
感謝周志華老師的貢獻,畢竟好久沒看到這樣的作者簡介了。
希望以後中國原創的文章會越來越多。
跑個MNIST就取代DNN了,會不會有種欽定的感覺
我個人的想法是,這個idea能work是能想像出來的,但是能不能有像paper中描述類似『萬金油』的作用,還需要更多檢驗。
先放上對照試驗結果:
可以看到,無論是人臉識別(圖像),情感識別(NLP),音樂分類問題等等,都取得了很厲害的結果。
更厲害的是,paper號稱『gcForest 具有少得多的超參數,並且對參數設置不太敏感;實際上在我們的實驗中,通過使用相同的參數設置在不同的域中都獲得了優異的性能,並且無論是大規模還是小規模的數據,它的工作都很好。』
這聽上去就很驚悚。沒有更多細節的情況下不好妄加揣測,但是從已有的paper可以分析一二。
一、這個deep forest 本質上仍然是一個tree ensemble 方法
ensemble method是周志華的強項,這個deep forest看起來是周在ensemble method 借鑒了deep learning之後的一個成果。
周稱這個演算法叫『ensemble of ensemble』, 實際上就是指用ensemble模型得到的結果級聯(concat),再作為新的ensemble模型的輸入再進行ensemble,有點類似多層神經網路的做法。
上圖是原理圖,可以看到,類似NN的做法,多個森林的結果concat後輸入下一層,層層過後最終輸出final prediction。
在gc forest中,每層選擇的輸出結果就是當前層每個森林對問題的預測的輸出結果的級聯,舉例子,假如某一層有2000個森林,一個2分類問題,那麼該層輸出就是2000*2 = 4000維。
二、通過完全隨機打到ensemble要求的『多樣性』
ensemble最重要的一點就是模型要有多樣性,這樣的ensemble才有意義,所謂『和而不同』。
周對這個的做法是,輸入層採用兩種不同的森林,見上圖藍黑區分。
一種是傳統的Random Forest,隨機取個特徵傳入,d為特徵維數,是很傳統的tree ensemble 方法。
另一種是完全隨機構造的森林,complete-random tree forests。隨機選擇特徵,隨機選擇split value,直到分類變純或者樣本過少。
我的理解是,前者保證了一定的演算法效果,後者則增加了一定的多樣性。
三、學習NN那一套先進的方法來進行原始特徵的處理
DL能夠work,不僅有網路的功勞,還包括天馬行空的feature engineering的功勞,比如CNN的卷積操作,RNN對序列問題的處理。
gc forest就把這些和網路關係不大的東西學來作為自己輸入的預處理。
這些特徵的處理是理所應當的,對特定問題進行特定的特徵工程來提升模型效果是必做的事情。
--------------------------------------
然後,『啵兒』的一測,在諸多領域就吊打了諸多模型。
對此,還是要等待代碼出來實測一下,不敢多說。
一點個人想法:
1. 這個idea某種程度是可以work的,原因在於tree ensemble模型是經過驗證能夠學習到高級特徵的,Facebook早先就曾經成功嘗試過用GBDT的某一層輸出放到LR模型裡面來進行CTR預測,取得了不錯的結果:https://research.fb.com/publications/practical-lessons-from-predicting-clicks-on-ads-at-facebook/ ,這說明了至少tree ensemble模型的輸出其實很make sense。
2.這個gc forest模型,實際上也是嘗試著像NN一樣通過多層學習學到更高維度更抽象的特徵,通過加層數來實現特徵和特徵之間的各種非線性組合,最終抽離出各種非線性特徵,其中幾乎一定存在很不錯的特徵。
3.為什麼每一層的輸出選擇分類結果的維度?這樣是否損失了一些特徵信息?是否對學習效果有影響。
4.這個模型是否真的能成為萬金油模型,我還是不敢下斷言,一來不是很稀疏,二來,有很多看起來很隨意的設置,三來這樣搞tree,真的會比NN在理論上容易分析一些么?還是請大佬來解答相關問題。
5.這個模型從第一層起即關注對最終結果的loss,對特徵學習是不是一個約束,即難以學習到更好的特徵?我想說的是,以周老師的身份地位還在一直堅持搞學術,太太太值得敬佩鼓掌!我們這裡叫獸做了老闆就不搞科研了,搞到傑青長江頭銜的更是要麼當官,要麼交際應酬,科研都是苦逼研究生的活,文章都是研究生寫,不指導,實際也指導不了,出去做報告要先給他講幾遍把他講懂了然後他再出去講,出去風光得很,不知道底細的還覺得他很牛。人和人的差距真TM大
目前深度神經網路在許多任務上表現出極好的性能,但是其缺點包括需要的數據量巨大,計算開銷大,而且超參數極多,對性能影響大,使用起來十分難調。
gcForest使用多層自適應生長的隨機森林與完全隨機森林可以自適應的調整模型深度,使得它能夠在小規模數據上也有很好的表現,並且實驗展示了使用同一組參數能在各種任務上達到與DNN持平或更好的性能。
而且實驗中gcForest使用了兩塊E5 CPU,雖然對比使用Titan X訓練的DNN略慢,但是其訓練計算量可以看出顯著小於DNN的訓練,後期優化並行實現後在執行效率上會有極大優勢。
gcForest內部在隨機森林的基礎上進一步ensemble,過擬合的風險應該會小很多。其每一層都已最終的訓練目標訓練,不知道會不會在學習高層特徵的方面與現有的網路結構有所差距。論文中在處理圖像數據的時候用到了mulit-grained scanning,與CNN中的卷積操作有類似之處,都可以用來提取位置無關的臨域內的結構信息,後期工作還可以擴展到各種任務上。
隨著數據量的增多,我們需要具有更高模型複雜度的模型吃下更大規模的數據以獲得更好的性能。同時,在許多任務上,有標記數據的獲取又十分昂貴。gcForest能在小規模數據上做到較好,又能在數據規模增大的時候進一步利用更多的數據提升性能,這是其一個重要的優點之一。
這篇工作提出的模型可能還有能夠改進的地方,但是其更重要的意義在於說明深度學習中deep的不一定是neural network,也可以是其他的模型,未來可能會有更多的深度學習,但不是神經網路的技術出現。gcForest是在這個方向上的一次重要嘗試。
如有錯誤歡迎指出討論。
大家都講gcforest優於""傳統""深度神經網路的地方在於有監督的layerwise feature extraction。然而這多少有一些車軲轆話的嫌疑:早期layerwise pretraining流行時就在強調相對於BP來講的可優化性,然後end-to-end出來時又在講高層下來的gradient多麼重要,現在gcForest又在翻回來重複講layerwise的優點。然而這些結構性的優點都是有語境的,撇開語境直接車軲轆話地講,有點欽定的感覺?
如果講gcForest成功的地方在於把nonlinear換成隨機森林這樣表達性強的結構,為什麼不直接採用已有的end-to-end的深度決策樹/深度森林結構(你沒有看錯,深度森林的工作早已有之,採用differentiable decision tree的工作一搜一大把),而用layerwise的訓練?反正層數也不多不是嗎?
如果強調超參數少,或者小樣本有優勢,為何不直接採用non parametric?還能順便估計uncertainty呢?
個人以為motivation這方面比較欠缺,更多的感覺是強行把隨機森林給deep一下,還沒有和其他end-to-end的深度森林演算法做對比。此外,非常類似的idea其實組裡的同學在2年前就有嘗試過,而且也的確是干不過end-to-end。不知是否是細節處理之問題,由於實際效果不佳而作罷。所以也非常期待gcForest如何在大數據集任務上的表現,如果work的話根本的原因在何,這些都是能引發今後研究的有趣問題。跑個ImageNet,top5能在10%以內我立馬跟進。
實在不行跑個cifar10,跑到85%以上就行。
謝謝邀請!先簡單地談一些粗淺之見,更深入的點要等一個月後,我放完自己手頭最近的大招之後,再來揮斥方遒、一決高下(抱拳)
1. 雖然還沒有看到代碼,沒有親手跑過實驗,但是可以肯定的是,這篇論文的確算是一個非常不錯的工作,應該是值得follow的——周老師目的達成,arXiv本來就是用來跑馬占荒、搶佔先機用的——其他的,暫時不好說,畢竟還沒有同行評議不是?
2. 但是客觀地講,並不算是一個非常獨創性的成果,我覺得從某種程度上來說:在DL 先入為主的前提下,可能並沒有GAN的創見大。
(1)研究思路:對於真正深度學習前線作戰的夥伴來說,這篇論文的研究思路並不算是很新吧?DNN本來就是機器學習大家族中的一種模型,那麼將ML中其他的模型結合Deep的思想,構建非DNN的深度模型,這個很多人在做的呦——論想法的獨創性,不過爾爾。
(2)但是:計算機科學本質上還是基於工程實踐的,周老師及其團隊在Ensemble Learning上成果,的確非常突出。所以,人家現在在這個切入點上,用實驗證明了自己的有效性,這是難能可貴的。
(3)噱頭:一直以來,我特別討厭國內關於DL的一種輿論風潮:就是並不真正深入了解DL,只一味在外圍搖旗吶喊,偏偏還一副緊跟熱潮的姿態,經常是上躥下跳、大驚小怪、杞人憂天、煞有其事的模樣。
DL的可貴絕不在於所謂唯DL是論的局限和偏見!事實上,就連Hinton,Bengio,Lecun他們自己也沒有把自己的研究和工程實踐完全局限在這裡。
那麼其他人,經常性地提及要「取代」,「超過」深度學習的,只不過是一種噱頭而已——本質上就是用來釣著我剛剛說的那群小丑來做免費的水軍,幫忙搖旗吶喊用的。
當然,這一點也是無可厚非。學術圈本來就是實打實的江湖,用些手段宣傳造勢,力爭上遊增添話語權,太沒毛病了!只不過,頭腦不能發熱不是?你看人家周老師自己在論文裡面都明確寫了,並不是真的要取代DL,巴拉巴拉……——可偏偏有些人,只看到了標題中的Alternative就感覺不得了了,必須要努力地搞個大新聞,唉。
3. DL 真正有價值的突破指向何方?
(1)剛剛看到很多夥伴半開玩笑地說,Deep SVM,Deep Bayes……即將上線。我想說的是,Deep Bayesian 可不是一般人啊,有心的夥伴可以關注一下。
(2)Data Hungary,GPU很貴,這些特徵造成DL真正的瓶頸體現在哪裡?不是因為真的貴——這年頭,不差錢的團隊、企業太多啦。而是因為,一旦到移動端、到機器人實體上、嵌入式的時候,內存、時間、電池等都不能太大,你說是不是?
(3)DL說到底只是一種模型,ML說到底只是一種工具,真正能夠像葉問打動宮羽田那樣,稱得上是宏觀想法上的創見的,恐怕還是得回歸於AI本身,回歸具體的應用場景。——局限於演算法本身的修修補補,替替換換,終究是本末倒置的。
比如說,CV任務下的圖像識別、視頻動作識別數據集,結果跑得那叫一個花團錦簇啊!可是又能如何?距離CV學科最初的目標,距離AI對CV的要求,還是很遠的啊。
4. 關於科學無國界的一點點務虛式的討論
我曉得很多夥伴目前為止,還經常性地會為所謂「中國在AI研究上起的作用越來越大」,「周志華教授…… AAAI2019 …… 成為華人第一人」之類的標題,而莫名地興奮。
但是,我覺得這樣子真的不夠大氣!科研就是科研,幹嘛隨隨便便扯其他的呢?況且,這裡面水深的很,根本不是想像的那麼簡單的。我對周老師充滿仰慕,也對其學術建樹高山仰止,對其如日中天的江湖地位喜聞樂見。我私心裡想,比起他是一個中國教授,更值得令人興奮的是他做出了什麼樣的Novel的、開創性的成果。
在一個平行時空里,有一個龐大的盜墓家族,名叫「老四門」,分為A、B、C、D四個分支,每支都是單傳。有一天,小A小B小C小D正玩得開心,突然被老A老B老C老D叫了過去。
老A:「我們家族有一份世代相傳的藏寶圖,找到這份寶藏是我們家族的終極使命。我經過這一輩子的潛心研究,發現這寶藏很可能就在我家後山的大青樹下!」
老B:「我和老A/C/D是分別探索的,相互沒影響。我的結果是,寶藏應該會在門口小河附近。」
老C:「我們是根據你們的爺爺們的記錄,開始的探索。我覺得寶藏會在後山的枯井旁。」
老D:「寶藏一定是在前山的松樹林中心。我們這一輩已經老了走不動了,藏寶圖和尋寶記錄就都給你們了。你們可以先確定其中一個地方挖一下試試。如果沒有找到的話,你們需要獨自探索,只有當傳給下一輩的時候才能相互交流。一定記得,這是我們家族的使命啊!」
小A小B小C小D根據父輩們的描述,到後山挖了一次,沒挖到寶藏。於是開始了他們尋寶的一生。
-------------------------------------------------------------------------------------------
和神經網路不同,gcForest每一層都是獨立訓練的,所能依賴的除了原始的訓練數據,只有上一層的輸出。這樣的話,一方面在網路中要保存和傳遞大量信息就比較困難,另一方面上一層的錯誤結果很難對當前層產生正面影響,也不會被當前層所修改。
還沒看到paper對應的源碼。就paper本身來看,gcForest的最大貢獻可能在於提出了一種有別於神經網路的深度結構,打破了對神經網路的迷信,為研究者提供了一個新的思路。
但就演算法本身而言,雖然在訓練效率、可解釋性方面優於神經網路,但在超大數據下未必能達到或者超過NN。
g階段對整個演算法效果有明顯提升,但難以應用在文本數據上(如情感分類的例子)
c階段每一層的輸入是上一層的輸出(12維)拼上原始輸入(1800+維),在大數據上訓練每一層對error的影響都會比較小,想要滿足停止條件,勢必會訓練很多層森林,在時間和空間效率上都會不見得很高。
以上都是沒看到源碼的情況下對可能的缺陷的推測,希望自打臉。
不過,就算演算法本身還有很大的提升空間,依然打破了研究者對神經網路的迷信,為學界注入了一股清流。相信未來幾年內機器學習演算法將會更加多樣,各大會議上的奇思妙想也很越來越多。不管怎麼說,總比調幾個參數就水一篇paper要好太多了。我覺得cascade forest部分很普通,就是很簡單的RF+ACM(auto-context model,可參考tu zhuowen09,10年文章, Auto-Context and Its Application to High-Level Vision Tasks and 3D Brain Image Segmentation)。RF+ACM在至少兩三年前就很常見了。 個人淺見,RF+ACM跟文章提出的cascade forest一模一樣。先訓練RF,然後把RF輸出的probability和原始的input combine起來作為第二個RF的輸入,依此來做,其實根據我的經驗,級聯到第3個RF時就沒啥效果了。
至於借鑒Multi-Grained Scanning,我不是很理解,一個raw input,搞出121個raw input,那麼對應的label是1個還是121個?
我其實沒明白,如果performance達到state of the art了,那麼不用調參算是個優點。問題是performance不但沒達到state of the art,而且差了好多倍,這個時候,不用調參難道不是一個缺點么……能調參起碼你能看到點希望啊。
推薦閱讀:
※人工智慧在太空探索中將發揮怎樣的作用?
※如果神級文明的外星人來到地球,你最想問他什麼問題?你最想解開哪個疑惑?
※《黑客帝國》中機器佔領了整個世界,人類深藏地下仍難自保,此時的人類有什麼辦法逆襲機器世界?
※目前,世界上最先進的紙媒集團,他們怎麼排版?
※歷史上有哪些曾經社會地位很高的職業由於科技的進步被淘汰?淘汰後的失業人員又是何去何從呢?
TAG:人工智慧 | 數據挖掘 | 機器學習 | 深度學習DeepLearning |