Reinforcement Learning

Reinforcement Learning

什麼是RL

Reinforcement Learning(強化學習)是一種機器學習方法,通過試錯和獎勵機制來學習最佳行為。以下是強化學習的幾個應用面向,以及一些相關論文的參考: 遊戲:強化學習在遊戲領域中取得了顯著成就,例如AlphaGo和AlphaZero等。 機器人控制:用於控制機器人完成複雜任務,如行走、抓取物體等。 股票預測:應用於股票交易、投資策略等金融領域。 交通:用於優化交通信號控制、路線規劃等。

基本概念

強化學習(Reinforcement Learning)是一種機器學習方法,通過試錯和獎勵機制來學習最佳行為:

  1. 代理(Agent):在環境中採取行動的實體,可以是機器人、軟件程序等。
  2. 環境(Environment):代理所處的外部世界,提供狀態和反饋給代理。
  3. 狀態(State):環境在某一時刻的描述,通常用$s$ 表示。
  4. 行動(Action):代理在環境中採取的動作,通常用$a$ 表示。
  5. 獎勵(Reward):環境對代理行動的反饋,用於引導學習,通常用$r$ 表示。
  6. 策略(Policy):代理根據狀態選擇行動的方法,通常用$\pi(a s)$ 表示。
  7. 價值函數(Value Function):評估在某一狀態下遵循特定策略的預期累積獎勵,用於評估狀態的好壞。
  8. Q函數(Q-Function):評估在某一狀態下採取特定行動後遵循特定策略的預期累積獎勵。

基本過程

  1. 初始化:代理開始與環境交互。
  2. 觀察狀態:代理觀察環境的當前狀態。
  3. 選擇行動:根據策略選擇行動。
  4. 執行動作:在環境中執行動作。
  5. 獲得獎勵:環境給予獎勵。
  6. 更新知識:更新價值函數或Q函數,以改善未來的決策。

常見算法

  • Q-learning:使用Q函數學習最佳行動。
  • SARSA:使用價值函數學習最佳行動。
  • Deep Q-Networks (DQN):使用深度神經網絡來近似Q函數。
  • Policy Gradient Methods:直接學習策略而非價值函數。

Value Function VS Q-Function

在強化學習(Reinforcement Learning, RL)中,Value Function(價值函數)Q-Function(Q 值函數) 都是用來評估策略 $\pi$ 的好壞,但它們的側重點不同。

| 函數 | 定義 | 描述 | |———-|———|———-| | State Value Function(狀態價值函數)$V(s)$ | $V^\pi(s) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s, \pi \right]$ | 表示 在狀態 $s$ 下,根據策略 $\pi$ 所能期望獲得的累積回報。 | | Action-Value Function(行動價值函數)$Q(s, a)$ | $Q^\pi(s, a) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s, A_0 = a, \pi \right]$ | 表示 在狀態 $s$ 下執行動作 $a$,並按照策略 $\pi$ 行動後,所能期望獲得的累積回報。 |

  • Value Function \(V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^\infty \gamma^t r_t \mid s_0 = s \right]\)

    其中:

    • $\mathbb{E}_\pi$ 表示在策略$\pi$下取期望。
    • $r_t$ 是在時間步$t$獲得的獎勵。
    • $\gamma$ 是折扣因子,控制未來獎勵的重要性。
    • $s_0 = s$ 表示初始狀態為$s$。
  • Q-Function \(Q^\pi(s, a) = \mathbb{E}_\pi \left[ r + \gamma V^\pi(s') \mid s, a \right]\)

    或更一般地:

    \[Q^\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{t=0}^\infty \gamma^t r_t \mid s_0 = s, a_0 = a \right]\]

    其中:

    • $s’$ 是採取行動$a$後的下一狀態。
    • 其他符號與價值函數的表達式中相同。

    在Q-learning等算法中,Q函數通常使用以下更新規則來學習:

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

    其中:

    • $\alpha$ 是學習率。
    • $\max_{a’} Q(s’, a’)$ 是下一狀態中所有可能行動的最大Q值。
  • $V(s)$ 只考慮當前狀態的價值,適合評估當前策略的整體表現。
  • $Q(s, a)$ 則考慮特定動作的價值,適合用於決策選擇最佳動作(policy improvement)。

舉例:自駕車停車

假設我們在訓練一輛 自動駕駛車 停進停車位的策略。

1. 狀態價值函數 $V(s)$

假設 狀態 $s$ 表示車輛目前的位置,我們有:

  • $V(s_1) = 0.8$ 代表在停車場入口時,預計可以獲得 0.8 的回報(可能是停好車的成功率)。
  • $V(s_2) = 0.9$ 代表在更接近停車位的位置時,回報變高。

這表示 越接近停車位的狀態,價值越高,但這裡沒有考慮具體的行動選擇。

2. Q 值函數 $Q(s, a)$

假設 動作 $a$ 包括:

  • $a_1$ = 前進(move forward)
  • $a_2$ = 左轉(turn left)
  • $a_3$ = 右轉(turn right)

我們可以有:

  • $Q(s_1, a_1) = 0.6$(在入口時,選擇前進的預期回報是 0.6)
  • $Q(s_1, a_2) = 0.2$(在入口時,直接左轉可能導致撞牆,所以回報較低)
  • $Q(s_2, a_1) = 0.9$(更接近停車位時選擇前進,回報較高)

這表示 Q 值函數不僅考慮當前狀態,還考慮具體的行動對未來回報的影響


總結

  • $V(s)$ 只告訴我們當前狀態好不好,但不告訴我們該做什麼動作。
  • $Q(s, a)$ 告訴我們在當前狀態 $s$ 下,選擇不同動作 $a$ 的好壞,可以用來決策選擇最好的動作(如 Q-Learning)。

🚗 自駕車例子:

  • $V(s)$ 只是說「這個位置靠近停車位,所以好」,但 不告訴我們該轉向還是前進
  • $Q(s, a)$ 具體說明「這裡左轉不好,前進較好」,幫助我們選擇最佳動作。

Q-LearningDeep Q-Networks(DQN) 等方法中,主要學習 $Q(s, a)$,然後選擇最大 Q 值的動作來更新策略

On-Policy VS Off-Policy

在強化學習(Reinforcement Learning, RL)中,On-PolicyOff-Policy 的區別主要在於學習時使用的策略(policy)與執行時的策略是否相同

如果用一句話概括:

  • On-Policy(內部策略學習):學習與執行同一個策略。
  • Off-Policy(外部策略學習):學習時使用與執行不同的策略。

1. On-Policy(內部策略學習)

定義

  • 在收集數據時,使用的策略(行動選擇)與學習時的策略相同。
  • 也就是說,演算法只能學習當前策略 $\pi$,並依賴 $\pi$ 產生的經驗來改進自身。

代表性演算法

  • SARSA(State-Action-Reward-State-Action)
    • 依據當前策略 $\pi$ 來選擇動作並更新 Q 值。
    • 例如,如果使用 $\epsilon$-貪婪策略($\epsilon$-greedy),則學習的 Q 值也會考慮這種策略下的行動。

特點

適合策略改進(policy improvement),因為它直接學習當前策略的行為。 ✅ 收斂性較穩定,因為學到的價值估計與執行行為相匹配。 ❌ 探索能力有限,因為只能學習自己當前策略的數據,難以學習更好的行動。


2. Off-Policy(外部策略學習)

定義

  • 學習時的策略與執行時的策略不同,即可以用不同的策略來收集數據,然後用這些數據來學習更好的策略。
  • 這允許模型透過試探性策略(exploration policy) 來收集數據,但學習一個更優的目標策略(target policy)

代表性演算法

  • Q-Learning
    • 無論探索時是否選擇了最佳動作,更新 Q 值時都假設每個狀態都會選擇最優動作(max Q),這使得它可以學習最優策略。
  • Deep Q-Networks(DQN)
    • 使用 經驗回放(experience replay),存儲過去的數據並從中抽樣來訓練 Q 網絡,使得學習與數據收集分離,這本質上是一種 Off-Policy 方法。

特點

探索能力更強,因為可以使用不同的策略來收集更多多樣的數據。 ✅ 可以利用過去經驗數據,例如 DQN 的經驗回放(experience replay)。 ❌ 收斂可能不穩定,因為學習的策略與數據來源可能不匹配。


3. 直觀舉例

例子 1:自駕車

假設你在訓練自動駕駛車輛,你的目標是讓車學習到最安全的駕駛方式:

  • On-Policy(SARSA)
    • 車輛根據當前駕駛策略行駛,然後學習基於這種駕駛風格的價值函數。例如,如果車輛偶爾違規變道,學習到的策略仍然會保留這種行為。
    • 缺點是如果當前策略不夠優秀,學到的內容可能也不夠優秀。
  • Off-Policy(Q-Learning)
    • 你讓不同車輛嘗試各種駕駛風格(包括安全駕駛和激進駕駛),然後學習最安全的駕駛策略
    • 這樣,即使有些車輛的行為不理想,演算法仍能學習到更好的策略。

例子 2:小朋友學騎腳踏車

  • On-Policy(SARSA)
    • 小朋友根據自己當前的學習方式練習,例如只嘗試自己能做的動作,然後根據這些嘗試來調整策略。
    • 如果他害怕摔倒,不會嘗試太多冒險的動作,因此學習速度可能較慢。
  • Off-Policy(Q-Learning)
    • 小朋友可以看別人騎腳踏車,學習到最好的技巧,然後用來改善自己的策略。
    • 這樣,即使自己還沒嘗試某些行動,也可以學習到這些行為的價值。

4. 總結:On-Policy vs. Off-Policy

比較項目 On-Policy(內部策略) Off-Policy(外部策略)
學習策略 只能學習自身策略的數據 可以從不同策略的數據中學習
探索能力 受限於當前策略的行為 可以透過不同策略收集更多數據
代表演算法 SARSA, REINFORCE Q-Learning, DQN
應用場景 策略梯度(Policy Gradient)、安全性較高的應用 需要長期探索、大量數據的應用
穩定性 通常比較穩定 可能會收斂較慢或不穩定

結論:

  • On-Policy(如 SARSA)適合需要安全性與穩定性的學習場景,但可能學不到最優策略。
  • Off-Policy(如 Q-Learning)可以利用更多數據來學習更好的策略,但可能會不穩定或過度偏向最大 Q 值的選擇。

如果你想讓模型學到最好的策略(最優解),通常會選擇 Off-Policy(如 Q-Learning)。如果你想要學習穩定且不會意外做出危險決策的策略,則會選擇 On-Policy(如 SARSA)

What is SARSA & Q-Learning

:::info 詳細數學推導可以參考: 深度強化學習 Ch3.1 : TD learning ::: SARSA(State-Action-Reward-State-Action)Q-Learning 都是強化學習(Reinforcement Learning, RL)中的值基方法(Value-Based Methods),它們的主要目標是學習動作-價值函數(Q-Function),以選擇最佳動作來最大化累積回報。

它們的核心區別在於策略選擇方式

  • SARSA 是 On-Policy(內部策略學習),學習當前策略的行為。
  • Q-Learning 是 Off-Policy(外部策略學習),學習最優策略,即使數據來自不同的行為策略。

1. SARSA(On-Policy)

核心概念

SARSA 是On-Policy 強化學習方法,意味著它學習的是當前正在執行的策略(policy),即它的 Q 值更新是基於實際選擇的動作,而不是理論上的最優動作。

更新公式

\(Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right]\) 其中:

  • $s_t, a_t, r_t$:當前狀態、動作和獎勵。
  • $s_{t+1}, a_{t+1}$:下一個狀態及根據當前策略選擇的下一個動作。
  • $\alpha$(學習率):控制更新步伐。
  • $\gamma$(折扣因子):決定未來回報的重要性。

SARSA 的特點

學習當前策略的行為,不會過於激進地選擇最優解,較穩定。 ✅ 策略與學習方式一致,不會突然變成極端的貪婪策略,適合安全性要求高的環境。 ❌ 可能學不到最優策略,如果策略不是最優的,那學習結果也可能不是最優的。

舉例

🛵 例子:學騎腳踏車

  • 小朋友用 SARSA 來學習騎腳踏車,他會根據自己的學習風格來選擇動作(如小心慢騎)。
  • 當他遇到坑洞時,他會根據自己當前的策略決定是慢慢避開還是稍微加速躲開。
  • 這代表他學習的是一種「安全但可能不是最快的騎車方式」。

2. Q-Learning(Off-Policy)

核心概念

Q-Learning 是Off-Policy 強化學習方法,這意味著它學習的是最優策略,而不管數據來自哪種策略

  • 即使當前的行為策略(例如隨機選擇動作)不是最優的,Q-Learning 依然會學習最優的行動選擇方式。

更新公式

\(Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_{a} Q(s_{t+1}, a) - Q(s_t, a_t) \right]\) 與 SARSA 唯一的區別是:

  • SARSA 用的是「實際選擇的下一個動作」$Q(s_{t+1}, a_{t+1})$。
  • Q-Learning 直接選擇「下一個狀態的最優動作」$\max_{a} Q(s_{t+1}, a)$ 來更新 Q 值。

Q-Learning 的特點

能學到最優策略,因為它總是選擇最好的 Q 值來學習。 ✅ 可以利用 Off-Policy 數據,例如過去的經驗來更新學習結果(像 DQN 的經驗回放)。 ❌ 可能學習不穩定,如果環境變化大,它可能會過度偏向最優動作而忽略探索。

舉例

🚗 例子:自駕車找停車位

  • 假設 Q-Learning 訓練一輛自動駕駛車來找停車位。
  • 雖然車輛一開始可能亂選路線,但最終它會學到「最短最快的停車路線」。
  • 即使一開始的數據來自於人類駕駛或隨機行為,Q-Learning 仍然會學習出最優的停車策略

3. SARSA vs. Q-Learning(比較)

比較項目 SARSA(On-Policy) Q-Learning(Off-Policy)
學習策略 學習當前執行的策略 學習最優策略
更新方式 依據實際選擇的行動更新 依據最大 Q 值更新
穩定性 收斂較穩定,但不一定最優 可能不穩定,但學習結果更好
探索能力 受限於當前策略的行為 可以從不同策略的數據中學習
代表性應用 需要安全性高的應用,如醫療機器人 需要找到最優解的應用,如自駕車
適用場景 策略梯度、保守決策環境 需要大量探索、目標最優化的環境

核心區別

  1. SARSA 是 On-Policy,學習的是「當前策略」,適合安全性較高的情境(如自駕車減速避讓行人)。
  2. Q-Learning 是 Off-Policy,學習的是「最優策略」,適合追求最優解的環境(如最快找到停車位)。

4. 何時用 SARSA?何時用 Q-Learning?

SARSA(On-Policy)適用情境

  • 需要安全性較高的場景,例如:
    • 醫療機器人(避免風險操作)
    • 自駕車避障(減少風險行為)
    • 教育 AI(確保不過於極端行為)
  • 主要用於「學習當前策略的行為」。

Q-Learning(Off-Policy)適用情境

  • 需要找到全局最優解,例如:
    • 遊戲 AI(學到最佳策略)
    • 自駕車尋找最佳路徑(找最短停車路線)
    • 金融交易策略(學到最賺錢的投資方式)
  • 主要用於「學習最優策略,而不管數據來源」。

5. 總結

  • SARSA:On-Policy,學當前策略,較安全但可能不是最優解。
  • Q-Learning:Off-Policy,學最優策略,探索能力強但可能學習不穩定。
  • 如果你希望 AI 探索最優解,選 Q-Learning;如果你希望 AI 行為穩定,選 SARSA。