目标函数
agent会选择一种policy来最大化下面三种可能的目标函数:
- 总奖励的期望
J ( π ) : = E [ ∑ k = 0 N R ( s k , π ( s k ) ) ] J(\pi):=\mathbb{E}\left[\sum_{k=0}^{N} R\left(s_{k}, \pi\left(s_{k}\right)\right)\right] J(π):=E[k=0∑NR(sk,π(sk))] - 折扣总奖励的期望
J ( π ) : = E [ ∑ k = 0 ∞ γ k R ( s k , π ( s k ) ) ] , for 0 < γ < 1 J(\pi):=\mathbb{E}\left[\sum_{k=0}^{\infty} \gamma^{k} R\left(s_{k}, \pi\left(s_{k}\right)\right)\right], \text { for } 0<\gamma<1 J(π):=E[k=0∑∞γkR(sk,π(sk))], for 0<γ<1 - 平均奖励的MDP的期望
J ( π ) = lim K → ∞ E [ 1 K + 1 ∑ k = 0 K R ( s , π ( s ) ) ] J(\pi)=\lim _{K \rightarrow \infty} \mathbb{E}\left[\frac{1}{K+1} \sum_{k=0}^{K} R(s, \pi(s))\right] J(π)=K→∞limE[K+11k=0∑KR(s,π(s))]
对于MDP问题两个核心问题是:
- 一个策略有多好? 这就是policy evaluation
- 最优策略是什么? 这就是policy optimisation
策略评价
值函数:从状态
s
0
s_0
s0开始,在策略
π
\pi
π下的期望折扣奖励的函数。
V
π
(
s
)
:
=
E
[
∑
k
=
0
∞
γ
k
R
(
s
k
,
π
(
s
k
)
)
∣
s
0
=
s
]
V^{\pi}(s):=\mathbb{E}\left[\sum_{k=0}^{\infty} \gamma^{k} R\left(s_{k}, \pi\left(s_{k}\right)\right) \mid s_{0}=s\right]
Vπ(s):=E[k=0∑∞γkR(sk,π(sk))∣s0=s]
对应的相应策略的动作价值函数为:
Q
π
(
s
)
:
=
R
(
s
,
π
(
s
)
)
+
E
s
′
∼
Pr
(
s
′
∣
s
,
π
(
s
)
)
[
V
⋆
(
s
′
)
]
Q^{\pi}(s):=R(s, \pi(s))+\mathbb{E}_{s^{\prime} \sim \operatorname{Pr}\left(s^{\prime} \mid s, \pi(s)\right)}\left[V^{\star}\left(s^{\prime}\right)\right]
Qπ(s):=R(s,π(s))+Es′∼Pr(s′∣s,π(s))[V⋆(s′)]
策略优化
最优值函数的公式如下:
V
⋆
(
s
)
:
=
max
π
E
[
∑
k
=
0
∞
R
(
s
k
,
π
(
s
k
)
)
∣
s
0
=
s
]
V^{\star}(s):=\max _{\pi} \mathbb{E}\left[\sum_{k=0}^{\infty} R\left(s_{k}, \pi\left(s_{k}\right)\right) \mid s_{0}=s\right]
V⋆(s):=πmaxE[k=0∑∞R(sk,π(sk))∣s0=s]
最优动作值函数的公式如下:
Q
⋆
(
s
)
:
=
max
a
R
(
s
,
a
)
+
E
s
′
∼
Pr
(
s
′
∣
s
,
a
)
[
V
π
(
s
′
)
]
Q^{\star}(s):=\max _{a} R(s, a)+\mathbb{E}_{s^{\prime} \sim \operatorname{Pr}\left(s^{\prime} \mid s, a\right)}\left[V^{\pi}\left(s^{\prime}\right)\right]
Q⋆(s):=amaxR(s,a)+Es′∼Pr(s′∣s,a)[Vπ(s′)]
贝尔曼方程:用来衡量一个policy的好坏程度
V
π
(
s
)
=
E
[
γ
0
R
(
s
0
,
π
(
s
0
)
)
∣
s
0
=
s
]
+
E
[
∑
k
=
1
∞
γ
k
R
(
s
k
,
π
(
s
k
)
)
∣
s
0
=
s
]
=
R
(
s
,
π
(
s
)
)
+
E
s
′
∼
Pr
(
s
′
∣
s
,
π
(
s
)
)
[
∑
k
=
1
∞
γ
k
R
(
s
k
,
π
(
s
k
)
)
∣
s
1
=
s
′
]
=
R
(
s
,
π
(
s
)
)
+
γ
∑
s
′
Pr
(
s
′
∣
s
,
a
)
E
[
∑
k
=
0
∞
γ
k
R
(
s
k
,
π
(
s
k
)
)
∣
s
0
=
s
′
]
=
R
(
s
,
π
(
s
)
)
+
γ
∑
s
′
Pr
(
s
′
∣
s
,
π
(
s
)
)
V
π
(
s
′
)
\begin{aligned} V^{\pi}(s) &=\mathbb{E}\left[\gamma^{0} R\left(s_{0}, \pi\left(s_{0}\right)\right) \mid s_{0}=s\right]+\mathbb{E}\left[\sum_{k=1}^{\infty} \gamma^{k} R\left(s_{k}, \pi\left(s_{k}\right)\right) \mid s_{0}=s\right] \\ &=R(s, \pi(s))+\mathbb{E}_{s^{\prime} \sim \operatorname{Pr}\left(s^{\prime} \mid s, \pi(s)\right)}\left[\sum_{k=1}^{\infty} \gamma^{k} R\left(s_{k}, \pi\left(s_{k}\right)\right) \mid s_{1}=s^{\prime}\right] \\ &=R(s, \pi(s))+\gamma \sum_{s^{\prime}} \operatorname{Pr}\left(s^{\prime} \mid s, a\right) \mathbb{E}\left[\sum_{k=0}^{\infty} \gamma^{k} R\left(s_{k}, \pi\left(s_{k}\right)\right) \mid s_{0}=s^{\prime}\right] \\ &= R(s,\pi(s)) + \gamma \sum_{s^{\prime}} \operatorname{Pr}\left(s^{\prime} \mid s, \pi(s)\right) V^{\pi}\left(s^{\prime}\right) \end{aligned}
Vπ(s)=E[γ0R(s0,π(s0))∣s0=s]+E[k=1∑∞γkR(sk,π(sk))∣s0=s]=R(s,π(s))+Es′∼Pr(s′∣s,π(s))[k=1∑∞γkR(sk,π(sk))∣s1=s′]=R(s,π(s))+γs′∑Pr(s′∣s,a)E[k=0∑∞γkR(sk,π(sk))∣s0=s′]=R(s,π(s))+γs′∑Pr(s′∣s,π(s))Vπ(s′)
即我们可以把值函数写递归的形式。
策略评价的值迭代算法:
策略优化的值迭代算法:
优化策略的策略迭代算法:
Policy Approaches
马尔可夫链
遍历的马尔可夫链:
- 每个状态之间都有路径可以转移;
- 状态和状态之间没有loop
遍历的马尔可夫链会有以下性质:
p i j ( n ) → q j , as n → ∞ p_{i j}^{(n)} \rightarrow q_{j}, \text { as } n \rightarrow \infty pij(n)→qj, as n→∞
就是说它在经历过n次的状态转移后会收敛的。
Policy Methods
假设我们的policy
π
θ
\pi_{\theta}
πθ是用参数
θ
\theta
θ来确定的。那么我们可以把目标函数(累计奖励的期望,这个是一个平均价值的公式)写成如下形式:
J
(
θ
)
=
∑
s
∈
S
d
π
(
s
)
V
π
(
s
)
=
∑
s
∈
S
d
π
(
s
)
(
∑
a
∈
A
π
θ
(
a
∣
s
)
Q
π
(
s
,
a
)
)
J(\theta)=\sum_{s \in S} d^{\pi}(s) V^{\pi}(s)=\sum_{s \in S} d^{\pi}(s)\left(\sum_{a \in A} \pi_{\theta}(a \mid s) Q^{\pi}(s, a)\right)
J(θ)=s∈S∑dπ(s)Vπ(s)=s∈S∑dπ(s)(a∈A∑πθ(a∣s)Qπ(s,a))
其中
d
π
(
s
)
d^{\pi}(s)
dπ(s)是
d
π
(
s
)
=
lim
t
→
∞
p
(
S
t
=
s
∣
s
0
,
π
θ
)
d^{\pi}(s) = \lim _{t \rightarrow \infty} p\left(S_{t}=s \mid s_{0}, \pi_{\theta}\right)
dπ(s)=limt→∞p(St=s∣s0,πθ)当agent在第t个step后,从状态
s
0
s_0
s0出发,跟随policy
π
θ
\pi_{\theta}
πθ是一个静态(stationary)分布的一个概率。
既然目标函数是一个关于
θ
\theta
θ的函数,那么对它的最大最小化就可以采用梯度下降的方式,因为这里要最大化目标函数,故采用的是梯度上升。
但是这里要注意的是,动作的选择不仅依赖于
π
\pi
π也依赖于状态
d
π
(
s
)
d^{\pi}(s)
dπ(s),所以求梯度的时候就比较复杂。Sutton呢就通过一些trick,使得求导的时候与状态
d
π
(
s
)
d^{\pi}(s)
dπ(s)无关了。
我们来看一下推导:
∇
θ
(
E
[
∑
k
=
1
α
γ
k
−
1
r
t
+
k
∣
s
t
=
s
0
,
π
]
)
=
∇
θ
V
π
(
s
0
)
=
∇
θ
(
∑
a
∈
A
Q
π
(
s
0
,
a
)
π
θ
(
a
∣
s
0
)
)
=
∑
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
+
π
θ
(
a
∣
s
0
)
∇
θ
Q
π
(
s
0
,
a
)
)
product rule
\begin{aligned} & \nabla _ { \theta } \left( \mathrm { E } \left[ \sum _ { k = 1 } ^ { \alpha } \gamma ^ { k - 1 } r _ { t + k } \mid s _ { t } = s _ { 0 } , \pi \right] \right) = \nabla _ { \theta } V ^ { \pi } \left( s _ { 0 } \right) = \nabla _ { \theta } \left( \sum _ { a \in A } Q ^ { \pi } \left( s _ { 0 } , a \right) \pi _ { \theta } \left( a \mid s _ { 0 } \right) \right) \\ = & \sum \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) + \pi _ { \theta } \left( a \mid s _ { 0 } \right) \nabla _ { \theta } Q ^ { \pi } \left( s _ { 0 } , a \right) \right) & \text { product rule } \end{aligned}
=∇θ(E[k=1∑αγk−1rt+k∣st=s0,π])=∇θVπ(s0)=∇θ(a∈A∑Qπ(s0,a)πθ(a∣s0))∑(Qπ(s0,a)∇θπθ(a∣s0)+πθ(a∣s0)∇θQπ(s0,a)) product rule
这里写把值函数的定义写出来,然后用了一波链式法则。
接下来把
Q
π
(
s
0
,
a
)
Q^{\pi}(s_{0},a)
Qπ(s0,a)按照动作值函数的定义写开来得到下面的公式:
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
+
π
θ
(
a
∣
s
0
)
∇
θ
(
∑
s
′
,
r
P
(
s
′
,
r
∣
s
0
,
a
)
(
r
+
V
π
(
s
′
)
)
)
)
= \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) + \pi _ { \theta } \left( a \mid s _ { 0 } \right) \nabla _ { \theta } \left( \sum _ { s ^ { \prime } , r } P \left( s ^ { \prime } , r \mid s_0 , a \right) \left( r + V ^ { \pi } \left( s ^ { \prime } \right) \right) \right) \right)
=a∈A∑⎝⎛Qπ(s0,a)∇θπθ(a∣s0)+πθ(a∣s0)∇θ⎝⎛s′,r∑P(s′,r∣s0,a)(r+Vπ(s′))⎠⎞⎠⎞
因为梯度是对于
θ
\theta
θ的,所以可以把关于
r
r
r的项给移除:
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
+
π
θ
(
a
∣
s
0
)
(
∑
s
′
,
r
P
(
s
′
,
r
∣
s
0
,
a
)
∇
θ
V
π
(
s
′
)
)
)
remove
r
= \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) + \pi _ { \theta } \left( a \mid s _ { 0 } \right) \left( \sum _ { s^{'} , r } P \left( s ^ { \prime } , r \mid s _ { 0 } , a \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right) \right) \right) \text { remove } r
=a∈A∑⎝⎛Qπ(s0,a)∇θπθ(a∣s0)+πθ(a∣s0)⎝⎛s′,r∑P(s′,r∣s0,a)∇θVπ(s′)⎠⎞⎠⎞ remove r
接下来可以把
r
r
r给marginalise掉,就可以得到下式:
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
+
π
θ
(
a
∣
s
0
)
(
∑
s
′
P
(
s
′
∣
s
0
,
a
)
∇
θ
V
π
(
s
′
)
)
)
= \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) + \pi _ { \theta } \left( a \mid s _ { 0 } \right) \left( \sum _ { s \prime } P \left( s ^ { \prime } \mid s _ { 0 } , a \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right) \right) \right)
=a∈A∑(Qπ(s0,a)∇θπθ(a∣s0)+πθ(a∣s0)(s′∑P(s′∣s0,a)∇θVπ(s′)))
然后把对于动作的求和符号放到式子里面去可以得到下面的关系:
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
)
+
∑
a
∈
A
π
θ
(
a
∣
s
0
)
(
∑
s
′
P
(
s
′
∣
s
0
,
a
)
∇
θ
V
π
(
s
′
)
)
= \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) \right) + \sum _ { a \in A } \pi _ { \theta } \left( a \mid s _ { 0 } \right) \left( \sum _ { s \prime } P \left( s ^ { \prime } \mid s _ { 0 } , a \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right) \right)
=a∈A∑(Qπ(s0,a)∇θπθ(a∣s0))+a∈A∑πθ(a∣s0)(s′∑P(s′∣s0,a)∇θVπ(s′))
交换求和符号可以得到下式:
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
)
+
∑
s
′
(
∑
a
∈
A
π
θ
(
a
∣
s
0
)
P
(
s
′
∣
s
0
,
a
)
)
∇
θ
V
π
(
s
′
)
= \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) \right) + \sum _ { s \prime } \left( \sum _ { a \in A } \pi _ { \theta } \left( a \mid s _ { 0 } \right) P \left( s ^ { \prime } \mid s _ { 0 } , a \right) \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right)
=a∈A∑(Qπ(s0,a)∇θπθ(a∣s0))+s′∑(a∈A∑πθ(a∣s0)P(s′∣s0,a))∇θVπ(s′)
然后就可以得到以下的递归关系:
∇
θ
V
π
(
s
0
)
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
)
+
∑
s
′
(
∑
a
∈
A
π
θ
(
a
∣
s
0
)
P
(
s
′
∣
s
0
,
a
)
)
∇
θ
V
π
(
s
′
)
\begin{aligned} \nabla _ { \theta } V ^ { \pi } \left( s _ { 0 } \right) = & \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) \right) \\ & + \sum _ { s \prime } \left( \sum _ { a \in A } \pi _ { \theta } \left( a \mid s _ { 0 } \right) P \left( s ^ { \prime } \mid s _ { 0 } , a \right) \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right) \end{aligned}
∇θVπ(s0)=a∈A∑(Qπ(s0,a)∇θπθ(a∣s0))+s′∑(a∈A∑πθ(a∣s0)P(s′∣s0,a))∇θVπ(s′)
再简化一些就可以得到以下公式:
∇
θ
V
π
(
s
0
)
=
φ
(
s
0
)
+
∑
s
′
P
π
(
s
′
∣
s
0
)
∇
θ
V
π
(
s
′
)
\nabla _ { \theta } V ^ { \pi } \left( s _ { 0 } \right) = \varphi \left( s _ { 0 } \right) + \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right)
∇θVπ(s0)=φ(s0)+s′∑Pπ(s′∣s0)∇θVπ(s′)
其中
φ
(
s
0
)
=
∑
a
∈
A
(
Q
π
(
s
0
,
a
)
∇
θ
π
θ
(
a
∣
s
0
)
)
\varphi \left( s _ { 0 } \right) = \sum _ { a \in A } \left( Q ^ { \pi } \left( s _ { 0 } , a \right) \nabla _ { \theta } \pi _ { \theta } \left( a \mid s _ { 0 } \right) \right)
φ(s0)=∑a∈A(Qπ(s0,a)∇θπθ(a∣s0)),马尔可夫转移过程为:
P
π
(
s
′
∣
s
0
)
=
∑
a
∈
A
π
θ
(
a
∣
s
0
)
P
(
s
′
∣
s
0
,
a
)
P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } \right) = \sum _ { \mathrm { a } \in A } \pi _ { \theta } \left( a \mid s _ { 0 } \right) P \left( s ^ { \prime } \mid s _ { 0 } , a \right)
Pπ(s′∣s0)=∑a∈Aπθ(a∣s0)P(s′∣s0,a)
在策略
π
\pi
π下,从状态
s
0
s_0
s0经过
k
k
k步到达状态
s
′
′
s''
s′′的概率为:
P
π
(
s
′
′
∣
s
0
,
k
)
≡
∑
s
′
P
π
(
s
′
′
∣
s
′
,
k
−
1
)
P
π
(
s
′
∣
s
0
)
P ^ { \pi } \left( s ^ { \prime \prime } \mid s _ { 0 } , k \right) \equiv \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime \prime } \mid s ^ { \prime } , k - 1 \right) P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } \right)
Pπ(s′′∣s0,k)≡s′∑Pπ(s′′∣s′,k−1)Pπ(s′∣s0)
让我们再结合上式以及简化后的公式来得到下式:
∇
θ
V
π
(
s
0
)
=
φ
(
s
0
)
+
∑
s
′
P
π
(
s
′
∣
s
0
)
∇
θ
V
π
(
s
′
)
=
φ
(
s
0
)
+
∑
s
′
P
π
(
s
′
∣
s
0
,
1
)
[
φ
(
s
′
)
+
∑
s
′
P
π
(
s
′
′
∣
s
′
)
∇
θ
V
π
(
s
′
′
)
]
\begin{aligned} \nabla _ { \theta } V ^ { \pi } \left( s _ { 0 } \right) &= \varphi \left( s _ { 0 } \right) + \sum _ { s \prime } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime } \right) \\ &= \varphi \left( s _ { 0 } \right) + \sum _ { s \prime } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } , 1 \right) \left[ \varphi \left( s ^ { \prime } \right) + \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime \prime } \mid s ^ { \prime } \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime \prime } \right) \right] \end{aligned}
∇θVπ(s0)=φ(s0)+s′∑Pπ(s′∣s0)∇θVπ(s′)=φ(s0)+s′∑Pπ(s′∣s0,1)[φ(s′)+s′∑Pπ(s′′∣s′)∇θVπ(s′′)]
把求和号吃进去,得到下式:
=
φ
(
s
0
)
+
[
∑
s
′
P
π
(
s
′
∣
s
0
,
1
)
φ
(
s
′
)
]
+
[
∑
s
′
P
π
(
s
′
∣
s
,
1
)
∑
s
′
′
P
π
(
s
′
′
∣
s
′
)
∇
θ
V
π
(
s
′
′
)
]
= \varphi \left( s _ { 0 } \right) + \left[ \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } , 1 \right) \varphi \left( s ^ { \prime } \right) \right] + \left[ \sum _ { s \prime } P ^ { \pi } \left( s ^ { \prime } \mid s , 1 \right) \sum _ { s ^ { \prime \prime } } P ^ { \pi } \left( s ^ { \prime \prime } \mid s ^ { \prime } \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime \prime } \right) \right]
=φ(s0)+[s′∑Pπ(s′∣s0,1)φ(s′)]+[s′∑Pπ(s′∣s,1)s′′∑Pπ(s′′∣s′)∇θVπ(s′′)]
再整理一下得到下式:
=
φ
(
s
0
)
+
[
∑
s
′
P
π
(
s
′
∣
s
0
,
1
)
φ
(
s
′
)
]
+
[
∑
s
′
′
∑
s
′
P
π
(
s
′
∣
s
,
1
)
P
π
(
s
′
′
∣
s
′
)
∇
θ
V
π
(
s
′
′
)
]
=
φ
(
s
0
)
+
[
∑
s
′
P
π
(
s
′
∣
s
0
,
1
)
φ
(
s
′
)
]
+
[
∑
s
′
′
∞
P
π
(
s
′
′
∣
s
,
2
)
∇
θ
V
π
(
s
′
′
)
]
\begin{aligned} &= \varphi \left( s _ { 0 } \right) + \left[ \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } , 1 \right) \varphi \left( s ^ { \prime } \right) \right] + \left[ \sum _ { s \prime \prime } \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime } \mid s , 1 \right) P ^ { \pi } \left( s ^ { \prime \prime } \mid s ^ { \prime } \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime \prime } \right) \right] \\ &= \varphi \left( s _ { 0 } \right) + \left[ \sum _ { s ^ { \prime } } P ^ { \pi } \left( s ^ { \prime } \mid s _ { 0 } , 1 \right) \varphi \left( s ^ { \prime } \right) \right] + \left[ \sum _ { s \prime \prime } ^ { \infty } P ^ { \pi } \left( s ^ {\prime\prime} \mid s , 2 \right) \nabla _ { \theta } V ^ { \pi } \left( s ^ { \prime \prime } \right) \right] \end{aligned}
=φ(s0)+[s′∑Pπ(s′∣s0,1)φ(s′)]+[s′′∑s′∑Pπ(s′∣s,1)Pπ(s′′∣s′)∇θVπ(s′′)]=φ(s0)+[s′∑Pπ(s′∣s0,1)φ(s′)]+[s′′∑∞Pπ(s′′∣s,2)∇θVπ(s′′)]
这样不断把值函数进行拆分后可以得到以下求和公式:
=
∑
s
∈
S
∑
k
=
0
∞
P
π
(
s
∣
s
0
,
k
)
φ
(
s
)
=
∑
s
∈
S
∑
k
=
0
∞
[
P
π
(
s
∣
s
0
,
k
)
∑
a
∈
A
(
Q
π
(
s
,
a
)
∇
θ
π
θ
(
a
∣
s
)
)
]
\begin{aligned} &= \sum _ { s \in S } \sum _ { k = 0 } ^ { \infty } P ^ { \pi } \left( s \mid s _ { 0 } , k \right) \varphi ( s ) \\ &= \sum _ { s \in S } \sum _ { k = 0 } ^ { \infty } \left[ P ^ { \pi } \left( s \mid s _ { 0 } , k \right) \sum _ { a \in A } \left( Q ^ { \pi } ( s , a ) \nabla _ { \theta } \pi _ { \theta } ( a \mid s ) \right) \right] \end{aligned}
=s∈S∑k=0∑∞Pπ(s∣s0,k)φ(s)=s∈S∑k=0∑∞[Pπ(s∣s0,k)a∈A∑(Qπ(s,a)∇θπθ(a∣s))]
我们定义
d
π
(
s
)
d^{\pi}(s)
dπ(s)为从状态
s
0
s_0
s0转移到状态
s
s
s的所有可能情况,即下式:
d
π
(
s
)
:
=
∑
k
=
0
α
P
π
(
s
∣
s
0
,
k
)
d ^ { \pi } ( s ) : = \sum _ { k = 0 } ^ { \alpha } P ^ { \pi } \left( s \mid s _ { 0 } , k \right)
dπ(s):=k=0∑αPπ(s∣s0,k)
所以原式就变成了:
∇
θ
V
π
(
s
0
)
=
∑
s
∈
S
∑
k
=
0
α
[
P
π
(
s
∣
s
0
,
k
)
∑
a
∈
A
(
Q
π
(
s
,
a
)
∇
θ
π
θ
(
a
∣
s
)
)
]
=
∑
s
∈
S
d
π
(
s
)
∑
a
∈
A
(
Q
π
(
s
,
a
)
∇
θ
π
θ
(
a
∣
s
)
)
\begin{aligned} \nabla _ { \theta } V ^ { \pi } \left( s _ { 0 } \right) &= \sum _ { s \in S } \sum _ { k = 0 } ^ { \alpha } \left[ P ^ { \pi } \left( s \mid s _ { 0 } , k \right) \sum _ { a \in A } \left( Q ^ { \pi } ( s , a ) \nabla _ { \theta } \pi _ { \theta } ( a \mid s ) \right) \right] \\ &= \sum _ { s \in S } d ^ { \pi } ( s ) \sum _ { a \in A } \left( Q ^ { \pi } ( s , a ) \nabla _ { \theta } \pi _ { \theta } ( a \mid s ) \right) \end{aligned}
∇θVπ(s0)=s∈S∑k=0∑α[Pπ(s∣s0,k)a∈A∑(Qπ(s,a)∇θπθ(a∣s))]=s∈S∑dπ(s)a∈A∑(Qπ(s,a)∇θπθ(a∣s))
REINFORCE算法
这是用MC来采样的,需要有从t时刻的完整episode才行。
为了减小方差,通常采用Advantage函数来进行梯度的更新:
REINFORCE算法的详细解释:
我们还需要一种获取样本的方法,这些采样的样本梯度的期望正比于性能指标对于策略参数的实际梯度。策略梯度定理公式的右边是将目标策略
π
\pi
π下每个策略出现的频率作为加权系数的求和项,如果按策略
π
\pi
π下每个策略
对于值函数的梯度目前来说是这样的:
∇
J
(
θ
)
=
∑
s
μ
π
(
s
)
∑
a
q
π
(
s
,
a
)
∇
θ
π
(
a
∣
s
,
θ
)
=
E
[
∑
a
q
π
(
S
t
,
a
)
∇
π
(
a
∣
S
t
,
θ
)
]
\begin{aligned} \nabla J ( \theta ) &= \sum _ { s } \mu _ { \pi } ( s ) \sum _ { a } q _ { \pi } ( s , a ) \nabla _ { \theta } \pi ( a \mid s , \theta )\\ &=\mathbb{E}[\sum_{a}q_{\pi}(S_{t},a)\nabla\pi(a|S_{t},\theta)] \end{aligned}
∇J(θ)=s∑μπ(s)a∑qπ(s,a)∇θπ(a∣s,θ)=E[a∑qπ(St,a)∇π(a∣St,θ)]
与引入
S
t
S_t
St的过程类似,我们将
A
t
A_t
At引入进来,把对随机变量所有可能取值的求和运算替换为对
π
\pi
π的期望,然后对期望进行采样。上式涉及了对动作的求和,但每一项中并没有将
π
(
a
∣
S
t
,
θ
)
\pi(a|S_{t},\theta)
π(a∣St,θ)作为加权求和系数,而这是对
π
\pi
π求期望所必须的。所以,我们采用了一个不改变等价性的方法来引入这个概率加权系数,并将每一个求和项分别乘上再除以概率
π
(
a
∣
S
t
,
θ
)
\pi(a|S_{t},\theta)
π(a∣St,θ)就可以了我们有:
∇
J
(
θ
)
=
E
s
∼
π
[
∑
a
π
(
a
∣
S
t
,
θ
)
q
π
(
S
t
,
a
)
∇
π
(
a
∣
S
t
,
θ
)
π
(
a
∣
S
t
,
θ
)
]
=
E
s
,
a
∼
π
[
q
π
(
S
t
,
A
t
)
∇
π
(
A
t
∣
S
t
,
θ
)
π
(
A
t
∣
S
t
,
θ
)
]
=
E
s
,
a
∼
π
[
G
t
∇
π
(
A
t
∣
S
t
,
θ
)
π
(
A
t
∣
S
t
,
θ
)
]
\begin{aligned} \nabla J ( \boldsymbol { \theta } ) & = \mathbb { E } _ { s \sim \pi } \left[ \sum _ { a } \pi \left( a \mid S _ { t } , \boldsymbol { \theta } \right) q _ { \pi } \left( S _ { t } , a \right) \frac { \nabla \pi \left( a \mid S _ { t } , \boldsymbol { \theta } \right) } { \pi \left( a \mid S _ { t } , \boldsymbol { \theta } \right) } \right] \\ & = \mathbb { E } _ { s , a \sim \pi } \left[ q _ { \pi } \left( S _ { t } , A _ { t } \right) \frac { \nabla \pi \left( A _ { t } \mid S _ { t } , \boldsymbol { \theta } \right) } { \pi \left( A _ { t } \mid S _ { t } , \boldsymbol { \theta } \right) } \right] \\ & = \mathbb { E } _ { s , a \sim \pi } \left[ G _ { t } \frac { \nabla \pi \left( A _ { t } \mid S _ { t } , \boldsymbol { \theta } \right) } { \pi \left( A _ { t } \mid S _ { t } , \boldsymbol { \theta } \right) } \right] \end{aligned}
∇J(θ)=Es∼π[a∑π(a∣St,θ)qπ(St,a)π(a∣St,θ)∇π(a∣St,θ)]=Es,a∼π[qπ(St,At)π(At∣St,θ)∇π(At∣St,θ)]=Es,a∼π[Gtπ(At∣St,θ)∇π(At∣St,θ)]
这里做的替换是:
E
π
[
G
t
∣
S
t
,
A
t
]
=
q
π
(
S
t
,
A
t
)
\mathbb{E}_{\pi}[G_t|S_t,A_t] = q_{\pi}(S_{t},A_{t})
Eπ[Gt∣St,At]=qπ(St,At)
它的更新有直观上的吸引力。每一个增量更新都正比于回报 G t G_t Gt和一个向量的乘积,这个向量是选取动作的概率的梯度除以这个概率本身。这个向量是参数空间中使得将来在状态 S t S_t St下重复选择动作 A t A_t At的概率增加最大的方向。这个更新使得参数向量沿着这个方向增加,更新大小正比于回报,反比于选择动作的概率。前者的意义在于它使得参数向着更有利于产生最大回报的动作的方向更新。后者的意义是因为如果不这样的话,频繁被选择的动作会占优,即使这些动作并不是产生最大回报的动作,这就回影响性能指标的优化。