目前我正在研究一個項目,將使用遺傳算法來優化神經網絡。我意識到這可能不是優化它們的最佳方式,但我對兩者都是新手,所以我只是想嘗試使用它們。使用遺傳算法神經網絡
我的計劃如下(如有更改,很多)。我的輸入神經元會使用一個可能包含任何正數的數據集(包括小數點後兩位,所以它們實際上是浮點數),但最可能是0到20000之間。因爲重要性在於數字相互之間的價值相比,而不是他們有多大,他們會首先被除以所有值的最高數量將被輸入。他們會將它們乘以權重(任何積極或消極的浮動),然後去他們的隱藏層。隱藏層中的每個神經元將加總它的所有輸入,直到它們完成計算。然後他們將通過物流功能運行並輸出。
我的環境是Visual Studio C++ 2010 Express,我使用的是clr。
我的問題在於遺傳算法以及它如何工作。這將是調整權重。我的問題是,當它隨機改變一個權重值(突變率)時,它可能會使權重特別高或低,導致溢出或其他錯誤時,乘以輸入,並添加其他。我不知道如何組織我的染色體。那麼,通過選擇權重而不是隨機比特進行隨機化並更改爲定義範圍內的隨機數,會更好嗎?基本上,我正在尋找如何組織這些建議,而不會導致錯誤,導致值在保持性能時變得太大或太小。
謝謝,(和遺憾,這應該是在理論計算機科學,但我認爲它不適合在那裏)
我不記得細節,但在這本書中:http://www.amazon.com/Techniques-Programming-Premier-Press-Development/dp/193184108X,作者幾乎完成了你所描述的任務,即使用基因突變的權值來優化神經網絡。 – 2011-02-19 02:27:47
看到您提出的解決方案和更傳統的過程(可能甚至是非神經過程)之間的性能比較會很有趣。 – Predictor 2011-02-19 15:52:13