上一节介绍了规划与学习的相关信息,并介绍了直接强化学习(Direct Reinforcement Learning)和间接强化学习(Indirect Reinforcement Learning),本节利用上述两种概念,介绍 Q Q Q规划算法与Dyna-Q算法。
如果单纯使用规划方法,其主要思想表示如下:
注意:此时产生的s'和r被称为‘模拟经验’——它并不是从真实环境中真实地执行了一次状态转移过程,而是在动态特性函数P(s',r|s,a)中基于转移后新状态的概率分布,随机选择的结果。由于上述思想是基于环境模型给定的条件下,直接使用环境模型对策略进行规划。因此,上述方法属于直接强化学习。
直接强化学习的定义:在真实环境中采集真实经验,根据真实经验直接更新值函数或策略,不受模型偏差的影响。
在动态规划方法中,它通过动态特性函数获取模拟经验,它不是真实经验,但为什么‘动态规划方法’是‘直接强化学习’呢?
以下是个人看法:动态规划中已知的动态特性函数就是‘理想状态下模型的表达’——也可以理解成经过无数次采样近似出的‘完美环境模型’。因此,动态规划方法产生的经验同样是‘真实经验’。
使用学习方法的主要思想是基于环境模型未知或未完全可知,导致我们 无法使用环境模型直接对策略进行规划。因此,使用学习(Learning)方法求解真实经验:
在真实环境中,给定状态 s s s条件下,选择具体动作 a ∈ A ( s ) a \in \mathcal A(s) a∈A(s),并执行一次真实的状态转移过程得到新状态 s ′ s' s′以及对应奖励 r r r。至此,我们得到一组 真实状态转移结果 ( s , a , s ′ , r ) (s,a,s',r) (s,a,s′,r),在求解策略 π \pi π的方向中,共分为 两条路径:
这种方法通过真实采样直接对策略 π \pi π进行学习。因此,上述方式同样属于直接强化学习。
这种方式明显是先求模型,再通过模型求解策略——我们称其为间接强化学习。
观察动态规划方法、蒙特卡洛方法、时序差分方法的算法更新图如下:



三张图中,只有动态规划方法是基于规划方法执行的操作,剩余两种方法是基于学习方法执行的操作。观察:
从遍历深度和遍历广度两个角度观察规划和学习的差异性:
从广度角度(执行一次状态转移操作后遍历新状态的数量)来看,基于学习方法的采样更新自然 一次只能遍历一个新状态节点,基于规划方法的期望更新能够 一次遍历多个新状态节点;
采样不广
从深度角度(更新一次策略需要的状态转移次数)来看,时序差分方法、动态规划方法都基于 自举(Bootstrapping)思想,因此每次迭代仅执行一次状态转移过程;
即便是SARSA,使用同轨策略执行了两次动作的选择,但仍然是只有一次状态转移过程。
但蒙特卡洛方法至少要遍历一个完整情节才能执行一次迭代过程,一个完整情节的遍历自然存在若干次状态转移过程。
自举不深
该算法的算法流程表示如下:
该步骤体现的Planning思想;该步骤体现的Q-Learning思想;本质上Q规划是将规划(Planning)和Q-Learning相结合的简单算法。
分析:该算法中的样本模型(Sample Model)是 给定 的(在算法执行之前,就已经通过真实样本构建了一个样本模型)
这种模型即:给定一个状态
s
∈
S
s \in \mathcal S
s∈S,某一动作
a
∈
A
(
s
)
a \in \mathcal A(s)
a∈A(s),必然会转移至确定状态
s
′
s'
s′ 及对应奖励结果
r
r
r。
通过观察可知,Q-规划算法中并不存在通过真实样本去学习环境模型的步骤,自然也不存在环境模型被更新的过程。
其本质上就是构建了一个 当前样本模型相匹配的
Q
−
T
a
b
l
e
Q-Table
Q−Table而已。
初始化部分:
状态集合:
S
\mathcal S
S;动作集合:
s
∈
S
,
a
∈
A
(
s
)
s \in \mathcal S,a \in \mathcal A(s)
s∈S,a∈A(s);
Q
−
T
a
b
l
e
Q-Table
Q−Table:
Q
(
s
,
a
)
∈
R
Q(s,a) \in \mathbb R
Q(s,a)∈R;样本模型(Sample Model):
M
o
d
e
l
(
s
,
a
)
∈
R
Model(s,a) \in \mathbb R
Model(s,a)∈R
注意:这里以‘样本模型’为例。
该算法的算法流程可以表示为两个过程:
学习过程:
规划过程:
分析:
原因在于,如果在规划过程抽取出的‘状态-动作对’
(
s
^
,
a
^
)
(\hat s,\hat a)
(s^,a^)中的
a
^
∉
A
(
s
^
)
\hat a \notin \mathcal A(\hat s)
a^∈/A(s^),此时
M
o
d
e
l
Model
Model中也不存在相应记录,也不会返回对应的
s
′
^
,
r
^
\hat {s'},\hat r
s′^,r^,相当于一个‘空循环’——没有更新Q-Table中的任何信息。下一节将介绍基于Dyna-Q在算力聚焦思想中的改进——Dyna-Q+算法。
相关参考:
【强化学习】规划与学习-Dyna Architecture
深度强化学习原理、算法与PyTorch实战——刘全、黄志刚编著