2017-01-01 122 views
0

我在Matlab中查看(雙層)前饋神經網絡。我正在調查可以最小化分類錯誤的參數。神經網絡參數選擇

一個google search表明,這些是其中的一些:

  • 隱藏層
  • 學習率
  • 動量
  • 培訓類型
  • 大紀元
  • 誤差最小的神經元數目
  • 其他建議?

我已經改變了Matlab中隱藏的神經元的數量,將其從1變爲10.我發現分類錯誤接近0%,1隱藏的神經元,然後隨着神經元的數量增長得非常輕微增加。我的問題是:不應該有更多隱藏的神經元保證有相同或更好的答案,也就是說爲什麼分類錯誤會與更多隱藏的神經元一起出現?

另外,如何改變Matlab中的學習速率,動量,訓練類型,時間和最小誤差?

非常感謝

+0

你在找什麼類型的神經網絡?說前饋網絡?或者是其他東西? –

+1

補充說明:雙層前饋NN –

回答

1

既然你正在考慮一個簡單的兩層前饋網絡,並已經指出,你需要考慮降低分類錯誤6分不同的東西,我只是想的只有一件事補充,那就是量的訓練數據。如果你訓練一個有更多數據的神經網絡,它會更好。請注意,使用大量數據進行訓練是從神經網絡,特別是深度神經網絡獲得良好結果的關鍵。

爲什麼分類錯誤會隨着更多的隱藏神經元而增加?

答案很簡單。您的模型過度擬合了訓練數據,從而導致性能不佳。請注意,如果增加隱藏層中的神經元數量,則會減少訓練錯誤,但會增加測試錯誤。

在下圖中,看看增加隱藏層大小會發生什麼!

enter image description here

我怎麼可能會有所不同學習速率,動量,培訓類型,時代化最小Matlab中的錯誤?

我期待你已經在Matlab中看到feed forward neural net。您只需要操作功能feedforwardnet(hiddenSizes,trainFcn)的第二個參數,即trainFcn - 一種訓練功能。例如,如果要使用動量和自適應學習率反向傳播使用梯度下降,則使用traingdx作爲訓練函數。如果您想使用梯度下降和自適應學習速率反向傳播,也可以使用traingda

您可以根據需要更改該功能的所有必需參數。例如,如果你想使用traingda,那麼你只需要遵循以下兩個步驟。

  • 設置net.trainFcntraingda。這將net.trainParam設置爲traingda的默認參數。

  • net.trainParam屬性設置爲期望的值。

net = feedforwardnet(3,'traingda'); 
net.trainParam.lr = 0.05; % setting the learning rate to 5% 
net.trainParam.epochs = 2000 % setting number of epochs 

請參閱本 - gradient descent with adaptive learning rate backpropagationgradient descent with momentum and adaptive learning rate backpropagation