上一节基于规划与学习的差异性介绍了 D y n a − Q Dyna-Q Dyna−Q架构的具体算法过程。但从真实环境的角度观察, D y n a − Q Dyna-Q Dyna−Q架构同样存在各种问题,本节从 D y n a − Q Dyna-Q Dyna−Q架构的问题出发,介绍算力聚焦的本质和具体的算力聚焦方法。
从 D y n a − Q Dyna-Q Dyna−Q角度观察规划与学习的结合过程:
将上述过程称为 产生真实经验(Real Experience)。其原因在于 S t + 1 , R t + 1 S_{t+1},R_{t+1} St+1,Rt+1是真实样本,生成该样本的模型是 真实的环境模型——这个模型我们是未知的。
我们可以理解成当前时刻状态-动作对 ( S t , A t ) (S_t,A_t) (St,At)与真实环境之间的一次交互,并将交互产生的经验对 Q − T a b l e Q-Table Q−Table对应 ( S t , A t ) (S_t,A_t) (St,At)位置进行一次常规更新。称该步骤为 直接强化学习(Direct Reinforcement Learning)。
这里为了简化运算,不考虑任何‘模型偏差’,但模型学习本身目的是‘近似真实环境’,因此理想状态下的
M
o
d
e
l
(
S
t
,
A
t
)
Model(S_t,A_t)
Model(St,At)是一个概率分布,而不是确定性的样本结果。
对真实样本中的信息进行 学习,并归纳成模型。称为 模型学习(Model Learning)。
将上述过程称为 产生模拟经验(Simulated Experience) ,区别于真实经验, s , r s,r s,r是模拟样本,它并没有真实发生过,产生它的模型是 M o d e l Model Model。
区别于学习过程中的直接强化学习,由于 ( s , r ) (s,r) (s,r)是模拟样本,因此称该步骤为 间接强化学习(Indirect Reinforcement Learning)。
核心矛盾可以理解为:有限的算力资源 V S \mathcal V\mathcal S VS 无限的状态动作空间(State-Action Space)。
算力资源的有限性:
从 D y n a − Q Dyna-Q Dyna−Q算法的角度观察:
状态-动作空间的无限性:
如果强化学习任务足够复杂——复杂到状态-动作对趋近于无限(可以将状态、动作看作连续型随机变量),至此,我们同样需要 趋近于无限的时间 去求解这个任务,这样自然和算法的有穷性相矛盾。
回顾 D y n a − Q Dyna-Q Dyna−Q算法过程,算力消耗主要集中在规划过程中的 n n n次规划:
由于是随机选择——各元素被选择的概率相同,这将导致一个问题:这种纯随机的方式导致后续的
Q
−
t
a
b
l
e
Q-table
Q−table更新效率非常低。
这里的‘元素’是指能够被采样出来的状态和动作,简写为元素。后面同理
我们希望被选择的状态-动作对 ( s , a ) (s,a) (s,a) 有意义——将各状态-动作对通过权重的方式进行区分——使用 算力聚焦思想 区分状态-动作对,使集合中的某些元素获取更高的算力等级;反之,对应某些元素获取较低的算力等级。
但 区分状态-动作对 这件事情本身就是一个难点:
这可以理解为对算力聚焦度 的考量:
这个概念被称为'利用'(Exploitation)。
这个概念被称为'探索'(Exploration)。
上述两种情况之间是 存在矛盾的,但我们同样希望 两种情况都能兼顾。
以状态 s s s的采样过程为例,重点观察 D y n a − Q Dyna-Q Dyna−Q的规划过程中状态 s s s的采样过程:
分析:上述过程中主要包含两个重点缺陷:
随机选择:
利用 (Exploitation)做得不足、实现的不好,各状态间没有区分性,需要使用算力聚焦思想;
从访问过的状态中选择:
假设出现一种情况:在 学习过程 中,由于学习的都是真实经验,可能存在某些状态-动作对 在 学习过程中从未发生过;
从而导致构建的 样本模型 M o d e l Model Model中对应的状态-动作对的结果(转移后的状态、对应的奖励)从未更新过;
这种情况下,在规划过程中,被访问的(状态、动作)集合 中自然也不会出现随机出这种组合;
但这种组合 并不意味着不重要——核心原因只是因为真实的环境模型针对某个状态-动作对出现的概率确实低;
上述例子虽然是‘真实环境模型’导致的结果,并不是‘算力聚焦’的干预,但造成的结果是相同的。
如果使用 D y n a − Q Dyna-Q Dyna−Q中的随机选择方法——如果 学习过程中 真实环境模型没有访问到的状态-动作对,那么 规划过程中必然不会访问到,这导致 探索(Exploration)同样做的不足、实现的不好。
至此, D y n a − Q Dyna-Q Dyna−Q算法的缺陷被指出,归结核心就是探索与利用问题。
由于 探索和利用之间的矛盾性,暂时不存在完全解决探索与利用问题的完美算法——但也衍生了各种各样的算法。这里不同的算法对于求解问题存在不同偏好(bias),不同偏好从而影响 算力聚焦的方向。这里将介绍基于 D y n a − Q Dyna-Q Dyna−Q的第一种改进方法: D y n a − Q + Dyna-Q+ Dyna−Q+。
D y n a − Q + Dyna-Q+ Dyna−Q+基于的假设:对于某一个状态-动作对,如果在真实环境中从未访问过或者曾经访问过但很有没有再次访问过了,那么该状态-动作对的不确定性增加了,具体是满足上述条件的状态的环境模型发生变化的概率增大了。
在解析这句话之前,需要重申一次核心思路:动态特性函数 P ( s ′ , r ∣ s , a ) P(s',r \mid s,a) P(s′,r∣s,a)不受智能体主观意志的变化而变化。因此,增大的不是环境模型的概率 P ( s ′ , r ∣ s , a ) P(s',r \mid s,a) P(s′,r∣s,a),而是环境模型发生变化的概率。
采用什么方法能够达到该效果?——具体思路:增加转移至该状态对应的奖励结果,具体方式是构建一个关于时间(
τ
\tau
τ)与奖励结果
r
r
r的函数:
r
←
r
+
κ
τ
r \gets r + \kappa \sqrt \tau
r←r+κτ
其中 τ \tau τ表示当前时刻距离上次访问该状态之间的时间间隔, τ \tau τ越大,状态被冷落(未被访问) 的时间越长,对应的奖励结果 r r r越大,从而使该状态被访问的 频率 增加。
核心解释
为什么增大了奖励结果
→
\to
→ 该状态被访问的 频率会增加?
虽然没有办法控制动态特性函数
P
(
s
′
,
r
∣
s
,
a
)
P(s',r \mid s,a)
P(s′,r∣s,a),但是我们可以修改策略,影响当前状态选择的动作。我们选择动作的基准是策略改进的贪心算法:
a
∗
=
arg
max
a
Q
π
(
s
,
a
)
Q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
a^* = \mathop{\arg\max}\limits_{a} Q_{\pi}(s,a) \\ Q_{\pi}(s,a) = \mathbb E_{\pi}[G_t \mid S_t = s,A_t = a]
a∗=aargmaxQπ(s,a)Qπ(s,a)=Eπ[Gt∣St=s,At=a]
如果增大了某状态的奖励结果,上一状态转移至该状态的回报也会增加,从而使上一状态的状态价值函数
V
π
(
s
)
V_{\pi}(s)
Vπ(s)也会增大:
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
G_t = R_{t+1} + \gamma R_{t+2} + ...\\ V_\pi(s) = \mathbb E_{\pi}[G_t \mid S_t = s]
Gt=Rt+1+γRt+2+...Vπ(s)=Eπ[Gt∣St=s]
上一状态的价值函数继续影响上上个状态的状态-动作价值函数
Q
(
s
,
a
)
Q(s,a)
Q(s,a)。以此类推,由于选择的动作满足贪心策略,一定会朝着
Q
(
s
,
a
)
Q(s,a)
Q(s,a)增大的方向进行状态转移,并且随着奖励增大,选择状态转移的频率越来越高。
通俗理解:只要存在动作能够转移到那个状态,随着状态奖励的增加,后续可能会‘毫不犹豫地选择Q(s,a)大的动作’,选择并执行该动作后,必然要执行状态转移。虽然动态特性函数没有变化过,但抵不过状态转移的次数多,总会有一次状态转移过程中‘动态特性函数选择该状态’,
τ
\tau
τ置零,并重新开始计时。
下一节将介绍其他的算力聚焦方法。
相关参考:
8.3 当模型错了
【强化学习】规划与学习-算力聚焦