強化學習是什麼?Reinforcement Learning 原理與應用白話解析

一句話說明

強化學習(Reinforcement Learning,RL)是一種讓 AI 透過和環境互動、從獎勵和懲罰中學習最佳行為策略的方法——AlphaGo 下圍棋、機器人學走路、ChatGPT 學會有用地回答問題,底層都有強化學習的影子。

核心概念:試錯學習

想像你在訓練一隻狗。你不會先把物理學原理解釋給牠聽,然後期待牠學會接飛盤。你會讓牠反覆嘗試:接到飛盤→給零食(獎勵),沒接到→什麼都沒有。幾百次之後,牠就學會了接飛盤的最佳策略。

強化學習就是這個過程的數學化版本。

代理(Agent):學習者,也就是做決策的 AI。

環境(Environment):Agent 互動的對象。可以是棋盤、模擬世界、甚至一段對話。

狀態(State):環境在某個時刻的情況。例如棋盤上棋子的位置。

動作(Action):Agent 在某個狀態下可以做的選擇。例如在棋盤上的某個位置落子。

獎勵(Reward):Agent 做了某個動作後環境給的回饋。正值代表好(贏了比賽),負值代表壞(輸了比賽),零代表中性。

策略(Policy):Agent 決定在每個狀態下要採取什麼動作的規則。強化學習的目標就是找到一個能把長期總獎勵最大化的策略。

馬可夫決策過程(MDP)

強化學習的數學基礎是馬可夫決策過程(Markov Decision Process,MDP)。聽起來很學術,但概念其實直觀。

MDP 有四個要素:狀態集合 S(所有可能的環境狀態)、動作集合 A(Agent 可以做的所有動作)、轉移機率 P(在狀態 s 做了動作 a 後,轉移到狀態 s' 的機率)、獎勵函數 R(在狀態 s 做了動作 a 後得到的即時獎勵)。

「馬可夫」的意思是:下一個狀態只取決於當前的狀態和動作,跟過去的歷史無關。下棋時你只需要看棋盤現在的局面來決定下一步,不需要知道這個局面是怎麼來的。

白話來說,MDP 定義了一個「遊戲規則」:你在什麼情況下可以做什麼事、做了之後世界會怎麼變、你會得到什麼回饋。強化學習的任務就是在這個規則下找到最好的策略。

價值函數與 Bellman 方程式

強化學習中兩個核心概念是狀態價值函數 V(s) 和動作價值函數 Q(s, a)。

V(s) 代表「從狀態 s 開始,按照某個策略行動,預期能得到多少總獎勵」。Q(s, a) 代表「在狀態 s 做了動作 a 之後,預期能得到多少總獎勵」。

用下棋來比喻:V(s) 是「這個棋盤局面對你有多有利」,Q(s, a) 是「在這個局面下走這一步有多好」。

Bellman 方程式是計算這些價值的遞迴公式。直覺上,它說的是:

一個狀態的價值 = 當前的即時獎勵 + 折扣後的未來價值

這裡的「折扣」(discount factor,通常用 γ 表示,值在 0 到 1 之間)反映了「現在的獎勵比未來的獎勵值錢」。γ 接近 1 表示重視長期報酬(像圍棋,要規劃很多步以後的事),γ 接近 0 表示只看眼前的利益。

Bellman 方程式讓我們可以用動態規劃的方式,從終止狀態反推回去,算出每個狀態的價值。但在實務中,狀態空間往往太大(圍棋的狀態數量約 10^170),沒辦法列舉所有狀態,所以需要用近似的方法。

時序差分學習(Temporal Difference Learning)

TD 學習是強化學習中一個基礎的學習方法,結合了蒙地卡羅方法和動態規劃的優點。

蒙地卡羅方法是等整個回合結束後,用實際得到的總獎勵來更新價值估計。問題是要等到結束才能學習。

動態規劃是用 Bellman 方程式,基於已知的環境模型來計算價值。問題是需要知道環境的轉移機率,而這在很多情況下是未知的。

TD 學習的做法是:不等回合結束,每走一步就用「當前獎勵 + 下一個狀態的價值估計」來更新當前狀態的價值。用估計值來更新估計值,這個方法叫做 bootstrapping。

白話來說:你不需要等考完所有科目才知道考得好不好。每考完一科,就可以根據這科的成績和對剩餘科目的預估來調整你的學習策略。

Q-Learning 就是 TD 學習的一個經典應用。它學習 Q(s, a) 函數:在每個步驟中,根據實際得到的獎勵和下一個狀態中最好的動作價值來更新 Q 值。

探索 vs. 利用

強化學習面臨一個根本的困境:探索(Exploration)vs. 利用(Exploitation)。

想像你在一個陌生城市找餐廳吃飯。你已經找到一家還不錯的(7 分),現在要決定:繼續吃這家(利用已知的好選擇),還是去試試其他沒去過的店(探索可能更好的選擇)?

如果你永遠只吃同一家,你可能錯過 9 分的餐廳。但如果你永遠在嘗試新的,你可能常常踩到雷。

常見的平衡策略:

ε-greedy:有 ε(例如 10%)的機率隨機探索,其他時候選已知的最佳動作。隨著學習進行,逐漸降低 ε 的值。最簡單也最常用。

Boltzmann 探索(Softmax):根據每個動作的價值估計來分配選擇機率。價值越高的動作被選中的機率越大,但不是百分之百。溫度參數控制探索的程度。

UCB(Upper Confidence Bound):對每個動作維護一個「不確定性」的估計。嘗試次數越少的動作,不確定性越大,被選擇的優先度越高。理論保證比 ε-greedy 更有效率。

內在動機(Intrinsic Motivation):給 Agent 一個額外的「好奇心」獎勵,鼓勵它去探索沒見過的狀態。類似人類的好奇心驅動學習。

主要演算法比較

演算法 類型 動作空間 特點 代表應用 適用場景
DQN Value-based 離散 用神經網路近似 Q 函數 Atari 遊戲 動作選項有限的問題
A3C Actor-Critic 離散/連續 多執行緒平行訓練 遊戲、模擬 需要快速訓練的場景
PPO Actor-Critic 離散/連續 穩定、易調參 RLHF、機器人 通用場景,新手推薦
SAC Actor-Critic 連續 最大化獎勵同時最大化動作的隨機性 機器人控制 連續控制任務
TD3 Actor-Critic 連續 雙重 Q 網路降低高估問題 機器人控制 連續控制任務

DQN(Deep Q-Network):DeepMind 在 2013-2015 年提出的開創性工作。用深層神經網路來近似 Q 函數,只接收遊戲畫面(像素)作為輸入,透過強化學習學會玩 Atari 遊戲。兩個重要的技巧:經驗重放(Experience Replay,把過去的經驗存起來重複使用)和目標網路(Target Network,用一個更新較慢的網路來穩定訓練)。

PPO(Proximal Policy Optimization):目前最常用的強化學習演算法之一,由 OpenAI 的 John Schulman 在 2017 年提出。PPO 的設計哲學是「簡單、穩定、效果好」。它限制每次策略更新的幅度(透過 clip 函數),避免訓練過程不穩定。PPO 在 RLHF 中被大量使用——ChatGPT 和 Claude 的對齊訓練都用了 PPO。

SAC(Soft Actor-Critic):在傳統的「最大化獎勵」目標之外,加入了一個「最大化動作的熵(隨機性)」的目標。這鼓勵 Agent 在達到同樣獎勵的前提下,選擇盡量多元的動作。好處是探索更充分、對環境變化更有韌性。在機器人控制的任務中表現特別好。

TD3(Twin Delayed DDPG):針對 DDPG 演算法的三個改進:用兩個 Q 網路取最小值(減少 Q 值高估)、延遲更新策略網路、在目標動作中加入雜訊。這些改進讓連續控制任務的訓練更穩定。

經典案例

AlphaGo(2016)。DeepMind 訓練的圍棋 AI,用強化學習從和自己對弈中學習。先用人類棋譜做監督式學習(學到人類棋手的落子傾向),再透過自我對弈的強化學習超越人類水準。AlphaGo 擊敗世界冠軍李世乭,是 AI 發展史上的標誌性事件。

後續的 AlphaZero 連人類棋譜都不需要,純粹從規則出發、透過自我對弈學會圍棋、西洋棋和將棋,而且棋力超越 AlphaGo。訓練只用了 24 小時(在 5000 個 TPU 上)。

Atari 遊戲(2013-2015)。DeepMind 的 DQN 只接收遊戲畫面(像素),透過強化學習學會玩 Atari 遊戲。在 49 個遊戲中,29 個超越人類的最高分。這是深度強化學習的開創性工作,證明了深度學習加上強化學習可以從原始感知資料學會複雜的決策。

機器人控制。讓機器手臂學會抓取物品、讓四足機器人學會在不平整的地面上行走。在模擬環境中用強化學習訓練,再把學到的策略遷移到真實機器人上(Sim-to-Real Transfer)。Boston Dynamics 和 Tesla 的人形機器人都有用到強化學習。

超越遊戲的應用

Google 晶片設計。Google 在 2021 年發表的研究中,用強化學習來規劃晶片的電路佈局(floorplanning)。傳統上這個任務需要人類工程師花數週時間,強化學習在數小時內就能找到品質相當的佈局。這項技術已經被用在 Google 的 TPU 設計中。

資料中心能源優化。DeepMind 用強化學習來控制 Google 資料中心的冷卻系統。Agent 根據感測器的溫度、負載量、天氣等資料,動態調整冷卻設備的運作。結果節省了約 40% 的冷卻用電。

推薦系統。YouTube、Netflix、淘寶等平台用強化學習來優化推薦策略。傳統的推薦系統預測「使用者會不會點這個」,強化學習的推薦系統最佳化的是長期指標(使用者的長期觀看時間、留存率、滿意度)。差別在於:傳統方法可能推薦吸引點擊的標題黨內容,強化學習方法會學到推薦能讓使用者長期留下來的優質內容。

自動交易。用強化學習來制定交易策略。Agent 根據市場狀態(價格、成交量、技術指標)決定買入、賣出或持有。但在金融領域的限制很明顯:市場環境是非穩態的(Non-stationary),過去有效的策略未來不一定有效。多數量化交易公司會把強化學習作為策略組合的一部分,而不是唯一策略。

自動駕駛。Waymo 和 Tesla 在自動駕駛的決策層(什麼時候變換車道、如何通過路口)使用了強化學習。訓練主要在模擬環境中進行(因為真實道路的試錯成本太高),這也帶來了 Sim-to-Real Gap 的挑戰。

多智能體強化學習(MARL)

當有多個 Agent 在同一個環境中互動時,就進入了多智能體強化學習(Multi-Agent Reinforcement Learning)的範疇。

合作型 MARL:多個 Agent 有共同的目標。例如多個機器人合作搬運大型物品、多架無人機協作搜救。挑戰在於 Agent 之間的溝通和分工。

競爭型 MARL:Agent 之間是對手。AlphaGo 的自我對弈就是一個例子。透過對手的競爭壓力來驅動學習。

混合型 MARL:有合作也有競爭。像足球遊戲中隊友之間合作、兩隊之間競爭。OpenAI Five(Dota 2 AI)就是這類應用。

MARL 的難點在於:每個 Agent 在學習的同時,其他 Agent 也在學習。環境從每個 Agent 的角度看都是不穩定的(因為其他 Agent 的行為在變化)。這讓收斂變得困難。

逆向強化學習(Inverse RL)

一般的強化學習是:給定獎勵函數,找出最佳策略。逆向強化學習反過來:觀察專家的行為,推斷出它背後的獎勵函數。

白話來說:你看一個老司機開車,推斷出他心裡的「評分標準」是什麼(安全第一?還是省時間優先?兩者怎麼平衡?),然後用推斷出的評分標準來訓練自動駕駛。

這在很多場景中很有用,因為設計獎勵函數往往比示範行為更困難。你可能不知道怎麼用數學描述「好的駕駛行為」,但你可以讓老司機開幾個小時的車,然後讓 AI 自己推斷。

離線強化學習(Offline RL)

傳統的強化學習需要 Agent 和環境持續互動(Online RL)。離線強化學習只用已經收集好的資料來訓練,不需要額外的環境互動。

這在很多實際場景中很重要:醫療(不能讓 AI 在真實病人上試錯)、自動駕駛(不能讓 AI 在真實道路上隨意探索)、工業控制(設備損壞的成本高)。

做法是從歷史資料中學習策略,但不實際執行這些策略來收集新資料。挑戰在於:資料中可能沒有涵蓋所有可能的狀態-動作組合,模型需要在沒有見過的情境中做出合理的決策,這就是分佈偏移(Distribution Shift)的問題。

Conservative Q-Learning(CQL)是目前離線強化學習中比較成功的方法,它的核心思路是讓模型對資料中沒見過的動作給出較低的價值估計,避免在未知領域做出過度樂觀的決策。

獎勵塑造(Reward Shaping)

獎勵函數的設計是強化學習中最關鍵也最容易出錯的環節。

稀疏獎勵問題:很多任務只在最後才有獎勵。棋類遊戲在結束時才知道輸贏,中間的每一步都沒有直接的獎勵。模型需要透過幾百萬次嘗試才能偶然達到終點並得到第一次獎勵,這讓學習效率極低。

獎勵塑造的技巧:

中間獎勵(Intermediate Rewards)。把最終目標拆解成小目標,完成每個小目標都給獎勵。例如迷宮遊戲中,靠近終點就給小獎勵,不用等到到達終點才有回饋。

勢能函數(Potential-based Shaping)。基於狀態的某個特徵設計額外獎勵。數學上可以證明,用勢能函數做獎勵塑造不會改變最佳策略。

好奇心驅動(Curiosity-driven)。給 Agent 一個「好奇心」獎勵,當它到達從未見過的狀態時就得到獎勵。這鼓勵探索而不依賴外在的任務獎勵。

示範引導(Demonstration-guided)。用專家的示範資料來初始化策略或提供額外獎勵。Agent 做出和專家類似的動作時得到獎勵。

課程學習(Curriculum Learning)

讓 Agent 從簡單的任務開始學,逐漸增加難度。就像人類的教育系統一樣:先學加減法,再學乘除法,最後學微積分。

在強化學習中,這可以是:先在簡單的環境中訓練(小迷宮→大迷宮),然後把簡單環境學到的策略遷移到複雜環境中繼續訓練。或者先給密集的獎勵(每一步都有回饋),然後逐漸轉換成稀疏的獎勵(只在完成任務時有回饋)。

自動課程學習(Automatic Curriculum)更進一步:讓系統自動調整任務的難度,不需要人工設計課程。如果 Agent 在某個難度上的成功率太高,就自動增加難度;太低就降低難度。

開發工具與框架

Gymnasium(原 OpenAI Gym)。強化學習環境的標準介面。提供了大量預建的環境(CartPole、MountainCar、Atari 遊戲等)。所有環境都遵循統一的 API:reset() 重置環境、step(action) 執行動作並回傳新狀態和獎勵。如果你要入門強化學習,第一步就是安裝 Gymnasium 跑幾個範例。免費開源。

Stable Baselines3。基於 PyTorch 的強化學習演算法庫。提供了 PPO、SAC、TD3、DQN、A2C 等常用演算法的標準實作。API 設計簡潔:三行程式碼就能開始訓練。有詳細的文件和教學。適合不想從頭寫演算法的開發者和研究者。免費開源。

用 Stable Baselines3 訓練一個 CartPole Agent 只需要:

from stable_baselines3 import PPO
import gymnasium as gym

env = gym.make("CartPole-v1")
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=50000)

RLlib(Ray)。分散式強化學習框架。適合需要在多台機器上平行訓練的場景。支援多智能體強化學習。和 Ray 的分散式運算框架整合。適合需要大規模訓練的研究和產品團隊。免費開源。

CleanRL。極簡的強化學習實作集合。每個演算法只有一個獨立的檔案,沒有複雜的抽象層。適合想理解演算法底層實作的學習者。免費開源。

強化學習在 LLM 中的應用

ChatGPT 和 Claude 的訓練都用了強化學習。具體來說是 RLHF(Reinforcement Learning from Human Feedback):

語言模型生成回答→人類評估回答品質→用評估結果訓練獎勵模型→用獎勵模型作為回饋信號,透過 PPO 演算法優化語言模型。

在這個框架中:Agent 是語言模型,環境是對話情境,動作是生成的每一個 token,獎勵來自獎勵模型的評分。

這讓語言模型從「能生成流暢文字」進步到「能生成有幫助、安全、符合人類偏好的回答」。

除了 RLHF,強化學習也被用在推理模型(Reasoning Models)中。OpenAI 的 o1/o3 模型用強化學習來訓練模型的推理能力——獎勵不是來自人類偏好,而是來自推理結果的正確性(例如數學題答對了就給正獎勵)。

實作時常見的錯誤

獎勵函數設計不當。這是最常見也最致命的錯誤。經典案例:訓練 AI 玩賽艇遊戲,獎勵是「收集加速道具的分數」,結果 AI 學會不斷繞圈收集道具而不是完成比賽。另一個案例:訓練清潔機器人,獎勵是「看不到垃圾」,結果機器人學會閉上眼睛。設計獎勵函數時要反覆問自己:模型有沒有可能用不是你想要的方式來最大化這個獎勵?

超參數調不好。強化學習對超參數非常敏感。學習率太大→訓練不穩定,太小→學不到東西。折扣因子太大→Agent 過度重視遠期回報導致收斂慢,太小→只看眼前利益。建議從 PPO 的預設參數開始,逐一調整。

沒有做足夠的環境驗證。在把 Agent 部署到真實環境之前,沒有在多種不同的測試情境下評估。Agent 可能在訓練環境中表現完美,但遇到一個訓練時沒見過的情境就完全失敗。

不理解 Sim-to-Real Gap。在模擬環境中訓練的策略,直接遷移到真實環境通常效果很差。需要使用領域隨機化(Domain Randomization,在訓練時隨機改變模擬環境的物理參數)等技術來提高遷移的穩健性。

訓練時間預估不足。強化學習的訓練時間通常比監督式學習長得多。一個看起來簡單的任務(如讓機器手臂抓東西)可能需要幾百萬步的互動才能學會。用分散式訓練可以加速,但也增加了工程複雜度。

安全與限制

獎勵函數設計是核心難題。如果獎勵函數設計不當,Agent 可能找到「技術上滿足獎勵但實際上不符合意圖」的策略。在 RLHF 中,這個問題表現為 Reward Hacking——模型找到投機取巧的方式來「騙」獎勵模型的高分。

樣本效率低。強化學習通常需要大量的嘗試才能學到好的策略。AlphaGo 自我對弈了幾百萬盤棋,Atari 遊戲訓練了上億個遊戲幀。在真實世界中(如機器人),每次嘗試都有時間和安全成本,這是一個嚴重的瓶頸。

Sim-to-Real Gap。在模擬環境中訓練的策略,遷移到真實環境時效果會下降,因為模擬無法完美復刻真實世界的物理特性和噪聲。

安全性。在學習過程中,Agent 可能做出危險的動作。例如自動駕駛的 Agent 在探索階段可能闖紅燈。如何在保證安全的前提下進行探索,是一個活躍的研究方向。Safe Reinforcement Learning 這個子領域專門研究在有安全約束的環境中學習。

強化學習的決策過程不透明。訓練好的策略通常是一個黑盒子,難以解釋為什麼在某個狀態下選擇了某個動作。在需要可解釋性的應用場景(如醫療決策、金融交易)中,這是一個限制。

非穩態環境的挑戰。真實世界的環境會隨時間改變(市場條件變化、使用者行為變化、法規更新),但訓練好的策略是針對訓練時的環境優化的。持續學習(Continual Learning)是解決這個問題的方向,但目前還不成熟。

常見問題

強化學習和監督式學習有什麼不同?

監督式學習有「正確答案」——模型從標註資料中學習。強化學習沒有正確答案——模型透過試錯和獎勵自己摸索出策略。打個比方:監督式學習像有標準答案的考試,強化學習像在真實世界中透過經驗學習。另一個關鍵差異是:監督式學習的每筆資料是獨立的,強化學習的決策是連續的(當前的動作會影響未來的狀態)。

AlphaGo 的技術可以用在商業場景嗎?

圍棋有明確的規則、明確的勝負判斷、可以快速模擬。多數商業場景不滿足這些條件——規則不齊全、獎勵難以量化、模擬環境不準確。但在推薦系統、定價策略、供應鏈優化、晶片設計、資料中心能源管理等相對結構化的問題上,強化學習已經有商業應用。關鍵判斷標準是:你的問題能不能定義一個明確的獎勵函數?環境能不能被模擬?

強化學習和 AI Agent 是什麼關係?

現在說的 AI Agent(如用 LLM 驅動的 Agent)主要依靠 LLM 的推理能力加上工具使用,不一定用到傳統的強化學習演算法。但從理論框架上,Agent 和環境互動的過程就是一個強化學習的結構。未來更成熟的 AI Agent 可能會結合 LLM 的推理和強化學習的決策。目前已經有一些研究在探索這個方向(如 Voyager 用 LLM 作為策略模型玩 Minecraft)。

普通開發者需要學強化學習嗎?

如果是應用層開發(用 API 呼叫 AI 服務),通常不需要深入理解強化學習的演算法。但理解強化學習的基本概念(Agent、獎勵、策略)有助於理解 RLHF 和 AI 模型行為背後的原理。如果你想做遊戲 AI、機器人控制、推薦系統的底層開發,學強化學習是有價值的。入門推薦從 Stable Baselines3 和 Gymnasium 的教學開始。

為什麼強化學習在遊戲上很成功但在真實世界還不普及?

三個差異。模擬速度:遊戲一秒跑幾千盤,真實世界是真實時間。規則明確度:遊戲規則可以精確定義,真實世界的規則複雜且不明確。失敗成本:遊戲中死了可以重來,真實世界的失敗有真實代價(機器人摔壞、自動駕駛出事故)。

學強化學習推薦什麼資源?

入門教科書推薦 Sutton & Barto 的 Reinforcement Learning: An Introduction(有免費線上版)。實作推薦 Stable Baselines3 的官方教學和 CleanRL 的程式碼。進階推薦 OpenAI 的 Spinning Up in Deep RL。如果喜歡影片,David Silver 的 UCL 強化學習課程是經典入門。

強化學習和深度學習的關係是什麼?

強化學習是一種學習框架(定義了 Agent 如何在環境中學習最佳策略),深度學習是一種函數近似的方法(用神經網路來近似複雜的函數)。深度強化學習是把兩者結合:用深度神經網路來近似強化學習中的策略函數或價值函數。DQN 就是第一個成功的深度強化學習演算法。

強化學習可以用在台灣的哪些產業?

半導體製程優化(類似 Google 的晶片設計)、智慧交通號誌控制、製造業的生產排程、金融科技的動態定價、遊戲產業的 NPC AI 行為、電商的推薦系統優化。台灣的半導體和製造業特別適合,因為這些產業有大量可模擬的結構化問題。

相關文章

參考資料

  • Sutton & Barto, "Reinforcement Learning: An Introduction" (2018)
  • Silver et al., "Mastering the game of Go with deep neural networks and tree search" (AlphaGo, 2016)
  • Schulman et al., "Proximal Policy Optimization Algorithms" (PPO, 2017)
  • Mnih et al., "Playing Atari with Deep Reinforcement Learning" (DQN, 2013)
  • Mirhoseini et al., "A graph placement methodology for fast chip design" (Google, 2021)
  • Stable Baselines3 Documentation
  • Gymnasium Documentation