深度强化学习课程文档
Q-Learning 简介
并获得增强的文档体验
开始使用
Q-Learning 简介
什么是 Q-Learning?
Q-Learning 是一种离策略的、基于价值的方法,它使用 TD 方法来训练其动作价值函数:
- 离策略:我们将在本单元的末尾讨论它。
- 基于价值的方法:通过训练价值函数或动作价值函数来间接找到最优策略,该函数将告诉我们每个状态或每个状态-动作对的价值。
- TD 方法: 在每一步而不是在 эпизод 结束时更新其动作价值函数。
Q-Learning 是我们用来训练 Q 函数的算法,Q 函数是一个动作价值函数,它确定处于特定状态并在该状态下采取特定动作的价值。

Q 来自于“Quality”(质量),即在该状态下该动作的价值。
让我们回顾一下价值和奖励之间的区别
- 状态的价值或状态-动作对的价值是我们的智能体从该状态(或状态-动作对)开始,然后根据其策略行动所获得的预期累积奖励。
- 奖励是我在状态下执行动作后从环境获得的反馈。
在内部,我们的 Q 函数由 Q 表编码,该表中的每个单元格对应于一个状态-动作对值。 将此 Q 表视为 我们 Q 函数的内存或备忘单。
让我们看一个迷宫的例子。

Q 表已初始化。这就是为什么所有值都 = 0。此表包含每个状态和动作对应的状态-动作值。 对于这个简单的例子,状态仅由鼠标的位置定义。因此,我们的 Q 表中有 2*3 行,鼠标的每个可能位置对应一行。在更复杂的情况下,状态可能包含比参与者的位置更多的信息。

在这里我们看到初始状态和向上移动的状态-动作值为 0:

因此:Q 函数使用 Q 表,该表具有每个状态-动作对的值。 给定一个状态和动作,我们的 Q 函数将在其 Q 表中搜索以输出该值。

如果我们回顾一下,Q-Learning 是强化学习算法,它:
- 训练 Q 函数(一个动作价值函数),其内部是一个 Q 表,其中包含所有状态-动作对值。
- 给定一个状态和动作,我们的 Q 函数将在其 Q 表中搜索以查找相应的值。
- 当训练完成时,我们拥有一个最优的 Q 函数,这意味着我们拥有最优的 Q 表。
- 如果我们拥有最优的 Q 函数,我们就拥有最优策略,因为我们知道在每个状态下要采取的最佳行动。

在开始时,我们的 Q 表是无用的,因为它为每个状态-动作对提供任意值(大多数情况下,我们将 Q 表初始化为 0)。随着智能体探索环境并且我们更新 Q 表,它将为我们提供越来越好的最优策略近似值。

现在我们了解了什么是 Q-Learning、Q 函数和 Q 表,让我们更深入地研究 Q-Learning 算法。
Q-Learning 算法
这是 Q-Learning 伪代码;让我们研究每个部分,并在实现它之前通过一个简单的例子看看它是如何工作的。 不要被它吓倒,它比看起来更简单!我们将逐步介绍每个步骤。

步骤 1:我们初始化 Q 表

我们需要为每个状态-动作对初始化 Q 表。大多数情况下,我们使用值 0 进行初始化。
步骤 2:使用 ε-贪心策略选择动作

ε-贪心策略是一种处理探索/利用权衡的策略。
其思想是,初始值 ɛ = 1.0
- 以概率 1 — ɛ:我们进行利用(也称为我们的智能体选择具有最高状态-动作对值的动作)。
- 以概率 ɛ:我们进行探索(尝试随机动作)。
在训练开始时,进行探索的概率将非常大,因为 ɛ 非常高,因此大多数时候,我们将进行探索。 但是随着训练的进行,以及我们的 Q 表在其估计中变得越来越好,我们逐渐降低 ε 值,因为我们将需要越来越少的探索和更多的利用。

步骤 3:执行动作 At,获得奖励 Rt+1 和下一个状态 St+1

步骤 4:更新 Q(St, At)
请记住,在 TD 学习中,我们在交互的一个步骤之后更新我们的策略或价值函数(取决于我们选择的强化学习方法)。
为了生成我们的 TD 目标,我们使用了即时奖励 加上下一个状态的折扣价值,该价值通过找到在下一个状态最大化当前 Q 函数的动作来计算。(我们称之为自举)。

因此,我们的 更新公式如下

这意味着要更新我们的:
- 我们需要.
- 为了更新给定状态-动作对的 Q 值,我们使用 TD 目标。
我们如何形成 TD 目标?
- 我们获得奖励在采取动作后.
- 为了获得下一个状态的最佳状态-动作对值,我们使用贪心策略来选择下一个最佳动作。请注意,这不是 ε-贪心策略,它将始终选择具有最高状态-动作值的动作。
然后,当完成此 Q 值的更新后,我们从新状态开始,再次使用 ε-贪心策略选择我们的动作。
这就是我们说 Q-Learning 是一种离策略算法的原因。
离策略 vs 同策略
区别在于细微之处
- 离策略:使用不同的策略进行行动(推理)和更新(训练)。
例如,对于 Q-Learning,ε-贪心策略(行动策略)与贪心策略不同,贪心策略用于选择最佳的下一个状态动作值来更新我们的 Q 值(更新策略)。

与我们在训练部分中使用的策略不同

- 同策略: 使用相同的策略进行行动和更新。
例如,对于 Sarsa,另一种基于价值的算法,ε-贪心策略选择下一个状态-动作对,而不是贪心策略。

