2014-11-25 118 views
0

我要寫一個roguelike博格 - 一個會玩,並可能贏得流氓。 我的方法如下所示: - 決策是使用狀態機進行的,因此borg採取的操作是可預測的,並且可以在運行時進行檢查。 - 狀態輸入通過神經網絡饋送。換網是博格學習的主要方式。- 當ai採取足夠糟糕的行動時,網絡會發生變化。每個動作的直接效果都會得到一個分數,1表示純粹好(如同戰鬥外的癒合),-1表示純粹不好(死亡)。分數= -1在開始時,所以淨值只會改變它在第n次迭代死亡後的行爲。 - '網上教學'意味着消極強化學習 - borg被教導不要做這件事;在這種情況下增加下一次做其他事情的相似性。 Borg通過模擬它自己的行爲預測未來,向前推進,預測輸出並訓練自己的預測網絡,當它產生足夠大的錯誤時。與自己玩遊戲

1) How to do deductive reasoning? To do thing C, we can do thing B. To do thing B, we can do thing A. Therefore, to do C we can do A. We cannot directly do B. How do I make a computer figure this out? 
For a 'real' world example, to reliably kill an Ice Beast in Rogue, borg can cast Fire Bolt, which it can learn from a spellbook. So, to kill Ice Beast borg has to find the book (or a wand of firebolts, or..). 

我的想法是代表每個「動作」,在博格世界中發生的神經網絡,使鑄造一個火系法術,並用火法杖看起來相似而已。 博格記得它所花費的每一個不同的動作(讓我們假設我們有無限的資源)。 borg想要完成的每個動作都有一個「鑰匙」,它是一個訓練有素的網絡,可以爲完美的輸入提供完美的分數(冰火等)。接下來,博格選擇了過去採取行動的投入,這些投入至少有X%類似於完美行動的投入。然後,博格提供這些輸入並選擇最佳分數的動作。 這個算法經常循環,直到它評估所有動作。總體上得分最高的動作鏈被假定爲上述的A-> B-> C鏈。 這張照片有什麼問題?

2) How to do long term memory about things that happen and patterns? Like, borg caught itself in a bad situation, so it wants to remember the circumstances that led to it. 
My guess is to represent each notable situation as inputs for hopfield net, and each step the borg feds the current world state to every net he has. This has the obvious problem that the nets can't grow into infinity. Can you see a better way? 

回答

1

一般的遊戲玩法是非常困難的人工智能領域,你的方法可能會遭受組合爆炸。

最近在教授神經網絡玩強化學習和時間差異學習的遊戲方面取得了一些成功。基本上,神經網絡的訓練是預測未來所有可能行爲的「獎勵」,然後採取最高預測獎勵的行動。

但即使如此,在流氓等複雜遊戲中也不太可能奏效。