- 引言
- 环境与模型
- 规划思想与学习思想
- 规划与学习的相同点
- 规划与学习的不同点
- 规划的特点
- 学习的特点
本节通过对动态规划方法、蒙特卡洛方法、时序差分方法进行归纳,介绍规划与学习两种思想。
环境与模型在动态规划求解强化学习任务 中介绍过,动态规划方法使用的核心思想是自举(Boostrapping)方法:
V
k
+
1
(
S
t
)
=
∑
a
∈
A
(
s
)
π
(
a
∣
s
)
∑
s
’
,
r
P
(
s
’
,
r
∣
s
,
a
)
(
r
+
γ
V
k
(
s
’
)
)
V_{k+1}(S_t) = \sum_{a \in \mathcal A(s)} \pi(a \mid s) \sum_{s’,r}P(s’,r \mid s,a)(r + \gamma V_{k}(s’))
Vk+1(St)=a∈A(s)∑π(a∣s)s’,r∑P(s’,r∣s,a)(r+γVk(s’)) 并且介绍了想要使用动态规划方法求解强化学习任务,就必须要已知 完备的迁移动态,即 任意有意义的状态-动作对的动态特性函数
P
(
s
’
,
r
∣
s
,
a
)
P(s’,r \mid s,a)
P(s’,r∣s,a) 均是已知的。我们称这种方法为有模型方法(Model-based Method)。 注:该模型指的是‘环境模型’,是基于环境自身的性质,通过动态特性函数表示出来。
有模型方法主要依赖的思想是规划(Planning);
针对像蒙特卡洛方法、时序差分方法这种 对动态特性函数未知或未完全可知 的情况,而通过真实样本进行采样得到的真实经验(Experience)对策略进行估计的方法,我们称为无模型方法(Model-free Method)。 无模型方法主要依赖的思想是学习(Learning);
规划思想与学习思想 规划与学习的相同点基于已经介绍过的动态规划方法、蒙特卡洛方法、时序差分方法,它们三个之间的共同点:
- 对策略更新的过程中,它们都使用了价值函数这个概念作为媒介,对策略进行更新:
之所以将‘价值函数’称为‘媒介’——是因为这三种方法并没有直接对策略
π \pi π进行求解,而是通过‘价值函数’和‘策略’相互迭代的方式进行求解。相反,直接对策略
π \pi π进行求解参考‘策略梯度方法’。
- 回溯思想:其核心思想是没有办法在当前时刻
t
t
t更新价值函数,只能通过未来时刻更新当前时刻
t
t
t的价值函数。我们观察几种方法的策略评估过程:
- 动态规划-策略评估(其中 R t + 1 + γ V π ( S t + 1 ) R_{t+1} + \gamma V_\pi(S_{t+1}) Rt+1+γVπ(St+1)是由动态特性函数计算获得的): E π [ R t + 1 + γ V π ( S t + 1 ) ∣ S t = s ] \mathbb E_{\pi}[R_{t+1} + \gamma V_{\pi}(S_{t+1}) \mid S_t =s] Eπ[Rt+1+γVπ(St+1)∣St=s]
- 蒙特卡洛评估: E π [ G t ∣ S t = s ] \mathbb E_{\pi}[G_t \mid S_t =s] Eπ[Gt∣St=s]
- 时序差分评估(其中 R t + 1 + γ V π ( S t + 1 ) R_{t+1} + \gamma V_\pi(S_{t+1}) Rt+1+γVπ(St+1)是通过采样获得的): E π [ R t + 1 + γ V π ( S t + 1 ) ∣ S t = s ] \mathbb E_{\pi}[R_{t+1} + \gamma V_{\pi}(S_{t+1}) \mid S_t = s] Eπ[Rt+1+γVπ(St+1)∣St=s] 观察上述三个式子,没有一个能够实现在当前时刻 t t t完成更新。其中动态规划和时序差分方法至少需要执行 一次状态转移过程才能对当前时刻状态价值函数进行更新;蒙特卡洛方法甚至要完成 整个情节的遍历 才能对状态价值函数进行更新。
- 广义策略迭代(GPI):上述三种方法本质上都是使用广义策略迭代的思想,在整个迭代过程中并没有 将
Q
−
T
a
b
l
e
Q-Table
Q−Table中的全部元素更新一遍之后 再执行下一次迭代,而仅是 更新
Q
−
T
a
b
l
e
Q-Table
Q−Table中的部分元素即可进行下一次迭代。例如:
- 蒙特卡洛方法仅更新了 Q − T a b l e Q-Table Q−Table中 某一完整情节对应一系列状态-动作对 上的价值函数信息;
- 时序差分方法更是仅更新了 Q − T a b l e Q-Table Q−Table 在状态转移过程中的某一状态-动作对 上的价值函数信息;
规划首先和环境模型(Model),和动态特性函数是密切相关的,其本质是从模拟经验中更新价值函数,从而实现改进策略的目的。
- 什么是模拟经验: 我们观察动态规划方法求解策略的过程,发现它并没有产生任何一个样本:它的状态转移结果 S t + 1 S_{t+1} St+1是通过当前时刻状态 S t S_t St的条件下,执行动作 A t A_t At,通过动态特性函数 P ( R t + 1 , S t + 1 ∣ S t , A t ) P(R_{t+1},S_{t+1} \mid S_t,A_t) P(Rt+1,St+1∣St,At)得到关于转移至 S t + 1 S_{t+1} St+1状态的各状态的概率分布,并从该分布中 随机选择一个状态 作为 S t + 1 S_{t+1} St+1。 因此,该结果 S t + 1 S_{t+1} St+1并不是真实环境真正选择的结果,而是通过动态特性函数模拟选择的结果。
通常将规划方法视为搜索(Search)方法。它的核心就是遍历。以动态规划方法为例,其本质上就是将当前时刻状态 S t S_t St到下一时刻状态 S t + 1 S_{t+1} St+1中所有状态转移的可能性全部找出来。 因此,规划的主要思想是:
- 所有规划方法都是 环境模型 产生的模拟经验来计算价值函数;
- 所有规划方法都是以计算价值函数作为策略迭代的中间关键步骤;
规划的基本流程可以表示如下: 环境模型 → \to → 模拟经验 → \to →(回溯)价值函数 → \to →(改进)策略
学习的特点由于规划基于的条件是环境模型(Model)是给定的,但在真实环境中,环境模型可能存在 环境信息不完整甚至是完全未知 的情况。因此,我们如果想用规划方法来求解策略,首先需要 将模型求出来。
那么,模型要如何进行求解呢? 我们仍然需要经验(experience),但这次的经验并不是环境模型产生出的模拟经验,而是真实环境产生的真实经验。 什么是真实经验:
- 对比模拟经验,真实经验是在 t t t时刻状态 S t = s S_t = s St=s条件下,选择了某一动作 A t = a A_t = a At=a,并实实在在地执行了一次状态转移过程。我们将转移后的状态结果和对应的奖励结果看作关于 S t = s , A t = a S_t = s,A_t = a St=s,At=a的一个样本,因而每个状态-动作对 ( s , a ) (s,a) (s,a)都会产生大量的样本。最终通过这些样本反过来归纳每个状态-动作对的环境模型分布。最终将所有状态-动作对的环境模型分布合在一起来近似真实环境模型。
至此,我们已经通过样本近似得到环境模型,就可以继续使用规划的流程求解策略。
上述流程确实可以实现,但实际上我们发现,假设已经得到了关于状态-动作对的大量真实样本,我们完全可以直接去学习策略,而不是转成规划的方式。 蒙特卡洛方法、时序差分方法都是这么做的。
因此,我们将先通过采样学习环境模型 P P P,再通过环境模型 P P P进行规划来更新策略 π \pi π的方式称为间接强化学习。相反,通过真实经验样本直接更新策略或利用已知环境模型更新策略 的方式称为 直接强化学习。 因此,动态规划方法、蒙特卡洛方法、时序查分方法 都是 直接强化学习。
下一节将继续介绍规划与学习的差异和 Q Q Q规划。
相关参考: 深度强化学习 原理、算法与PyTorch实战——刘全、黄志刚编著