提示:自由地执行一次长度为TT蒙特卡罗试验(并不限定起点),就可以依迭代式对该试验轨线上所有点作一次更新,依结果,对策略进行一次优化。
将ϵ-贪心算法修改为同策略蒙特卡罗强化学习算法
免模型学习
在有模型时,依赖模型进行“计算”即可以进行策略优化,现实中大多情况是模型没有显式化,如,你不知道转移概率的表达式,也就是说,这时没有显式的模型可依赖了,因此,需要借助蒙特卡罗试验揭示背后隐藏的规律。
若要借助“有模型”的成果,可以采取两步法:1、先学习出一个模型:使用随机策略进行采样,得到样本集,估计出转移函数和奖赏函数,即训练一个初始的模型;2、使用有模型的强化学习方法继续训练。 但这两步法的两步是割裂的,因此,进一步发展出免模型强化学习。
同策略蒙特卡罗强化学习
设“从
(
x
0
,
a
0
)
(x_0,a_0)
(x0,a0)出发,由于这里是讨论
Q
Q
Q值,故我们以
(
x
i
,
a
i
)
(x_i,a_i)
(xi,ai)为点,而不是以
(
x
i
)
(x_i)
(xi)为点,且起点为
(
x
0
,
a
0
)
(x_0,a_0)
(x0,a0),依策略执行
T
T
T步,第
T
T
T步强制完成任务(参见式(16.9))”为一次蒙特卡罗试验,共进行了
m
m
m次,第
s
s
s次产生的轨线(后续称为轨线
s
s
s)为
(
x
0
,
a
0
)
⟶
r
1
s
(
x
1
s
,
a
1
s
)
⟶
r
2
s
(
x
2
s
,
a
2
s
)
⟶
r
3
s
⋯
⟶
r
T
s
(
x
T
s
,
a
T
s
)
\begin{align} (x_0,a_0)\mathop{\longrightarrow }\limits^{r_1^s}(x_1^s,a_1^s)\mathop{\longrightarrow }\limits^{r_2^s}(x_2^s,a_2^s)\mathop{\longrightarrow }\limits^{r_3^s}\cdots\mathop{\longrightarrow }\limits^{r_T^s}(x_T^s,a_T^s) \tag{16.47} \end{align}
(x0,a0)⟶r1s(x1s,a1s)⟶r2s(x2s,a2s)⟶r3s⋯⟶rTs(xTs,aTs)(16.47)
其中,
r
t
s
r_t^s
rts为第
t
t
t步的奖赏,由策略的随机性知它是个随机变量。
以
m
m
m次轨线的平均作为期望的近似,即
Q
m
(
x
0
,
a
0
)
=
1
m
∑
s
=
1
m
(
1
T
∑
i
=
1
T
r
i
s
)
(由【西瓜书式(16.6)第一式】)
=
1
m
∑
s
=
1
m
R
s
\begin{align} Q_m(x_0,a_0) %&\doteq \frac{1}{m}\sum_{s=1}^mQ^{\pi }_{s,T}(x_0,a_0)\notag\\ & =\frac{1}{m}\sum_{s=1}^m\left(\frac{1}{T}\sum_{i=1}^Tr_i^s\right)\text{(由【西瓜书式(16.6)第一式】)}\notag \\ & =\frac{1}{m}\sum_{s=1}^mR_s \tag{16.48} \end{align}
Qm(x0,a0)=m1s=1∑m(T1i=1∑Tris)(由【西瓜书式(16.6)第一式】)=m1s=1∑mRs(16.48)
其中
R
s
=
1
T
∑
i
=
1
T
r
i
s
\begin{align} R_s=\frac{1}{T}\sum_{i=1}^Tr_i^s \tag{16.49} \end{align}
Rs=T1i=1∑Tris(16.49)
即为轨线
s
s
s的每步平均奖赏。
对比式(16.48)与【西瓜书式(16.1)】,故有与【西瓜书式(16.2)】对应的递推式
{
Q
s
(
x
0
,
a
0
)
=
(
s
−
1
)
Q
s
−
1
(
x
0
,
a
0
)
+
R
s
s
R
s
=
1
T
∑
i
=
1
T
r
i
s
\begin{align} \begin{cases} Q_s(x_0,a_0)=\frac{(s-1)Q_{s-1}(x_0,a_0)+R_s}{s} \\ R_s=\frac{1}{T}\sum_{i=1}^Tr_i^s \\ \end{cases} \tag{16.50} \end{align}
{Qs(x0,a0)=s(s−1)Qs−1(x0,a0)+RsRs=T1∑i=1Tris(16.50)
即增加第 s s s条轨线(如式(16.47)所示,它的起点为 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)),这时依式(16.50)更新 Q s ( x 0 , a 0 ) Q_s(x_0,a_0) Qs(x0,a0),在此之前,起点为 ( x 0 , a 0 ) (x_0,a_0) (x0,a0)已有 s − 1 s-1 s−1条轨线(即已计算出式(16.50)右侧的 Q s − 1 ( x 0 , a 0 ) Q_{s-1}(x_0,a_0) Qs−1(x0,a0)),逐步增加轨线数,迭代式(16.50)逼近最优值 Q ( x 0 , a 0 ) Q(x_0,a_0) Q(x0,a0)。
值
Q
(
x
0
,
a
0
)
Q(x_0,a_0)
Q(x0,a0):开始有初始值0,随后若有轨线经过(可能是轨线的起点,也可能是轨线中途经过的点),则轨线经过一次更新一次,由此得到当前值。
现在将“起点
(
x
0
,
a
0
)
(x_0,a_0)
(x0,a0)已有
s
−
1
s-1
s−1条轨线及
Q
s
−
1
(
x
0
,
a
0
)
Q_{s-1}(x_0,a_0)
Qs−1(x0,a0)”改为“将点
(
x
0
,
a
0
)
(x_0,a_0)
(x0,a0)处的当前值
Q
(
x
0
,
a
0
)
Q(x_0,a_0)
Q(x0,a0)视为
Q
s
−
1
(
x
0
,
a
0
)
Q_{s-1}(x_0,a_0)
Qs−1(x0,a0)”,仍用式(16.50)迭代,得到该点的新
Q
(
x
0
,
a
0
)
Q(x_0,a_0)
Q(x0,a0)。
如何计算轨线式(16.47)上的
Q
(
x
1
,
a
1
)
Q(x_1,a_1)
Q(x1,a1)呢?
轨线式(16.47)中从
(
x
1
,
a
1
)
(x_1,a_1)
(x1,a1)开始的之后部分可视为“从
(
x
1
,
a
1
)
(x_1,a_1)
(x1,a1)出发,执行策略
T
−
1
T-1
T−1步”的一次蒙特卡罗试验,仿上述方法(只需调整起始点和步数),即得
Q
(
x
1
,
a
1
)
Q(x_1,a_1)
Q(x1,a1)的递推式
{
Q
s
(
x
1
,
a
1
)
=
(
s
−
1
)
Q
s
−
1
(
x
1
,
a
1
)
+
R
T
−
1
s
s
R
T
−
1
s
=
1
T
−
1
∑
i
=
2
T
r
i
s
\begin{align} \begin{cases} Q_s(x_1,a_1)=\frac{(s-1)Q_{s-1}(x_1,a_1)+R^s_{T-1}}{s} \\ R^s_{T-1}=\frac{1}{T-1}\sum_{i=2}^Tr_i^s \\ \end{cases} \tag{16.51} \end{align}
{Qs(x1,a1)=s(s−1)Qs−1(x1,a1)+RT−1sRT−1s=T−11∑i=2Tris(16.51)
同样可得
Q
(
x
2
,
a
2
)
⋯
Q(x_2,a_2)\cdots
Q(x2,a2)⋯的递推式,归纳到一般,轨线式(16.47)上
Q
(
x
t
,
a
t
)
Q(x_t,a_t)
Q(xt,at)的递推式为
{
Q
s
(
x
t
,
a
t
)
=
(
s
−
1
)
Q
s
−
1
(
x
t
,
a
t
)
+
R
T
−
t
s
s
R
T
−
t
s
=
1
T
−
t
∑
i
=
1
+
t
T
r
i
s
\begin{align} \begin{cases} Q_s(x_t,a_t)=\frac{(s-1)Q_{s-1}(x_t,a_t)+R^s_{T-t}}{s} \\ R^s_{T-t}=\frac{1}{T-t}\sum_{i=1+t}^Tr_i^s \\ \end{cases} \tag{16.52} \end{align}
{Qs(xt,at)=s(s−1)Qs−1(xt,at)+RT−tsRT−ts=T−t1∑i=1+tTris(16.52)
其中,
t
=
0
,
1
,
2
,
⋯
,
T
−
1
t=0,1,2,\cdots,{T-1}
t=0,1,2,⋯,T−1,而
Q
s
−
1
(
x
t
,
a
t
)
Q_{s-1}(x_t,a_t)
Qs−1(xt,at)指轨线
s
s
s上
(
x
t
,
a
t
)
(x_t,a_t)
(xt,at)处当前的值,更新后为
Q
s
(
x
t
,
a
t
)
Q_{s}(x_t,a_t)
Qs(xt,at)。
综上,自由地执行一次长度为 T T T蒙特卡罗试验(并不限定起点),就可以依迭代式(16.52)对该试验轨线 s s s式(16.47)上所有点作一次更新,用程序语言表达即为【西瓜书图16.10】的第4-8句。
设每执行一次蒙特卡罗试验并更新该轨线上的 Q ( x t , a t ) Q(x_t,a_t) Q(xt,at)后,对策略进行一次优化(【西瓜书图16.10】的第9句),优化方法为 ϵ \epsilon ϵ-贪心算法【西瓜书图16.4】,即对已探索部分采取策略 π ϵ ( x ) \pi ^\epsilon(x) πϵ(x)(【西瓜书式(16.20)】所定义)。
该
ϵ
\epsilon
ϵ-贪心算法可以这样简单地实现【西瓜书图16.4】:
对
A
A
A中的
a
a
a进行编号:
a
1
,
a
2
,
⋯
,
a
∣
A
∣
a_1,a_2,\cdots,a_{|A|}
a1,a2,⋯,a∣A∣,将[0,1]区间进行
∣
A
∣
|A|
∣A∣等分,在[0,1]区间中任取两随机数
r
a
n
d
1
(
)
,
r
a
n
d
2
(
)
\mathrm{rand} 1(),\ \mathrm{rand} 2()
rand1(), rand2()(均匀分布),令
π
ϵ
(
x
)
=
{
arg
max
a
∈
A
Q
(
x
,
a
)
(当
r
a
n
d
1
(
)
>
1
−
ϵ
)
a
i
(否则,当
r
a
n
d
2
(
)
落入第
i
个小区间时)
\begin{align} \pi ^\epsilon(x)= \begin{cases} \mathop{\arg\max}\limits_{a\in A}Q(x,a) & \quad \text{(当$\mathrm{rand} 1()>1-\epsilon$)} \\ a_i & \quad \text{(否则,当$\mathrm{rand} 2()$落入第$i$个小区间时)} \\ \end{cases} \tag{16.53} \end{align}
πϵ(x)=⎩
⎨
⎧a∈AargmaxQ(x,a)ai(当rand1()>1−ϵ)(否则,当rand2()落入第i个小区间时)(16.53)
其中,第二种情况对各
a
i
a_i
ai按仍均匀分布选取,也有可能取到最优
a
a
a,综合两种情况,即取
arg
max
a
∈
A
Q
(
x
,
a
)
\mathop{\arg\max}\limits_{a\in A}Q(x,a)
a∈AargmaxQ(x,a)的概率为
1
−
ϵ
+
ϵ
∣
A
∣
1-\epsilon+\frac{\epsilon}{|A|}
1−ϵ+∣A∣ϵ(若取
arg
max
a
∈
A
Q
(
x
,
a
)
\mathop{\arg\max}\limits_{a\in A}Q(x,a)
a∈AargmaxQ(x,a)的概率为
1
−
ϵ
1-\epsilon
1−ϵ,则程序设计稍复杂),转换一个写法,即
π
ϵ
(
x
,
a
)
=
{
1
−
ϵ
+
ϵ
∣
A
∣
(当
a
=
arg
max
a
∈
A
Q
(
x
,
a
)
)
ϵ
∣
A
∣
(当
a
≠
arg
max
a
∈
A
Q
(
x
,
a
)
)
\begin{align} \pi ^\epsilon(x,a)= \begin{cases} 1-\epsilon+\frac{\epsilon}{|A|} \quad \text{(当$a=\mathop{\arg\max}\limits_{a\in A}Q(x,a)$)} \\ \frac{\epsilon}{|A|}\quad \text{(当$a\neq \mathop{\arg\max}\limits_{a\in A}Q(x,a)$)} \\ \end{cases} \tag{16.54} \end{align}
πϵ(x,a)=⎩
⎨
⎧1−ϵ+∣A∣ϵ(当a=a∈AargmaxQ(x,a))∣A∣ϵ(当a=a∈AargmaxQ(x,a))(16.54)
将 ϵ \epsilon ϵ-贪心算法【西瓜书图16.4】修改为同策略蒙特卡罗强化学习算法【西瓜书图16.10】:
(i) 初始化,第1句;
(ii) 循环体中优化,第2-10句;
\quad (ii.1) 依蒙特卡罗方法新增一条长度为 T T T的轨线,第3句;
\quad (ii.2) 更新该新轨线上点的 Q ( x t , a t ) Q(x_t,a_t) Q(xt,at),即进行策略评估(依策略计算值 V V V或 Q Q Q,常称为策略评估,例如【西瓜书图16.7】的策略评估算法),第4-8句;
\quad (ii.3) 对新轨线经过的点 x x x,依 π ϵ \pi ^\epsilon πϵ更新其策略 π ( x ) \pi (x) π(x),第9句;
(iii) 输出策略 π ( x ) \pi (x) π(x)。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权