2014-08-28 298 views
2

參考這個答案就在NN選擇隱藏層和單位數目: https://stackoverflow.com/a/10568938/2265724
的後建議添加隱藏單元的數量,直到泛化誤差開始增加。
但我的問題是學習率。給定隱藏單元的數量(即圖中的一個數據點或一個特定的體系結構,比如說10個隱藏單位),我應該如何設置學習速率以及要訓練多少個時代?
1.使用固定的學習速率(在檢查它收斂後,即成本下降),並運行n個時期或直到成本(或驗證錯誤)平穩(如果確實以良好的漸近方式下降)
2. as在1與早期停止
3,如1或2,但在一定的嘗試各種不同的學習率(線性或對數)範圍
4.如3,包括學習速率衰變
5.如3或4,包括體重衰變爲正,或者更好,差如何設置學習率訓練神經網絡

的參數增加,從1到5 1的數量是最快的,但聽起來並不令人滿意(爲什麼不試試其他學習鼠ES?)。 3-5是耗時的。因爲如果我不快樂,我需要通過增加隱藏單位的數量來嘗試另一種架構。重複,直到獲得帖子中顯示的圖。

上午我理解和正確實施呢?

回答

0

學習率來達到降低泛化誤差可以依賴的問題。根據以前的經驗,最佳學習率可以根據包括曆元大小,學習迭代次數,隱藏層和/或神經元的數量以及輸入的數量和格式在內的多個參數而不同。試驗和錯誤經常被用來確定每個研究問題的理想學習條件。

有,用於給定的訓練數據,隱藏層神經元和輸出量神經網絡參數提供一個合理的起點過去的一些論文。這可能是一個很好的起點。

也許其他動態模型可用來鼓勵減少泛化誤差進行局部極小。每個問題都有自己的理想參數,需要修改參數或使用某種形式的動態或自動模型來找到理想狀態。

+1

所以你說的學習率應該修補,即上面的選項1或2不滿意。然後,在[0.001,1]中說多少修補,即有多少n個點要嘗試。在我的問題中,n = 10將需要幾天時間。我看過論文「我們訓練了我們的神經網絡,學習率= 0.01 ...」,但他們做了多少修補並不清楚。 – ng0323 2014-08-29 10:20:06

+0

在我自己的研究和出版物中,我通常會修改神經網絡參數,然後在研究論文中報告最佳條件。這些參數在我的論文中進行了評估和討論,但是在出版物中保留的很少。這並不是說現在可能會有更多的動態模型可用,但過去的經驗顯示,不僅學習率和泛化誤差之間存在相關性,還有神經網絡的其他參數之間的相關性。我通常應用程序編號3(線性),這可能需要花費時間,具體取決於測試次數。 – 2014-09-01 00:05:56

4

這是一個困難的問題;甚至還有一個機器學習的子領域,專門用於探索這個,被稱爲hyperparameter optimization

解決超參數問題的最基本的方法是蠻力搜索,其中您嘗試系統地改變沿網格的超參數設置(「網格搜索」)並選擇最佳方法。這很慢,也很煩人,因爲它似乎應該有更好的方法。

有思想對提高電網的搜索幾個不同的學校:

  • 進化方法分配一些健身得分超參數的組合,然後嘗試重新使用那些表現良好的參數設置組合一起。我最近在這個陣營中看到的最流行的方法是CMA-ES

  • 貝葉斯方法試圖在研究人員認爲對每個超參數都合理的值上放置某種先驗分佈。然後通過評估幾個不同的超參數設置,您可以以統計上最優的方式將所得到的性能與先前的性能相結合。