iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
AI & Data

從根本學習Reinforcement Learning系列 第 11

[Day11]n-step TD Learning

  • 分享至 

  • xImage
  •  

前言

在介紹n-step Learning之前,我們用cliffwalking來比較Q Learning與Sarsa之間的差異,之後再簡單介紹一下n-step Learning的做法。

Cliffwalking

先來介紹gym裡面的cliffwalking環境
https://ithelp.ithome.com.tw/upload/images/20200911/20129922u6eXQSEMyA.png

只要經過懸崖(Cliff),就會回到起始點S,並得到reward -100;其餘step則為-1。
一種較安全的走法就是從上方遠離懸崖的地方走,而最佳路徑則是沿著懸崖邊前進。

匯入需要的參數

import gym
import numpy as np
import sys
from collections import defaultdict

env = gym.make('CliffWalking-v0')

gamma = 1.0
epsilon = 0.1
alpha = 0.5

Agent的程式碼與昨天一樣,這邊就不重複了。

run_sarsa(500, True)
print('------------------------------')
run_q_learning(500, True)

觀察兩種演算法得到的路徑,Q Learning前進的路線為最短路徑,而Sarsa則是偏好較安全的路線。造成這種差異的原因是https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon-greedy,當走在懸崖邊時,有https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon的機率選擇隨機行為,就有機會跌落山谷。

Q Learning在更新過程中是以max來決定更新的方向,所以假設某個action會跌落山谷,Q Learning並不會以該action來更新,所以對Value Function的影響不大;Sarsa則剛好相反,Sarsa會以下一步的行為來更新,如果下一步會跌入山谷,Sarsa將會大幅減少該State的Value,以至於下個episode不會再走到懸崖邊。

從上例可以發現,Sarsa走的路線相較於Q Learning更為保守。在此例中,使用https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon-greedy的Sarsa效能比Q Learning還要好。
https://ithelp.ithome.com.tw/upload/images/20200911/20129922LjFmcjBdXV.png

很多教學只提及Q Learning,導致許多人認為Q Learning比Sarsa更好用,事實上兩種算法的使用情形要依照環境來做選擇

n-step TD Learning

在Monte Carlo中,Expected return定義為:
https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D%20%3D%20R_%7Bt%2B1%7D%20%2B%20%5Cgamma%20R_%7Bt%2B2%7D%20%2B%20%5Cgamma%5E%7B2%7D%20R_%7Bt%2B3%7D%20%2B%20%5Cldots%20%2B%20%5Cgamma%5E%7BT-t-1%7DR_%7BT%7D

在Temporal Difference中,Expected return定義為:
https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D%20%3D%20R_%7Bt%2B1%7D%20%2B%20%5Cgamma%20V_%7Bt%7D(S_%7Bt%2B1%7D)

Temporal Difference不一定只依後一個state來更新。事實上,之前學到的TD Learning稱為1-step TD,我們可以在TD與Monte Carlo中做平衡,稱為n-step TD。

更新方式很簡單,只要將擴展TD中的公式:
https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%3At%2Bn%7D%20%3D%20R_%7Bt%2B1%7D%2B%5Cgamma%20R_%7Bt%2B2%7D%2B%5Cldots%20%2B%20%5Cgamma%5E%7Bn-1%7DR_%7Bt%2Bn%7D%2B%5Cgamma%5E%7Bn%7DV_%7Bt%2Bn-1%7D(S_%7Bt%2Bn%7D)
其中,https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%3At%2Bn%7D指的是https://chart.googleapis.com/chart?cht=tx&chl=thttps://chart.googleapis.com/chart?cht=tx&chl=t%2Bn的expected return。

https://ithelp.ithome.com.tw/upload/images/20200911/20129922VCWZl4RDoP.png
算法看似很複雜,其實只是將原本https://chart.googleapis.com/chart?cht=tx&chl=Q(S%5E%7B'%7D%5C%20A%5E%7B'%7D)的部分,移到n step後再算,中間則用reward取代。
而如果遇到Final State,則提前結束。

如果要實現n-step Q Learning的話,我們就必須引入importance sampling。可參考sutton書中7-3節

總結

n-step Learning在實務上並沒有特別實用,我們就不再深入討論。但透過n-step Learning,能讓我們稍微理解TD Learning與Monte Carlo之間的關係。Monte Carlo其實就是一種擴展後的TD Learning。


上一篇
[Day10]Sarsa & Q Learning (2)
下一篇
[Day12]Dyna-Q
系列文
從根本學習Reinforcement Learning12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言