最近,我一直在創建神經網絡,計劃培訓他們玩我已經做的遊戲(神經網絡可以訪問所有的遊戲數據)。我對神經網絡,遺傳算法和NEAT實現有深入的理解。然而,我遇到的問題是正常化玩家看到的輸入。如果我們有敵方目標,醫療箱對象和武器對象,他們需要輸入和處理不同。我看到了SethBling here的一段視頻,他在那裏簡單介紹了他如何設置神經網絡。他只使用值1,0和-1。但是,對於更復雜的遊戲,這是行不通的。我嘗試了一個小模擬,當輸入是.25 < x < .75時返回true,否則返回false,但它找不到解決方案。因此,我似乎不能把對象的ID扔進神經網絡。任何幫助深表感謝!如何規範化視頻遊戲機器學習(神經網絡)的輸入
0
A
回答
1
我打算髮表評論,但不幸的是我沒有足夠的聲望點。所以,我有幾個建議,希望能給你一些想法。我將假定您正在使用NEAT算法作爲您的遊戲播放算法。現在,從我收集的問題來看,您的問題在於,因爲您的遊戲中有不同數量的實際對象進行交互,所以實際上不可能爲每一幀都提供一個標籤。因此,正如你似乎已經想出的那樣,你需要爲對象提供一個非整數域,無論是通過類的總數規範化檢測到的類ID,還是其他方法。我有3個命題爲了嘗試完成這個(或避免問題):
1:使用某種類型的圖像處理(無論是分割還是閾值),物體檢測以及圖像時刻以便創建您感興趣的對象的數據庫,然後在遊戲進行時,您可以重新創建更簡單的實際遊戲環境版本
2:訓練語義分割神經網絡以執行類似的操作到1
3:訓練(或使用預先訓練的)深度卷積神經網絡來提取高級特徵。然後使用這些功能(以及潛在的某種位置編碼方法)作爲NEAT算法的輸入。然後,您的NEAT算法會選擇想要查看的濾波器組合,以便做出決定。
我想我會親自嘗試選項編號3,因爲它需要最少量的手動工作才能初始設置。
我希望這給你一些想法。
0
當使用神經網絡時,一個好的方法就是將它們看作是人類。人類需要知道什麼?我總是做的是我給不同類型的東西的網絡不同的傳感器。我的傳感器幾乎總是隻有一定長度的光線。 在你的情況下,我相信你沒有更好的選擇,比如使用3個硬幣傳感器,3個傳感器用於醫療檢測等。 你還必須決定是否要使用布爾傳感器(如果觸發了某些事件傳感器與否,無論多麼接近)或雙重傳感器(這將返回一個值告訴網絡事件發生的距離)或者如果你想要兩者合併。
相關問題
- 1. 神經網絡規範輸出數據
- 2. 神經網絡/機器學習,如何將數據轉化爲數字?
- 3. 遊戲跳棋的神經網絡的理想輸入
- 4. 蛇遊戲人工神經網絡的適當輸入
- 5. 井字遊戲的神經網絡
- 6. 爲什麼我的神經網絡Q-learning不學習井字遊戲
- 7. 神經網絡學習限制
- 8. 人工神經網絡不學習
- 9. 神經網絡異或門不學習
- 10. MLP神經網絡不會學習
- 11. Matlab神經網絡不是學習
- 12. 機器學習:如何學習MTG草稿紙牌遊戲
- 13. 如何在Azure機器學習中構建卷積神經網絡?
- 14. 如何衡量神經網絡的學習性能?
- 15. 神經網絡不學習異或(收斂到0.5輸出)
- 16. 如何設置學習率訓練神經網絡
- 17. 神經網絡中權重的意義和規範化函數
- 18. 神經網絡的輸入/輸出
- 19. 如何訓練神經網絡來玩2048遊戲?
- 20. 如何訓練神經網絡玩乒乓球遊戲?
- 21. 如何規範遺傳算法的神經網絡?
- 22. 神經網絡的信號輸入
- 23. 神經網絡的順序輸入
- 24. 非標準輸入的神經網絡
- 25. 神經網絡的加權輸入
- 26. 什麼是學習人工神經網絡的好資源?
- 27. 用於神經網絡和深度學習的python庫
- 28. 調整深度神經網絡中的學習速率
- 29. 利用神經網絡來學習的方波函數
- 30. Python:使用PyBrain和Multiprocessing的多線程學習神經網絡
我已經把整個環境簡化成一個簡單的版本(正如你在選項1中提到的那樣),但是,主要問題是將對象ID轉化爲有意義的輸入。例如,Enemy對象的ID爲1,Coin對象的ID爲2等,需要將它標準化爲神經網絡讀取的數據。請注意,即使在環境中有二十個,所有硬幣的ID都是2。 –
正如我所提到的,您可以將數據標準化爲激活函數的範圍。例如,如果您有10個不同的對象(即10個不同的ID),那麼您只需將該對象的ID除以10就可以了。在您的示例中,敵人的標準化ID爲0.1,硬幣將具有標準化的ID爲0.2。這允許您將ID編碼到激活功能的範圍內,以防止網絡飽和。 – Adam