JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

從預測到控制:Sarsa、Q 學習與期望 Sarsa

把價值估計變成決策:邊學動作價值,邊改進策略。

為什麼控制需要動作價值

預測狀態價值 V(s) 告訴你一個處境有多好,卻不告訴你接下來該採取哪個動作——光靠 V 要選出更好的動作,你會需要一個模型來向前看。因此免模型控制改學動作價值函數 Q(s, a):在狀態 s 採取動作 a、之後依循策略所得的期望回報。有了 Q,貪婪地行動就很容易——挑 Q 值最高的動作。

整體架構是廣義策略迭代(generalised policy iteration):在「讓價值估計與目前策略一致(評估)」與「讓策略對價值更貪婪(改進)」之間交替。前幾篇的 MC 與 TD 機制提供評估那一半;ε-貪婪的動作選擇提供改進那一半。

控制发生在智能体与环境的交互循环中:智能体采取动作,环境返回奖励和下一个状态,而动作价值决定下一步的选择。

智能体与环境之间强化学习循环的示意图。

蒙地卡羅控制與探索的必要

蒙地卡羅控制只是把 MC 預測套用在 Q 而非 V 上:玩完整的回合,平均每個(狀態, 動作)配對之後的回報,再讓策略貪婪。但純貪婪的策略很危險——它可能永遠不會嘗試一個目前被低估的動作,於是永遠發現不了那個動作其實很好。這就是縮影版的探索與利用(exploration–exploitation)兩難。

標準解法是 ε-貪婪(ε-greedy)策略:以機率 1−ε 採取貪婪動作,以機率 ε 隨機挑一個動作。這保證每個動作都持續被嘗試,使各處的 Q 估計都保持有效,同時又大多在利用你已學到的東西。ε 通常隨學習進行而退火趨近於零。

Sarsa:同策略 TD 控制

Sarsa 是同策略(on-policy)版的 TD 控制。它的名字拼出驅動每次更新的五元組:狀態、動作、獎勵、下一狀態、下一動作——(s, a, r, s′, a′)。在行動並看到落腳處後,你從目前的 ε-貪婪策略選出下一個動作 a′,並以 Q(s′, a′) 自助。

Q(s,a) \leftarrow Q(s,a) + \alpha\left[\, r + \gamma\, Q(s',a') - Q(s,a) \,\right]

Sarsa 更新利用实际选择的下一个动作的 Q(s′,a′) 进行自举,因此是同策略(on-policy)方法。

# Sarsa update (on-policy): a' is the action you will actually take
target = r + gamma * Q[s_next, a_next]
Q[s, a] += alpha * (target - Q[s, a])
Sarsa 以行為策略接下來實際選出的動作來自助。

因為它學的是它實際遵循的策略的價值——連同探索在內——Sarsa 是同策略(on-policy)的。這讓它令人安心地安全:它把自己探索失誤的風險也算進去。在經典的走懸崖(cliff-walking)例子中,Sarsa 學到一條謹慎、遠離邊緣的路徑,正是因為它知道隨機的探索步可能把自己送下懸崖。

Q 學習:離策略 TD 控制

Q 學習(Q-learning)做了一個微小卻深遠的改動:它不以它將要採取的動作來自助,而是以 s′ 上最佳可用動作來自助——對 Q(s′, ·) 取最大值。它學的是貪婪(最佳)策略的價值,但行為上仍用探索性的 ε-貪婪策略。被學習的策略與被遵循的策略之間的這種不一致,正是它離策略(off-policy)的原因。

在网格世界中体验 Q-learning:它以下一状态的最优动作进行自举,即便在探索时也能学到最优路径。

可交互的 Q-learning 网格世界组件。

# Q-learning update (off-policy): target uses the greedy action at s'
target = r + gamma * max(Q[s_next, b] for b in actions)
Q[s, a] += alpha * (target - Q[s, a])
Q 學習以最佳的下一動作自助,與它實際做了什麼無關。

在走懸崖上,Q 學習學到緊貼邊緣的最佳最短路徑——即使在仍探索時偶爾會掉下去,使線上回報比謹慎的 Sarsa 低。隨著 ε 退火,留下來的就是那個最佳策略。這兩個演算法漂亮地說明了同策略與離策略的區別。

期望 Sarsa:更穩的中庸之道

期望 Sarsa(Expected Sarsa)保留同策略的精神,但去掉一個雜訊來源。它不像 Sarsa 那樣以單一抽樣到的下一動作 a′ 自助,而是用策略下一個動作的期望值:Σ π(b|s′)·Q(s′, b)。把「抽到哪個探索動作」的隨機性平均掉,使更新的變異數比 Sarsa 低,常讓你能用更大的步長。

Q(s,a) \leftarrow Q(s,a) + \alpha\left[\, r + \gamma \sum_{a'} \pi(a' \mid s')\, Q(s',a') - Q(s,a) \,\right]

期望 Sarsa 用对策略的期望取代采样得到的单个下一个动作,从而降低目标的方差。

Q 學習的最大值賦予它真正的威力,但如下一篇所示,同一個最大值也悄悄引入了系統性的高估偏差——而離策略的蒙地卡羅控制本身也需要一種修正。兩者都是最後一篇的主題。