作者 | 李秋键
责编 | Elle
出品 | CSDN(ID:CSDNnews)
自从20世纪80年代以来,游戏AI产生巨大的变化,诞生了“自主思考型AI”,游戏中的NPC会在游戏中观察及分析,根据玩家的行为做出针对性的应对,不再只是按照一个目标一直走下去,而是更加灵活多样。
自主思考性的AI是基于有限状态机与行为树,也就是多个if-else的组合。有限状态机是以电脑AI的当前状态为主体,通过编写不同的状态之间的转换条件来控制电脑AI,不同的状态下拥有不同的目标、策略与行动。
行为树则是以目前的行为作为主题,通过条件判断,得出接下来应该采取的行为策略和行为内容。其中最为典型的便为吃豆人游戏的应用:
而近几年来人工智能发展的迅速,直接推动了AI游戏领域的发展,其中最为代表性的算法便是DQN自主学习,即通过计算机自己尝试去游戏,从失败中总结经验达到高水平AI的效果。
其中就包括王者荣耀等游戏的AI机制。今天我们就将利用DQN去教会计算机玩转俄罗斯方块。
其中训练的部分效果见如图所示:
开始之前我们有必要去了解下DQN算法的基础知识。
基本原理
1. 什么是DQN?
DQN(Deep Q-Learning)可谓是深度强化学习(Deep Reinforcement Learning,DRL)的开山之作,是将深度学习与强化学习结合起来从而实现从感知(Perception)到动作( Action )的端对端(End-to-end)学习的一种全新的算法。
2. DQN是如何运算的?
(1)通过Q-Learning使用reward来构造标签
(2)通过experience replay(经验池)的方法来解决相关性及非静态分布问题
(3)使用一个CNN(MainNet)产生当前Q值,使用另外一个CNN(Target)产生Target Q值
3、DQN的网络模型?
下面是代码部分的讲解,我将在关键代码处进行注释说明。
代码实现
1、所使用的模块的导入:
2、训练前的定义及初始化:
3. 神经网络调用函数参数的定义:
4. 训练部分的代码:
总结
下面开始展示游戏训练效果:
训练5秒后得到的分数:
训练10秒后得到的分数:
由此可见随着计算机的学习,他对于俄罗斯方块的操作是越来越好。
作者:李秋键,CSDN 博客专家,CSDN达人课作者。硕士在读于中国矿业大学,开发有安卓武侠游戏一部,vip视频解析,文意转换写作机器人等项目,发表论文若干,多次高数竞赛获奖等等。
热 文推 荐
你点的每个“在看”,我都认真当成了喜欢
领取专属 10元无门槛券
私享最新 技术干货