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(高維)的情況下,局部最小會隨著維度的增加,指數型的減少,在深度學習中,一個點是局部最小的概率非常小,同時鞍點無處不在。
簡單的說
- 對於大規模的深度模型來說,可以認為不存在局部最優(概率非常低)
- 對於大規模的深度模型來說,鞍點無處不在
- Yoshua Bengio等大神傳授:26條深度學習經驗-CSDN.NET
- 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 |