1

我正在做一項任務,我需要演變我神經網絡的權重。 我的神經網絡是工作,但我不確定如何演化我的網絡,這將使我獲得良好的結果。如何使用遺傳算法演化神經網絡的權重?

我知道我的AI老師說我需要使用sigmoid函數並將我的權重*輸入加起來,但我對其餘部分並不完全確定。

謝謝。

編輯: 我需要使用GA來訓練權重。對不起,我沒有說清楚。

+0

請改善您的問題。這太「開放式」了。你確定你想用遺傳算法來演化神經網絡嗎? (並不是說這不一定是個壞主意,但是在介紹類的背景下,這似乎是對這些類型的不必要的混合。另外,你的教師的建議似乎沒有暗示GA的方法)。 – mjv 2012-03-02 20:28:54

+0

對不起,我想我在我的問題中提到我需要使用GA,但我沒有說清楚。我沒有數據集來訓練權重,所以這就是我使用GA的原因。 這項工作是我的人工智能任務的擴展,我們假設要創建一個基本的遺傳算法。 – Undefined 2012-03-02 21:11:42

回答

1

有很多方法可以做到這一點,通常不會有(只是作業)被告知要在沒有給予算法實現的情況下發生。

一個在AI或神經網絡類教的常用方法是反向傳播:

http://en.wikipedia.org/wiki/Backpropagation

UPDATE:哦,我明白了。現在我可以至少指出你正確的方向。在stackoverflow的答案空間中提供的討論有點長,但基本思想是產生一堆隨機神經網絡(非常糟糕!)解決你的問題,然後將遺傳算法應用到網絡(即,將神經網絡與可以突變的染色體,交叉/重組等等,根據它們的適應性),並讓整個系統從原始軟泥中引導出來。可以這麼說。

有由福格爾寫的很不錯的論文約一個特定的應用(國際象棋)等,在這裏:http://www.aics-research.com/ieee-chess-fogel.pdf

+0

對不起,我想我在我的問題中提到我需要使用GA,但我沒有說清楚。我知道後向傳播,但在我的問題中,我沒有數據集來訓練權重,所以這就是我使用GA的原因。 – Undefined 2012-03-02 21:10:46

0

有許多方法進化神經網絡。您可以演進拓撲,權重或兩者(這是特別在強化學習領域完成的,請參閱EANTNEAT)。

你說你應該發展你的網絡的權重。一般來說,您可以爲此應用任何優化算法。但是存在不同類別的問題和優化算法。在監督式學習中,計算訓練集上的錯誤和誤差函數相對於權重的梯度通常是有意義的。使用梯度信息的優化算法通常比遺傳算法更快(例如Backprop,Quickprop,RProp,Conjugate Gradient,Levenberg-Marquardt ...)。

如您所說,您沒有訓練集,因此您沒有錯誤功能,因此無法計算漸變。那麼,你需要什麼來演化你的神經網絡的權重是一種適應度函數。如果您沒有任何健身功能,您將無法通過調整重量來改善任何情況。所以,基本上你有一個函數F(W),其中w爲你連續權重向量你有關於F.來優化你的算法應該做這樣的事情:

  1. 初始化神經網絡
  2. 生成N權重向量
  3. 計算權重向量的適應值
  4. 重複2。直到滿足一些停止標準

從你的描述我猜你可能需要解決某種強化學習問題。在這種情況下,你可以e。 G。將一集的累積獎勵作爲適應值。如果您對這個主題感興趣:最近有一些關於將遺傳算法應用於神經網絡來解決強化學習問題的研究(這被稱爲神經元進化)。通常人們使用遺傳算法,如CMA-ES(CMA-NeuroES)或CoSyNE

我希望我可以幫忙。

0

您GA的適應度函數應該能夠優化神經網絡的權重,例如解決邏輯與單層感知問題,需要一個功能像這樣:

適合度= 1 - (輸入1 *重量1 +輸入2 * 1加權)

越接近你的健身到達0越好,用(輸入1 * 0.5 +輸入2 * 0.5)

如果我們更換輸入1和輸入2與價值觀,如和權重的最佳解決方案在每個神經元上爲0.5%

INPUT1 = 1,輸入2 = 1 =>健身= 0

INPUT1 = 0,輸入2 = 1 =>健身= 0.5

INPUT1 = 1,輸入2 = 0 =>健身= 0.5

INPUT1 = 0,輸入2 = 0 =>健身= 1

這些生成的權重 然後可轉移到用於每個神經元的索引的重物。本質上,你不會創建許多神經網絡,但是NN的權重組合很多,並使用GA來優化它們。