上一篇博客介绍的是model-base的方法,本篇博客开始介绍model-free的方法,model-free的核心思想是基于数据来估计出一个模型。
如何在没有模型的情况下去进行估计,有一个重要的思想:Monte Carlo estimation。下面以抛硬币的例子为大家讲解该思想。
假设我们正在进行抛硬币游戏,将其结果用 X X X来表示,结果是正面时 X = 1 X=1 X=1;结果是反面时 X = − 1 X=-1 X=−1,我们的目的是去求解 E [ X ] \mathbb E[X] E[X],有如下两种方法:
方法一:model-base
假设我们知道有一个概率模型, p ( X = 1 ) = 0.5 , p ( X = − 1 ) = 0.5 p(X=1)=0.5, p(X=-1)=0.5 p(X=1)=0.5,p(X=−1)=0.5,那么 E [ X ] = Σ x x p ( x ) = 1 × 0.5 + ( − 1 ) × 0.5 = 0 \mathbb E[X] = \underset{x}\Sigma xp(x)=1\times0.5 + (-1)\times0.5=0 E[X]=xΣxp(x)=1×0.5+(−1)×0.5=0,然而事实上我们可能没有办法获取这么精确的概率模型。
方法二:model-free(Monte Carlo estimation)
投掷硬币很多次(做多次试验)得到很多采样结果,把所有的采样结果求平均。具体如下:假如做了N次实验,这N次实验的结果是{x_1,x_2,x_3,...,x_N},把结果相加再除于N得到 x ‾ \overline{\text{x}} x,当N足够大时 x ‾ \overline{\text{x}} x 近似等于 E [ X ] \mathbb E[X] E[X],等式为: E [ X ] ≈ x ‾ = 1 N Σ N j = 1 x j \mathbb E[X]\approx\overline{\text{x}}=\frac{1}{N}\underset{j=1}{\overset{N}\Sigma}x_j E[X]≈x=N1j=1ΣNxj。这个思想就是 Monte Carlo estimation。
Monte Carlo estimation思想的数学理论支撑如下图所示,相关证明这里不再给出,感兴趣的朋友可以查阅相关参考资料。
{ p o l i c y e v a l u a t i o n : v π k = r π k + γ P π k v π k v a l u e i m p r o v e m e n t : π k + 1 = a r g m a x π ( r π + γ P π v k ) \begin{cases} policy\ evaluation:\ v_{\pi_k}=r_{\pi_k}+ \gamma P_{\pi_k} v_{\pi_k}\\ value\ improvement:\ \pi_{k+1}=argmax_\pi(r_\pi+\gamma P_\pi v_k) \end{cases} {policy evaluation: vπk=rπk+γPπkvπkvalue improvement: πk+1=argmaxπ(rπ+γPπvk)
policy improvement的elementwise form如下:
π k + 1 ( s ) = a r g m a x π Σ a π ( a ∣ s ) [ Σ r p ( r ∣ s , a ) r + γ Σ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ] ⏟ q π k ( s , a ) , s ∈ S \begin{aligned} \pi_{k+1}(s)=\underset{\pi}{argmax}\underset{a}\Sigma\pi(a|s)\underbrace{[\underset{r}\Sigma p(r|s,a)r+\gamma\underset{s'}\Sigma p(s'|s,a)\textcolor{red}{v_k(s')}]}{\textcolor{red}{q{\pi_k}(s,a)}}, \quad s\in S \end{aligned} πk+1(s)=πargmaxaΣπ(a∣s)qπk(s,a) [rΣp(r∣s,a)r+γs′Σp(s′∣s,a)vk(s′)],s∈S
算法的关键在于如何计算 q π k ( s , a ) \textcolor{red}{q_{\pi_k}(s,a)} qπk(s,a)!
同样求解 q k ( s , a ) \textcolor{red}{q_k(s,a)} qk(s,a)有如下两种方式:
方案一:model-base
q π k ( s , a ) = Σ r p ( r ∣ s , a ) r + γ p s ′ ( s ′ ∣ s , a ) v π k ( s ′ ) q_{\pi_k}(s,a) = \underset{r}\Sigma p(r|s,a)r+\gamma\underset{s'}p(s'|s,a)v_{\pi_k}(s') qπk(s,a)=rΣp(r∣s,a)r+γs′p(s′∣s,a)vπk(s′)
方案二:model-free【本篇博客的方法】
q π k ( s , a ) = E [ G t ∣ S t = a , A t = a ] q_{\pi_k}(s,a) = \mathbb E[G_t|S_t=a,A_t=a] qπk(s,a)=E[Gt∣St=a,At=a]
如何基于数据去求解 q k ( s , a ) \textcolor{red}{q_k(s,a)} qk(s,a)?答案:采用章节一中提到的 Monte Carlo estimation,具体步骤如下所示:
首先我们从任意的一个s和a的一个组合出发,然后根据当前的策略得到一个episode并计算出该episode对应的discounted return 为 g ( s , a ) g(s,a) g(s,a),这里的 g ( s , a ) g(s,a) g(s,a)是 G t G_t Gt的一个采样。假设我们有很多这样的词啊样集合: { g ( j ) ( s , a ) } \{g^{(j)}(s,a)\} {g(j)(s,a)},那么根据Monte Carlo estimation思想我们可以得到:
q k ( s , a ) = E [ G t ∣ S t = a , A t = a ] ≈ 1 N Σ N i = 1 g i ( s , a ) q_k(s,a) = \mathbb E[G_t|S_t=a,A_t=a] \approx\frac{1}{N}\underset{i=1}{\overset{N}\Sigma}g^{i}(s,a) qk(s,a)=E[Gt∣St=a,At=a]≈N1i=1ΣNgi(s,a)
1️⃣ policy evaluation:计算出所有 ( s , a ) (s,a) (s,a)对应的 q π k q_{\pi_k} qπk,其计算方法是:从 ( s , a ) (s,a) (s,a)出发得到很多的episode,求得episode的return并求平均;
2️⃣ policy improvement:在步骤一中我们得到了 q π k q_{\pi_k} qπk,这个步骤主要求解一个最优化问题得到一个新的策略。
在一个网格世界里,假如有一个策略 π \pi π,我们可以得到一个episode,如下所示:
s 1 → a 2 s 2 → a 4 s 1 → a 2 s 2 → a 3 s 5 → a 1 . . . s_1\overset{a_2}\rightarrow s_2\overset{a_4}\rightarrow s_1\overset{a_2}\rightarrow s_2\overset{a_3}\rightarrow s_5\overset{a_1}\rightarrow ... s1→a2s2→a4s1→a2s2→a3s5→a1...
这里引入一个新的概念visit,每出现一次state-action pair我们就认为有了一次访问。前面所讲到的MC Basic算法也叫Initial-visit method,即对于某个episode我们只考虑 ( s 1 , a 2 ) (s_1,a_2) (s1,a2),然后利用该episode剩下所得到的return来估计 ( s 1 , a 2 ) (s_1,a_2) (s1,a2)的action value。因此,我们可以清楚的知道MC Basic算法的问题在于它没有充分利用这个episode,因为里面有很多的数据被浪费掉了。
如下图所示,我们可以利用episode所得的return去估计前一个 q π ( s 2 , a 4 ) q_\pi(s_2,a_4) qπ(s2,a4),如此依赖就可以充分利用该episode中的数据。这里也有两种方法:
first-visit method:如下图所示,在第三次的时候又出现了一次 ( s 1 , a 2 ) (s_1,a_2) (s1,a2),该方法的意思是:只要出现过一次的state-action pair 后面再次出现就不在进行估计了。
exploring代表:指的是从每一个 ( s , a ) (s,a) (s,a)出发都要有episode,只有这样才能用后面生成的这些return去计算 q π ( s , a ) q_\pi(s,a) qπ(s,a),假设有一个state action没有被访问到,就无法确保所选的action是最优的了。
starts代表:要访问每一个 ( s , a ) (s,a) (s,a)从它后面能够生成reward的这些数据,有两种方案:1) 从 ( s , a ) (s,a) (s,a)开始一个episode就是start,2)visit方法,即我从其他状态出发,得到的episode经过了 ( s , a ) (s,a) (s,a)这个状态,但目前来说visit这个方法无法确保一定能够经过剩下的这些 ( s , a ) (s,a) (s,a)。
理论上,只有对每个状态的每个 action value 都进行了很好的探索,我们才能正确地选择最优 action。否则,如果未探索某个操作,则此操作可能恰好是最佳操作,因此会错过。在实践中,exploring starts很难实现。对于许多应用程序,尤其是那些涉及与环境物理交互的应用程序,很难从每个state-action pair 对开始收集episode。
四、MC Epsilon-Greedly
MC Epsilon-Greedly算法通过soft policy的方式对MC Exploring Starts算法进行改进,从而拿掉MC Exploring Starts算法中的硬性条件exploring starts。
4.1 soft policy理论
前几章提到的greedy policy是deterministic的,而soft policy是stochastic的。如果我从一个state-action pair如 ( s , a ) (s,a) (s,a)出发,假设后面的episode特别特别长,因为它是探索性的,因此就能够确保任何一个s和a被这个episode访问到。基于这个理论,我们就可以去掉exploring starts这个条件了。
4.2 ε \varepsilon ε-greedy policy(soft policy的一种)
π ( a ∣ s ) = { 1 − ε ∣ A ( s ) ∣ ( ∣ A ( s ) ∣ − 1 ) , f o r t h e g r e e d y a c t i o n ε ∣ A ( s ) ∣ , f o r t h e o t h e r ∣ A ( s ) ∣ − 1 a c t i o n \pi(a|s) = \begin{cases}1-\frac{\varepsilon}{|\mathcal A(s)|}(|\mathcal A(s)|-1), &for\,the\,greedy\,action \\ \frac{\varepsilon}{|\mathcal A(s)|}, &for\,the\,other\,|\mathcal A(s)|-1\,action \end{cases} π(a∣s)={1−∣A(s)∣ε(∣A(s)∣−1),∣A(s)∣ε,forthegreedyactionfortheother∣A(s)∣−1action
其中 ε ∈ [ 0 , 1 ] \varepsilon \in [0,1] ε∈[0,1], ∣ A ( s ) ∣ |\mathcal A(s)| ∣A(s)∣为状态 s 的动作数量。 ε \varepsilon ε-greedy policy可以平衡 exploitation 和 exploration。从上式也可得出,当 ε = 0 \varepsilon = 0 ε=0时, policy 就是 greedy的,充分利用性强,探索性弱; 当 ε = 1 \varepsilon = 1 ε=1时, 此时策略就是随机的且其探索性就很强。
先前,MC Basic和MC Exploring Starts算法在解决policy improvement时,计算公式如下:
π k + 1 ( s ) = a r g m a x π ∈ Π Σ a π ( a ∣ s ) q π k ( s , a ) \pi_{k+1}(s)=\underset{\pi \in \Pi}{argmax}\underset{a}\Sigma\pi(a|s)q_{\pi_k}(s,a) πk+1(s)=π∈ΠargmaxaΣπ(a∣s)qπk(s,a)
这里的 Π \Pi Π代表了所有可能的policy。最大策略计算方式如下:
π ( a ∣ s ) = { 1 , a = a k ∗ , 0 , a ≠ a k ∗ , \pi(a|s) = \begin{cases}1,&a=a_k^*,\\ 0, &a \neq a_k^*, \end{cases} π(a∣s)={1,0,a=ak∗,a=ak∗,
这里 a k ∗ = a r g m a x a q π k ( s , a ) a_k^*=argmax_a q_{\pi_k}(s,a) ak∗=argmaxaqπk(s,a).
现在,只需要把原来的 π ∈ Π \pi \in \Pi π∈Π用 ε \varepsilon ε-greedy policy替代即可,即 π ∈ Π ε \pi \in \Pi_\varepsilon π∈Πε,具体公式如下所示:
π k + 1 ( s ) = a r g m a x π ∈ Π ε Σ a π ( a ∣ s ) q π k ( s , a ) \pi_{k+1}(s)=\underset{\pi \in \Pi_\varepsilon}{argmax}\underset{a}\Sigma\pi(a|s)q_{\pi_k}(s,a) πk+1(s)=π∈ΠεargmaxaΣπ(a∣s)qπk(s,a)
这里的 Π \Pi Π只包含一部分的策略,最大策略计算如下:
π ( a ∣ s ) = { 1 − ∣ A ( s ) ∣ − 1 ∣ A ( s ) ∣ ε , a = a k ∗ 1 ∣ A ( s ) ∣ ε , a ≠ a k ∗ \pi(a|s) = \begin{cases}1-\frac{|\mathcal A(s)|-1}{|\mathcal A(s)|}\varepsilon, &a=a_k^* \\ \frac{1}{|\mathcal A(s)|}\varepsilon, &a\neq a_k^* \end{cases} π(a∣s)={1−∣A(s)∣∣A(s)∣−1ε,∣A(s)∣1ε,a=ak∗a=ak∗
4.3.2 MC Epsilon-Greedly算法伪代码
总结
内容小结
Monte Carlo estimation:将大量的数据采样求平均进行估计;
MC Basic:基于Monte Carlo estimation思想,将policy iteration算法从model-base的方法转为model-free的方法;
MC Exploring Starts:是对MC Basic算法的优化,从数据和策略两个方面进行优化;
MC Epsilon-Greedly:通过soft policy的方式对MC Exploring Starts算法进行改进,拿掉了硬性条件exploring starts。