1 状态值和动作值
为了衡量一个策略的好坏就需要状态值,而策略是当前状态下采取动作的概率,所以需要使用动作值去评价应该使用的策略。
1.1 状态值(state value)
状态值就是当前状态到目标所经历的 trajectory 的期望 return,记为 v π ( s ) = E [ G t ∣ S t = s ] v_\pi(s)=E[G_t|S_t=s] vπ(s)=E[Gt∣St=s]( G t G_t Gt是使用当前策略的 return 值的随机变量),它与当前状态以及所选取的策略相关。
1.2 动作值(action value)
动作值就是当前状态,采取某个动作后到达最终目标所经历的 trajectory 的期望 return,记为 q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] q_\pi(s,a)=E[G_t|S_t=s,A_t=a] qπ(s,a)=E[Gt∣St=s,At=a],它除了与当前状态相关还与采取的动作有关。
2 贝尔曼公式(Bellman Equation)
为了计算出当前状态的
v
v
v 和
q
q
q,根据定义
v
π
(
s
)
=
E
[
G
t
∣
S
t
=
s
]
=
E
[
R
t
+
1
∣
S
t
=
s
]
+
γ
E
[
G
t
+
1
∣
S
t
=
s
]
习惯上把
R
t
+
1
当成
t
时刻下的奖励
=
∑
a
π
(
a
∣
s
)
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
)
E
[
G
t
+
1
∣
S
t
=
s
,
S
t
+
1
=
s
′
]
=
∑
a
π
(
a
∣
s
)
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
)
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
memoryless property
=
∑
a
π
(
a
∣
s
)
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
∑
a
π
(
a
∣
s
)
p
(
s
′
∣
s
,
a
)
=
∑
a
π
(
a
∣
s
)
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
v
π
(
s
′
)
∑
a
π
(
a
∣
s
)
p
(
s
′
∣
s
,
a
)
=
∑
a
π
(
a
∣
s
)
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
a
π
(
a
∣
s
)
∑
s
′
p
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
,
∀
s
∈
S
贝尔曼公式可以对所有的状态进行列写,有很多条
\begin{align} v_\pi(s)&=E[G_t|S_t=s] \\ &=E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s] &\text 习惯上把 R_{t+1}当成 t 时刻下的奖励\\ &=\displaystyle \sum_a \pi(a|s) \displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} p(s'|s) E[G_{t+1}|S_t=s,S_{t+1}=s']\\ &=\displaystyle \sum_a \pi(a|s) \displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} p(s'|s) E[G_{t+1}|S_{t+1}=s'] &\text {memoryless property}\\ &=\displaystyle \sum_a \pi(a|s) \displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} E[G_{t+1}|S_{t+1}=s'] \displaystyle \sum_a \pi(a|s) p(s'|s,a) \\ &=\displaystyle \sum_a \pi(a|s) \displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} v_\pi(s') \displaystyle \sum_a \pi(a|s) p(s'|s,a)\\ &=\displaystyle \sum_a \pi(a|s) \displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_a \pi(a|s) \displaystyle \sum_{s'} p(s'|s,a)v_\pi(s'), \forall s \in S &\text{贝尔曼公式可以对所有的状态进行列写,有很多条} \end{align}
vπ(s)=E[Gt∣St=s]=E[Rt+1∣St=s]+γE[Gt+1∣St=s]=a∑π(a∣s)r∑p(r∣s,a)r+γs′∑p(s′∣s)E[Gt+1∣St=s,St+1=s′]=a∑π(a∣s)r∑p(r∣s,a)r+γs′∑p(s′∣s)E[Gt+1∣St+1=s′]=a∑π(a∣s)r∑p(r∣s,a)r+γs′∑E[Gt+1∣St+1=s′]a∑π(a∣s)p(s′∣s,a)=a∑π(a∣s)r∑p(r∣s,a)r+γs′∑vπ(s′)a∑π(a∣s)p(s′∣s,a)=a∑π(a∣s)r∑p(r∣s,a)r+γa∑π(a∣s)s′∑p(s′∣s,a)vπ(s′),∀s∈S习惯上把Rt+1当成t时刻下的奖励memoryless property贝尔曼公式可以对所有的状态进行列写,有很多条
这个是针对单个值来列的贝尔曼公式,从贝尔曼公式发现当前
v
π
(
s
)
v_\pi(s)
vπ(s)可以由下个状态
v
π
(
s
′
)
v_\pi(s')
vπ(s′)求出,称为 bootstrap。
action value 的推导与 state value 差不多。
q
π
(
s
,
a
)
=
E
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
=
E
[
R
t
+
1
∣
S
t
=
s
,
A
t
=
a
]
+
γ
E
[
G
t
+
1
∣
S
t
=
s
]
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
)
E
[
G
t
+
1
∣
S
t
=
s
,
S
t
+
1
=
s
′
,
A
t
=
a
]
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
p
(
s
′
∣
s
)
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
memoryless property
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
p
(
s
′
∣
s
,
a
)
=
∑
r
p
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
v
π
(
s
′
)
p
(
s
′
∣
s
,
a
)
,
∀
s
∈
S
贝尔曼公式可以对所有的状态和动作的组合进行列写,有很多条
\begin{align} q_\pi(s,a)&=E[G_t|S_t=s,A_t=a] \\ &=E[R_{t+1}|S_t=s,A_t=a]+\gamma E[G_{t+1}|S_t=s] \\ &=\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} p(s'|s) E[G_{t+1}|S_t=s,S_{t+1}=s',A_t=a]\\ &=\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} p(s'|s) E[G_{t+1}|S_{t+1}=s'] &\text {memoryless property}\\ &=\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} E[G_{t+1}|S_{t+1}=s'] p(s'|s,a) \\ &=\displaystyle \sum_r p(r|s,a) r+\gamma \displaystyle \sum_{s'} v_\pi(s') p(s'|s,a), \forall s \in S &\text{贝尔曼公式可以对所有的状态和动作的组合进行列写,有很多条} \end{align}
qπ(s,a)=E[Gt∣St=s,At=a]=E[Rt+1∣St=s,At=a]+γE[Gt+1∣St=s]=r∑p(r∣s,a)r+γs′∑p(s′∣s)E[Gt+1∣St=s,St+1=s′,At=a]=r∑p(r∣s,a)r+γs′∑p(s′∣s)E[Gt+1∣St+1=s′]=r∑p(r∣s,a)r+γs′∑E[Gt+1∣St+1=s′]p(s′∣s,a)=r∑p(r∣s,a)r+γs′∑vπ(s′)p(s′∣s,a),∀s∈Smemoryless property贝尔曼公式可以对所有的状态和动作的组合进行列写,有很多条
比较两个式子也可以得出
v
π
(
s
)
v_\pi(s)
vπ(s)关于
q
π
(
s
,
a
)
q_\pi(s,a)
qπ(s,a)的表达式
v
π
(
s
)
=
∑
a
π
(
a
∣
s
)
q
π
(
s
,
a
)
v_\pi(s)=\displaystyle \sum_a \pi(a|s) q_\pi(s,a)
vπ(s)=a∑π(a∣s)qπ(s,a)
3 贝尔曼公式求解
单个值的贝尔曼公式无法写出解析解,往往需要多个公式联立,进而可以用矩阵乘法简化。
由公式
v
π
(
s
)
=
E
[
R
t
+
1
∣
S
t
=
s
]
+
γ
E
[
G
t
+
1
∣
S
t
=
s
]
v_\pi(s)=E[R_{t+1}|S_t=s]+\gamma E[G_{t+1}|S_t=s]
vπ(s)=E[Rt+1∣St=s]+γE[Gt+1∣St=s],当
v
π
,
r
π
v_\pi,r_\pi
vπ,rπ是一个多个状态的
v
π
(
s
)
v_\pi(s)
vπ(s)和
E
[
R
t
+
1
∣
S
t
=
s
]
E[R_{t+1}|S_t=s]
E[Rt+1∣St=s]的向量时。当状态空间维度为 n 时。
[
v
π
(
s
1
)
v
π
(
s
2
)
⋮
v
π
(
s
n
)
]
=
[
r
π
(
s
1
)
r
π
(
s
2
)
⋮
r
π
(
s
n
)
]
+
γ
[
p
(
s
1
∣
s
1
)
p
(
s
1
∣
s
2
)
⋯
p
(
s
1
∣
s
n
)
p
(
s
2
∣
s
1
)
p
(
s
2
∣
s
2
)
⋯
p
(
s
2
∣
s
n
)
⋮
⋮
⋱
⋮
p
(
s
n
∣
s
1
)
p
(
s
n
∣
s
2
)
⋯
p
(
s
n
∣
s
n
)
]
[
v
π
(
s
1
)
v
π
(
s
2
)
⋮
v
π
(
s
n
)
]
\begin{bmatrix} v_\pi(s_1)\\ v_\pi(s_2)\\ \vdots\\ v_\pi(s_n) \end{bmatrix}= \begin{bmatrix} r_\pi(s_1)\\ r_\pi(s_2)\\ \vdots\\ r_\pi(s_n)\\ \end{bmatrix}+\gamma \begin{bmatrix} p(s_1|s_1)&p(s_1|s_2)&\cdots&p(s_1|s_n)\\ p(s_2|s_1)&p(s_2|s_2)&\cdots&p(s_2|s_n)\\ \vdots&\vdots&\ddots&\vdots\\ p(s_n|s_1)&p(s_n|s_2)&\cdots&p(s_n|s_n) \end{bmatrix} \begin{bmatrix} v_\pi(s_1)\\ v_\pi(s_2)\\ \vdots\\ v_\pi(s_n) \end{bmatrix}
vπ(s1)vπ(s2)⋮vπ(sn)
=
rπ(s1)rπ(s2)⋮rπ(sn)
+γ
p(s1∣s1)p(s2∣s1)⋮p(sn∣s1)p(s1∣s2)p(s2∣s2)⋮p(sn∣s2)⋯⋯⋱⋯p(s1∣sn)p(s2∣sn)⋮p(sn∣sn)
vπ(s1)vπ(s2)⋮vπ(sn)
其中这个方阵称为状态转移矩阵 P,整个公式可以写成
v
π
=
r
π
+
γ
P
v
π
v_\pi=r_\pi+\gamma P v_\pi
vπ=rπ+γPvπ
可以写出解析解为
v
π
=
(
I
−
γ
P
)
−
1
r
π
v_\pi=(I-\gamma P)^{-1} r_\pi
vπ=(I−γP)−1rπ
为了减少运算量,在实际中不求逆,而是求迭代解
v
k
+
1
=
r
π
+
γ
P
v
k
(
k
=
0
,
1
,
2
,
⋯
)
v_{k+1}=r_\pi+\gamma P v_k(k=0,1,2,\cdots)
vk+1=rπ+γPvk(k=0,1,2,⋯)。可以证明当
k
→
∞
k\to\infty
k→∞,
v
k
+
1
→
v
π
v_{k+1} \to v_\pi
vk+1→vπ