强化学习分类
bootstrapping算法(自举算法)
直接上公式,前面的推导过程就不粘了,跟马尔可夫那块差不多。
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
)
v_\pi(s) = \sum_{a\in\ A}\pi (a|s)\left( R_s^a + \gamma \sum_{s\prime \in S} P_{ss\prime}^av_\pi (s\prime)\right)
vπ(s)=a∈ A∑π(a∣s)(Rsa+γs′∈S∑Pss′avπ(s′))
在公式中,
v
π
(
s
′
)
v_\pi(s\prime)
vπ(s′)是未知的,也就是下一步的值函数是位置的,但是求当前状态的值函数需要下一状态的值函数。文中使用高斯-赛德尔迭代法进行求解
v
k
+
1
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
(
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
k
(
s
′
)
)
v_{k+1}(s) = \sum_{a\in\ A}\pi (a|s)\left( R_s^a + \gamma \sum_{s\prime \in S} P_{ss\prime}^av_k (s\prime)\right)
vk+1(s)=a∈ A∑π(a∣s)(Rsa+γs′∈S∑Pss′avk(s′))
从公式中可以看出,
v
k
+
1
(
s
)
v_{k+1}(s)
vk+1(s)与
v
k
(
s
′
)
v_{k}(s\prime)
vk(s′)的值函数通过迭代逼近,实现的伪代码如下
- 输入:需要评估的策略 π \pi π状态转移概率 p s s ′ a p_{ss\prime}^a pss′a回报函数 R s a R_s^a Rsa,折扣因子 γ \gamma γ
- 初始化值函数: v ( s ) = 0 v(s) = 0 v(s)=0
- Repeat k=0,1,…
- for every s do
- v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S p s s ′ a v k ( s ′ ) ) v_{k+1}(s) = \sum_{a\in A}\pi(a|s)(R_s^a+\gamma\sum_{s\prime\in S}p_{ss\prime}^av_{k}(s\prime)) vk+1(s)=∑a∈Aπ(a∣s)(Rsa+γ∑s′∈Spss′avk(s′))
- end for
- Until v k + 1 = v k v_{k+1} = v_{k} vk+1=vk
- 输出: v ( s ) v(s) v(s)
需要注意的是,在每次迭代中都需要对状态集进行一次遍历(扫描)以便评估每个状态的值函数。