model free控制
这个课程所有的内容最后都会集中于本讲内容,通过本讲的学习,我们将会学习到如何训练一个Agent,使其能够在完全未知的环境下较好地完成任务,得到尽可能多的奖励。
上一讲主要讲解了在模型未知的情况下如何进行预测。所谓的预测就是 评估一个给定的策略,也就是确定一给定策略下的状态(或状态行为对)的价值函数。这一讲的内容主要是 在模型未知的条件下如何优化价值函数,这一过程也称作模型无关的控制。
有模型下的策略迭代
通用策略迭代的核心是在两个交替的过程之间进行策略优化。一个过程是策略评估,另一个是改善策略。
注意使用动态规划算法来改善策略是需要知道某一状态的所有后续状态及状态间转移概率:
π
′
(
s
)
=
argmax
a
∈
A
R
s
a
+
P
s
s
′
a
V
(
s
′
)
\pi^{\prime}(s)=\underset{a \in \mathcal{A}}{\operatorname{argmax}} \mathcal{R}_{s}^{a}+\mathcal{P}_{s s^{\prime}}^{a} V\left(s^{\prime}\right)
π′(s)=a∈AargmaxRsa+Pss′aV(s′)
- 对于model-free的策略迭代
那么这种方法是否适用于模型未知的蒙特卡洛学习呢?答案是否定的,这其中至少存在两个问题。其一是在模型未知的条件下无法知道当前状态的所有后续状态,进而无法确定在当前状态下采取怎样的行为更合适。解决这一问题的方法是,使用状态行为对下的价值 Q ( s , a ) Q(s,a) Q(s,a)来代替状态价值 :
这样做的目的是可以改善策略而不用知道整个模型,只需要知道在某个状态下采取什么什么样的行为价值最大即可。具体是这样:我们从一个初始的Q和策略 π \pi π开始,先根据这个策略更新每一个状态行为对的 Q ( s , a ) Q(s,a) Q(s,a)值,s随后基于更新的Q确定改善的贪婪算法。
即使这样,至少还存在一个问题,即当我们每次都使用贪婪算法来改善策略的时候,将很有可能由于没有足够的采样经验而导致产生一个并不是最优的策略,我们需要不时的尝试一些新的行为,这就是探索(Exploration)。
Ɛ-贪婪探索(MC-control)
Ɛ-贪婪探索的目标使得某一状态下所有可能的行为都有一定非零几率被选中执行,也就保证了持续的探索,
1
−
ϵ
1-\epsilon
1−ϵ的概率下选择当前认为最好的行为,而
ϵ
\epsilon
ϵ的概率在所有可能的行为中选择(也包括那个当前最好的行为)。数学表达式如下:
π
(
a
∣
s
)
=
{
ϵ
/
m
+
1
−
ϵ
if
a
∗
=
argmax
a
∈
A
Q
(
s
,
a
)
ϵ
/
m
otherwise
\pi(a | s)=\left\{\begin{array}{ll} \epsilon / m+1-\epsilon & \text { if } a^{*}=\underset{a \in \mathcal{A}}{\operatorname{argmax}} Q(s, a) \\ \epsilon / m & \text { otherwise } \end{array}\right.
π(a∣s)={ϵ/m+1−ϵϵ/m if a∗=a∈AargmaxQ(s,a) otherwise
m是动作的总数。
ϵ
\epsilon
ϵ贪婪策略提升定理:
对于任意的
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy策略
π
\pi
π而言,使用相应的
q
π
q_\pi
qπ得到的
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy策略
π
′
\pi'
π′是在
π
\pi
π上的一次策略提升,即
v
π
′
(
s
)
≥
v
π
(
s
)
v_{\pi'}(s)\ge v_{\pi}(s)
vπ′(s)≥vπ(s)
证明:
参考https://zhuanlan.zhihu.com/p/54272316
当然我觉得上面的参考链接并没有证明完整,并且还有暇疵,故进行完善:
在这里引入
ϵ
−
s
o
f
t
−
g
r
e
e
d
y
\epsilon-soft-greedy
ϵ−soft−greedy概念,它指的是对于所有states和actions,
π
(
a
∣
s
)
≥
ϵ
m
\pi(a | s) \geq \frac{\epsilon}{m}
π(a∣s)≥mϵ,其中
ϵ
>
0
\epsilon>0
ϵ>0。
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy属于
ϵ
−
s
o
f
t
−
g
r
e
e
d
y
\epsilon-soft-greedy
ϵ−soft−greedy,证明过程中最难的部分就是把max变成weight sum。
我们直接来看ppt上的证明过程:
q
π
(
s
,
π
′
(
s
)
)
=
∑
a
∈
A
π
′
(
a
∣
s
)
q
π
(
s
,
a
)
=
ϵ
/
m
∑
a
∈
A
q
π
(
s
,
a
)
+
(
1
−
ϵ
)
max
a
∈
A
q
π
(
s
,
a
)
≥
ϵ
/
m
∑
a
∈
A
q
π
(
s
,
a
)
+
(
1
−
ϵ
)
∑
a
∈
A
π
(
a
∣
s
)
−
ϵ
m
1
−
ϵ
q
π
(
s
,
a
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
=
v
π
(
s
)
\begin{aligned} q_{\pi}\left(s, \pi^{\prime}(s)\right) &=\sum_{a \in \mathcal{A}} \pi^{\prime}(a | s) q_{\pi}(s, a) \\ &=\epsilon / m \sum_{a \in \mathcal{A}} q_{\pi}(s, a)+(1-\epsilon) \max _{a \in \mathcal{A}} q_{\pi}(s, a) \\ & \geq \epsilon / m \sum_{a \in \mathcal{A}} q_{\pi}(s, a)+(1-\epsilon) \sum_{a \in \mathcal{A}} \frac{\pi(a | s)-\frac{\epsilon}{m}}{1-\epsilon} q_{\pi}(s, a) \\ &=\sum_{a \in \mathcal{A}} \pi(a | s) q_{\pi}(s, a)=v_{\pi}(s) \end{aligned}
qπ(s,π′(s))=a∈A∑π′(a∣s)qπ(s,a)=ϵ/ma∈A∑qπ(s,a)+(1−ϵ)a∈Amaxqπ(s,a)≥ϵ/ma∈A∑qπ(s,a)+(1−ϵ)a∈A∑1−ϵπ(a∣s)−mϵqπ(s,a)=a∈A∑π(a∣s)qπ(s,a)=vπ(s)
最难懂的大于等于的由来通过以下方法证明:
根据
ϵ
−
s
o
f
t
\epsilon-soft
ϵ−soft特点,
π
(
a
∣
s
)
≥
ϵ
m
\pi(a | s) \geq \frac{\epsilon}{m}
π(a∣s)≥mϵ,不妨假设
π
(
a
∣
s
)
=
ϵ
m
+
Δ
\pi(a | s)=\frac{\epsilon}{m}+\Delta
π(a∣s)=mϵ+Δ易得下面的式子:
π
(
a
∣
s
)
=
{
1
−
ϵ
−
(
m
−
1
)
Δ
+
ϵ
m
for greedy action
ϵ
m
+
Δ
for every non-gre
\pi ( a | s ) = \left\{ \begin{array} { l l } 1 - \epsilon - (m-1)\Delta + \frac { \epsilon } { m } & \text { for greedy action } \\ \frac { \epsilon } { m } + \Delta & \text { for every non-gre } \end{array} \right.
π(a∣s)={1−ϵ−(m−1)Δ+mϵmϵ+Δ for greedy action for every non-gre
这里假设:
- non-greedy action有 m-1 个,greedy action有1个,又
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)的求和=1,所以对于greedy action的
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)的取值为:
1 − ϵ + m / ϵ − ( m − 1 ) Δ 1-\epsilon +m/\epsilon -(m-1)\Delta 1−ϵ+m/ϵ−(m−1)Δ - 另所有non-greedy的Q(s,a)值,都统一等于non-greedy中最大的Q值
q
s
q_s
qs;greedy动作的Q值为
q
m
q_m
qm。
max a ∈ A q π ( s , a ) = q m \max _ { a \in \mathcal { A } } q _ { \pi } ( s , a ) = q _ { m } a∈Amaxqπ(s,a)=qm
所以有下式:
∑ a ∈ A π ( a ∣ s ) − ϵ m 1 − ϵ q π ( s , a ) < = ( 1 − ϵ − Δ m + Δ + ϵ m ) − ϵ m 1 − ϵ q m + ( ϵ m + Δ ) − ϵ m 1 − ϵ q s ( m − 1 ) = ( 1 − ϵ − Δ m + Δ ) q m + Δ ( m − 1 ) q s 1 − ϵ = ( 1 − ϵ ) q m − Δ ( m − 1 ) q m + Δ ( m − 1 ) q s 1 − ϵ = q m + Δ ( m − 1 ) ( q s − q m ) < = q m = max a ∈ A q π ( s , a ) \begin{aligned} \sum _ { a \in \mathcal { A } } \frac { \pi ( a | s ) - \frac { \epsilon } { m } } { 1 - \epsilon } q _ { \pi } ( s , a ) & <= \frac { \left( 1 - \epsilon - \Delta m + \Delta + \frac { \epsilon } { m } \right) - \frac { \epsilon } { m } } { 1 - \epsilon } q _ { m } + \frac { \left( \frac { \epsilon } { m } + \Delta \right) - \frac { \epsilon } { m } } { 1 - \epsilon } { } q _ { s } ( m - 1 ) \\ & = \frac { ( 1 - \epsilon - \Delta m + \Delta ) q _ { m } + \Delta ( m - 1 ) q _ { s } } { 1 - \epsilon } \\ & = \frac { ( 1 - \epsilon ) q _ { m } - \Delta ( m - 1 ) q _ { m } + \Delta ( m - 1 ) q _ { s } } { 1 - \epsilon } \\ & = q _ { m } + \Delta ( m - 1 ) \left( q _ { s } - q _ { m } \right) \\ &<= q_m =\max _ { a \in \mathcal { A } } q _ { \pi } ( s , a ) \end{aligned} a∈A∑1−ϵπ(a∣s)−mϵqπ(s,a)<=1−ϵ(1−ϵ−Δm+Δ+mϵ)−mϵqm+1−ϵ(mϵ+Δ)−mϵqs(m−1)=1−ϵ(1−ϵ−Δm+Δ)qm+Δ(m−1)qs=1−ϵ(1−ϵ)qm−Δ(m−1)qm+Δ(m−1)qs=qm+Δ(m−1)(qs−qm)<=qm=a∈Amaxqπ(s,a)
上述内容证明了 q π ( s , π ′ ( s ) ) q_{\pi}(s,{\pi'}(s)) qπ(s,π′(s))比 v π ( s ) v^\pi(s) vπ(s)要大,但并没有证明 v π ′ ( s ) v^{\pi'}(s) vπ′(s)比 v π ( s ) v^\pi(s) vπ(s)要大,所以还要再证一发这个:
Q π ( s , π ′ ( s ) ) = E [ r t + 1 + V π ( s t + 1 ) ∣ s t = s , a t = π ′ ( s t ) ] < = E [ r t + 1 + Q π ( s t + 1 , π ′ ( s t + 1 ) ) ∣ s t = s , a t = π ′ ( s t ) ] = E [ r t + 1 + r t + 2 + V π ( s t + 2 ) ∣ . . . . ] < = E [ r t + 1 + r t + 2 + Q π ( s t + 2 , π ′ ( s t + 2 ) ) ∣ . . . . ] . . . . . . < = V π ′ ( s ) \begin{aligned} Q^\pi(s,\pi'(s)) &= E[r_{t+1}+V^\pi(s_{t+1})|s_t = s,a_t = \pi'(s_t)] \\ &<=E[r_{t+1}+Q^\pi(s_{t+1},\pi'(s_{t+1}))|s_t = s,a_t = \pi'(s_t)]\\ &= E[r_{t+1}+r_{t+2}+V^\pi(s_{t+2})|....]\\ &<= E[r_{t+1}+r_{t+2}+Q^\pi(s_{t+2},\pi'(s_{t+2}))|....]\\ &......\\ &<= V^{\pi'}(s) \end{aligned} Qπ(s,π′(s))=E[rt+1+Vπ(st+1)∣st=s,at=π′(st)]<=E[rt+1+Qπ(st+1,π′(st+1))∣st=s,at=π′(st)]=E[rt+1+rt+2+Vπ(st+2)∣....]<=E[rt+1+rt+2+Qπ(st+2,π′(st+2))∣....]......<=Vπ′(s)
再通过以上式子便完整证明了: v π ′ ( s ) ≥ v π ( s ) v^{\pi'}(s)\ge v^\pi(s) vπ′(s)≥vπ(s)。
解决了上述两个问题,我们最终看到蒙特卡洛控制的全貌:使用Q函数进行策略评估,使用Ɛ-贪婪探索来改善策略。该方法最终可以收敛至最优策略。
图中每一个向上或向下的箭头都对应着多个Episode。也就是说我们一般在经历了多个Episode之后才进行依次Q函数更新或策略改善。实际上我们也可以在每经历一个Episode之后就更新Q函数或改善策略。但不管使用那种方式,在Ɛ-贪婪探索算下我们始终只能得到基于某一策略下的近似Q函数,且该算法没没有一个终止条件,因为它一直在进行探索。因此我们必须关注以下两个方面:一方面我们不想丢掉任何更好信息和状态,另一方面随着我们策略的改善我们最终希望能终止于某一个最优策略,因为事实上最优策略不应该包括一些随机行为选择。为此引入了另一个理论概念:GLIE。
GLIE(Greedy in the Limit with Infinite Exploration)
该算法的思想是在有限的时间内进行无限可能的探索。具体表现为:
- 所有已经经历的状态行为对(state-action pair)会被无限次探索;
- 另外随着探索的无限延伸,贪婪算法中Ɛ值趋向于0。例如如果我们取 ϵ = 1 / k \epsilon = 1/k ϵ=1/k(k为探索的Episode数目),那么该Ɛ贪婪蒙特卡洛控制就具备GLIE特性。
基于GLIE的蒙特卡洛控制流程如下:
关于GLIE的定理:GLIE蒙特卡洛控制能收敛至最优的状态行为价值函数。即
Q
(
s
,
a
)
Q(s,a)
Q(s,a)会收敛到
q
∗
(
s
,
a
)
q_{*}(s,a)
q∗(s,a)(找相关的论文来补充证明)
TD Control
on-policy TD Control
上一讲提到TD相比MC有很多优点:低方差,可以在线实时学习,可以学习不完整Episode等。
因此很自然想到是否可以在控制问题上使用TD学习而不是MC学习?答案是肯定的,这就是下文要讲解的SARSA。
SARSA
SARSA的名称来源于下图所示的序列描述:针对一个状态S,以及一个特定的行为A,进而产生一个状态行为对(S,A),与环境交互,环境收到个体的行为后会告诉个体即时奖励[公式]以及后续进入的状态S’;接下来个体遵循现有策略产生一个行为A’,根据当前的状态行为价值函数得到后一个状态行为对(S’,A’)的价值Q(S’,A’),利用这个Q(S’,A’)值更新前一个状态行为对Q(S,A)的价值。
算法的流程图如下图所示:
更直观的解释是这样:一个Agent处在某一个状态S,在这个状态下它可尝试各种不同的行为,当遵循某一策略时,会根据当前策略选择一个行为A,个体实际执行这个行为,与环境发生实际交互,环境会根据其行为给出即时奖励R,并且进入下一个状态S‘,在这个后续状态S’,再次遵循当前策略,产生一个行为A‘,此时,个体并不执行该行为,而是通过自身当前的状态行为价值函数得到该(S’,A’)状态行为对的价值,利用该价值同时结合个体S状态下采取行为A所获得的即时奖励来更新个体在S状态下采取A行为的(状态)行为价值。
SARSA策略的伪代码:
注:
1、算法中的Q(s,a)是以一张大表存储的,这不适用于解决规模很大的问题;
2、对于每一个Episode,在S状态时采用的行为A是基于当前策略的,同时该行为也是实际Episode发生的行为,在更新Q(S,A)状态行为对的价值循环里,个体并不实际执行在S’下的A’行为,而是将行为A’留到下一个循环执行。即,其实伪代码里的最后一行A赋值为A‘是多余的,因为下一个状态的动作,是要在下一个循环里选择的,而下一个循环执行的是新一轮的值函数获得的策略。这就是on-policy的含义,我用的是当前值函数获得的策略来选择的这一次循环的动作和更新的值函数以及下一次循环的状态,并为下一次动作的选择提供新策略。
关于SARSA的收敛性定理:满足如下两个条件时,Sarsa算法将收敛至最优行为价值函数。
条件一:任何时候的策略
π
t
(
a
∣
s
)
\pi_t(a|s)
πt(a∣s)符合GLIE特性;
条件二:步长系数
α
t
\alpha_t
αt满足:
∑
t
=
1
∞
α
t
=
∞
∑
t
=
1
∞
α
t
2
<
∞
\begin{array} { l } \sum _ { t = 1 } ^ { \infty } \alpha _ { t } = \infty \\ \sum _ { t = 1 } ^ { \infty } \alpha _ { t } ^ { 2 } < \infty \end{array}
∑t=1∞αt=∞∑t=1∞αt2<∞
但根据课上所讲,根据经验,不满足上述两个条件也可以收敛。
n步SARSA
在TD(
λ
\lambda
λ)里面提到过了n-steps奖励:
在SARSA中也可以运用相类似的思想,定义n-step的Q回报:
q
t
(
n
)
=
R
t
+
1
+
γ
R
t
+
2
+
…
+
γ
n
−
1
R
t
+
n
+
γ
n
Q
(
S
t
+
n
)
q _ { t } ^ { ( n ) } = R _ { t + 1 } + \gamma R _ { t + 2 } + \ldots + \gamma ^ { n - 1 } R _ { t + n } + \gamma ^ { n } Q \left( S _ { t + n } \right)
qt(n)=Rt+1+γRt+2+…+γn−1Rt+n+γnQ(St+n)
这里的
q
t
q_t
qt对应的是一个状态行为对
<
s
t
,
a
t
>
<s_t,a_t>
<st,at>,表示的是在某个状态下采取某个行为的价值大小。如果n=1,则表示状态行为对
<
s
t
,
a
t
>
<s_t,a_t>
<st,at>的Q价值可以用两部分表示,一部分是离开状态st得到的即时奖励
R
t
+
1
R_{t+1}
Rt+1,即时奖励只与状态有关,与该状态下采取的行为无关;另一部分是新状态行为对
<
s
t
+
1
,
a
t
+
1
>
<s_{t+1},a_{t+1}>
<st+1,at+1>的Q价值:环境给了个体一个新状态
s
t
+
1
s_{t+1}
st+1,观察在
s
t
+
1
s_{t+1}
st+1状态时基于当前策略得到的行为
a
t
+
1
a_{t+1}
at+1时的
Q
(
s
t
+
1
,
a
t
+
1
)
Q(s_{t+1},a_{t+1})
Q(st+1,at+1),后续的Q价值考虑衰减系数。当
n
=
2
n=2
n=2时,就向前用2步的即时奖励,然后再用新状态的Q价值代替;如果
n
=
∞
n=\infty
n=∞,则表示一直用即时奖励计算Q值,直至Episode结束,个体进入终止状态,获得终止状态的即时奖励。
另外,这个定义公式里没有体现出状态行为对的概念,理解起来容易与之前的n步G收获混淆,其实Q本身是包含行为的,也就是在当前策略下基于某一个状态产生的行为。Q收获与G收获是有一定关系的,这可以结合Bellman方程来理解。
有了如上定义,可以把n-步Sarsa用n-步Q收获来表示,如下式:
Q
(
S
t
,
A
t
)
←
Q
(
S
t
,
A
t
)
+
α
(
q
t
(
n
)
−
Q
(
S
t
,
A
t
)
)
Q \left( S _ { t } , A _ { t } \right) \leftarrow Q \left( S _ { t } , A _ { t } \right) + \alpha \left( q _ { t } ^ { ( n ) } - Q \left( S _ { t } , A _ { t } \right) \right)
Q(St,At)←Q(St,At)+α(qt(n)−Q(St,At))
SARSA( λ \lambda λ)
定义此时的q回报:
q
t
λ
=
(
1
−
λ
)
∑
n
=
1
∞
λ
n
−
1
q
t
(
n
)
q _ { t } ^ { \lambda } = ( 1 - \lambda ) \sum _ { n = 1 } ^ { \infty } \lambda ^ { n - 1 } q _ { t } ^ { ( n ) }
qtλ=(1−λ)n=1∑∞λn−1qt(n)
更新公式为:
Q
(
S
t
,
A
t
)
←
Q
(
S
t
,
A
t
)
+
α
(
q
t
λ
−
Q
(
S
t
,
A
t
)
)
Q \left( S _ { t } , A _ { t } \right) \leftarrow Q \left( S _ { t } , A _ { t } \right) + \alpha \left( q _ { t } ^ { \lambda } - Q \left( S _ { t } , A _ { t } \right) \right)
Q(St,At)←Q(St,At)+α(qtλ−Q(St,At))
前向理解的方式:使用它更新Q价值需要遍历完整的Episode。如下图所示:
反向理解的方式:与对于TD(λ)的反向认识一样,引入效用追踪(Eligibility Trace)概念,不同的是这次的E值针对的不是一个状态,而是一个状态行为对:
E
0
(
s
,
a
)
=
0
E
t
(
s
,
a
)
=
γ
λ
E
t
−
1
(
s
,
a
)
+
1
(
S
t
=
s
,
A
t
=
a
)
\begin{array} { l } E _ { 0 } ( s , a ) = 0 \\ E _ { t } ( s , a ) = \gamma \lambda E _ { t - 1 } ( s , a ) + 1 \left( S _ { t } = s , A _ { t } = a \right) \end{array}
E0(s,a)=0Et(s,a)=γλEt−1(s,a)+1(St=s,At=a)
它体现的是一个结果与某一个状态行为对的因果关系,与得到结果最近的状态行为对,以及那些在此之前频繁发生的状态行为对对得到这个结果的影响最大。
下式是引入
E
t
E_t
Et概念的SARSA(
λ
\lambda
λ)之后的Q值更新描述:
δ
t
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
A
t
+
1
)
−
Q
(
S
t
,
A
t
)
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
δ
t
E
t
(
s
,
a
)
\begin{array} { l } \delta _ { t } = R _ { t + 1 } + \gamma Q \left( S _ { t + 1 } , A _ { t + 1 } \right) - Q \left( S _ { t } , A _ { t } \right) \\ Q ( s , a ) \leftarrow Q ( s , a ) + \alpha \delta _ { t } E _ { t } ( s , a ) \end{array}
δt=Rt+1+γQ(St+1,At+1)−Q(St,At)Q(s,a)←Q(s,a)+αδtEt(s,a)
引入
E
t
E_t
Et概念,同时使用SARSA(
λ
\lambda
λ)将可以更有效的在线学习,因为不必要学习完整的Episode,数据用完即可丢弃。
E
t
E_t
Et通常也是更多应用在在线学习算法中。
SARSA(
λ
\lambda
λ)算法的伪代码如下:
这里要提及一下的是E(s,a)在每浏览完一个Episode后需要重新置0,这体现了
E
t
E_t
Et仅在一个Episode中发挥作用。并且这里是对之前所经历过的所有的(s,a)一次性全部更新的,而SARSA只更新当前的状态行为对的值函数。
off-policy
现时策略学习(On-Policy Learning)的特点就是当前遵循的策略就是个体学习改善的策略。离线策略学习(Off-Policy Learning)则指的是在遵循一个策略 μ ( a ∣ s ) \mu(a|s) μ(a∣s)的同时评估另一个策略 π ( a ∣ s ) \pi(a|s) π(a∣s),也就是计算确定这另一个策略下的状态价值函数 v π ( s ) v_\pi(s) vπ(s)和 q π ( s , a ) q_\pi(s,a) qπ(s,a)。为什么要这么做呢?因为这样可以较容易的从人类经验或其他个体的经验中学习,也可以从一些旧的策略中学习,可以比较两个策略的优劣。其中可能也是最主要的原因就是遵循一个探索式策略的基础上优化现有的策略。同样根据是否经历完整的Episode可以将其分为基于蒙特卡洛的和基于TD的。
off-policy的重要性有:
1、可以通过观察其他agent来学习;
2、可以使用之前的经验或是老的策略;
3、通过探索性策略来学到最优策略;
4、当遵循一个策略的时候能学到多种策略。
important sampling
在使用off-policy之前需要知道这样重要性采样:
E
X
∼
P
[
f
(
X
)
]
=
∑
P
(
X
)
f
(
X
)
=
∑
Q
(
X
)
P
(
X
)
Q
(
X
)
f
(
X
)
=
E
X
∼
Q
[
P
(
X
)
Q
(
X
)
f
(
X
)
]
\begin{aligned} \mathbb { E } _ { X \sim P } [ f ( X ) ] & = \sum P ( X ) f ( X ) \\ & = \sum Q ( X ) \frac { P ( X ) } { Q ( X ) } f ( X ) \\ & = \mathbb { E } _ { X \sim Q } \left[ \frac { P ( X ) } { Q ( X ) } f ( X ) \right] \end{aligned}
EX∼P[f(X)]=∑P(X)f(X)=∑Q(X)Q(X)P(X)f(X)=EX∼Q[Q(X)P(X)f(X)]
即用一个不一样的分布来估计期望。
对于MC方法我们一般不采用off-policy策略,因为方差过大,我们需要采样到回合结束,才能比较两个策略的差异。结合李宏毅对于重要性采样的讲解可知,方差过大的两个分布不适用重要性采样。
TD的off-policy方法
离线策略TD学习的任务就是使用TD方法在遵循一个策略
μ
(
a
∣
s
)
\mu(a|s)
μ(a∣s)的同时评估另一个策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)。具体数学表示为:
V
(
S
t
)
←
V
(
S
t
)
+
α
(
π
(
A
t
∣
S
t
)
μ
(
A
t
∣
S
t
)
(
R
t
+
1
+
γ
V
(
S
t
+
1
)
)
−
V
(
S
t
)
)
\begin{aligned} V \left( S _ { t } \right) & \leftarrow V \left( S _ { t } \right) + \alpha \left( \frac { \pi \left( A _ { t } | S _ { t } \right) } { \mu \left( A _ { t } | S _ { t } \right) } \left( R _ { t + 1 } + \gamma V \left( S _ { t + 1 } \right) \right) - V \left( S _ { t } \right) \right) \end{aligned}
V(St)←V(St)+α(μ(At∣St)π(At∣St)(Rt+1+γV(St+1))−V(St))
注:这里的V函数是针对策略
π
\pi
π的!
这个公式可以这样解释:个体处在状态
S
t
S_t
St中,基于策略
μ
\mu
μ产生了一个行为
A
t
A_t
At,执行该行为后进入新的状态
S
t
+
1
S_{t+1}
St+1,那么在当前策略下如何根据新状态的价值调整原来状态的价值呢?离线策略的方法就是,在状态
S
t
S_t
St时比较分别依据另一个策略
π
\pi
π和当前遵循的策略
μ
\mu
μ产生行为
A
t
A_t
At的概率大小,如果策略
π
\pi
π得到的概率值与遵循当前策略
μ
\mu
μ得到的概率值接近,说明根据状态
S
t
+
1
S_{t+1}
St+1价值来更新
S
t
S_t
St的价值同时得到两个策略的支持,这一更新操作比较有说服力。同时也说明在状态
S
t
S_t
St时,两个策略有接近的概率选择行为
A
t
A_t
At。假如这一概率比值很小,则表明如果依照被评估的策略,选择
A
t
A_t
At的机会很小,这时候我们在更新
S
t
S_t
St价值的时候就不能过多的考虑基于当前策略得到的状态
S
t
+
1
S_{t+1}
St+1的价值。同样概率比值大于1时,则说明更多的还是相信被评估的策略。这就相当于借鉴被评估策略的经验来更新我们自己的策略。
Q-learning
它的要点在于,更新一个状态行为对的Q价值时,采用的不是当前遵循策略的下一个状态行为对的Q价值,而是采用的待评估策略产生的下一个状态行为对的Q价值。公式如下:
Q
(
S
t
,
A
t
)
←
Q
(
S
t
,
A
t
)
+
α
(
R
t
+
1
+
γ
Q
(
S
t
+
1
,
A
′
)
−
Q
(
S
t
,
A
t
)
)
Q \left( S _ { t } , A _ { t } \right) \leftarrow Q \left( S _ { t } , A _ { t } \right) + \alpha \left( R _ { t + 1 } + \gamma Q \left( S _ { t + 1 } , A ^ { \prime } \right) - Q \left( S _ { t } , A _ { t } \right) \right)
Q(St,At)←Q(St,At)+α(Rt+1+γQ(St+1,A′)−Q(St,At))
其中动作
A
t
+
1
A_{t+1}
At+1由策略
μ
\mu
μ来产生,目标动作
A
′
A'
A′由策略
π
\pi
π产生。在使用Q-learning时无需再用重要性采样,因为此时采用的是Q值,并不是V值。
Q学习最主要的表现形式是:个体遵循的策略是基于当前状态行为价值函数
Q
(
s
,
a
)
Q(s,a)
Q(s,a)的一个
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy策略,而目标策略是基于当前状态行为价值函数
Q
(
s
,
a
)
Q(s,a)
Q(s,a)不包含
ϵ
\epsilon
ϵ的单纯
g
r
e
e
d
y
greedy
greedy策略(目标策略
π
\pi
π)
π
(
S
t
+
1
)
=
argmax
a
′
Q
(
S
t
+
1
,
a
′
)
\pi \left( S _ { t + 1 } \right) = \underset { a ^ { \prime } } { \operatorname { argmax } } Q \left( S _ { t + 1 } , a ^ { \prime } \right)
π(St+1)=a′argmaxQ(St+1,a′)
这样Q学习的TD目标值可以被大幅简化:
R
t
+
1
+
γ
Q
(
S
t
+
1
,
A
′
)
=
R
t
+
1
+
γ
Q
(
S
t
+
1
,
arg
max
a
′
Q
(
S
t
+
1
,
a
′
)
)
=
R
t
+
1
+
max
a
′
γ
Q
(
S
t
+
1
,
a
′
)
\begin{aligned} & R _ { t + 1 } + \gamma Q \left( S _ { t + 1 } , A ^ { \prime } \right) \\ = & R _ { t + 1 } + \gamma Q \left( S _ { t + 1 } , \underset { a ^ { \prime } } { \arg \max } Q \left( S _ { t + 1 } , a ^ { \prime } \right) \right) \\ = & R _ { t + 1 } + \max _ { a ^ { \prime } } \gamma Q \left( S _ { t + 1 } , a ^ { \prime } \right) \end{aligned}
==Rt+1+γQ(St+1,A′)Rt+1+γQ(St+1,a′argmaxQ(St+1,a′))Rt+1+a′maxγQ(St+1,a′)
Q值的更新公式可以被写成如下形式:
这样在状态
S
t
S_t
St依据
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy遵循策略得到的行为
A
t
A_t
At的Q价值将朝着
S
t
+
1
S_{t+1}
St+1状态所具有的最大Q价值的方向做一定比例的更新。这种算法能够使
g
r
e
e
d
y
greedy
greedy策略
π
\pi
π最终收敛到最佳策略。由于个体实际与环境交互的时候遵循的是
ϵ
−
g
r
e
e
d
y
\epsilon-greedy
ϵ−greedy策略,它能保证经历足够丰富的新状态。
Q函数的更新公式如下:
Q
(
S
,
A
)
←
Q
(
S
,
A
)
+
α
(
R
+
γ
max
a
′
Q
(
S
′
,
a
′
)
−
Q
(
S
,
A
)
)
Q ( S , A ) \leftarrow Q ( S , A ) + \alpha \left( R + \gamma \max _ { a ^ { \prime } } Q \left( S ^ { \prime } , a ^ { \prime } \right) - Q ( S , A ) \right)
Q(S,A)←Q(S,A)+α(R+γa′maxQ(S′,a′)−Q(S,A))
Q-learning的算法伪代码如下:
定理:Q-learning将收敛至最优状态行为价值函数:
Q
(
s
,
a
)
→
q
∗
(
s
,
a
)
Q(s,a)\rightarrow q_{*}(s,a)
Q(s,a)→q∗(s,a)。
总结DP和TD之间的关系
下面两张图概括了各种DP算法和各种TD算法,同时也揭示了各种不同算法之间的区别和联系。总的来说TD是采样+有数据引导(bootstrap),DP是全宽度+实际数据。如果从Bellman期望方程角度看:聚焦于状态本身价值的是迭代法策略评估(DP)和TD学习,聚焦于状态行为对价值函数的则是Q-策略迭代(DP)和SARSA;如果从针对状态行为价值函数的Bellman优化方程角度看,则是Q-价值迭代(DP)和Q学习。