游戏玩弄自己

时间:2014-11-25 13:52:02

标签: neural-network

我要写一个roguelike borg - 一个可以玩并可能赢得Rogue的ai。 我的方法如下:      - 使用状态机进行决策,因此borg采取的操作是可预测的,可以在运行时检查。      - 国家投入通过神经网络提供。改变网络是博格学习的主要方式。      - 当ai采取足够糟糕的行动时,网络会被更改。每个动作的即时效果都会被分配一个分数,1表示纯粹的好(如战斗外的治疗),-1纯粹的不好(死亡)。得分= -1在开始时,所以net只会改变它在前n次迭代死亡后的行为。      - '教网#39;意味着消极强化学习 - 博格教导不做这件事;在那种情况下,增加下一次做其他事情的喜欢。      - 博格通过模拟它自己的行动来预测未来N向前迈进,预测输出并在足够大的错误时训练他自己的预测网络。

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 个答案:

答案 0 :(得分:1)

一般游戏玩法是人工智能非常困难的区域,你的方法可能会受到组合爆炸的影响。

最近在教授神经网络以进行强化学习和时间差异学习的游戏方面取得了一些成功。基本上,NN经过培训可以预测未来"奖励"每一个可能的行动,然后采取具有最高预测奖励的行动。

但即便如此,对于像流氓这样的复杂游戏来说也不太可能奏效。