TensorFlow练习5: 训练一个简单的游戏AI(Deep Q Network)

Deep Q Network是DeepMind最早(2013年)提出来的,是深度强化学习方法。

最开始AI什么也不会,通过给它提供游戏界面像素和分数,慢慢把它训练成游戏高手。

Github上有不少DQN实现,在本帖中,我使用TensorFlow训练一个简单的游戏AI。

  1. 使用pygame写一个简单的小游戏
  2. 使用强化学习训练游戏AI

pygame小游戏

自制的垃圾游戏。

操作:按住鼠标左键左移棒子,按住鼠标右键右移棒子。每次接住小方块得一分。

TensorFlow练习5: 训练一个简单的游戏AI(Deep Q Network)
把棒子调短,提高游戏难度,看看训练出来的游戏AI有多强

ps. 其实我想做一个俄罗斯方块,呵呵呵呵,留着以后再做。

基于强化学习的AI(TensorFlow)

训练中:

TensorFlow练习5: 训练一个简单的游戏AI(Deep Q Network)

如果你使用Linux,你可以使用htop监控内存使用情况。

刚开始,AI傻傻的,只会控制棒子来回瞎晃,通过try-error,它会慢慢掌握这个游戏。等我一觉醒来,这货已经玩的不亦乐乎了。

ps.准备换一个顶级显卡,CPU玩tensorflow太费劲,看来非游戏玩家也有必要买好显卡。

使用训练出来AI玩游戏

这步要做的就是加载使用前面保存的模型。

上面是自己手动实现的强化学习算法,其实有一个特别好的专门为开发测试AI而设计的库openai gym。OpenAI Gym是一个为比较、构建强化学习Ai的一个Python库,它包含很多测试游戏。

参考:https://www.nervanasys.com/openai/

使用OpenAI Gym创建游戏AI
强化学习模型

安装Gym

相关文章

《TensorFlow练习5: 训练一个简单的游戏AI(Deep Q Network)》有19个想法

  1. 博主,为什么我运行的程序迭代700多次游戏模块就未响应了,运行1000次也没有收敛,在999次的时候回出现文件写入错误。我是在Windows下anaconda运行的。

  2. 博主这一系列的帖子写得真好!!第151行随机选择action的概率应该是不断减小的, if(random.random() <= INITIAL_EPSILON) 应该改为 epsilon吧?

  3. 我在ubuntu试了下代码,跑了几分钟后cpu会突然从60%飙到100%,游戏界面变得很卡,移动得很慢,在虚拟机和硬盘安装的ubuntu上都会复现这个问题,这时内存占用并不多,请问博主知道大概是什么原因吗?

      1. 好的多谢,我尝试升级下配置。你的博客都蛮有意思的,我把古诗词那个也试着跑了一下,训练完之后,生成古诗词的时候报错,提示找不到生成的49那个数据集,但是我确实是训练完了,目录下有从7到49的数据,我再找找原因。

        1. 你使用的tf版本是多少,tf还在测试阶段,API变动比较大。使用latest_checkpoint()试试
          The save_path argument is typically a value previously returned from a save() call, or a call to latest_checkpoint().

          1. 我也遇到了同样的问题,改为restore方法后,并没有解决。感觉自己电脑配置还行,固态硬盘加8G内存,tf是0.12。您的tf多少,硬件环境呢?

          2. 你好,我也遇到50000后游戏变得很慢的问题。可是内存占用还只是50%,cpu也是50%。我用的tf 1.0 gpu版的。这是正常的?

  4. 77 print(“Score: “, self.score,end=’\r’)
    ^
    78 SyntaxError: invalid syntax 请问这个怎么解决,你做的游戏不能自己动啊

发表评论

电子邮件地址不会被公开。 必填项已用*标注