这一次来由浅入深认识一下价值函数以及动态规划解决优化问题
首先我们要理解一下状态价值函数,这是bellman equation的第一次正式推导。
trajectory
作为一个trajectory,必须是一个完整的过程,也就是状态转移全部过程,从其实状态到终止状态,没有什么状态是达不到的,只是每种状态都会有代价或者是收益而已。
这里就展示了几条不同的trajectory,注意哈,trajectory可以是像第三种那样的有多条方向的
return
累计奖励是根据一条trajectory得到的,也就是说,针对每一种trajectory都会有一个return,它就是评价我的trajectory好不好的一种方式。所以说到这里,trajectory有点像策略的意思了。
v i v_i vi
反应一个trajectory好不好,当然就是用到v价值函数了。
v
1
=
r
1
+
γ
r
2
+
γ
2
r
3
+
⋯
v_1=r_1+\gamma r_2+\gamma^2r_3+\cdots
v1=r1+γr2+γ2r3+⋯
v
2
=
r
2
+
γ
r
3
+
γ
2
r
4
+
⋯
v_2=r_2+\gamma r_3+\gamma^2r_4+\cdots
v2=r2+γr3+γ2r4+⋯
v
3
=
r
3
+
γ
r
4
+
γ
2
r
1
+
⋯
v_3=r_3+\gamma r_4+\gamma^2r_1+\cdots
v3=r3+γr4+γ2r1+⋯
v
4
=
r
4
+
γ
r
1
+
γ
2
r
2
+
⋯
v_4=r_4+\gamma r_1+\gamma^2r_2+\cdots
v4=r4+γr1+γ2r2+⋯
其实可以看的出来,他和return没有什么区别。它就是return存在的意义。
接下来做一个递归:
v
1
=
r
1
+
γ
r
2
+
γ
2
r
3
+
⋯
=
r
1
+
γ
v
2
v_1=r_1+\gamma r_2+\gamma^2r_3+\cdots=r_1+\gamma v_2
v1=r1+γr2+γ2r3+⋯=r1+γv2
v
2
=
r
2
+
γ
r
3
+
γ
2
r
4
+
⋯
=
r
2
+
γ
v
3
v_2=r_2+\gamma r_3+\gamma^2r_4+\cdots=r_2+\gamma v_3
v2=r2+γr3+γ2r4+⋯=r2+γv3
v
3
=
r
3
+
γ
r
4
+
γ
2
r
1
+
⋯
=
r
3
+
γ
v
4
v_3=r_3+\gamma r_4+\gamma^2r_1+\cdots=r_3+\gamma v_4
v3=r3+γr4+γ2r1+⋯=r3+γv4
v
4
=
r
4
+
γ
r
1
+
γ
2
r
2
+
⋯
=
r
4
+
γ
v
1
v_4=r_4+\gamma r_1+\gamma^2r_2+\cdots=r_4+\gamma v_1
v4=r4+γr1+γ2r2+⋯=r4+γv1
写成矩阵的形式就是:
[
v
1
v
2
v
3
v
4
]
=
[
v
1
v
2
v
3
v
4
]
+
γ
P
[
v
1
v
2
v
3
v
4
]
\left[\begin{matrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{matrix} \right] =\left[\begin{matrix}v_1 \\ v_2 \\ v_3 \\ v_4 \end{matrix}\right]+\gamma P\left[\begin{matrix} v_1 \\ v_2 \\ v_3 \\ v_4 \end{matrix} \right]
v1v2v3v4
=
v1v2v3v4
+γP
v1v2v3v4
简写为:
v
=
v
+
γ
P
v
\pmb{v}=\pmb{v}+\gamma P \pmb{v}
v=v+γPv
其实也就是两部分,即时奖励和未来奖励。
G t G_t Gt
考虑一条trajectory:
这里看起来是确定的action和reward,但是也可以是有转移概率的:
p ( r ∣ s , a ) p(r|s,a) p(r∣s,a)
位于状态s,采取动作a后的奖励r的概率
p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)
位于状态s,采取动作a后的状态s’的概率
当然,计算的
G
(
t
)
G(t)
G(t)用不到,它本身就是上面v函数的一个表示:
G
(
t
)
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
c
d
o
t
s
G(t)=R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+cdots
G(t)=Rt+1+γRt+2+γ2Rt+3+cdots
这个其实也是累计奖励。return和v函数和它有什么区别呢?下面介绍状态价值函数
V π ( s ) V_{\pi}(s) Vπ(s)
这里开始深入强化学习的本质了,所有的价值函数都不是用来玩的,状态价值看似只与状态有关,其实隐含着与策略有关,甚至可以写成是
v
(
π
,
s
)
v(\pi,s)
v(π,s),所以不要再觉得它没用了。
价值函数的定义式非常简单:
v
π
(
s
)
=
E
[
G
t
∣
S
t
=
s
]
v_\pi(s)=\mathbb{E}[G_t|S_t=s]
vπ(s)=E[Gt∣St=s]
也就是处于状态s时的累计奖励。千万注意它是基于策略的函数,不同的策略会得到不同的价值函数,这样我们就能评价策略的好坏
以下是一个具体的例子:
怎么说呢,如果策略是确定的,那么就只与s有关,但是如果是在选在策略的过程中,价值函数是一直都在变化的。
状态价值函数与bellman equation
状态价值函数可以进一步表示,将累计奖励
G
t
G_t
Gt迭代展开:
这样我们求的就变成了两个期望,期望就是加权平均,先看左边的式子,就是从状态s出发得到的r的期望,我们把它转化为标准的状态s,动作a的格式,并且引入在状态s动作a时的奖励概率来消除期望符号:
右边的式子也是一样的,主要目标是消除掉期望符号,于是通过状态转移概率来化简:
然后综合两者就得到了bellman公式了:
概率部分是模型,红色的是我们要求的价值函数,策略是用来评价的,所以计算时也是给定的。
以上就完成了bellman公式的分析过程。