我想为一个简单的四连线游戏构建一个AI对手。然而,我不仅仅想创造一个完美的玩家,这对人类来说会相当无聊。相反,我希望有一个AI,它几乎是从零开始,并随着时间的推移学习游戏。
我所知道的唯一方法是人工神经网络。然而,这些通常需要监督学习。此外,例如,这份文件指出,AI在大约2万场游戏后才接近成为完美玩家——这对人类来说有点太多了。
因此我想知道:在简单游戏中合理使用学习型AI是否可能?是否有适合的神经网络替代方案或扩展来完成这项工作?
回答:
我暂时想不出任何算法或技术能让计算机在与人类相当的时间尺度上学习游戏。但我们在谈论时间尺度时必须小心谨慎。
例如,Fogel和Chellapilla开发了一种技术,它让一组随机生成的神经网络相互对抗,然后使用遗传算法基于结果创建新的、更好的神经网络。这最初是在跳棋中完成的,但适用于许多游戏。至少这种技术消除了人类训练的负担——网络是在自己对抗自己。
但这种学习速度有多快呢?Fogel和Chellapilla在大约250代内在跳棋中获得了良好的结果(A级表现,仅次于专家级)…但每一代的锦标赛包括大约150场独立的游戏,总共约3.7万场游戏。如果你每天玩一场游戏,需要100年才能玩那么多。也许达到那个水平的人每天玩十场游戏,持续十年,但这似乎…不太可能。所以从这个意义上说,比人类慢。另一方面,一台好的笔记本电脑可能在一周内就能玩那么多场游戏,这是人类永远无法做到的。
所以,如果你正在寻找一种训练程序,让人类能够在合理的时间尺度上训练并感知到性能的提升…我知道目前没有任何方法可以做到这一点。(这也是合理的——我们最好的超级计算机仍然没有人类大脑的原始处理能力,而且我们还没有设计出能够利用那么多计算能力的算法。)
不过,如果你只是想要一个不完美的AI,你可以尝试像Fogel和Chellapilla那样的技术,而不是采用最终的、接近专家级的结果,只需从运行的中途取一些结果,或者从最后一代中取一些但不是最佳的结果。