11

遺傳算法是一種最有效的方法來優化隱藏節點的數量和在人工神經網絡上完成的訓練量嗎?遺傳算法神經網絡優化

我使用Matlab中的NNToolbox編碼神經網絡。我願意接受任何其他優化技術的建議,但我最熟悉GA。

回答

11

實際上,您可以使用關於NN的GA進行優化。 您可以優化結構(節點數,層數,激活函數等)。 你也可以使用GA訓練,這意味着設置權重。遺傳算法永遠不會是最高效的,但是當你對於使用什麼數字幾乎沒有線索時,它們通常會被使用。

訓練,你可以使用其他算法,包括反向傳播,nelder-mead等。

你說你想優化號碼隱藏節點,爲此,遺傳算法可能是足夠的,雖然談不上「最佳」。你正在搜索的空間可能太小而不能使用遺傳算法,但它們仍然可以工作和afaik,它們已經在matlab中實現了,所以沒有什麼大不了的。

通過優化培訓的數量,你的意思是什麼?如果你指的是時代的數量,那麼很好,只要記住,訓練在某種程度上取決於開始權重,而且它們通常是隨機的,所以用於GA的適應度函數並不是真正的函數。

+0

謝謝。這是我正在尋找的確切信息。 – ServAce85 2009-05-06 08:28:19

+0

我很想用C/C++編寫代碼,然後打開1000個Amazon EC2服務器幾個小時。 – 2009-05-06 13:08:33

+0

使用GA訓練神經網絡比僅使用GP訓練有什麼好處?人工神經網絡具有模仿大腦的好處,並且他們可以使用方法以智能方式更新權重,例如反向傳播,以確保網絡朝着正確的方向發展(就像在大腦中一樣)。但是,當使用GA來更新權重時,你會放棄所有這些,而且在我看來,對於GP來說,再也沒有任何真正的優勢了,因爲如果網絡將得到改善,現在只是偶然。你對此有何看法? – HelloGoodbye 2014-02-15 21:52:15

0

我不確定你是否應該爲此使用遺傳算法。

我想你的遺傳算法的初始解人口將包括你的神經網絡訓練集(給定一個特定的訓練方法)。通常情況下,初始解決方案總體由隨機解決方案組成。然而,隨機訓練集並不會真正訓練你的神經網絡。

您的遺傳算法的評估算法將是所需訓練量的加權平均值,解決特定問題時的神經網絡質量以及隱藏節點的數量。所以,如果你運行這個,你將得到在神經網絡質量(=訓練時間,數字隱藏節點,網絡問題解決能力)方面提供最佳結果的訓練集。

或者你正在考慮一個完全不同的方法?

0

我不完全確定你正在處理的是什麼樣的問題,但GA聽起來有點矯枉過正。根據您使用的參數範圍,詳盡的(或其他非智能的)搜索可能會起作用。嘗試繪製您的神經網絡的性能相對於前幾個值的隱藏節點的數量,從小開始並跳躍到更大和更大的增量。根據我的經驗,許多神經網絡在性能方面表現出色,您可能能夠很好地瞭解哪些隱藏節點數量最有意義。

神經網絡的訓練迭代通常也是如此。更多的培訓可以幫助網絡達到某一點,但很快就不會有太大的影響。

在大多數情況下,這些NN參數不會以非常複雜的方式影響性能。一般來說,增加它們會提高表現一段時間,但隨後收益遞減。對於這種簡單的曲線,遺傳算法並不是真的有必要找到一個很好的價值。如果隱藏節點(或訓練迭代)的數量真的確實導致性能以複雜的方式波動,那麼像GA這樣的metaheuristics可能是適合的。但在採取這種路線之前,先試試蠻力方法。

+0

蠻力不適用於我的應用程序,因爲我的數據非常嘈雜(想想腦電數據)。 – ServAce85 2009-05-06 08:34:42

0

我會傾向於說,遺傳算法是一個好主意,因爲你可以用最小的解決方案啓動和發展神經元的數量。您想要找到最佳點的「質量函數」很可能是平滑的,並且只有很少的顛簸。

如果你要找到這個最佳NN經常我會建議使用優化算法,並在您的案件擬牛頓在數值食譜是最適合於功能是評估看病貴的問題描述。

2

遺傳算法可以有效地應用於優化神經網絡,但你必須考慮一些關於你想要做什麼。

最「經典」 NN訓練算法,如反向傳播,只有優化神經元的權重。遺傳算法可以優化權重,但這通常是低效的。但是,正如您所問,他們可以優化網絡拓撲以及訓練算法的參數。您必須特別警惕創建「過度訓練」的網絡。具有修飾遺傳算法

一個進一步的技術可以用於克服與反向傳播的問題是有用的。反向傳播通常會發現局部最小值,但它能準確快速地找到它們。將遺傳算法與反向傳播相結合,例如在拉馬克式遺傳算法中,給出了兩者的優點。這種技術在GAUL tutorial

4

期間簡要描述神經網絡和遺傳編程的一個很好的例子是NEAT架構(增廣拓撲的神經演變)。這是一種可以找到最佳拓撲結構的遺傳算法。還知道要善於保持隱藏節點的數量。

他們還使用這款名爲Nero的遊戲。非常獨特和非常驚人的實際結果。

斯坦利博士的主頁:

http://www.cs.ucf.edu/~kstanley/

在這裏你可以找到關於一切NEAT相關的,因爲他是誰發明它的人。

1

它是使用遺傳算法訓練神經網絡時,你的目標函數是不連續的,有時是有用的。