2017-02-10 80 views
-2

我有一個簡單的Python簡單遊戲實現。瞭解小型遊戲的神經網絡基礎示例

遊戲有簡單的規則:

  • 2玩家互相
  • 發揮每個球員有10卡
  • 每一輪玩家同時玩卡
  • 該誰發揮更高的播放器卡贏得全場比賽
  • 當沒有卡時,最贏回合的玩家贏得比賽

現在我想用神經網絡建立一個AI

有一個init-功能,chooseMove-功能(在這裏你可以看到敵人最後播放的卡)和GAMEOVER-功能(​​在這裏你可以看到比賽的結果)

現在我的問題是:

- >怎樣運用呢?我是否爲不同的動作建立了不同的網絡(1.移動,2.移動,......)或者一切爲了什麼?我將什麼定義爲輸入和輸出,以及如何告訴網絡什麼是勝利,什麼是損失?

我是否已經爲網絡做了一些思考? (例如,當你贏得一輪時,你的卡和敵人卡之間的差異非常小,但如果你鬆了一輪的差異應該是非常大的很好)

我知道這些都是非常基本的問題,也許它表明我對神經網絡的理解不是很好,但我認爲這可能有助於我理解神經網絡的基礎知識。

回答

1

神經網絡可用於分類,其中一些用於迴歸。如果你想用神經網絡進行實驗,你需要以適合上述描述的格式提出問題。此外,神經網絡通常使用固定長度的向量作爲輸入,因此處理不同輪次的遊戲將會是一個問題。實際上你的簡單遊戲對於NN來說非常複雜。如果您願意繼續,您需要:

  1. 將問題定義爲分類或選擇方式。例如該程序需要選擇從給定的牌上玩哪個牌。
  2. 將數據標準化爲固定長度的矢量。
  3. 獲取訓練數據,例如在一個數據庫格式
  4. 遊戲錄音創建您的NN
  5. 使用所記錄的遊戲

上面的每個點是複雜的主題和數百頁可以寫關於他們每個人的訓練你NN。

如果你想要一些簡單的方法,我可以提出另一個選擇:寫一個決定撲克玩家是否應該在開始時加入或加入遊戲的NN更接近典型的NN問題。你的輸入是2張牌和撲克桌的大小(6或10),以保持簡單。預計神經網絡將作爲輸出做出是否決定。這是一個參數數量較少的分類問題。您需要獲取應該是人類遊戲記錄的訓練數據。基本邏輯是檢查玩家的起始手牌,並檢查玩家在該遊戲中贏得了多少錢,以確定在開始時是否摺疊或加入遊戲的預期決定。你可以爲此選擇一個RBF網絡。定義學習算法並顯示訓練數據將訓練您的NN。你可以選擇隨機散步作爲你的第一個訓練方法。訓練結束後,您的神經網絡應該能夠決定是否應該使用特定的手。撲克數據庫可從可用於創建訓練數據阿爾伯塔大學:
http://poker.cs.ualberta.ca/irc_poker_database.html

+0

我真的不能選擇的正確的答案,但我認爲是沒有正確回答我的問題,所以.. 但是非常感謝你的解釋,也爲你提出的想法!我會考慮更多關於我的問題,然後我可能會更簡單:) – greece57