第2单元 Q-Learning
简介
本单元我们将深入探讨强化学习中的基于价值的方法 ,并学习首个 RL 算法:Q 学习算法 。
我们还将从零开始实现第一个 RL 智能体 —— Q 学习智能体,并在两种环境中进行训练:
- Frozen-Lake-v1(防滑版本):智能体需要从起始状态(S)移动到目标状态(G),且只能行走于冻结砖块(F)并避开冰窟(H)。
- 一辆自动驾驶出租车:我们的智能体需要学会在城市中导航 ,以将乘客从 A 点运送至 B 点 。

什么是强化学习?
在强化学习中,我们构建了一个能够做出智能决策的智能体。例如,一个学会玩电子游戏的智能体,或是一个通过决定购买哪些股票以及何时卖出来实现收益最大化的交易智能体。

为了做出智能决策,我们的智能体将通过试错方式与环境互动 ,并以接收奖励(正向或负向)作为独特反馈来从环境中学习。
其目标在于最大化预期累积奖励 (基于奖励假说原理)。
智能体的决策过程被称为策略π: 给定某个状态,策略会输出一个动作或动作的概率分布。也就是说,在获得环境观测信息后,策略会提供智能体应当采取的动作(或为每个动作生成多个概率值)。

我们的目标是找到最优策略π*,即能够带来最佳预期累积回报的策略。
而要找到这个最优策略(从而解决强化学习问题), 主要有两类强化学习方法 :
- 基于策略的方法 : 直接训练策略 来学习在给定状态下应采取何种动作。
- 基于价值的方法 : 训练价值函数 来学习 哪些状态更有价值 ,并利用这个价值函数 选择能够到达这些状态的动作。

两种基于价值的方法
在基于价值的方法中, 我们学习一个价值函数 ,该函数将状态映射到处于该状态时的期望价值 。

状态的价值是智能体从该状态开始并根据我们的策略行动时所能获得的预期折现回报 。
但根据我们的策略行动是什么意思?毕竟,在基于价值的方法中我们并没有策略,因为我们训练的是价值函数而非策略。
请记住, 强化学习智能体的目标是拥有一个最优策略π*。
为了找到最优策略,我们学习了两种不同的方法:
- 基于策略的方法: 直接训练策略 以选择在给定状态下应采取的动作(或该状态下动作的概率分布)。在这种情况下,我们 没有价值函数。

策略以状态作为输入,并输出在该状态下应采取的动作(确定性策略:给定状态输出单一动作的策略,与输出动作概率分布的随机策略相反)。
因此, 我们并非手动定义策略的行为;其行为将由训练过程决定。
- 基于价值的方法: 通过训练价值函数间接实现 ,该函数输出状态或状态-动作对的价值。基于该价值函数,我们的策略 将采取相应动作。
由于策略本身未经训练/学习, 我们需要明确规定其行为模式。 例如,若需要策略能根据价值函数始终选择带来最大奖励的动作, 我们将创建贪婪策略。

因此无论采用何种方法解决问题, 最终都会形成一个策略 。在基于价值的方法中,策略本身不需要训练:它 只是一个预先设定的简单函数 (例如贪婪策略),通过调用价值函数提供的估值来选择动作。
区别在于:
- 在基于策略的训练中, 最优策略(记作π*)通过直接训练策略获得。
- 在基于价值的训练中, 找到最优价值函数(记作 Q*或 V*,下文将详述其区别)即可推导出最优策略。

实际上,在基于价值的方法中,多数情况下会采用 ε-贪婪策略 来处理探索与利用的平衡问题;
如上所述,我们有两种基于价值的函数:
状态价值函数
我们将策略π下的状态价值函数写作:

对于每个状态,状态价值函数输出智能体从该状态开始并随后始终遵循策略(若您倾向于理解为所有未来时间步)所能获得的期望回报。

如果我们观察价值为-7的状态:它表示从该状态开始,按照我们的策略(贪婪策略)采取行动后的预期回报,即向右、向右、向右、向下、向下、向右、向右。
动作价值函数
在动作价值函数中,对于每个状态和动作的组合,该函数会输出预期回报 ,前提是智能体从该状态开始,采取该动作,并在此后始终遵循策略。
在策略 π 下,于状态 s 采取动作 a 的价值为:


我们发现区别在于:
- 对于状态价值函数,我们计算 某个状态 S t S_t St 的价值
- 对于动作价值函数,我们计算 状态-动作对(
S
t
S_t
St,
A
t
A_t
At )的价值,即在特定状态下采取该动作的价值

注意:在动作价值函数的示例中,我们并未填满所有状态-动作对
无论选择哪种价值函数(状态价值函数或动作价值函数), 返回的值都是期望回报。
然而,问题在于要计算某个状态或状态-动作对的每一个值,我们需要累加智能体从该状态开始所能获得的所有奖励。
这可能是一个计算成本高昂的过程,而这正是贝尔曼方程发挥作用的地方。
贝尔曼方程:简化价值估计
贝尔曼方程简化了我们的状态价值或状态-行动价值计算。

根据目前所学知识,我们知道如果计算
V
(
S
t
)
V(S_t)
V(St)(某个状态的价值),需要计算从该状态开始并永远遵循策略的回报。(以下示例中我们定义的策略是贪婪策略;为简化起见,我们不进行奖励折扣)。
因此要计算
V
(
S
t
)
V(S_t)
V(St),需要计算期望奖励的总和。故:

计算状态1的价值:若智能体从该状态出发,并在所有时间步始终遵循贪婪策略(选择能导向最佳状态价值的行动),所获奖励的总和。
接下来,为了计算
V
(
S
t
+
1
)
V(S_{t+1})
V(St+1),我们需要从该状态𝑆开始计算回报
𝑡
+
1
S
t
+
1
𝑡 + 1 S_{t+1}
t+1St+1.

要计算状态 2 的价值: 如果智能体从该状态开始 ,并始终遵循策略所获得的奖励总和。
你可能已经注意到,我们在重复计算不同状态的价值,如果需要为每个状态价值或状态-行动价值都这样做,会非常繁琐。
无需分别计算每个状态或每个状态-行动对的期望回报, 我们可以使用贝尔曼方程 。(提示:如果你了解动态规划,这与它非常相似!如果不了解也没关系!)
贝尔曼方程是一个递归方程,其工作原理如下:我们无需从初始状态开始逐个计算回报,而是可以将任何状态的价值视为:
即时奖励 R t + 1 R_{t+1} Rt+1加上后续状态的折现价值 γ ∗ V ( S t + 1 ) γ∗V(S_{t+1} ) γ∗V(St+1)。

回到我们的示例,可以说状态1的价值等于从该状态出发所能获得的期望累积回报。

要计算状态 1 的价值:智能体从状态 1 开始并持续遵循策略执行所有时间步所获得奖励的总和。
这等价于
V
(
S
t
)
V(S_t)
V(St) = 即时奖励
R
t
+
1
R_{t+1}
Rt+1+ 下一状态的折现价值
γ
∗
V
(
S
t
+
1
)
γ∗V(S_{t+1})
γ∗V(St+1)

为简化起见,此处我们不进行折现,因此 gamma = 1。
回顾一下,贝尔曼方程的核心思想是:与其将每个价值计算为预期回报的总和(这是一个漫长的过程),我们将其计算为即时奖励加上后续状态的折现价值的总和。
在进入下一节之前,思考一下 gamma 在贝尔曼方程中的作用。如果 gamma 的值非常低(例如 0.1 甚至 0)会发生什么?如果值为 1 会发生什么?如果值非常高,比如一百万,又会发生什么?
蒙特卡洛与时序差分学习
请记住,强化学习智能体通过与环境的互动进行学习。 其核心思想是: 基于获得的经验和接收到的奖励,智能体将更新其价值函数或策略。
蒙特卡洛法和时序差分学习是两种不同的训练价值函数或策略函数的策略。 两者都利用经验来解决强化学习问题。
一方面,蒙特卡洛法需要使用完整回合的经验才开始学习。 另一方面,时序差分学习仅需单步经验 ( S t , A t , R t + 1 , S t + 1 ) (S_t,A_t,R_{t+1},S_{t+1}) (St,At,Rt+1,St+1)即可进行学习。
我们将通过基于价值的方法示例来解释这两者。
蒙特卡洛:在回合结束时进行学习
蒙特卡洛等待回合结束,计算 G t G_t Gt(回报)并将其用作 更新 V ( S t ) V(S_t) V(St) 的目标。
因此, 在更新价值函数之前,需要完成一个完整的交互回合。

以具体示例说明:

- 我们总是从相同的起始点开始每个回合。
- 智能体根据策略采取行动 。例如采用ε-贪婪策略,这是一种在探索(随机行动)和利用(择优行动)之间交替进行的策略。
- 我们得到奖励和下一个状态
- 如果猫吃掉老鼠或老鼠移动超过10步,我们就终止该回合
- 在回合结束时, 我们有一个包含状态、动作、奖励和下一状态元组的列表 例如[[状态砖块3底部,向左移动,+1,状态砖块2底部], [状态砖块2底部,向左移动,+0,状态砖块1底部]…]
- 智能体将汇总总奖励 G t G_t Gt(以观察其表现如何)。
- 然后它将根据公式更新
V
(
s
t
)
V(s_t)
V(st)

- 接着基于这个新知识开始新一轮游戏
通过运行越来越多的回合, 智能体将学会玩得越来越好。

例如,如果我们使用蒙特卡洛方法训练状态价值函数:
- 我们初始化价值函数使其为每个状态返回 0 值
- 我们的学习率(lr)为 0.1,折扣率为 1(即无折扣)
- 我们的老鼠探索环境并采取随机行动

- 老鼠移动了超过10步,因此该回合结束

- 我们有一个包含状态、行动、奖励、下一个状态的列表, 我们需要计算回报
G
t
=
0
G_t=0
Gt=0
G t = R t + 1 + R t + 2 + R t + 3 . . . G_t =R_{t+1} +R_{t+2} +R_{t+3} ... Gt=Rt+1+Rt+2+Rt+3... (为简化起见,我们不对奖励进行折现) G 0 = R 1 + R 2 + R 3 … G_0 =R_1 +R_2 +R_3 … G0=R1+R2+R3… G 0 = 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0 G_0=1+0+0+0+0+0+1+1+0+0 G0=1+0+0+0+0+0+1+1+0+0 G 0 = 3 G_0=3 G0=3 - 我们现在可以计算新的
V
(
S
0
)
V(S_0)
V(S0) :

V ( S 0 ) = V ( S 0 ) + l r ∗ [ G 0 − V ( S 0 ) ] = 0 + 0.1 ∗ [ 3 – 0 ] = 0.3 V(S_0)=V(S_0)+lr∗[G_0-V(S_0)]=0+0.1∗[3–0]=0.3 V(S0)=V(S0)+lr∗[G0−V(S0)]=0+0.1∗[3–0]=0.3

时序差分学习:每一步都在学习
而时序差分则只需等待一次交互(一个步骤)
S
t
+
1
S_{t+1}
St+1形成 TD 目标并使用 R 更新
V
(
S
t
)
V(S_t)
V(St)
R
t
+
1
R_{t+1}
Rt+1和
γ
∗
V
(
S
t
+
1
)
γ∗V(S_{t+1})
γ∗V(St+1)。
时序差分法的思路是在每一步更新
V
(
S
t
)
V(S_t)
V(St)。
但由于我们没有经历完整的回合,所以没有
G
t
G_t
Gt(预期回报)。相反, 我们通过将
R
t
+
1
R_{t+1}
Rt+1 与下一个状态的折现值相加来估计
G
t
G_t
Gt 。
这被称为自举法。之所以这样命名,是因为时序差分学习(TD)的更新部分基于现有的估计值
V
(
S
t
+
1
)
V(S_{t+1})
V(St+1) ,而不是一个完整的样本
G
t
G_t
Gt 。

这种方法被称为 TD(0)或单步时序差分(在任何单步后更新价值函数)。

如果我们采用同样的例子,

- 我们将价值函数初始化为每个状态返回0值。
- 我们的学习率(lr)为 0.1,折扣率为 1(无折扣)。
- 我们的老鼠开始探索环境并采取随机行动: 向左移动
- 它获得了奖励 R t + 1 = 1 R_{t+1} =1 Rt+1=1 ,因为 它吃了一块奶酪


我们现在可以更新
V
(
S
0
)
V(S_0)
V(S0) :
新
V
(
S
0
)
=
V
(
S
0
)
+
l
r
∗
[
R
1
+
γ
∗
V
(
S
1
)
−
V
(
S
0
)
]
V(S_0)=V(S_0)+lr∗[R_1+γ∗V(S_1)−V(S_0 )]
V(S0)=V(S0)+lr∗[R1+γ∗V(S1)−V(S0)]
新
V
(
S
0
)
=
0
+
0.1
∗
[
1
+
1
∗
0
–
0
]
V(S_0)=0+0.1∗[1+1∗0–0]
V(S0)=0+0.1∗[1+1∗0–0]
新
V
(
S
0
)
=
0.1
V(S_0)=0.1
V(S0)=0.1
因此我们刚刚更新了状态0的价值函数。
现在我们继续使用更新后的价值函数与环境进行交互。

总而言之:
- 使用蒙特卡洛方法时,我们根据完整回合更新价值函数,因此采用该回合实际准确的折现回报。
- 使用时序差分学习时,我们根据单步更新价值函数,并用 G t G_t Gt我们用一个称为 TD 目标的估计回报来替代未知的部分。

中场回顾
我们有两种基于价值的函数:
- 状态价值函数:输出预期回报,如果智能体从给定状态开始,并从此永远根据策略行动。
- 动作价值函数:输出预期回报,如果智能体从给定状态开始,在该状态采取给定动作 并从此永远根据策略行动。
- 在基于价值的方法中,我们不学习策略,而是手动定义策略并学习价值函数。如果我们拥有最优价值函数,就能获得最优策略。
更新价值函数的方法分为两类:
- 使用蒙特卡洛方法时,我们根据完整回合更新价值函数,因此采用该回合的实际折现回报。
- 使用时序差分学习方法时,我们通过单步更新价值函数,用估计值替代未知的回报 G t G_t Gt, 使用一个称为 TD 目标的估计回报。

Q-Learning
什么是 Q-Learning?
Q 学习是一种基于价值的离线策略方法,采用时序差分(TD)方法来训练其动作价值函数:
- 离策略 :我们将在本单元末尾讨论这一点。
- 基于价值的方法:通过训练一个价值函数或动作价值函数来间接找到最优策略,该函数将告诉我们每个状态或每个状态-动作对的值。
- 时序差分方法: 在每一步都更新其动作价值函数,而不是等到 episode 结束时才更新。
Q 学习是我们用来训练 Q 函数的算法 ,这是一种动作价值函数 ,用于确定在特定状态下采取特定动作的价值。

给定一个状态和动作,我们的 Q 函数会输出一个状态-动作值(也称为 Q 值)
Q 代表该状态下该动作的“质量”(即价值)。
让我们回顾一下价值与奖励之间的区别:
- 状态的价值或状态-动作对的价值 ,是指智能体从该状态(或状态-动作对)开始,并按照其策略行动时所能获得的预期累积奖励。
- 奖励是智能体在某个状态下执行动作后, 从环境中获得的反馈 。
在内部,我们的 Q 函数通过一个 Q 表编码,该表中的每个单元格对应一个状态-动作对的值。 可以将这个 Q 表视为我们 Q 函数的记忆或速查表。
让我们通过一个迷宫的例子来说明。

Q 表已被初始化,因此所有值都等于 0。该表包含每个状态和动作对应的状-动作值。 对于这个简单的例子,状态仅由老鼠的位置定义。因此,我们的 Q 表有 2*3 行,每行对应老鼠的每一个可能位置。在更复杂的情形中,状态可能包含比行动者位置更多的信息。

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

因此:Q 函数使用一个 Q 表, 其中包含每个状态-动作对的值。 给定一个状态和动作, 我们的 Q 函数会在其 Q 表中查询并输出对应的值。

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

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

在这里我们看到,经过训练后,我们的 Q 表变得更加完善,因为它能使我们知晓每个状态-动作对的值。
现在我们已经了解了 Q-Learning、Q 函数和 Q 表是什么, 让我们更深入地探究 Q-Learning 算法 。
Q-Learning 算法
这是 Q-Learning 的伪代码;让我们逐一研究每一部分, 在实现之前通过一个简单示例来看它是如何工作的。 别被它吓到,它比看起来简单多了!我们将一步步讲解。

步骤 1:我们初始化 Q 表

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

epsilon-贪心策略是一种处理探索与利用权衡的策略。
其思路是,初始值设为
ϵ
=
1.0
\epsilon = 1.0
ϵ=1.0:
- 以概率 1 − ϵ 1 - \epsilon 1−ϵ :我们进行利用 (即智能体选择具有最高状态-动作对价值的动作)。
- 以概率 ϵ \epsilon ϵ: 我们进行探索 (尝试随机动作)。
在训练开始时, 由于 ɛ 值非常高,探索的概率会非常大,因此大多数时候我们将进行探索。 但随着训练的进行,我们的 Q 表格对其估算变得越来越好,我们会逐渐降低 epsilon 值 ,因为我们所需的探索越来越少,而利用越来越多。

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

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

因此,我们的
Q
(
S
t
,
A
t
)
Q(S_t,A_t)
Q(St,At) 更新公式如下:

这意味着要更新我们的
Q
(
S
t
,
A
t
)
Q(S_t,A_t)
Q(St,At) :
- 我们需要 S t , A t , R t + 1 , S t + 1 S_t,A_t,R_{t + 1} , S_{t + 1} St,At,Rt+1,St+1
- 为了更新给定状态-动作对的 Q 值,我们使用 TD 目标。
我们如何构建 TD 目标?
- 我们获得奖励 R t + 1 R_{t + 1} Rt+1 在执行动作 A t A_t At 之后
- 为了获得下一个状态的最优状态-动作对值 ,我们采用贪心策略选择下一个最优动作。请注意,这不是ε-贪心策略,而是始终选择具有最高状态-动作值的动作。
当这个 Q 值的更新完成后,我们进入一个新状态,并再次使用 epsilon-greedy 策略 选择动作。
离线策略与在线策略
区别非常微妙:
- 离线策略 :使用不同的策略进行行为(推断)和更新(训练)。
例如,在 Q 学习中,ε-贪婪策略(行为策略)与用于选择最佳下一个状态动作值以更新我们 Q 值(更新策略)的贪婪策略不同。
行为策略:

与我们在训练阶段使用的策略不同:
更新策略:

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


Q-Learning 示例
为了更好地理解 Q-Learning,我们来看一个简单的例子:

- 你是一只在这小型迷宫中的老鼠。你总是从同一个起点出发 。
- 目标是吃掉右下角的一大堆奶酪 ,并避开毒药。毕竟,谁不喜欢奶酪呢?
- 当我们吃到毒药、 吃掉那一大堆奶酪 ,或移动超过五步时,这一幕就结束了。
- 学习率为 0.1
- 折扣率(gamma)为 0.99

奖励函数如下所示:
- +0: 进入一个没有奶酪的状态
- +1: 进入有一个小奶酪的状态。
- +10: 进入有一个大奶酪堆的状态。
- -10: 进入有毒药的状态,因而死亡。
- +0: 如果我们走了超过五步。

为了训练我们的智能体获得最优策略(即“右、右、下”的策略), 我们将使用 Q 学习算法 。
步骤 1:初始化 Q 表

目前, 我们的 Q 表毫无用处 ;我们需要通过 Q 学习算法来训练我们的 Q 函数 。
让我们进行两个训练时间步:
训练时间步 1:
步骤2:使用ε-贪婪策略选择一个动作
由于 epsilon 较大(= 1.0),我采取一个随机动作。在这种情况下,我向右移动。

步骤 3:执行动作 At,获得奖励 Rt+1 和下一个状态 St+1
向右走,我会得到一小块奶酪,因此
R
t
+
1
=
1
R_{t+1} =1
Rt+1=1 ,并且我进入了一个新状态。

步骤 4:更新 Q(St, At)
现在我们可以使用公式来更新
Q
(
S
t
,
A
t
)
Q(S_t ,A_t)
Q(St,At)。


训练时间步 2:
步骤2:使用ε-贪婪策略选择一个动作
我再次采取了一个随机动作,因为ε=0.99 的值较大 。(注意:我们略微减小了ε的值,因为随着训练的进行,我们希望探索的程度逐渐降低)。
我采取了“向下”的动作。 这不是一个好动作,因为它使我进入了毒药区域。

步骤 3:执行动作 At,获得奖励 Rt+1 和下一个状态 St+1
因为我吃了毒药, 我得到
R
t
+
1
=
−
10
R_{t+1} =−10
Rt+1=−10 的奖励,然后死亡。

步骤 4:更新 Q(St, At)

由于我们已经死亡,将开始新一轮的回合。但在这里可以看到, 仅仅通过两步探索,我的智能体已经变得更聪明了。
随着我们继续在环境中探索与利用,并使用 TD 目标来更新 Q 值,Q 表将给出越来越精确的近似结果。在训练结束时,我们将得到最优 Q 函数的估计值。
Q-Learning 回顾
Q-Learning 是一种强化学习算法,它 :
-
训练一个 Q 函数 ,即一种动作价值函数 ,该函数在内部存储器中以 Q 表的形式编码,包含所有状态-动作对的值。
-
给定一个状态和动作,我们的 Q 函数将在其 Q 表中查找相应的值 。

-
当训练完成后, 我们就得到了一个最优 Q 函数,或者说等价地,一个最优 Q 表。
-
而如果我们拥有一个最优 Q 函数 ,就相当于拥有一个最优策略,因为我们知道在每个状态下应采取的最佳动作。

但是,一开始我们的 Q 表是无用的,因为它为每个状态-动作对提供了任意的值(大多数情况下我们将 Q 表初始化为 0 值)。然而,随着我们不断探索环境并更新 Q 表,它会为我们提供越来越精确的估计。

这是 Q 学习的伪代码:

术语
寻找最优策略的方法
- 基于策略的方法。 策略通常通过神经网络进行训练,以根据给定状态选择应执行的动作。在这种情况下,由神经网络直接输出智能体应采取的动作,而不是使用值函数。根据从环境中获得的经验,神经网络将被重新调整,从而提供更优的动作。
- 基于值的方法。 在这种方法中,训练一个值函数来输出某个状态或状态-动作对的值,这些值将代表我们的策略。然而,该值本身并不直接定义智能体应采取什么动作。相反,我们需要根据值函数的输出来明确智能体的行为方式。例如,我们可以决定采用一种策略,总是选择能带来最大奖励的动作(贪婪策略)。总之,该策略是一种贪婪策略(或用户设定的其他决策方式),利用值函数提供的数值来决定应采取的动作。
在基于价值的方法中,我们可以找到两种主要策略
- 状态价值函数。 对于每个状态,状态价值函数表示如果智能体从该状态开始并遵循策略直到结束所能获得的期望回报。
- 动作价值函数。 与状态价值函数不同,动作价值函数计算的是:如果智能体从某个状态开始,采取某个特定动作,之后一直遵循策略,所能获得的期望回报。
ε-贪婪策略
- 强化学习中常用的一种策略,涉及探索与利用之间的平衡。
- 以 1-epsilon 的概率选择预期奖励最高的动作。
- 以 epsilon 的概率随机选择动作。
- 通常随着时间推移减小 epsilon 值,以逐步转向更侧重于利用的策略。
贪婪策略
- 基于当前对环境的认知,总是选择预期能带来最高奖励的动作。(仅利用)
- 始终选择预期奖励最高的动作。
- 不包含任何探索。
- 在具有不确定性或未知最优动作的环境中可能会处于劣势。
离策略与在线策略算法
- 离策略算法: 训练时和推理时使用不同的策略
- 在线策略算法: 训练和推理期间使用相同的策略
蒙特卡洛与时序差分学习策略
- 蒙特卡洛(MC): 在回合结束时进行学习。使用蒙特卡洛方法时,我们需等到一个回合结束,然后基于完整的回合经验来更新价值函数(或策略函数)。
- 时序差分(TD): 在每一步进行学习。使用时序差分学习时,我们在每一步都更新价值函数(或策略函数),而无需等待回合完成。
4283

被折叠的 条评论
为什么被折叠?



