核心目標: 教會一個智能體(比如機器人、游戲AI、推薦系統)通過試錯和獎勵,學會在某個環境中完成特定任務的最佳策略。
核心角色:
- 智能體 (Agent): 學習者,比如玩游戲的小人、控制溫度的空調系統。
- 環境 (Environment): 智能體所處的世界,比如游戲關卡、房間、股票市場。
- 狀態 (State): 環境在某個時刻的快照,比如游戲畫面、房間的溫度濕度、股票的價格成交量。
- 動作 (Action): 智能體能做的事情,比如上下左右移動、調高溫度、買入賣出股票。
- 獎勵 (Reward): 環境給智能體動作的即時反饋,比如吃到金幣+1分、撞到墻-1分、房間達到舒適溫度+0.1、虧錢-10。
目標: 智能體要找到一個策略 (Policy),這個策略告訴它在每個狀態下該做什么動作,使得長期累積的獎勵總和最大化。就像玩游戲要通關得分最高,投資要長期收益最大。
強化學習三大分類:
當你在教一只狗狗學新動作(比如坐下)。
基于值的方法 (Value-Based Methods) - “算盤派”
- 核心思想: 不直接學“做什么動作”,而是學每個狀態或者每個“狀態-動作對”值多少錢(值)。值越高,說明這個狀態(或在這個狀態做這個動作)未來能拿到的總獎勵越多。
- 狀態值函數 V(s): 在這個狀態s下,按當前策略走下去,預期能拿到多少總獎勵。比如在游戲某個位置,V值高說明這是個好位置。
- 動作值函數 Q(s, a): 在狀態s下,做了動作a,然后按當前策略走下去,預期能拿到多少總獎勵。比如在游戲某個位置,Q(跳躍)值高說明這時跳起來很劃算。
- 怎么學?
- 智能體不斷嘗試(探索),觀察獎勵和狀態變化。
- 用觀察到的結果(實際獎勵 + 下一個狀態的價值估計)來更新當前狀態/動作的價值估計。這個更新規則基于貝爾曼方程,本質是說“當前位置的價值 ≈ 當前獎勵 + 打折后的下一個位置價值”。
- 最終策略: 學好了Q值表,最優策略就很簡單了:在狀態s下,選Q值最大的那個動作a! (貪婪策略)。
- 經典算法:
- Q-Learning: 最基礎也最重要!學Q表。特點是“離線學習”:更新Q值時,用“假設下一步選最優動作”的價值 (max Q),而不管自己實際下一步會做什么(可能探索時做了隨機動作)。
- SARSA: 也是學Q表。特點是“在線學習”:更新Q值時,用實際采取的下一步動作對應的Q值。更保守,跟著當前策略走。
- DQN (Deep Q-Network): 革命性算法! 當狀態太復雜(比如游戲畫面像素)無法用表格存Q值時,用一個神經網絡代替Q表!輸入狀態(如圖像),輸出每個動作的Q值。解決了高維狀態問題。關鍵技巧:經驗回放(記住過去的經驗隨機抽著學,打破相關性)、目標網絡(穩定學習目標)。
- DQN變種:
- Double DQN: 解決DQN容易高估Q值的問題(覺得啥動作都值錢),讓動作選擇(用主網絡)和價值評估(用目標網絡)分開。
- Dueling DQN: 把Q值拆成狀態值V(s)(這位置好不好)和動作優勢A(s,a)(在這個位置做這動作比平均水平好多少)。讓網絡更聚焦學狀態的好壞。
- 適合場景: 動作空間是離散的、有限的(比如游戲手柄的按鍵)。像下棋(動作有限)、經典游戲(上下左右開火)。
- 優點: 相對穩定。
- 缺點: 只能處理離散動作;找到最優策略依賴于價值函數估計得準不準。
基于策略的方法 (Policy-Based Methods) - “直覺派”
- 核心思想: 繞開“值”,直接學習策略本身! 用一個函數(比如神經網絡)表示策略,輸入狀態s,直接輸出動作a(確定性策略)或者輸出每個動作的概率(隨機性策略)。
- 怎么學?
- 目標就是讓策略函數輸出的動作序列能最大化長期累積獎勵的期望。
- 核心是策略梯度定理:它告訴你怎么調整策略函數的參數,才能讓期望累積獎勵增加。簡單說就是:如果某個動作(或動作方向)帶來了好結果(高獎勵),就增加以后選這個動作(或類似動作)的概率;反之減少。
- 經典算法:
- REINFORCE: 最基礎的策略梯度算法。跑完一整局游戲(一條完整軌跡),計算總獎勵,然后根據這個總獎勵來調整策略。缺點: 獎勵波動大(方差高),學得慢。
- Actor-Critic (演員-評論家): 結合了值和策略! 是主流方法。
- Actor (演員): 負責執行策略,輸出動作。
- Critic (評論家): 負責評價狀態或動作的價值(學一個值函數V(s)或Q(s,a))。
- 怎么協作? Critic 給 Actor 反饋:在狀態s下,Actor選擇的動作a到底有多好?這個反饋通常用優勢函數 A(s, a) = Q(s, a) - V(s) 表示(動作a比在s狀態下的平均動作好多少)。Actor就用這個優勢值來更新策略(增大帶來正優勢的動作概率,減小帶來負優勢的動作概率)。Critic則通過TD誤差等方法來學習更準的價值估計。
- A3C (Asynchronous Advantage Actor-Critic): 利用多線程異步更新,效率高。
- PPO (Proximal Policy Optimization): 目前最流行最實用的策略優化算法之一! 核心思想:更新策略時,步子別邁太大,避免新策略一下子變得和舊策略差太多導致性能崩盤。通過一個“裁剪”機制限制更新的幅度。優點: 穩定、效果好、相對容易調參。
- DDPG (Deep Deterministic Policy Gradient): 針對連續動作空間(比如方向盤轉多少度、電機輸出多少扭矩)設計的Actor-Critic算法。Actor輸出一個確定的連續動作值(不是概率)。需要加一些噪聲來探索。
- SAC (Soft Actor-Critic): 也是處理連續動作的先進算法。特色是引入了最大熵目標,不僅追求高獎勵,還鼓勵策略有一定的隨機性(熵高),這樣探索更充分,更容易找到全局最優解,也更魯棒。
- 適合場景: 動作空間是連續的(機器人控制、自動駕駛)或者即使是離散但策略本身很復雜需要直接建模。也常與Actor-Critic結合處理各種場景。
- 優點: 能直接處理連續動作;可以學習隨機策略(有時隨機探索很重要,比如石頭剪刀布)。
- 缺點: 訓練可能不太穩定;樣本效率有時相對較低(需要更多試錯);容易陷入局部最優。
基于模型的方法 (Model-Based Methods) - “預言家派”
- 核心思想: 智能體不光學怎么動,還要學環境是怎么運作的! 它試圖建立一個環境模型,這個模型能預測:在狀態s做動作a后,下一個狀態s’會是什么?能拿到多少獎勵r?
- 怎么用?
- 有了這個“世界模擬器”,智能體就可以在腦子里做計劃(Planning)!不用每次都去真實環境里撞墻試錯,可以在模型里模擬各種動作序列,看哪個序列預測的累積獎勵最高,然后去執行第一個動作。執行完,用真實結果更新模型,再繼續計劃。大大減少真實交互次數!
- 經典思路/算法:
- 動態規劃 (DP): 最理想情況,環境模型(狀態轉移和獎勵函數)完全已知且精確。直接用數學方法(迭代貝爾曼方程)就能算出最優策略和最優價值。現實問題很少這么完美。
- Dyna: 結合模型和無模型學習(如Q-Learning)。 智能體一邊在真實環境交互學習(更新Q值),一邊用這些交互數據學習環境模型。然后用學到的模型生成大量模擬數據,也用這些模擬數據來更新Q值。提高了樣本效率。
- MBPO (Model-Based Policy Optimization): 先用數據學環境模型,然后在學到的模型上跑基于策略的方法(如PPO) 來優化策略。模型會不斷用新數據更新。
- MPC (Model Predictive Control): 工業界常用! 每一步都做:
- 觀察當前狀態。
- 用模型預測未來有限幾步內不同動作序列的結果。
- 選擇預測累積獎勵最高的動作序列。
- 只執行這個序列的第一個動作。
- 下一步重復1-4。邊走邊看,靈活調整。
- 適合場景: 真實環境交互代價高昂、危險或緩慢(比如操控真實機器人、化學實驗、金融交易);或者環境本身是可精確建模/仿真的(比如一些棋類游戲、物理仿真器)。
- 優點: 樣本效率極高(省試錯次數);能進行前瞻性規劃;在仿真中訓練安全。
- 缺點: 模型很難學得準! 模型預測有誤差,基于錯誤模型學的策略在真實環境會失效(“基于幻覺做決策”);構建和利用模型本身有計算開銷。
對比:
特點 | 基于值 (Value-Based) | 基于策略 (Policy-Based) | 基于模型 (Model-Based) |
---|---|---|---|
核心 | 學值 (V/Q值) | 直接學策略 (Policy) | 學環境模型 (預測 s’ 和 r) |
輸出策略 | 間接 (選值最大的動作) | 直接 (輸出動作或概率) | 直接或間接 (在模型上規劃) |
動作空間 | 適合離散動作 | 離散和連續動作都行 | 離散和連續動作都行 |
穩定性 | 相對穩定 | 可能不穩定 (策略梯度) | 依賴模型精度 (模型不準策略就崩) |
樣本效率 | 中等 | 通常較低 (尤其REINFORCE) | 非常高 (能用模型模擬) |
規劃能力 | 無顯式規劃 | 無顯式規劃 | 有顯式規劃 (在模型里模擬未來) |
經典算法 | Q-Learning, SARSA, DQN及其變種 | REINFORCE, Actor-Critic, PPO, DDPG, SAC | Dyna, MBPO, MPC |
比喻 | 算盤派 (精打細算每個位置/動作值不值錢) | 直覺派 (憑感覺和經驗直接出招) | 預言家派 (先搞懂世界規則,再推演最優解) |
簡單選擇指南:
- 如果你的問題動作是離散的(按鍵選擇),狀態不太復雜,試試Q-Learning/DQN。
- 如果你的問題動作是連續的(控制機械臂、開車),或者需要隨機策略,首選PPO、SAC這類策略梯度/Actor-Critic方法。
- 如果你有精確的環境模型或者交互代價極高(真機器人、高風險),或者能在好的仿真器里訓練,基于模型的方法 (MBPO, MPC) 是首選,效率極高。
- Actor-Critic (PPO, SAC) 是當前非常通用和強大的主流選擇。