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

**Q 来自于该状态下该动作的“质量”(价值)。**
让我们回顾一下价值和奖励之间的区别
- 一个*状态*或一个*状态-动作对的价值*是智能体如果从该状态(或状态-动作对)开始并按照其策略行动所获得的预期累积奖励。
- *奖励*是智能体在某个状态下执行某个动作后**从环境中获得的反馈**。
在内部,我们的 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:使用 epsilon-greedy 策略选择一个动作

epsilon-greedy 策略是一种处理探索/利用权衡的策略。
其思想是,初始 ɛ 值为 1.0 时:
- 以 *1 - ɛ 的概率*:我们进行**利用**(即我们的智能体选择具有最高状态-动作对值的动作)。
- 以 ɛ 的概率:**我们进行探索**(尝试随机动作)。
在训练开始时,**进行探索的概率会非常大,因为 ɛ 值非常高,所以大部分时间我们都会进行探索。**但随着训练的进行,我们的**Q 表在估计方面会越来越好,我们逐渐降低 epsilon 值**,因为我们需要的探索越来越少,而利用越来越多。

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

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

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

这意味着要更新我们的:
- 我们需要.
- 为了更新给定状态-动作对的 Q 值,我们使用 TD 目标。
我们如何形成 TD 目标?
- 我们获得奖励采取行动后.
- 为了获得下一个状态的**最佳状态-动作对值**,我们使用贪婪策略选择下一个最佳动作。请注意,这不是 epsilon-greedy 策略,它将始终选择具有最高状态-动作值的动作。
然后,当 Q 值更新完成后,我们进入一个新状态,并**再次使用 epsilon-greedy 策略**选择我们的动作。
这就是我们说 Q 学习是异策略算法的原因。
异策略与同策略
区别微妙。
- *异策略*:使用**不同的策略进行行动(推断)和更新(训练)。**
例如,在 Q-Learning 中,epsilon-greedy 策略(行动策略)与用于**选择最佳下一个状态-动作值以更新我们的 Q 值(更新策略)的贪婪策略**不同。

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

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

