基于時(shí)態(tài)差分法的強化學(xué)習:Sarsa和Q-learning
時(shí)態(tài)差分法(Temporal Difference, TD)是一類(lèi)在強化學(xué)習中廣泛應用的算法,用于學(xué)習價(jià)值函數或策略。Sarsa和Q-learning都是基于時(shí)態(tài)差分法的重要算法,用于解決馬爾可夫決策過(guò)程(Markov Decision Process, MDP)中的強化學(xué)習問(wèn)題。
下面是最簡(jiǎn)單的TD方法更新:
它只使用當前行動(dòng)之后的獎勵值和下一個(gè)狀態(tài)的值作為目標。Sarsa(State-Action-Reward-State-Action)和Q-learning是都是基于時(shí)態(tài)差分法的強化學(xué)習方法。
Sarsa和Q-learning的區別Sarsa代表State-Action-Reward-State-Action。是一種基于策略的方法,即使用正在學(xué)習的策略來(lái)生成訓練數據。Q-learning是一種非策略方法它使用不同的策略為正在學(xué)習的值函數的策略生成訓練數據。
Sarsa的更新規則如下:
其中:
- Q(s, a) 是在狀態(tài)s下采取動(dòng)作a的值函數估計。
- α 是學(xué)習率,控制每次更新的步長(cháng)大小。
- r 是在狀態(tài)s下采取動(dòng)作a后獲得的即時(shí)獎勵。
- γ 是折扣因子,表示未來(lái)獎勵的折現率。
- s' 是在執行動(dòng)作a后得到的新?tīng)顟B(tài)。
a' 是在新?tīng)顟B(tài)s'下選擇的下一個(gè)動(dòng)作。
Q-learning是另一種基于時(shí)態(tài)差分法的增強學(xué)習算法,用于學(xué)習一個(gè)值函數,表示在狀態(tài)s下采取最優(yōu)動(dòng)作得到的期望累積獎勵。Q-learning的更新規則如下:
其中:max(Q(s', a')) 表示在新?tīng)顟B(tài)s'下選擇下一個(gè)動(dòng)作a'時(shí)的最大值函數估計。
從上面的更新可以看出這兩個(gè)方法非常相似,主要區別在于它們的更新策略。在Sarsa中,更新策略考慮了在新?tīng)顟B(tài)下采取的下一個(gè)動(dòng)作,而在Q-learning中,更新策略總是選擇了新?tīng)顟B(tài)下使值函數最大化的動(dòng)作。因此,Sarsa更傾向于跟隨當前策略進(jìn)行學(xué)習,而Q-learning更傾向于學(xué)習最優(yōu)策略。
cliff walking環(huán)境下的表現這是RL書(shū)中描述的一個(gè)簡(jiǎn)單環(huán)境,如下面的截圖所示。
- 事件開(kāi)始于狀態(tài)S,我們的代理開(kāi)始于這種狀態(tài)。
- 一個(gè)事件在狀態(tài)G結束,也就是這是終態(tài)。
- 在S和G之間的最下面一行的狀態(tài)是懸崖?tīng)顟B(tài)。
- 從懸崖?tīng)顟B(tài)以外的任何狀態(tài)轉換的獎勵為-1,并且代理會(huì )移動(dòng)到鄰近的狀態(tài)。
- 懸崖?tīng)畹莫剟顬?100,并且代理移動(dòng)到開(kāi)始狀態(tài)S,也就是說(shuō)結束了。
- 當代理到達終端狀態(tài)G,走了100步或者最終處于懸崖?tīng)顟B(tài)時(shí),就代表結束了。
- 圖中藍色路徑是安全的,但不是最優(yōu)的,因為它需要很多步才能到達目標狀態(tài)。
紅色路徑是最優(yōu)的,但它是非常危險的,因為代理可能會(huì )發(fā)現自己在懸崖邊緣。
從環(huán)境的描述來(lái)看,代理的目標是最大化累積獎勵,即采取盡可能少的步數,因為每一步的值為-1。最優(yōu)路徑是懸崖上方的那條,因為它只需要13步,值為-13。我使用上面的2td(0)方法來(lái)確定它們是否在上面以獲得最優(yōu)路徑。
實(shí)驗環(huán)境如下:
在訓練中使用以下超參數:
- episodes:2000;
- discounting factor:1;
- Alpha: 0.1,這是學(xué)習率;
Epsilon: 0.1, 選擇具有相同概率的所有動(dòng)作的概率,用于ε貪婪算法。
結果:
Sarsa和Q-learning在收斂的時(shí)間上大致相同,但Q-learning能夠學(xué)習13個(gè)步驟的最優(yōu)路徑。Sarsa無(wú)法學(xué)習最優(yōu)路徑,它會(huì )選擇避開(kāi)懸崖。這是因為它的更新函數是使用貪婪的方式來(lái)獲取下一個(gè)狀態(tài)-動(dòng)作值,因此懸崖上方的狀態(tài)值較低。
Q-learning在更新中使用了下一個(gè)狀態(tài)動(dòng)作值的最大值,因此它能夠小心地沿著(zhù)邊緣移動(dòng)到目標狀態(tài)G。下圖顯示了每個(gè)訓練論測的學(xué)習步驟數量。為了使圖表更加平滑,這里將步驟數按20個(gè)一組取平均值。我們可以清楚地看到,Q-learning能夠找到最優(yōu)路徑。
下圖顯示了2種算法的在線(xiàn)性能*這些值再次以20組為單位進(jìn)行平均)。我們可以看到,Sarsa的性能比Q-learning更好。這是因為隨著(zhù)Q-learning學(xué)習獲得最優(yōu)路徑,偶爾會(huì )發(fā)現自己陷入絕境,因為要更新的狀態(tài)動(dòng)作對的生成遵循了貪婪算法。而Sarsa學(xué)會(huì )了避開(kāi)靠近懸崖的狀態(tài),從而減少了靠近懸崖的機會(huì )。
這個(gè)簡(jiǎn)單的例子說(shuō)明了Sarsa和Q-learning之間的比較,我們總結兩個(gè)算法的區別:
Sarsa和Q-learning都是基于時(shí)態(tài)差分法的強化學(xué)習算法,它們在解決馬爾可夫決策過(guò)程(MDP)中的強化學(xué)習問(wèn)題時(shí)有一些重要的區別。
更新策略:
- Sarsa:在Sarsa中,更新策略是"狀態(tài)-動(dòng)作-獎勵-下一個(gè)狀態(tài)-下一個(gè)動(dòng)作",即更新后的動(dòng)作與下一個(gè)狀態(tài)相關(guān)。這意味著(zhù)Sarsa在更新值函數時(shí)會(huì )考慮在新?tīng)顟B(tài)下采取的下一個(gè)動(dòng)作,因此其學(xué)習過(guò)程更加穩定,可以學(xué)習到策略的各種特征。
Q-learning:Q-learning的更新策略是"狀態(tài)-動(dòng)作-獎勵-最大值動(dòng)作",即更新后的動(dòng)作是在新?tīng)顟B(tài)下具有最大值函數估計的動(dòng)作。這使得Q-learning更加傾向于學(xué)習最優(yōu)策略,但也可能導致其學(xué)習過(guò)程不穩定,容易受到噪聲干擾。
學(xué)習方式:
- Sarsa:由于Sarsa在更新時(shí)會(huì )考慮在新?tīng)顟B(tài)下執行的下一個(gè)動(dòng)作,它更適合于在線(xiàn)學(xué)習和與環(huán)境進(jìn)行交互時(shí)的應用。Sarsa在實(shí)際應用中可能更加穩定,但也可能會(huì )收斂較慢。
Q-learning:Q-learning更傾向于學(xué)習最優(yōu)策略,但由于其更新策略不考慮實(shí)際執行的下一個(gè)動(dòng)作,可能在一些情況下收斂更快,但也更容易受到噪聲的影響。
探索策略:
- Sarsa:由于Sarsa考慮了在新?tīng)顟B(tài)下執行的下一個(gè)動(dòng)作,它在學(xué)習過(guò)程中傾向于跟隨當前策略進(jìn)行探索,可能更適合于需要較多探索的任務(wù)。
Q-learning:Q-learning在更新時(shí)不受當前策略的影響,更容易在學(xué)習過(guò)程中進(jìn)行探索。然而,這種無(wú)關(guān)探索策略可能導致Q-learning在某些情況下過(guò)度探索,陷入不收斂的狀態(tài)。
應用場(chǎng)景:
- Sarsa:適用于需要穩定學(xué)習過(guò)程、重視探索的任務(wù),或者在與環(huán)境進(jìn)行交互時(shí)進(jìn)行在線(xiàn)學(xué)習的情況。
Q-learning:適用于傾向于學(xué)習最優(yōu)策略的任務(wù),或者在需要快速收斂時(shí)的情況。
這兩種算法只是強化學(xué)習領(lǐng)域眾多算法中的兩種,還有其他更高級的算法如Deep Q Network (DQN)、Actor-Critic等,可以根據問(wèn)題的復雜度和要求選擇適當的算法。
最后如果你想自行進(jìn)行試驗,這里是本文兩個(gè)試驗的源代碼:
https://github.com/mirqwa/reinforcement-leaning
作者:Kim Rodgers
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。