2010-05-23 82 views
7

我正在創建一個工具,用於基於過去的數據預測軟件項目的時間和成本。該工具使用神經網絡來做到這一點,到目前爲止,結果是有希望的,但我認爲我可以通過改變網絡的屬性來做更多的優化。當涉及到這些設置時,似乎沒有任何規則或甚至許多最佳實踐,所以如果有經驗的人可以幫助我,我將不勝感激。用於快速培訓的神經網絡設置

輸入數據由一系列整數組成,可以按照用戶想要去的那樣高,但大多數會低於100,000我會想到的。有些將低至1.它們的詳細信息包括項目中的人員數量和項目成本,以及有關數據庫實體和用例的詳細信息。

總共有10個輸入和2個輸出(時間和成本)。我正在使用Resilient Propagation來訓練網絡。目前它具有:10個輸入節點,1個隱藏層,5個節點和2個輸出節點。我正在接受5%的錯誤率訓練。

該算法必須在網絡服務器上運行,所以我已經採取措施停止培訓,看起來它不會在任何地方。這被設置爲10,000次訓練迭代。目前,當我嘗試使用一些有點多變的數據進行訓練時,但在我們預期用戶投入的範圍內時,訓練需要很長時間,達到10,000次迭代限制並重新開始。

這是我第一次使用神經網絡,我真的不知道會發生什麼。如果你能給我一些關於我應該用於網絡和迭代限制的設置的提示,我將不勝感激。

謝謝!

回答

10

首先,感謝您提供有關您的網絡的如此多的信息!這裏有幾點應該給你一個更清晰的畫面。

  • 您需要規範化您的輸入。如果一個節點的平均值爲100,000而另一個節點的平均值爲0.5,則兩個輸入不會產生相同的影響。這就是爲什麼你需要規範化他們。
  • 10個輸入節點只有5個隱藏的神經元?我記得在某處讀到你需要的輸入數量至少增加一倍;嘗試20 +隱藏的神經元。這將爲您的神經網絡模型提供開發更復雜模型的能力。但是,太多神經元和您的網絡只會記住訓練數據集。
  • 彈性反向傳播很好。只要記住,還有像Levenberg-Marquardt那樣的其他訓練算法。
  • 你有多少套訓練套裝?神經網絡通常需要大型數據集才能做出有用的預測。
  • 考慮將動量因子添加到您的重量訓練算法中,以加快速度,如果您還沒有這樣做。
  • 在線培訓比分批培訓更容易進行廣義預測。前者在通過網絡運行每個訓練集後更新權重,後者在傳遞每個數據集後更新網絡。這是你的電話。
  • 您的數據是離散的還是連續的?神經網絡比連續函數更適合於01。如果是前者,我建議使用sigmoid激活功能。對隱藏層和輸出層的激活功能的組合tanhlinear傾向於在連續變化的數據方面做得很好。
  • 你需要另一個隱藏層嗎?如果您的網絡正在處理複雜的輸入輸出表面映射,它可能會有所幫助。
+0

感謝您的所有信息! 1.我想過對輸入進行歸一化處理,但是當一個數值沒有最大值並且某些數值可能差別很大時我不知道該怎麼做。 2.我嘗試了20個隱藏的神經元,它需要5個多小時而不是幾秒鐘的數據。好像超過10個並不好。 4.數據集的數量取決於用戶投入的數量。我們一直在使用5個左右。 5.我們使用一個名爲Encog的神經網絡框架,我將研究改變勢頭,但我不知道如果可能。 – danpalmer 2010-05-23 20:42:19

+0

6.同樣,我不知道框架如何處理在線培訓,我會研究這一點。 7.數據是連續的,我已經設置了線性激活,因爲我會想象結果應該如何隨輸出而變化。 8.和第2點一樣,我發現有2層的時候,它實現了我強加的限制,並且運行時間更長。 – danpalmer 2010-05-23 20:44:26

+0

大聲笑。我也應該上牀,明天上大學。我已經添加了一些標準化。它不是很好,但所有數據集的值都在0到1之間,預測也不會那麼高。一方面,我的訓練速度提高了18000%。我會繼續測試並嘗試實施其他一些措施,但現在它是一個很好的結果。非常感謝您的幫助! – danpalmer 2010-05-23 21:48:36