上一章讲了on-policy策略下,怎样估计状态价值函数,也就是“预测”任务。对应的还有一个“控制”任务,就是要找到最优策略。并且,在控制任务中,我们现在要估计的是动作价值函数,即 q ^ ( s , a , w ) ≈ q ∗ ( s , a ) \hat{q}(s, a, \mathbf{w}) \approx q_*(s, a) q^(s,a,w)≈q∗(s,a),其中 w ∈ R d \mathbf{w} \in \mathbb{R}^d w∈Rd是一个 d d d 维的权重向量。
这一章主要介绍半梯度Sarsa算法。对应于episodic case还有continuing case分别介绍怎样估计动作价值函数。
文章目录
1. Episodic Semi-gradient Control
上一章中讲到的半梯度预测方法可以很容易的扩展到半梯度控制问题。预测方法中,我们希望状态 S t S_t St的价值趋近于 U t U_t Ut。那么在控制方法中,我们求的是动作价值函数,所以我们希望 S t , A t → U t S_t, A_t \rightarrow U_t St,At→Ut。 U t U_t Ut是我们想要趋近的目标价值。
在估计动作价值时,通过梯度下降来更新参数的一般形式是:
w
t
+
1
≐
w
t
+
α
[
U
t
−
q
^
(
S
t
,
S
t
,
w
t
)
]
▽
q
^
(
S
t
,
A
t
,
w
t
)
\mathbf{w}_{t+1} \doteq \mathbf{w}_{t} + \alpha[U_t - \hat{q}(S_t, S_t, \mathbf{w}_{t})]\triangledown \hat{q}(S_t, A_t, \mathbf{w}_{t})
wt+1≐wt+α[Ut−q^(St,St,wt)]▽q^(St,At,wt)
比如,1-步Sarsa中,参数的更新形式为:
w
t
+
1
≐
w
t
+
α
[
R
t
+
1
+
γ
q
^
(
S
t
+
1
,
A
t
+
1
,
w
t
)
−
q
^
(
S
t
,
S
t
,
w
t
)
]
▽
q
^
(
S
t
,
A
t
,
w
t
)
\mathbf{w}_{t+1} \doteq \mathbf{w}_{t} + \alpha[R_{t+1} + \gamma \hat{q}(S_{t+1}, A_{t+1}, \mathbf{w}_{t}) - \hat{q}(S_t, S_t, \mathbf{w}_{t})]\triangledown \hat{q}(S_t, A_t, \mathbf{w}_{t})
wt+1≐wt+α[Rt+1+γq^(St+1,At+1,wt)−q^(St,St,wt)]▽q^(St,At,wt)
可以看出,只要将 U t U_t Ut替换为 R t + 1 + γ q ^ ( S t + 1 , A t + 1 , w t ) R_{t+1} + \gamma \hat{q}(S_{t+1}, A_{t+1}, \mathbf{w}_{t}) Rt+1+γq^(St+1,At+1,wt)就可以适用于1-步Sarsa的情况。这种方法叫做episodic semi-gradient one-step Sarsa。
在估计的动作价值收敛之后,我们就可以通过下式直接得到最优策略。
A
t
∗
=
arg max
a
q
^
(
S
t
,
a
,
w
t
−
1
)
A_t^* = \argmax_{a} \hat{q}(S_t, a, \mathbf{w}_{t-1})
At∗=aargmaxq^(St,a,wt−1)
完整的算法由下面的伪代码给出:
【疑问:关于Mountain Car Task的例子,里面的图我没看懂】
2. Semi-gradient n-step Sarsa
上一节讲的是1-步Sarsa的动作价值估计和确定最优策略的方法。对于n-步Sarsa,也是类似的方式,只是奖励的计算方法不同而已。
n-步Sarsa的目标奖励为:
G
t
:
t
+
n
≐
R
t
+
1
+
γ
R
t
+
2
+
⋯
+
γ
n
−
1
R
t
+
n
+
γ
n
q
^
(
S
t
+
n
,
A
t
+
n
,
w
t
+
n
−
1
)
,
t
+
n
<
T
G_{t:t+n} \doteq R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{n-1}R_{t+n} + \gamma^n \hat{q}(S_{t+n}, A_{t+n}, \mathbf{w}_{t+n-1}), \quad t+n < T
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnq^(St+n,At+n,wt+n−1),t+n<T
参数更新方式为:
w
t
+
n
≐
w
t
+
n
−
1
+
α
[
G
t
:
t
+
n
−
q
^
(
S
t
,
A
t
,
w
t
+
n
−
1
)
]
▽
q
^
(
S
t
,
A
t
,
w
t
+
n
−
1
)
,
0
≤
t
≤
T
\mathbf{w}_{t+n} \doteq \mathbf{w}_{t+n-1} + \alpha[G_{t:t+n} - \hat{q}(S_t, A_t, \mathbf{w}_{t+n-1})]\triangledown \hat{q}(S_t, A_t, \mathbf{w}_{t+n-1}), \quad 0 \leq t \leq T
wt+n≐wt+n−1+α[Gt:t+n−q^(St,At,wt+n−1)]▽q^(St,At,wt+n−1),0≤t≤T
完整的算法由下面的伪代码给出:
3. Average Reward: A New Problem Setting for Continuing Tasks
在continuing任务中,采样得到的序列没有一个终止状态。所以,前面几章在计算continuing任务的奖励时,使用到了折扣因子,即认为越后面的奖励对于当前状态价值的影响越小。但本节要讲的平均奖励(average reward)就是要抛掉折扣因子的设定。将即时奖励和后面的所有奖励看得一样重要。
平均奖励指的就是策略
π
\pi
π下的奖励的均值。表示为:
r
(
π
)
≐
lim
h
→
∞
1
h
∑
t
=
1
h
E
[
R
t
∣
S
0
,
A
0
:
t
−
1
∼
π
]
=
lim
t
→
∞
E
[
R
t
∣
S
0
,
A
0
:
t
−
1
∼
π
]
=
∑
s
μ
π
(
s
)
∑
a
π
(
a
∣
s
)
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
r
\begin{aligned} r(\pi) &\doteq \lim_{h \rightarrow \infty} \frac{1}{h} \sum_{t=1}^{h}\mathbb{E}[R_t | S_0, A_{0:t-1} \sim \pi] \\ &= \lim_{t \rightarrow \infty} \mathbb{E}[R_t | S_0, A_{0:t-1} \sim \pi] \\ &= \sum_{s} \mu_{\pi}(s) \sum_{a} \pi(a|s)\sum_{s', r}p(s', r|s, a)r \end{aligned}
r(π)≐h→∞limh1t=1∑hE[Rt∣S0,A0:t−1∼π]=t→∞limE[Rt∣S0,A0:t−1∼π]=s∑μπ(s)a∑π(a∣s)s′,r∑p(s′,r∣s,a)r
其中 μ π ( s ) ≐ lim t → ∞ P r ( S t = s ∣ A 0 : t − 1 ∼ π ) \mu_{\pi}(s) \doteq \lim_{t \rightarrow \infty}Pr(S_t=s| A_{0:t-1}\sim \pi) μπ(s)≐limt→∞Pr(St=s∣A0:t−1∼π),表示状态的稳态分布。如果根据稳态分布执行某个动作,所进入到的新状态仍为同一分布,即:
∑ s μ π ( s ) ∑ a π ( a ∣ s ) p ( s ′ ∣ s , a ) = μ π ( s ′ ) \sum_{s}\mu_{\pi}(s) \sum_{a} \pi(a|s)p(s'|s,a) = \mu_{\pi}(s') s∑μπ(s)a∑π(a∣s)p(s′∣s,a)=μπ(s′)
假设稳态分布存在,并且与初始状态无关。这种性质叫做ergodicity。这就意味着无论初始状态是什么,或者先前做的动作是什么,都只会产生一个临时的影响。最终处于一个状态的概率只取决于策略和转移概率。我们要找的最优策略应该使得 r ( π ) r(\pi) r(π)最大。
在平均奖励的设定下,我们可以定义一种新的计算方式,也就是即时奖励和平均奖励的差值的和:
G t ≐ R t + 1 − r ( π ) + R t + 2 − r ( π ) + R t + 3 − r ( π ) + ⋯ G_t \doteq R_{t+1} - r(\pi) + R_{t+2} - r(\pi) + R_{t+3} - r(\pi) + \cdots Gt≐Rt+1−r(π)+Rt+2−r(π)+Rt+3−r(π)+⋯
这里的 G t G_t Gt叫做differential奖励(看到有资料翻译为微分),对应的值函数叫做differential值函数,其表示形式为: v π ( s ) ≐ E π ( G t ∣ S t = s ) v_{\pi}(s) \doteq \mathbb{E}_{\pi}(G_t|S_t = s) vπ(s)≐Eπ(Gt∣St=s), q π ( s , a ) ≐ E π [ G t ∣ S t = s , A t = a ] q_{\pi}(s,a) \doteq \mathbb{E}_{\pi}[G_t |S_t=s, A_t = a] qπ(s,a)≐Eπ[Gt∣St=s,At=a]。differential值函数也有对应的贝尔曼方程以及贝尔曼最优方程,表示为:
v π ( s ) = ∑ a π ( a ∣ s ) ∑ r , s ′ p ( s ′ , r ∣ s , a ) [ r − r ( π ) + v π ( s ′ ) ] v_{\pi}(s) = \sum_{a}\pi(a|s) \sum_{r, s'}p(s',r|s,a)[r-r(\pi) + v_{\pi}(s')] vπ(s)=a∑π(a∣s)r,s′∑p(s′,r∣s,a)[r−r(π)+vπ(s′)]
q π ( s , a ) = ∑ r , s ′ p ( s ′ , r ∣ s , a ) [ r − r ( π ) + ∑ a ′ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) ] q_{\pi}(s,a) = \sum_{r, s'}p(s',r|s,a)[r-r(\pi) + \sum_{a'}\pi(a'|s')q_{\pi}(s',a')] qπ(s,a)=r,s′∑p(s′,r∣s,a)[r−r(π)+a′∑π(a′∣s′)qπ(s′,a′)]
v ∗ ( s ) = max a ∑ r , s ′ p ( s ′ , r ∣ s , a ) [ r − max π r ( π ) + v ∗ ( s ′ ) ] v_{*}(s) = \max_{a}\sum_{r, s'}p(s',r|s,a)[r- \max_{\pi}r(\pi) + v_{*}(s')] v∗(s)=amaxr,s′∑p(s′,r∣s,a)[r−πmaxr(π)+v∗(s′)]
q ∗ ( s , a ) = ∑ r , s ′ p ( s ′ , r ∣ s , a ) [ r − max π r ( π ) + max a ′ q ∗ ( s ′ , a ′ ) ] q_{*}(s,a) = \sum_{r, s'}p(s',r|s,a)[r-\max_{\pi}r(\pi) + \max_{a'}q_{*}(s',a')] q∗(s,a)=r,s′∑p(s′,r∣s,a)[r−πmaxr(π)+a′maxq∗(s′,a′)]
TD误差的differential形式,对应于状态价值函数和动作价值函数,可以表示为:
δ
t
≐
R
t
+
1
−
R
ˉ
t
+
v
^
(
S
t
+
1
,
w
t
)
−
v
^
(
S
t
,
w
t
)
\delta_t \doteq R_{t+1} - \bar{R}_t + \hat{v}(S_{t+1}, \mathbf{w}_t)-\hat{v}(S_{t}, \mathbf{w}_t)
δt≐Rt+1−Rˉt+v^(St+1,wt)−v^(St,wt)
δ t ≐ R t + 1 − R ˉ t + q ^ ( S t + 1 , A t + 1 , w t ) − q ^ ( S t , A t , w t ) \delta_t \doteq R_{t+1} - \bar{R}_t + \hat{q}(S_{t+1}, A_{t+1}, \mathbf{w}_t)-\hat{q}(S_{t}, A_{t}, \mathbf{w}_t) δt≐Rt+1−Rˉt+q^(St+1,At+1,wt)−q^(St,At,wt)
所以,在利用梯度下降更新参数 w \mathbf{w} w的时候,就可以利用下面的公式:
w t + 1 ≐ w t + α δ t ▽ q ^ ( S t , A t , w t ) \mathbf{w}_{t+1} \doteq \mathbf{w}_{t} + \alpha \delta_{t} \triangledown \hat{q}(S_t, A_t, \mathbf{w}_{t}) wt+1≐wt+αδt▽q^(St,At,wt)
即直接将更新误差替换为 δ t \delta_t δt。完整的算法由下面的伪代码给出:
4. Deprecating the Discounted Setting
上一节在计算平均奖励的时候,没有用到折扣因子,而是将所有奖励求和取平均。这样做是合理的吗?这一节就将给出合理性证明。
策略 π \pi π的平均奖励记做 r ( π ) r(\pi) r(π),设带折扣的策略估值为 J ( π ) J(\pi) J(π)。在做“控制”任务时,我们要做的是找到最优策略,也就是能使得 J ( π ) J(\pi) J(π)最大的策略。经过证明, J ( π ) = r ( π ) / ( 1 − γ ) J(\pi) = r(\pi) / (1- \gamma) J(π)=r(π)/(1−γ),所以最大化 r ( π ) r(\pi) r(π)就相当于最大化 J ( π ) J(\pi) J(π),那么加入折扣因子也就是没有什么用处的了。
具体的证明如下:
5. Differential Semi-gradient n-step Sarsa
有了1-步Sarsa的differential半梯度形式,很自然的想到怎样扩展到n-步Sarsa上去呢?其实n-步Sarsa和1-步Sarsa的区别仅在于累积奖励的计算方式。n-步Sarsa的differential奖励计算为:
G
t
:
t
+
n
≐
R
t
+
1
−
R
ˉ
t
+
n
−
1
+
⋯
+
R
t
+
n
−
R
ˉ
t
+
n
−
1
+
q
^
(
S
t
+
n
,
A
t
+
n
,
w
t
+
n
−
1
)
G_{t:t+n} \doteq R_{t+1} - \bar{R}_{t+n-1} + \cdots + R_{t+n} - \bar{R}_{t+n-1} + \hat{q}(S_{t+n}, A_{t+n}, \mathbf{w}_{t+n-1})
Gt:t+n≐Rt+1−Rˉt+n−1+⋯+Rt+n−Rˉt+n−1+q^(St+n,At+n,wt+n−1)
其中
R
ˉ
\bar{R}
Rˉ是关于
r
(
π
)
r(\pi)
r(π)的估计。那么n-步TD误差就表示为:
δ
t
≐
G
t
:
t
+
n
−
q
^
(
S
t
,
A
t
,
w
)
\delta_t \doteq G_{t:t+n} - \hat{q}(S_t, A_t, \mathbf{w})
δt≐Gt:t+n−q^(St,At,w)
这样我们就可以利用之前的半梯度Sarsa来更新参数了,完整算法参见伪代码:
总结
这一章主要讲了半梯度Sarsa的控制问题,即估计动作价值函数,目标是找到最优策略。内容围绕两个维度展开:
- 1-步Sarsa还是n-步Sarsa?
- 包含discounting 还是不包含 discounting?
通过以上两个维度,就扩展出了四方面内容,即有折扣的1-步Sarsa和n-步Sarsa控制,无折扣的1-步Sarsa和n-步Sarsa控制。分别对应于第1,2,3,5节的内容。其中第4节给出了无折扣计算平均奖励的合理性。