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