轉載自:http://blog.csdn.net/elwangeij/article/details/51352964
為什么預訓練:
深度網絡存在以下缺點:
1. 網絡越深,需要的訓練樣本數越多。若用監督則需大量標注樣本,不然小規模樣本容易造成過擬合。(深層網絡意味著特征比較多,機器學習里面臨多特征:1.多樣本 2.規則化 3.特征選擇)
2. 多層神經網絡參數優化是個高階非凸優化問題,常收斂較差的局部解
3. 梯度擴散問題。BP算法計算出的梯度隨著深度向前而顯著下降,導致前面網絡參數貢獻很小,更新速度慢。
解決方法:逐層貪婪訓練。無監督預訓練(unsupervised pre-training)即訓練網絡的第一個隱藏層,再訓練第二個,最后用這些訓練好的網絡參數值作為整個網絡參數的初始值。? 無監督學習--->參數初始值;監督學習--->fine-tuning,即訓練有標注樣本。經過預訓練最終能得到比較好的局部最優解。
常用預訓練方法
stacked RBM
stacked sparse-autoencoder
stacked denoise-autoencoder
預訓練的效果:
fine-tuning微調
預訓練類似于規則化權值(從測試誤差來說,預訓練對于多節點數和深層網絡效果更加)