CNN和RNN風行之後,DBN/SAE/pre-train在deep learning中還有意義嗎?

2010年左右對DBN(Deep Belief Network)和SAE(Stacked Autoencoder)進行layer-wise的pre training還有一些研究,並且提高了當時的訓練效果。但是,CNN和RNN流行之後就很少有人用DBN和SAE了。那麼DBN和SAE真的過時了嗎?pre training除了在這兩個模型中用,是不是幾乎沒用處了(比如CNN/RNN中會用pre training嗎)?


謝邀。

現在很多研究者認為,當有標數據足夠多的時候,足以彌補沒有pretraining的權值的隨機性;這也在很多ImageNet(CNN)和語音識別(RNN)的實驗中得到驗證。、

另外一些研究者認為,pretraining可以讓神經網路收斂到「更好」的局部最優解,因為直觀而言,經過pretraining的特徵提取更容易具有普遍性;這一說法也得到了一些實驗驗證(包括toy data和較小的數據集,因為大數據集pretraining相對比較耗時)。


有用, 這裡的回答都比較偏頗, 實際應用的問題哪裡會所有資料全都有標籤? 深度學習論文常用的資料集, 都有人好心事先土法鍊鋼標好標籤, 導致後進作論文跟演算法的人貌似都沒有在人工上標籤, 才會誤為預訓練沒用

有預訓練才能利用大量沒有標籤的資料集作半監督學習, 防止只有少數標籤的資料集過擬合或擬合不足


lecunn和bengio的研究表明,在high-D(高維)的情況下,局部最小會隨著維度的增加,指數型的減少,在深度學習中,一個點是局部最小的概率非常小,同時鞍點無處不在。

簡單的說

  1. 對於大規模的深度模型來說,可以認為不存在局部最優(概率非常低)
  2. 對於大規模的深度模型來說,鞍點無處不在
  3. Yoshua Bengio等大神傳授:26條深度學習經驗-CSDN.NET
  4. https://sites.google.com/site/deeplearningsummerschool/schedule


沒用了。

怕監督信號彌散掉的話,在中間的某幾層再加個就好了。

如果還覺得不靠譜,可以加入Batch Normalization,用這個可以徹底解決梯度彌散問題,多少層都行。


CNN其實有用到dbn的逐層訓練方式,當然,預訓練的方式多種多樣,各有所長而已。RNN不是很了解,但是知道一種基於能量的rnn訓練方式,沒有用到dbn這樣的預訓練。

其實dbn這種採取逐層預訓練,本質上來說是不合理的,因為找到的都是局部最優,但是偏偏這種預訓練的結果不錯,而且成本相對較低。

至於淘汰,這個個人感覺不會,雖然dbn其實是一個折中的模型,但畢竟還是有很多可取之處,看看為何svm沒有淘汰其他分類器就知道了,爪機碼字惱火


過時了,沒用了,看最近的會議就知道了,今年nips一篇都沒有了!


看完感覺sae,dbn之類的要沒落了?我博士還打算研究這個方面呢。。。。


其實我一直在做如何高效pre-train的工作,我個人認為pre-train還是效果很大。也有一些結論。我一直在autoencoder上做的對比試驗。pretrain的效果主要還是用於初始化參數,因為mlp中太多local minima。可能如果有方法避免local minima,pretrain就不需要了,結果照樣好。如有興趣在深入說!


你這麼問實在是沒辦法回答,概念不清晰。pre-train和SAE,DBN不能並列,SAE,DBN是一種pre-train方式,pre-train的方式有很多,比如把imagenet得到的model transfer到object detection上,其實也是pretrain。如果你是問SAE,DBN是否值得研究,那麼這股力量目前來看有點弱小,但bengio組還是做出了一些成果。

寬泛一點吧,回答一下pretrain是否有意義。也要看是研究意義還是工程意義?

如果是研究意義的話,那麼是大大的,當然不局限於SAE,DBN這種,pretrain其實是一種很流行的技術,只不過很多場合不叫pretrain而已,例如slow feature analysis,place CNN得到object detector,各類CNN的transfer learning,Word2vec等等,還有很多。在標籤不足的情況下,使用的很多方法都在pretrain範疇,但不一定是SAE,DBN這種。

工程意義的話,看你訓練樣本是否足夠,如果足夠就不用了,如果不足夠,那麼pretrain就很有必要。你別告訴我從imagenet上的模型做finetuning,你下載的模型不叫pretrain!!!


很多人忽略了深度學習的應用場合除了有大量標籤的場合之外,還有很多沒有那麼多標籤的場合,例如感測器信號的識別。這些任務中標籤獲取可能比較困難,因此為了避免過擬合,預訓練還是有用的。不過有些場合的信號也不是很複雜,因此深度學習的優勢可能也沒那麼明顯,比如我做的項目,用SAE訓練三個隱層就夠了。


至少還有一些人沒有忘記David MacKay這個名字:

Uncertainty in Deep Learning (PhD Thesis) | Yarin Gal - Blog | Cambridge Machine Learning Group


這篇博客不錯, 可以參考:

Pycon 2016 tensorflow 研討會總結 -- tensorflow 手把手入門 #第一講

還有第二講:

Pycon 2016 tensorflow 研討會總結 -- tensorflow 手把手入門, 用"人話"解釋CNN #第三講 CNN


不要跟風,

這個處理自然特徵還是管用的。

試過複雜代數方程難以求解。

可無監督分類。


很久以前有過用非監督方式預訓練CNN的工作,後來沒人用了,普遍反映沒什麼用。現在用大量監督數據直接訓CNN就行。

DBN之流,在理論上還有人在做,但是從效果看好像用處不大。


推薦閱讀:

請問CNN 中的 maxpool 到底是什麼原理,為什麼要取最大值,取最大值的原理是什麼?謝謝。
如何用FPGA加速卷積神經網路(CNN)?
深度圖像depth image作為CNN卷積神經網路的輸入層有什麼技巧?選用什麼網路模型能取得好效果?
Pytorch如何自定義損失函數(Loss Function)?
Krizhevsky等人是怎麼想到在CNN里用Dropout和ReLu的?

TAG:機器學習 | 神經網路 | 深度學習DeepLearning | 卷積神經網路CNN |