從一個循環到一個問題陳述
在上一篇指南裡,你認識了智能體—環境循環:觀察、行動、承受後果、再觀察,循環往復。這個循環很生動,但它還不是你能拿來計算的東西。它告訴你強化學習的*節奏*,卻沒說清智能體究竟在哪些選項之間挑選,也沒說「好」到底是什麼意思。馬可夫決策過程(MDP)正是從那個直覺性的循環,通往一份正式問題陳述的橋樑——本階梯裡每一個強化學習演算法,真正運作其上的,就是它。
把 MDP 想成一本用數學寫就的棋類規則書。西洋棋有一張棋盤、合法的走法、一條「每步之後棋盤變成什麼樣」的規則,還有一種取勝的方式。MDP 為*任何*帶不確定性的決策問題,精確地捕捉下這同一種結構。一旦掃地機器人、西洋棋引擎或投資組合經理被寫成 MDP,它們就都成了同一類物件——同一批演算法便能拿來啃它們。這種普適性,正是這個框架之所以重要的全部緣由。
五樣配料
MDP 把五樣東西釘死。狀態是智能體可能身處的種種情形——一種棋盤擺布、機器人的位置與感測器讀數、蛇梯棋上的一個個格子。動作是每個狀態下可用的走法——左轉、馬走 f3、買進或賣出。轉移是「一個動作之後接下來是哪個狀態」的規則,這裡藏著第一處微妙:這條規則可以是*隨機*的。擲一顆骰子,你可能落在六個格子中的任何一個。轉移不是「接下來是狀態 B」,而是「以六分之一的機率到狀態 B」。
第四樣配料是[[reward|獎勵]]:環境在每步之後遞回的一個數字,說明那一步在*當下*有多好。清掃一塊新地板+1,撞牆一次-1。獎勵不等於「贏」——它是局部的、即時的分數,而智能體的任務,是弄清這些小數字在一盤長局裡如何累加起來。第五樣配料,[[discount-factor|折扣因子]],恰恰管的就是這種累加,它值得單開一節來談。
馬可夫性:為何只有「當下」要緊
「馬可夫決策過程」裡的「馬可夫」,命名的是一個具體而承重的假設:下一個狀態只取決於*當前*的狀態與動作——而不取決於你一路如何走到這裡的全部歷史。在西洋棋裡,這是字面成立的。當前棋子的擺布,已足以告訴你選下一步所需的一切;棋子以何種順序到達此處,毫無分別。當下,是對過往的一份完整總結。
正是這個假設,讓數學變得可解。因為智能體永遠只需推敲「我現在在哪兒」,而不必推敲「曾經發生過的一切」,問題便保持在可控的規模,你將在接下來幾篇指南裡遇到的「價值與貝爾曼」機器,也才嚴絲合縫地各就各位。一旦丟掉馬可夫性,強化學習核心那個優雅的遞迴便會土崩瓦解。
回報:智能體真正在玩的那盤長局
一份獎勵,是單獨一步的分數。但智能體不在乎單獨一步——它在乎的是整條軌跡。它試圖最大化的那個總量,就是[[return-rl|回報]]:從現在直到終局所收集到的全部獎勵之和。正因如此,一個好的智能體會心甘情願地承受眼下一份*負*獎勵——棄一個子、花一筆錢、繞一段遠路——只要它能在日後帶來多得多的獎勵。最大化回報,而非即時獎勵,正是「謀劃」與「貪婪」的分野。
但「全部獎勵之和」有個麻煩。在一個可以永遠跑下去的任務裡,這個和可能膨脹到無窮大,而無窮大在比較策略時毫無用處——每一種永不終結的策略,得分都一樣。折扣因子,通常寫作伽馬(γ),把這個問題解決了。一步之外的獎勵算足額;兩步之外的獎勵乘上 γ;三步之外,乘 γ 再乘 γ;如此類推,每延遲一步就縮水一分。由於 γ 落在 0 與 1 之間,即便是無盡的獎勵之流,也加總成一個有限的、可比較的數。
return = r0 + γ·r1 + γ²·r2 + γ³·r3 + ... γ = 0.9 , reward +100 ten steps away -> 100 · 0.9¹⁰ ≈ 35 (impatient) γ = 0.99, same +100 ten steps away -> 100 · 0.99¹⁰ ≈ 90 (far-sighted)
所以 γ 不只是一道數值上的安全閥——它設定智能體的*性格*。接近 0,智能體目光短淺,只抓眼前能立刻兌現的;接近 1(比如 0.99),它有耐性,肯為多步之後一份更大的獎勵,放棄眼下一份小的。而它是*你*選定的旋鈕,並非世界告訴你的:設得太低,智能體「看不見」一個遙遠的目標,於是永遠學不會抵達;設得太高,那些遙遠而不確定的總和,又會讓學習更嘈雜、更慢才安定下來。
把它拼起來,以及這個框架帶給你什麼
讓我們組裝一個微小而完整的 MDP——蛇梯棋——看那五塊怎樣咬合到一起。它差不多是 MDP 裡最乾淨的一種,因為沒有真正的決策要做;它把結構本身單獨凸顯了出來。
- 狀態:你的棋子所在的格子。你曾經走過哪裡無關緊要——只看你現在在哪裡。(這正是馬可夫性的具體化身。)
- 動作:擲骰子。(可做的動作只有一種——這正是它不涉及技巧的原因。)
- 轉移:骰子落在 1–6 之間(每個點數機率六分之一),你前進相應步數,隨後踩到的蛇把你滑下去、梯子把你抬上來。是隨機的,卻被完全規定了。
- 獎勵:走到最後一格的那一刻+1,其餘處處為 0。
- 折扣:γ 接近 1,因為早幾回合抵達終點,也只比晚些抵達略好一點。
問題這樣寫下來之後,一個精確的問題便可以提出了:從這個格子出發,我能期望的最佳回報是多少?那個數字——附在每個狀態上——就是價值函數,下一篇指南的主題;而把每個狀態的價值與它鄰居的價值連結起來的那條遞迴關係,就是貝爾曼方程。在問題成為一個 MDP 之前,這套機器一概用不上。這個框架並非官僚程序;它恰恰是讓「靠試錯學習」根本變得可計算的那樣東西。