回覆列表
  • 1 # 軟萌小兔嘰

    若果對你有幫助,請點贊。 神經網路的結構(例如2輸入3隱節點1輸出)建好後,一般就要求神經網路裡的權值和閾值。現在一般求解權值和閾值,都是採用梯度下降之類的搜尋演算法(梯度下降法、牛頓法、列文伯格-馬跨特法、狗腿法等等),這些演算法會先初始化一個解,在這個解的基礎上,確定一個搜尋方向和一個移動步長(各種法算確定方向和步長的方法不同,也就使各種演算法適用於解決不同的問題),使初始解根據這個方向和步長移動後,能使目標函式的輸出(在神經網路中就是預測誤差)下降。 然後將它更新為新的解,再繼續尋找下一步的移動方向的步長,這樣不斷的迭代下去,目標函式(神經網路中的預測誤差)也不斷下降,最終就能找到一個解,使得目標函式(預測誤差)比較小。而在尋解過程中,步長太大,就會搜尋得不仔細,可能跨過了優秀的解,而步長太小,又會使尋解過程進行得太慢。因此,步長設定適當非常重要。學習率對原步長(在梯度下降法中就是梯度的長度)作調整,如果學習率lr = 0.1,那麼梯度下降法中每次調整的步長就是0.1*梯度,而在matlab神經網路工具箱裡的lr,代表的是初始學習率。因為matlab工具箱為了在尋解不同階段更智慧的選擇合適的步長,使用的是可變學習率,它會根據上一次解的調整對目標函式帶來的效果來對學習率作調整,再根據學習率決定步長。機制如下:if newE2/E2 > maxE_inc %若果誤差上升大於閾值lr = lr * lr_dec; %則降低學習率elseif newE2 < E2 %若果誤差減少lr = lr * lr_inc;%則增加學習率end詳細的可以看《神經網路之家》nnetinfo裡的《[重要]寫自己的BP神經網路(traingd)》一文,裡面是matlab神經網路工具箱梯度下降法的簡化程式碼若果對你有幫助,請點贊。 祝學習愉快

  • 中秋節和大豐收的關聯?
  • 人淡如菊的句子?