2011-02-25 49 views
1

我想用一種遺傳算法訓練一個簡單的前饋神經網絡,然而它證明效率很低,因爲同構神經網絡看起來與遺傳算法不同。如何規範遺傳算法的神經網絡?

有可能有多個神經網絡,它們的行爲方式相同,但神經元的排列順序不同,從左到右和跨越不同層次。對於遺傳算法,這些網絡的基因型會顯得完全不同。因此,任何嘗試交叉的嘗試都是毫無意義的,GA最終會像爬山一樣有效。

你能推薦一種方法來規範網絡,使它們對遺傳算法更加透明嗎?

+1

通過遺傳算法訓練的大多數神經網絡通常使用backprop混合,然後使用evolution來確定允許哪些神經元成爲網絡的一部分。使用進化來訓練權重不瞭解其上下文,並且可能基本上是隨機的。不理想。 – dcousens 2011-02-25 10:41:25

回答

0

我會在這種情況下稱爲交叉「低效率」,而不是「毫無意義」。解決您提到的重複問題的一種方法可能是按照某些規範的順序對隱藏層神經元進行排序,並在交叉過程中使用此順序,這可能至少會減少隱藏權重空間中遇到的重複。此外,您可能比遺傳算法更直接的方法來適合輸出層權重。您沒有說使用了哪種性能指標,但許多常用的指標都有相當直接的優化。因此,作爲一個例子,您可以使用遺傳算子生成一個新的隱含層,然後通過邏輯迴歸擬合輸出層,並讓GA評估整個網絡。