2016-04-27 200 views
2

假設我希望使用堆疊自動編碼器作爲預訓練步驟。如何使用堆疊自動編碼器進行預訓練

假設我的全自動編碼器是40-30-10-30-40。

我的步驟是:

  1. 列車一個使用原來的40點特徵的數據在兩個輸入和輸出層設置40-30-40。
  2. 使用僅上述40-30編碼器的訓練過的編碼器部分,導出原始40個特徵的新的30特徵表示。
  3. 在輸入層和輸出層中使用新的30特徵數據集(在步驟2中導出)訓練30-10-30。
  4. 從步驟1,40-30中取出經過訓練的編碼器,並將其從步驟3,30-10送入編碼器,得到40-30-10編碼器。
  5. 從步驟4取出40-30-10編碼器並將其用作NN的輸入。

a)是否正確?

b)在訓練神經網絡時,是否凍結40-30-10編碼器中的權重,這與從原始的40特徵數據集中預生成10特徵表示以及訓練新的10特徵表示數據組。

PS。我已經有一個問題,問我是否需要配合編碼器和解碼器的權重

+1

用autoencoders進行預訓練,逐層訓練和使用重量搭配都是過時的技術。你基本上是在浪費你的時間。只需立即訓練整個網絡或整個自動編碼器。 – aleju

+0

是的 - ReLU和輟學應該是足夠的 –

+0

謝謝你們兩個。當你說「只是訓練整個網絡或整個自動編碼器」時,「整個網絡」你的意思是訓練40-30-10-NN和「整個自動編碼器」你的意思是40-30-10-30 -40? –

回答

2

a)是正確的嗎?

這是一種典型的方法。您也可以嘗試直接安裝autoencoder,因爲具有多個圖層的「原始」autoencoder應該可以立即安裝,作爲替代方案,您可以考慮使用堆疊降噪自動編碼器,這可能會從「堆疊」培訓中受益更多。

b)中我是否凍結的權重的40-30-10編碼器訓練NN時這將是與從原來的40特徵數據集和訓練的新10特徵預生成的10個特徵表示表示數據集。

當你訓練整個NN時,你不會凍結任何東西。預訓練只是優化過程的一種預處理方式 - 您將自己的方法展示在哪裏開始,但您不想限制實際監督式學習的擬合程序。

PS。我已經有一個問題,問我是否需要配合編碼器和解碼器的權重

不,你不必配重,特別是你實際上丟掉了你的解碼器。爲了使可能的最小化過程成爲可能(比如在RBM中),對一些更多的概率模型加權是很重要的,但對於自動編碼器來說沒有意義。

+0

謝謝你的回答。它幫助我更好地理解。 –

相關問題