什么是SARSA
SARSA算法的全稱是State Action Reward State Action,屬于時(shí)序差分學(xué)習(xí)算法的一種,其綜合了動(dòng)態(tài)規(guī)劃算法和蒙特卡洛算法,比僅僅使用蒙特卡洛方法速度要快很多。當(dāng)時(shí)序差分學(xué)習(xí)算法每次更新的動(dòng)作數(shù)為最大步數(shù)時(shí),就等價(jià)于蒙特卡洛方法。
值函數(shù)更新公式的引入:多次試驗(yàn)的平均
SARSA的核心思想在于增量計(jì)算。在蒙特卡洛算法中,我們需要對(duì)函數(shù)
進(jìn)行有效的估計(jì),假設(shè)第
次試驗(yàn)后值函數(shù)為
的平均為:
其中表示軌跡
的起始狀態(tài)和動(dòng)作為
,
。
省卻以上公式的中間過程,我們可以將該公式簡(jiǎn)化為如下:
在該公式中,值函數(shù)在第
次試驗(yàn)后的值
,即
次試驗(yàn)的平均等于前
次試驗(yàn)再加上一個(gè)增量。在該公式中,
可以表示成第
次試驗(yàn)相對(duì)于前
次試驗(yàn)的重要性。
值函數(shù)更新公式的改進(jìn):權(quán)重參數(shù)的調(diào)整
更一般性的,我們可以將權(quán)重系數(shù)改成一個(gè)比較小的正數(shù)
,由此,以上公式可以被改寫成為以下:
其中,增量稱為蒙特卡洛誤差,表示真實(shí)的回報(bào)與期望回報(bào)之間的差距。
值函數(shù)更新公式的改進(jìn):累積獎(jiǎng)勵(lì)的計(jì)算
在上面的公式中,為一次試驗(yàn)的完整軌跡所得到的總回報(bào),為了提高效率,放寬模型的約束,可以借助動(dòng)態(tài)規(guī)劃算法來計(jì)算
,而不需要得到完整的軌跡。
從開始,采樣下一步的狀態(tài)和動(dòng)作
,并得到獎(jiǎng)勵(lì)
,然后利用貝爾曼方程來近似估計(jì)函數(shù)
。
貝爾曼方程的思想精髓在于動(dòng)態(tài)規(guī)劃,即當(dāng)前值的計(jì)算依賴于上一時(shí)刻的值。對(duì)于無最終狀態(tài)的情況,我們定義了折扣率來重點(diǎn)強(qiáng)調(diào)現(xiàn)世的回報(bào)。
將以上公式結(jié)合,可以得到以下計(jì)算公式:
這種策略學(xué)習(xí)算法稱為算法。
通用
算法框架:一個(gè)示例
一個(gè)通用的算法如下所示:

該算法的大致邏輯如下:
- 運(yùn)行完一個(gè)回合即一個(gè)內(nèi)循環(huán)。
- 運(yùn)行直到
函數(shù)收斂即為一個(gè)外循環(huán)。
- 運(yùn)行期間動(dòng)態(tài)更新
函數(shù),并基于
函數(shù)更新策略
。
時(shí)序差分學(xué)習(xí)和蒙特卡羅方法的主要不同為:蒙特卡羅需要完整一個(gè)路徑完成才能知道其總回報(bào),也不依賴馬爾可夫性質(zhì);而時(shí)序差分學(xué)習(xí)只需要一步,其總回報(bào)需要依賴馬爾可夫性質(zhì)來進(jìn)行近似估計(jì)。