与自己玩游戏

问题描述:

我要写一个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? 

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

最近在教授神经网络玩强化学习和时间差异学习的游戏方面取得了一些成功。基本上,神经网络的训练是预测未来所有可能行为的“奖励”,然后采取最高预测奖励的行动。

但即使如此,在流氓等复杂游戏中也不太可能奏效。