深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)
翻译 | 斯蒂芬•二狗子
校对 | 斯蒂芬•二狗子 审核 | 酱番梨 整理 | 菠萝妹
原文链接:
深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)

本文是 Tensorflow 深度强化学习课程的一部分。?️点击这里查看教学大纲。
今天我们将学习 Q-Learning。 Q-Learning 是一种基于数值的强化学习算法。
本文是关于深度强化学习的免费系列博客文章的第二部分。有关更多信息和更多资源,请查看 课程的教学大纲。 请参阅 此处的第一篇文章。
在本文中,您将学习:
什么是 Q-Learning
如何用Numpy实现它
大图:骑士和公主

假设你是一名骑士,你需要拯救被困在上面地图上所示城堡中的公主。
您可以一次移动一个图块。敌人不能移动,但是骑士和敌人落在同一块地砖上就会死。目标是使骑士尽可能以最快的路线前往城堡。这可以使用“积分”系统来评估。
骑士每走一步都减去1分 (使用每一步-1策略有助于我们的Agent快速到达终点)。
如果 骑士 触碰一个敌人,将失去100分,然后这一集结束。
如果 骑士 在到达城堡并获胜,将得到100分。
问题是:如何做才能创建一个的 Agent 完成这个任务?
这里的第一个策略:让 Agent 不断尝试移动到每个瓷砖上,然后为每个瓷砖着色。绿色表示“安全”,红色表示“不安全”。

相同的地图,但着色显示哪些瓷砖可以安全访问
然后,我们可以告诉 Agent 只在绿色瓷砖上移动。
但问题是这样做并没有对问题有帮助。当绿色瓷砖彼此相邻时,我们无法分辨哪个瓷砖更好。所以 Agent 在试图找到城堡过程会因此陷入死循环!
介绍Q表
这是第二个策略:创建一个表格,我们将计算每种状态 state 下采取的每种行动 action的最大的未来预期奖励。
多亏了这个策略,我们将知道对每种状态采取的最佳行动是什么。
每个 state(瓷砖片)允许四种可能的动作。它们分别是向左,向右,向上或向下移动。

0表示不可以执行的动作(如果你在左上角你不能向左或向上!)
在计算方面,我们可以将此网格转换为表格。
这个表格被称为 Q 表(“Q”表示动作的“质量”)。列表示是四个动作(左,右,上,下)。行表示的是状态。每个单元格的值将是该给定状态和行动的最大未来预期奖励。

如果在 state 状态下给定的行动 action 是最佳策略,那么每个 Q 表评分为未来奖励的最大期望。
为什么我们说“根据策略给出?”这是因为我们不能直接给出这种策略。而是通过改进我们的 Q 表以始终选择最佳行动 action。
可以把这个 Q-table 认为是一个游戏的“备忘单”。通过找到“备忘单”行中的最高分,我们知道每个状态(Q 表中的每一行)最好的行动是什么。
Yeah!我们解决了城堡问题!但是等等......我们如何计算 Q 表中每个元素的值?
要给出此 Q 表的每个值,可以使用 Q-learning 算法。
Q学习算法:学习动作值函数
动作值函数(或“ Q 函数”)有两个输入:“状态”和“动作”。它返回该动作在该状态下的预期未来奖励。
我们可以把这个 Q 函数作为一个阅读指南,通过滚动 Q 表找到与我们的状态相关的行,以及与我们的动作相关联的列。它返回匹配的 Q 值。这个值就是“预期的未来奖励”。
在我们探索环境之前,Q 表中的值是固定的初始值(一般为0)。在我们探索环境时,通过使用Bellman方程迭代更新Q(s,a),Q 表中的值将趋近于更好(见下文!)。
Q学习算法过程

Q-Learning算法的伪代码
步骤1:初始化Q值
我们构建一个Q表,有 m 列 (m = 行动数)和 n 行(n =状态数)。我们将值初始化为0。

第2步:终身学习(或直到学习停止)
该过程将重复步骤3到5,直到算法运行次数为的 episode 的最大值(由用户指定)或直到我们手动停止训练。
步骤3:选择操作
根据当前的Q值 选择 当前状态下行动 Action a。
但是......如果每个Q值都是零,那么在该采取什么行动?
这就是我们在上一篇文章中谈到的探索/使用权衡的重要性。
我们的想法是,在开始时,我们将使用epsilon贪心策略:
版权保护: 本文由 沃派博客-沃派网 编辑,转载请保留链接: http://www.bdice.cn/html/23800.html
