① BP神經網路誤差如何提高
你好,誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函數歸一化等等,這個你可以去網上搜索數據歸一化方法,有相關的代碼,應該。
第二部需要做出的改動是隱層節點數量,如果節點數量太多,那麼結果的隨機性就會很大,如果太少,那麼復雜數據的規律計算不出來。多少層節點最合適,這個目前除了一個一個試沒有更好的辦法。但是你會發現每一個相同的結構計算出的結果卻不盡相同,這個時候就需要考慮後續的問題。
第三步嘗試,變換transfer function。麻煩你查查字典,因為我不是用中文學的神經網路。我姑且翻譯成傳輸函數。傳輸函數在matlab中內建了3中 pureline logsig tansig。分別有不同的應用范圍。因為沒看到你的數據,我也不清楚具體應該推薦你用哪一種。不過你可以去網上搜索一下三種傳輸函數的特點。
如果有用請給「採納」謝謝。
② bp神經網路提高泛化能力有幾種方法
常規的幾種增強泛化能力的方法,羅列如下:1、較多的輸入樣本可以提高泛化能力;
但不是太多,過多的樣本導致過度擬合,泛化能力不佳;樣本包括至少一次的轉折點數據。
2、隱含層神經元數量的選擇,不影響性能的前提下,盡量選擇小一點的神經元數量。隱含層節點太多,造成泛化能力下降,造火箭也只要幾十個到幾百個神經元,擬合幾百幾千個數據何必要那麼多神經元?
3、誤差小,則泛化能力好;誤差太小,則會過度擬合,泛化能力反而不佳。
4、學習率的選擇,特別是權值學習率,對網路性能有很大影響,太小則收斂速度很慢,且容易陷入局部極小化;太大則,收斂速度快,但易出現擺動,誤差難以縮小;一般權值學習率比要求誤差稍微稍大一點點;另外可以使用變動的學習率,在誤差大的時候增大學習率,等誤差小了再減小學習率,這樣可以收斂更快,學習效果更好,不易陷入局部極小化。
5、訓練時可以採用隨時終止法,即是誤差達到要求即終止訓練,以免過度擬合;可以調整局部權值,使局部未收斂的加快收斂。