0

在Andrew Ng的講義中,他們使用LBFGS並獲得一些隱藏功能。我可以使用漸變下降來產生相同的隱藏功能嗎?所有其他參數都是相同的,只需更改優化算法即可。代替LBFGS,在稀疏自動編碼器中使用梯度下降

因爲當我使用LBFGS時,我的autoencoder可以產生與講義中相同的隱藏特性,但是當我使用梯度下降時,隱藏層中的特徵不見了,看起來完全是隨機的。具體來說,爲了優化成本函數,我實現了1)成本函數,2)每個權重和偏差的梯度。並將它們投入到scipy優化工具箱中以優化成本函數。這個設置可以給我合理的隱藏功能。

但是當我改變爲漸變下降。我試圖讓「權重 - 重量梯度」和「偏差 - 偏差梯度」。但是隱藏的功能看起來完全是隨機的。

有人可以幫我知道原因嗎?謝謝。

+3

'他們使用LBFGS並獲得一些隱藏的功能。我可以使用漸變下降來產生相同的隱藏特徵嗎? - 原則上是。至少如果兩者都收斂。然而,對於某些功能,漸變下降可能會非常緩慢,因此您可能無法在合理的時間內達到局部最佳狀態。如果你想自己實現優化,那麼步長的選擇將是至關重要的。 – cel

回答

1

是的,你可以用SGD來代替,實際上它是最流行的選擇在實踐中。 L-BFGS-B不是訓練神經網絡的典型方法。但是:

  • ,你將不得不調整訓練方法的超參數,你不能只用被用於LBFGS,同樣的人,因爲這是完全不同的方法(好吧,不完全,但它使用一階優化,而不是)
  • 您應該在您的SGD中包含勢頭,這是一種非常簡單的方式來獲得一種二階近似,並且已知(仔細調整時)表現與實際的二階方法一樣好在實踐中
+0

如果我不使用相同的參數,我可以使用相同的神經網絡結構,例如:隱藏層中的節點數量。感謝您的回覆。這非常有幫助。 – iTS

+0

是的,網絡的結構是一種獨立的學習方案,當然有一些結構我們有特定的優化器,L-BFGS-B不是其中之一,因此您可以隨時將其更改爲SGD +動量 – lejlot