1. 程式人生 > >4. 免模型策略改進——蒙特卡洛(Monte-Carlo)和時序差分(Temporal-Difference)

4. 免模型策略改進——蒙特卡洛(Monte-Carlo)和時序差分(Temporal-Difference)

other psi 動態 技術分享 獎勵 style 速度 src $1

針對馬爾科夫模型不完全已知,即轉移概率未知,不能全概率展開的情況,上一篇介紹了策略評估的方法,這一篇對應介紹策略改進的方法,分別是

針對每一個完整決策過程,先估計策略再改進策略的蒙特卡洛同策略學習方式;

針對完整決策過程中的每一步狀態動作對生成,評估改進同一個策略$\pi$的時序差分同策略Sarsa學習方式;

針對完整決策過程中的每一步狀態動作對生成,評估策略$\pi$過程中利用未來最大化的貪心策略$\beta$的時序差分異策略Q-learning學習方式。

蒙特卡洛學習

像動態規劃裏解釋的一樣,叠代收斂得到了新的$v_\pi$後,就可以依據新的$v_\pi$改進我們的策略$\pi$。改進的策略$\pi$又可以繼續叠代收斂到新的$v_\pi$,如此循環,最終收斂至$\pi^*$,

技術分享圖片

但是我們沒有辦法像動態規劃裏一樣,直接貪心選擇最優的策略$\pi$,因為此時的馬爾科夫模型是部分已知的,不能全概率展開來求得最優。所以我們利用$\varepsilon {\rm{ - Greedy}}$算法,

\[\pi \left( {a|s} \right) = \left\{ \begin{array}{l}
\varepsilon /m + 1 - \varepsilon \\
\varepsilon /m
\end{array} \right.\begin{array}{*{20}{c}}
{{\rm{ if }}a* = \mathop {\arg \max }\limits_{a \in A} Q(s,a)}\\
{{\rm{otherwise}}}
\end{array}\]

以$\varepsilon$的概率探索,隨機選擇動作,來得到獎勵反饋,從而更新Q值;以$1-\varepsilon$的概率利用,選擇目前Q值最大的動作,來保證整體獎勵盡可能大。

所以蒙特卡洛學習過程如下,


初始化Q表,

1. 基於現有的Q表,利用$\varepsilon {\rm{ - Greedy}}$策略$\pi$(以$\varepsilon$的概率隨機探索,從而豐富Q表的估計;以$1-\varepsilon$的概率選擇目前Q值最大的動作,以獲得最大獎勵),從$s_0$開始生成一個完整的episode,也就是許多個狀態-動作對$(s,a) $;

2. 對該episode中的每一個狀態-動作對$(s,a) $:

  計算平均累積獎勵$G(s,a) $

  更新Q值,${Q_\pi }(s,a) \leftarrow {Q_\pi }(s,a) + \alpha (G(s,a) - {Q_\pi }(s,a))$;

3. 依據新的Q表,更新新的策略$\pi$;

4. 重復以上步驟,從許多個episode中不斷更新Q表,從而獲得最優策略$\pi*$。


時序差分學習

像動態規劃裏解釋的一樣,為了加快收斂速度,我們可以在$v_\pi$還沒有收斂的叠代過程中,就立馬改進$v$,利用這個更新的$v$,立馬對應更新策略$\pi$,再循環這個過程註意我們為了使策略生成狀態-動作對的過程保持一定的探索率,同樣利用$\varepsilon {\rm{ - Greedy}}$策略$\pi$。

!!!

在更新$Q$的過程中,我們有兩種方式,第一種是同策略的Sarsa,第二種是異策略的Q-learning。

就是計算下一個狀態動作值函數Q時,是仍利用我們評估的$\varepsilon {\rm{ - Greedy}}$策略$\pi$(同策略),還是直接利用貪心策略最大值$Greedy$策略$\beta$。

\[\begin{array}{l}
{Q_\pi }(s,a) \leftarrow {Q_\pi }(s,a) + \alpha (R + \gamma {Q_\pi }(s‘,a‘) - {Q_\pi }(s,a))\\
{Q_\pi }(s,a) \leftarrow {Q_\pi }(s,a) + \alpha (R + \gamma {\max _a}Q(s‘,a) - {Q_\pi }(s,a))
\end{array}\]

!!!

Sarsa算法過程如下,


初始化Q表,

對每一個episode:

從$s_0$開始,對episode中的每一步:

利用$\varepsilon {\rm{ - Greedy}}$策略$\pi$,根據當前狀態$s$選擇動作$a$,得到獎勵$r$,下一時刻狀態$s‘$;

仍根據當前Q值對應的$\varepsilon {\rm{ - Greedy}}$策略$\pi$,根據下一狀態$s‘$選擇動作$a‘$,計算下一時刻的${Q_\pi }(s‘,a‘)$

利用已經得到的獎勵$r$和計算得到的下一時刻的${Q_\pi }(s‘,a‘)$,更新現在的${Q_\pi }(s,a)$,${Q_\pi }(s,a) \leftarrow {Q_\pi }(s,a) + \alpha (R + \gamma {Q_\pi }(s‘,a‘) - {Q_\pi }(s,a))$;

重復上述步驟至episode結束。

重復以上步驟,從許多個episode中的每一步中不斷學習,從而獲得最優策略$\pi*$。


Q-learning算法過程如下,


初始化Q表,

對每一個episode:

從$s_0$開始,對episode中的每一步:

利用$\varepsilon {\rm{ - Greedy}}$策略$\pi$,根據當前狀態$s$選擇動作$a$,得到獎勵$r$,下一時刻狀態$s‘$;

利用已經得到的獎勵$r$和基於現有Q表下一狀態的最大可能取值${\max _a}Q(s‘,a)$,更新現在的${Q_\pi }(s,a)$,${Q_\pi }(s,a) \leftarrow {Q_\pi }(s,a) + \alpha (R + \gamma {\max _a}Q(s‘,a) - {Q_\pi }(s,a))$;

重復上述步驟至episode結束。

重復以上步驟,從許多個episode中的每一步中不斷學習,從而獲得最優策略$\pi*$。


4. 免模型策略改進——蒙特卡洛(Monte-Carlo)和時序差分(Temporal-Difference)