0

我被告知要實施一個神經網絡來做預測。所以我創建了一個前饋MultiLayer Perceptron與反向傳播算法,它工作正常。但我需要更快,更快地獲得結果。因此,我大概在遺傳算法優化培訓課程中的權重。使用遺傳算法的神經網絡權重優化

你如何建議編碼chromosme?

我已經將它作爲一個隨機生成的權重表(-100,100),但它沒有給出非凡的結果。我想問題是,即使突變的概率很高,生成一個權重隨機表也會限制解空間。

任何想法如何編碼在chromosme的權重,以讓遺傳算法工作很好?

在此先感謝。

+0

收斂速度更快?然後使用批量標準化。 –

+2

使用遺傳算法可能需要更多的資源(如時間和CPU),而不僅僅是使用梯度下降或其他分析學習方法。你嘗試過使用RMSprop還是adagrad? – jorgenkg

+0

我以前一直在使用不斷髮展的神經網絡,我覺得將網絡權重表示爲位向量,然後在兩個表示(位向量/權重列表)之間執行一些轉換,這被證明是最有效的搜索策略。 – jorgenkg

回答

1

總之(已經在評論中已經提出):不要這樣做。遺傳算法是對無法有效優化的簡單元優化器,因爲它們是慢,啓發式並且需要大量的資源。特別是他們應該從起訴來訓練一個神經網絡,爲此我們有非常有效的訓練方法(SGD,Rmsprop,Adam)。儘管它們可以用來優化一些更抽象的部分,比如網絡架構等,在這種情況下,無法計算有效的梯度,甚至不能使用其他定義良好的數學程序。

0

如果你想使用任何進化算法來優化神經網絡權重, 可能更好的方法是使用反向傳播學習網絡,然後使用編碼限制的最大和最小權重。可以說權重分佈在-1.0988333,1.2982293之間,我會採用[-2,2] /( - 2,2),這樣在這個區間之間可以生成一條染色體,這會更傾向於更好的解決方案,並且可以進一步優化通過算法。生成最佳解決方案的時間間隔[-100,100]將會很慢。當然,你如何定義你的健身功能以獲得最佳解決方案。一種方法是獲得給定權重的最小有效值。