从这一节开始,我们开始向大家介绍如何解决Model-Free强化学习问题。
在前面强化学习基本概念小结中我们向大家介绍了,Model-Free指的是状态转移概率
p
p
p(或状态转移矩阵
P
P
P)未知,那么以下两个公式:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
[
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
π
(
s
′
)
]
v_{\mathrm\pi}\left(s\right)=\sum_{a\in A}\mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)\left[\mathrm r_{\mathrm s}^{\mathrm a}+\mathrm\gamma\sum_{\mathrm s'\in\mathrm S}\mathrm P_{\mathrm{ss}'}^{\mathrm a}{\mathrm v}_{\mathrm\pi}\left(\mathrm s'\right)\right]
vπ(s)=∑a∈Aπ(a∣s)[rsa+γ∑s′∈SPss′avπ(s′)])
q
π
(
s
,
a
)
=
r
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)=r_s^a+\gamma\sum_{s'\in S}P_{ss'}^a\sum_{\mathrm a'\in\mathrm A}\mathrm\pi\left(\mathrm a'\left|\mathrm s'\right.\right){\mathrm q}_{\mathrm\pi}\left(\mathrm s',\mathrm a'\right)
qπ(s,a)=rsa+γ∑s′∈SPss′a∑a′∈Aπ(a′∣s′)qπ(s′,a′)
就无法使用。因此,我们只能转而去看
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)和
q
π
(
s
,
a
)
{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)
qπ(s,a)的最初定义:
- v π ( s ) = E π [ G t ∣ s t = s ] v_\pi\left(s\right)=E_\pi\left[G_t\left|s_t=s\right.\right] vπ(s)=Eπ[Gt∣st=s]
- q π ( s , a ) = E π [ G t ∣ s t = s , a t = a ] q_\pi\left(s,a\right)=E_\pi\left[G_t\left|s_t=s,a_t=a\right.\right] qπ(s,a)=Eπ[Gt∣st=s,at=a]
其中
G
t
=
r
t
+
1
+
γ
r
t
+
2
+
⋯
=
∑
k
=
0
∞
γ
k
r
t
+
k
+
1
G_t=r_{t+1}+\gamma r_{t+2}+\cdots=\sum_{k=0}^\infty\gamma^kr_{t+k+1}
Gt=rt+1+γrt+2+⋯=∑k=0∞γkrt+k+1,为累积回报,是在某一个完整过程中产生的。那么,我们能不能用多次的累积回报去逼近
v
π
(
s
)
v_{\mathrm\pi}\left(s\right)
vπ(s)或
q
π
(
s
,
a
)
{\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right)
qπ(s,a)呢?
根据这个思路,就引出了我们今天要介绍的蒙特卡洛方法。
蒙特卡洛方法介绍
蒙特卡罗方法也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。
我们在这里就是“通过随机抽样的方法,以抽样的数字特征估算随机变量的数字特征”。
具体来说就是“把样本点的累积回报加起来求平均,来逼近状态价值或状态-行为值”:
v
π
(
s
)
≈
a
v
e
r
a
g
e
(
G
t
)
v_{\mathrm\pi}\left(s\right)\approx average\left(G_t\right)
vπ(s)≈average(Gt)
那么,在这个采样求平均的过程中,会遇到以下两个问题:
- 一是在一次完整状态过程中,同样一个状态可能会多次出现,那么这时的累积回报该如何使用?
这有两种解决方法,一是首次访问(first visit),即只用第一次出现的;二是每次访问(every visit),即每次出现的值都使用。 - 二是累积状态存储更新问题,我们上面的公式中有个average,意味着可能要存储所有状态,如何节省存储空间?
这个问题可用如下公式解决:
y k = 1 k ∑ i = 1 k x i = 1 k ( x k + ∑ i = 1 k − 1 x i ) = 1 k [ x k + ( k − 1 ) y k − 1 ] = y k − 1 + 1 k ( x k − y k − 1 ) y_k=\frac1k\sum_{i=1}^kx_i\\\;\;\;=\frac1k\left(x_k+\sum_{i=1}^{k-1}x_i\right)\\\;\;\;=\frac1k\left[x_k+\left(k-1\right)y_{k-1}\right]\\\;\;\;=y_{k-1}+\frac1k\left(x_k-y_{k-1}\right) yk=k1∑i=1kxi=k1(xk+∑i=1k−1xi)=k1[xk+(k−1)yk−1]=yk−1+k1(xk−yk−1)
下面,我们使用蒙特卡洛方法解决状态价值或状态-行为值的求解,以及最优策略的求解问题。
状态价值或状态-行为值的求解
根据前面蒙特卡洛方法的介绍,我们可以得到状态价值的求解公式如下所示:
- v ( s t k ) = v ( s t k − 1 ) + 1 N ( s t k ) [ G t k − v ( s t k − 1 ) ] v\left(s_t^k\right)=v\left(s_t^{k-1}\right)+\frac1{N\left(s_t^k\right)}\left[G_t^k-v\left(s_t^{k-1}\right)\right] v(stk)=v(stk−1)+N(stk)1[Gtk−v(stk−1)] (1)
其中
N
(
s
t
k
)
=
N
(
s
t
k
−
1
)
+
1
N\left(s_t^k\right)=N\left(s_t^{k-1}\right)+1
N(stk)=N(stk−1)+1 (2)。这样我们在计算中只需要存储
v
(
s
t
k
)
v\left(s_t^k\right)
v(stk)和
N
(
s
t
k
)
N\left(s_t^k\right)
N(stk)这两个值即可。
同理,状态-行为值也可以用如下公式求得:
- q ( s t k , a t k ) = q ( s t k − 1 , a t k − 1 ) + 1 N ( s t k ) [ G t k − q ( s t k − 1 , a t k − 1 ) ] q\left(s_t^k,a_t^k\right)=q\left(s_t^{k-1},a_t^{k-1}\right)+\frac1{N\left(s_t^k\right)}\left[G_t^k-q\left(s_t^{k-1},a_t^{k-1}\right)\right] q(stk,atk)=q(stk−1,atk−1)+N(stk)1[Gtk−q(stk−1,atk−1)] (3)
有时,我们在使用海量数据分布式迭代时,可能很难计算准确的次数 N ( s t k ) N\left(s_t^k\right) N(stk)。这时,我们就可以使用一个系数 α \alpha α来代替,即:
- v ( s t k ) = v ( s t k − 1 ) + 1 α [ G t k − v ( s t k − 1 ) ] v\left(s_t^k\right)=v\left(s_t^{k-1}\right)+\frac1\alpha\left[G_t^k-v\left(s_t^{k-1}\right)\right] v(stk)=v(stk−1)+α1[Gtk−v(stk−1)] (4)
- q ( s t k , a t k ) = q ( s t k − 1 , a t k − 1 ) + 1 α [ G t k − q ( s t k − 1 , a t k − 1 ) ] q\left(s_t^k,a_t^k\right)=q\left(s_t^{k-1},a_t^{k-1}\right)+\frac1\alpha\left[G_t^k-q\left(s_t^{k-1},a_t^{k-1}\right)\right] q(stk,atk)=q(stk−1,atk−1)+α1[Gtk−q(stk−1,atk−1)] (5)
最优策略求解
蒙特卡洛法在最优策略求解时,与前面的动态规划方法思路基本一致。但不同点在于,为了保证能够更加广泛的采样,因此最优策略不能直接使用贪婪方法,而是要进行一定的改进,以保证各种策略都能够被采样到。这个方法就是 ε \varepsilon ε-贪婪法,即设定一个较小的 ε \varepsilon ε值,使用 1 − ε 1-\varepsilon 1−ε的概率选择最大 q π ( s , a ) {\mathrm q}_{\mathrm\pi}\left(\mathrm s,\mathrm a\right) qπ(s,a)的 a a a,用 ε \varepsilon ε的概率随机选择其他m个行为。具体如下所示:
- π ( a ∣ s ) = { 1 − ε + ε m i f a ∗ = arg max a ∈ A q ( s , a ) ε m e l s e \mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right)=\left\{\begin{array}{l}1-\varepsilon+\frac\varepsilon m\;\mathrm{if}\;\mathrm a\ast=\arg\max_{\mathrm a\in\mathrm A}\mathrm q\left(\mathrm s,\mathrm a\right)\\\frac\varepsilon m\;\mathrm{else}\end{array}\right. π(a∣s)={1−ε+mεifa∗=argmaxa∈Aq(s,a)mεelse (6)
其中 m = ∣ A ( s ) ∣ m=\left|A\left(s\right)\right| m=∣A(s)∣。在实际求解过程中,为了使算法可以收敛, ε \varepsilon ε需要随着算法的迭代过程逐渐减小,因此一般可以设 ε = 1 k \varepsilon=\frac1k ε=k1。
蒙特卡洛算法思路
介绍了上面几部分内容后,我们可以得到针对Model-Free强化学习问题的蒙特卡洛算法,具体如下:
- 初始化 q ( s , a ) = 0 \mathrm q\left(\mathrm s,\mathrm a\right)=0 q(s,a)=0, N ( s , a ) = 0 \mathrm N\left(\mathrm s,\mathrm a\right)=0 N(s,a)=0, k = 1 k=1 k=1,随机初始化一个策略 π ( a ∣ s ) \mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right) π(a∣s);
- 基于策略 π \mathrm\pi π进行第 k k k次采样,得到一个完整的状态序列: s 0 , a 1 , r 1 , s 1 , ⋯ , s t , a t + 1 , r t + 1 , s t + 1 , ⋯ , a T , r T , s T {\mathrm s}_0,{\mathrm a}_1,{\mathrm r}_1,{\mathrm s}_1,\cdots,{\mathrm s}_{\mathrm t},{\mathrm a}_{\mathrm t+1},{\mathrm r}_{\mathrm t+1},{\mathrm s}_{\mathrm t+1},\cdots,{\mathrm a}_{\mathrm T},{\mathrm r}_{\mathrm T},{\mathrm s}_{\mathrm T} s0,a1,r1,s1,⋯,st,at+1,rt+1,st+1,⋯,aT,rT,sT;
- 利用 G t = r t + 1 + γ r t + 2 + ⋯ = ∑ k = 0 ∞ γ k r t + k + 1 G_t=r_{t+1}+\gamma r_{t+2}+\cdots=\sum_{k=0}^\infty\gamma^kr_{t+k+1} Gt=rt+1+γrt+2+⋯=∑k=0∞γkrt+k+1计算累积回报,并根据公式(2)和(3)更新 q ( s t k ) q\left(s_t^k\right) q(stk)和 N ( s t k ) N\left(s_t^k\right) N(stk);
- 根据公式(6),更新策略 π ( a ∣ s ) \mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right) π(a∣s);
- 如果 q ( s t k ) q\left(s_t^k\right) q(stk)收敛,则得到的 π ( a ∣ s ) \mathrm\pi\left(\mathrm a\left|\mathrm s\right.\right) π(a∣s)即为最优策略,否则到第二步再次循环。
以上就是蒙特卡洛算法的基本思路。大家请牢记这一思路,后续大部分Model-Free算法都是从这一思路衍生出来的。当然,蒙特卡洛法要求完整的状态序列,这在很多强化学习问题中都很难满足,而且这种执行完一个完整序列才调整策略的方法效率也较低,下面我们介绍在此基础上改进产生的时间差分(TD)算法。