NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何训练智能体 Agent 玩毁灭战士 ViZDoom?

  • 2018-06-24
  • 本文字数:3441 字

    阅读完需:约 11 分钟

前言

毁灭战士(Doom),是由 ID Software 开发的第一人称射击游戏,是第一人称射击游戏的开拓者。ViZDoom 是基于 Doom 游戏的人工智能研究平台,主要针对的是深度强化学习的研究。ViZDoom 平台允许人工智能 Bot 使用游戏图像信息进行对战,与传统游戏内置 Bot 的区别在于,传统游戏内置 Bot 对整个游戏的信息都是知道的。而基于人工智能的 Agent 获得的游戏信息和人是相同的,需要不断地探索地图及执行相应的行动。本节主要介绍 ViZDoom 中的两个场景:射击场景,使用了 Deep Q-learning 算法;收集医药箱场景,使用了 Policy Gradients 算法。两个场景如下图所示:

在射击场景中,怪物随机地出现在界面的一端,智能体有左、右移动和射击三个动作,怪物只要被击中一次,就会被杀死。当怪物被杀死或执行100 次行动后怪物还没被杀死,则游戏结束。当怪物被杀死,智能体得到101 奖励分数;当执行射击后,怪物没有被击中,智能体得到-5 分的奖励;当执行向左或向右行动后,怪物还在存活,智能体得到-1 分的奖励。

在收集医药箱的场景中,整个地图是矩形的,地面上是酸性的腐蚀液体,液体会周期性地腐蚀智能体的生命值。地图上随机分布着一些医药箱,并且会时不时地出现一些新的医药箱。智能体为了在地图上生存下去,需要捡起医疗包,回复生命值。当智能体死亡或时间到了,游戏结束。智能体有三个行动,向左、向右及前进。每个行动后,如果智能体生存下来,获得1 奖励分数,如果死亡获取100 惩罚分数。

本文主要基于ViZDoom 中的两个场景,讲解强化学习的基本思想,Q-Learning 算法,Deep Q-Learning 算法如何应用于射击场景及Policy Gradient 算法如何应用于收集医药箱场景。

强化学习

强化学习是机器学习的一个重要分支,目前已经广泛应用于游戏博弈,机器人控制,自动驾驶,人机对话,优化调度等领域。目前,常使用的深度强化学习算法主要有Deep Q-learning, Policy Gradients, Actor Critic, and PPO(Proximal Policy Optimization)。强化学习的基本思想为在一个环境中,智能体(agent)不断地和环境交互,执行不同的行动,然后获取到相应的奖励。这样,智能体在不断的尝试过程中,学习到完成目标的最优策略,从而获取到最高的累积奖励。

强化学习的架构中主要包含的元素为:智能体(agent),环境(env),状态(state)行动(action)及奖励(reward)。如下所示:

上图中环境(env)为超级玛丽昂这个经典游戏(Super Mario);智能体(agent)可以认为是一个AI 机器人,在不断尝试玩这个游戏,实现智能体的自我进化;状态(State)为智能体(Super Mario Bros)在特定时间点的游戏界面中的位置信息,可以认为是一张游戏界面的截图;行动(action)为智能体根据当前的状态信息,所采取的动作,比如上、下、左、右、跳,相当于智能体和环境在进行交互操作;当智能体执行完动作后,智能体会从当前状态转移到下个状态,即游戏的下一帧;奖励(reward)为智能体执行完动作后获得的分数,比如执行完向前动作后,如果智能体不死,则得分加1。强化学习的基本思想为智能体能够最大化期望的累积奖励,用数学公式可表示为:

Q-Learning

Q Learning 主要用 Q Table 记录状态 s 下采取不同行动后,得到将来的期望奖励。如下所示:

其中,图中的每个小方格表示智能体的状态,共有5*5=20 种状态,对应的每个状态智能体可采取4 个行动,为向上,向下,向左,向右移动,如果为0 表示不可以移动。这样依据状态和行动,可生成表格Q-Table,每个单元格中的分数表示对状态采取对应行动后产生最大期望奖励的度量值。表格中的4 列,分别表示向左,向右,向上,向下移动;表格中的每行表示智能体的状态。对应于上节提到的老鼠吃奶酪的游戏,生成Q-Table 后,选择对应状态的行,得分最高的行动。Q-Learning 算法的主要目的是能够学习得到Q-function,如下所示:

Q-function 以状态和行动作为输入参数,返回输入状态对应的期望累积奖励。Q-Learning 算法通过迭代化地优化 Q-Table 得到 Q-function,算法的学习流程如下所示:

Deep Q-Learning

Q-Learning 算法主要是通过不断更新 Q-Table 来学习到优化的 Q-function。但是,对于大的智能体状态空间,比如说围棋,射击游戏,很难定义和更新 Q-Table,Q-Learning 算法将不起作用。Deep Q-Learning 算法,可对智能体的状态,通过神经网络算法,来逼近该状态下执行 action 后的 Q-Value 值。如下所示:

其中,Deep Q 的输入为状态信息,可以是一系列图片,输出为执行不同动作后,Q 值的期望。为了更好地利用观测到的经验数据,训练 DQN 的时候常采用经验回放机制 Experience Replay,经验回复机制主要能够解决两个方面的问题,一个是避免网络忘掉以前学到的经验信息,二是神经网络的训练数据是独立分布的,而强化学习生成的数据一般是序列化的,通过经验回放机制可以打破这种顺序结构。经验回放机制如下所示:

其中,构建一个 ReplyBuffer 数据结构,把智能体和环境交互的信息(s,a,r,s’)放入 Buffer 中,然后随机采样生成 Batch 的训练数据,输入 DQN 网络中。DQN 的优化目标,如下所示:

射击场景中,数据预处理如下所示:

其中,首先读取游戏界面图像,为了减少训练数据大小,经过图像预处理,把游戏图像转换成 84*84 大小的灰度图片;然后,为了处理智能体所处状态的时序变化,比如移动方向,把四张预处理后的图像堆叠起来,组成 84*84*4 大小的训练数据。

射击场景使用的 Deep Q-learning 的网络模型结构如下图所示:

其中,使用了 3 个卷积网络,每个卷积特征层的大小为 20*20*32,9*9*64,3*3*128;然后,经过全链接层,最后输出执行每个 action 行动后的 Q 值。损失函数的计算方式如下所示,其中 Qtarget 可基于经验回放的方式和当前 action 的奖励,由 Q-leaning 中 Q 值的更新方式计算得到。

复制代码
# Q is our predicted Q value.
self.Q = tf.reduce_sum(tf.multiply(self.output, self.actions_), axis=1)
# The loss is the difference between our predicted Q_values and the Q_target
# Sum(Qtarget - Q)^2
self.loss = tf.reduce_mean(tf.square(self.target_Q - self.Q))

Policy Gradient

Deep Q-Learning 是基于值的强化算法,而 Policy Gradients 是基于策略的强化算法,目标是能够学习到策略方程 policy function,直接实现智能体状态到行动的映射,优化的目标为策略方程π。在强化学习中有两种类型的策略:确定性策略和随机性策略。确定性策略使用在确定性的环境中,智能体执行完行动后有确定性的输出;随机性策略是输出智能体在当前状态,选择不同 action 的概率分布,随机性策略主要用于非确定性环境。

使用策略梯度算法主要有三个优点,第一:策略梯度算法有较好的收敛性,策略梯度算法会沿着梯度方向更新策略方程里面的参数,每个迭代下参数更新平稳,算法收敛性会比较好。第二:策略梯度算法在高维的 action 空间更有效果,策略梯度会直接根据根据智能体的状态输出要执行的 action,不需要计算 Q 值。第三:策略梯度算法可以适用于非确定性环境。

策略梯度算法的主要思想为通过优化θ,改变策略的概率分布,从而使得智能体能取得高的期望奖励,优化方式如下所示:

收集医药箱的场景的数据预处理方式类似于射击场景,模型结构如下所示:

复制代码
#与射击场景的模型的差异在于,输出为该状态下执行 action 的概率分布,如下所示:
self.action_distribution = tf.nn.softmax(self.logits)
#损失函数计算如下所示,其中,discounted_episode_rewards_ 为该状态下的累积奖励,logits 为模型输出的 logist 值,actions 为对应状态下选择执行的行动。
self.neg_log_prob = tf.nn.softmax_cross_entropy_with_logits_v2(logits = self.logits, labels = self.actions)
self.loss = tf.reduce_mean(self.neg_log_prob * self.discounted_episode_rewards_)

总结

本文首先介绍了 Doom 游戏的人工智能研究平台 ViZDoom,包括射击场景和医疗包收集场景;介绍了强化学习的基本思想,包括智能体,环境,状态,行动及奖励。然后,讲解了强化学习中常用的三个算法 Q-Learning,Deep Q-Learning,Policy Gradient;应用 Deep Q-Learning 于射击场景;应用 Policy Gradient 于医药包收集场景。用户可把强化学习应用到游戏博弈,机器人控制,自动驾驶,人机对话,优化调度等工业领域中的相关场景。

参考 **** 文献

[1] https://simoninithomas.github.io/Deep_reinforcement_learning_Course .

作者简介

武维(微信:allawnweiwu):博士,现为 IBM 架构师。主要从事深度学习平台及应用研究,大数据领域的研发工作。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-06-24 11:241467

评论

发布
暂无评论
发现更多内容

鼓励企业知识共享的好处,你知道多少?

Geek_da0866

API策略因何成为企业数字化转型的制胜法宝?

WorkPlus

Vue Cli Study

程序员海军

vuecli 7月月更

Envoy分布式链路追踪

阿泽🧸

envoy 7月月更

图的基本定义和概念(二)

乔乔

7月月更

优必选科技眼中的AI机器人时代

优必选科技

AI 机器人

有return的情况下try catch finally的执行顺序

技术小生

7月月更

元宇宙浪潮震撼来袭,抓住时机,齐心协力

CECBC

中国经济网:“元宇宙”炙手可热

CECBC

在线XML转CSV工具

入门小站

工具

向量化引擎对HTAP的价值与技术思考

OceanBase 数据库

oceanbase

网信办严厉查处诱导未成年人参与直播打赏行为:直播打赏行业乱象必须整治

石头IT视角

快速搭建个人博客网站——Hexo

空城机

Hexo 个人博客 7月月更

N分钟学会分位值的计算方式

眼镜盒子

指标

振奋人心!元宇宙!下一代互联网的财富风口

CECBC

音频的价值、AI Codec 的意义与算法能力的边界丨一期一会 • 音频工程师专场

声网

音频技术 一期一会

什么是云渲染?渲染速度有多快?一文告诉你

Finovy Cloud

计算机 云渲染 集群渲染

如何在OneFlow中新增算子

OneFlow

深度学习 算子

【Docker 那些事儿】初始 Kubernetes 容器管理平台(下)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

Elephant Swap的LaaS方案优势分析,致eToken表现强势

BlockChain先知

行业洞察|如何更好地建设数据中台?IT和业务要“齐步走”

WorkPlus

传统企业的办公模式正在发生着变化,为什么企业需要数字化办公?

WorkPlus

linux 上查找包含特定文本的所有文件

入门小站

Linux

等额本金递增还款/等额本金递减按揭房贷还款计算器

入门小站

工具

无套路、无陷阱、无广告 | 这个免费的即时通讯软件确定不用吗?

WorkPlus

京东云分布式链路追踪在金融场景的最佳实践

京东科技开发者

数据库 分布式 京东云 云计算,

Python动态属性有什么用

和牛

测试

G1GC算法读书笔记(更新中)

老猎人

Ansible项目最佳实践

穿过生命散发芬芳

ansible 7月月更

一个15年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害

Jerry Wang

后台开发 SAP abap Netweaver 7月月更

【刷题记录】17. 电话号码的字母组合

WangNing

7月月更

如何训练智能体Agent玩毁灭战士ViZDoom?_语言 & 开发_武维_InfoQ精选文章