pacman吃豆人_通过Tensorflow和强化学习实现自动化吃豆人PacMan

介绍

在涉及GradientCrescent强化学习基础的文章中,我们研究了基于模型和基于样本的强化学习方法。 简而言之,前一类的特征是需要了解所有可能状态转换的完整概率分布,并且可以通过马尔可夫决策过程来举例说明。 相反,基于样本的学习方法只需要通过反复观察即可确定状态值,而无需进行转换动力学。 在这一领域中,我们涵盖了蒙特卡洛和时序差分学习。 简而言之,可以用状态值更新的频率将两者分开:虽然蒙特卡洛方法要求完成一集(episode)才能进行一轮更新,但时差方法使用状态的旧估计来增量更新内集值与折扣奖励一起生成新的更新。

时序差分学习(TD)或"在线"学习方法的快速反应性使其适合于高度动态的环境,因为状态和动作的值会通过估算集在整个时间内不断更新。 也许最值得注意的是,TD是Q-Leanring学习的基础,Q-Learning学习是一种更高级的算法,用于训练Agent应对诸如OpenAI Atari体育馆中观察到的游戏环境之类的游戏环境,也是本文的重点。

超越TD:SARSA和Q学习

回想一下在时序差分学习中,我们观察到一个主体通过状态(S),动作(A)和R(奖励Reward)的顺序在环境中循环地行为。

25c6e4c4477ba69863fdaa02798b1236.png

由于这种周期性行为,我们可以在到达下一个状态后立即更新前一个状态的值。 但是,就像我们之前对马尔可夫决策过程所做的那样,我们可以将培训的范围扩展到包括状态-行动值。 这通常称为SARSA。 让我们比较状态动作和状态值TD更新方程:

e7dc9729abd37f39b5f5607e7a505cd3.png

Q-learning学习通过在更新过程中强制选择具有最高动作值的动作来更进一步,这类似于使用Bellman最优性方程式观察到的方式。 我们可以在下面的Bellman和Bellman最优性方程式旁边检查SARSA和Q学习:

f062d3155718b0159e9647db9d36ec23.png

考虑到需要不断地为现有动作值最高的状态选择动作,您可能想知道如何确保对状态动作空间的完整探索。 从理论上讲,我们可能因为不首先评估,就可以避开了最佳行动。 为了鼓励探索,我们可以使用递减的Epsilon greedy策略,从本质上讲,它迫使代理程序选择一个明显的次优操作,以便在一定百分比的时间内了解其价值。 通过引入衰减过程,我们可以在评估完所有状态后限制探索,然后我们将为每个状态永久选择最佳操作。

在我们之前使用基于MDP的模型处理Pong时,让我们了解一下有关Q学习的知识,并将其应用于Atari的《吃豆人》游戏。

实作

我们的Google Colaboratory实现是使用Tensorflow Core,用Python编写的,可以在GradientCrescent Github上找到。 它基于Ravichandiran等人的观点。 ,但已升级为与Tensorflow 2.0兼容,并进行了显著的扩展以促进更好的可视化和说明。 由于此方法的实现非常复杂,因此,我们总结一下所需的操作顺序:

  • 我们定义了我们的深度Q-learning学习神经网络。 这是一个CNN,可获取游戏中的屏幕图像并输出Ms-Pacman游戏空间中每个动作或Q值的概率。 为了获得概率张量,我们在最后一层不包括任何激活函数。
  • 由于Q-learning学习需要我们了解当前状态和下一状态,因此我们需要从数据生成开始。 我们将代表初始状态s的游戏空间的预处理输入图像输入网络,并获取动作或Q值的初始概率分布。 在训练之前,这些值将显示为随机且次优。
  • 利用概率张量,然后使用argmax()函数选择当前概率最高的操作,并使用它来构建epsilon贪婪策略。
  • 然后,根据我们的政策,我们选择动作a,并在gym环境中评估我们的决定,以接收有关新状态s,奖励r和情节是否结束的信息。
  • 我们将此信息组合以列表形式存储在缓冲区中,并重复步骤2-4进行预设次数,以建立足够大的缓冲区数据集。
  • 第5步完成后,我们开始生成损耗计算所需的目标y值R'和A'。 尽管前者只是从R打折而来,但我们通过将S'输入到我们的网络中来获得A'。
  • 有了所有组件之后,我们就可以计算损失来训练我们的网络。
  • 训练结束后,我们将以图形方式并通过演示评估代理的性能。

让我们开始吧。 随着Tensorflow 2在协作环境中的出现,我们已经使用新的compat软件包将代码转换为TF2兼容。 请注意,此代码不是TF2本机代码。

让我们导入所有必需的程序包,包括OpenAI gym 环境和Tensorflow核心。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值