2014-09-06 18 views
1

我正在嘗試訓練一個神經網絡來控制模擬2D環境中的一個簡單實體,目前通過使用遺傳算法。實時模擬神經進化的健身評估和訓練集

也許是由於缺乏與正確的術語熟悉,我的搜索並沒有產生關於如何對待在以下所有條件成立的情況下體能和訓練多的信息:

  • 沒有可用的無數據給定輸入的正確輸出。
  • 性能評估只能在與環境進行長時間的交互(連續控制器輸入/輸出調用)之後進行。
  • 系統中存在隨機性。

目前我的做法如下:

  • 的NN輸入是實體和環境狀態的瞬時傳感器讀數。
  • 輸出是其效應器的瞬時激活水平,例如執行器的推力水平。
  • 我通過運行給定神經網絡控制器的仿真,在預設的仿真時間內或者直到達到某個系統狀態時生成性能值。然後根據行爲/最終狀態的觀察結果適當地分配性能值。
  • 爲了防止過擬合,我重複了上面多次使用系統的不同隨機生成器種子,並使用某種度量(例如平均/最低性能值)分配適應度。
  • 這是爲每一個人在每一代完成的。在一代人中,爲了公平,每個人都會使用同一組隨機種子。

我有幾個問題。

  1. 這是一個合理,標準的方法來採取這樣的問題?不出所料,這加起來就是一個計算量非常大的過程。我想知道是否有任何方法可以避免每次產生適應值時都要從頭開始重新運行模擬。

  2. 如上所述,同一組隨機種子用於一代中每個個體的模擬。從一代到下一代,這個集合應該保持不變,還是應該不同?我的直覺是每一代都使用不同的種子來進一步避免過度擬合,並且這樣做不會對選擇力產生不利影響。但是,從我的結果來看,我不確定這一點。

回答

2

這是一個合理的方法,但遺傳算法不知道是非常快速/高效。嘗試登山,看看是否更快。還有其他許多優化方法,但如果您認爲該函數是隻能從中進行抽樣的黑盒子,則沒有任何優點。強化學習可能奏效。

使用隨機種子應該可以防止過度配合,但可能並不必要,這取決於靜態測試的平均代表性以及過度裝配的容易程度。

+0

感謝您的建議。在那裏確實有很多方法,而且沒有清楚地瞭解它們是否以及如何相互聯繫,目前是我的一半問題。我在RL上讀了一些文章,並認爲在每個時間段給予獎勵的想法似乎都不符合我的問題領域,但也許我沒有考慮到這一點。 – kamrann 2014-09-10 14:36:54

+0

有什麼機會可以對黑匣子評論稍微詳細一點?我懷疑這可能是關鍵,但我不確定你的意思。 – kamrann 2014-09-10 14:40:36

+0

@kamrann在強化學習中,你把它當作機器學習問題來對待。你接受輸入,然後預測每次採取的行動的最終適應度。例如。 「向左移動比右移動的可能性高10%。」 優點是你可以存儲數據,然後訓練一段時間離線,而不必做全面的模擬。您也可以使用漸變下降和快速學習方法。 我沒有太多的經驗,所以我不能告訴你它在實踐中會有多好。 – Houshalter 2014-09-11 08:52:30