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

首達時間、可逆性與連續時間

你已經知道一條鏈長期會落腳何處;現在要問的是:抵達那裡要花多久、它的平穩分布何時藏著一種深層的對稱性,以及當時鐘不再以固定步伐滴答、而是連續流動時,又有什麼改變。

要多久才抵達?首達時間

第 4 篇用平穩分布回答了「鏈長期把時間花在哪裡?」這一篇要回答的,則是一個不同而非常貼近人心的問題:某件事何時發生?固定一個目標狀態集合 A——也許是某個單一的吸收狀態,也許是「佇列空了」。首達時間 T_A 是鏈第一次落入 A 的時刻:T_A = min{ n >= 0 : X_n 屬於 A }。它是一個隨機數,而它最有用的摘要就是其平均值,即[[mean-hitting-times|平均首達時間]] h_i = E[T_A given X_0 = i],也就是從狀態 i 出發、抵達 A 所需的期望步數。

計算 h_i 的訣竅,就是貫穿整個階段的那個「一步條件化」。如果你已經在 A 裡,就已抵達,所以 h_i = 0。否則你必須先走一步(代價為 1),然後從落腳之處面對同樣的問題。用轉移矩陣對這第一步做條件化:h_i = 1 + sum over j of p_ij times h_j。這是一個小型線性方程組——A 以外每個狀態一條方程式——解開它就一次得到所有平均首達時間。對應到吸收機率(你會打中哪個目標,而非要花多久)的想法,則建立一個幾乎相同、只是把前頭那個 1 拿掉的方程組。

Birth-death walk on {0,1,2,3,4}, 0 and 4 absorbing,
p = step right, q = 1-p step left (gambler's ruin).

  h_i = expected steps to hit {0 or 4} from i

  h_0 = 0
  h_1 = 1 + q*h_0 + p*h_2
  h_2 = 1 + q*h_1 + p*h_3
  h_3 = 1 + q*h_2 + p*h_4
  h_4 = 0

With p = q = 1/2:  h_1 = 3,  h_2 = 4,  h_3 = 3
一步條件化把平均首達時間化為一個小小的線性方程組。在公平(p = 1/2)的漫步裡,從正中間出發耗時最久,恰如你的直覺所料。

像上面 0 和 4 這樣的狀態——一旦進入就永不離開,因為 p_ii = 1——稱為[[absorbing-markov-chain|吸收狀態]],而當每個狀態最終都能到達某個吸收狀態時,這條鏈就是吸收鏈。這正是你在隨機漫步那一階段見過的[[gamblers-ruin|賭徒破產]]問題背後的結構:一位帶著 i 元的賭徒朝 0(破產)或 N(莊家)走去,同一組方程式同時給出每種結局的機率,以及下注次數的期望值。首達時間與吸收機率,正是馬可夫鏈回答「有限旅程」問題的方式,而不只是回答永恆的平均。

可逆性:當一條鏈倒著看也一樣

現在來看一塊優美的結構,有些鏈有、有些沒有。讓一條鏈在它的平穩分布 pi 下向前運行,把它拍成影片,然後倒著播放。倒過來的序列本身仍是一條馬可夫鏈——但一般而言轉移規則不同。當倒帶影片在統計上與正放影片無從分辨時——也就是倒過來的鏈有著一模一樣的轉移機率——這條鏈就是可逆的。可逆性並非理所當然,它是一種特殊的對稱性,而且在自然界中既常見、又極為方便。

檢驗可逆性的乾淨判準,是[[detailed-balance|細緻平衡]]方程式:若對每一對狀態 i, j 都有 pi(i) p_ij = pi(j) p_ji,則分布 pi 與矩陣 P 處於細緻平衡。把它讀成一則「流」的陳述:長期而言,機率從 i 直接流向 j 的速率,等於從 j 直接流回 i 的速率——每一根雙向水管都是平衡的。對照平穩性條件 pi P = pi,後者只要求進入每個狀態的流入量等於它的總流出量。細緻平衡嚴格地更強:它平衡的是每一對,而不只是每個節點的帳本。

為什麼要在意?有兩個理由讓可逆性成為應用機率中被最充分利用的點子之一。第一,圖上的隨機漫步(跳到一個均勻隨機選取的鄰居)永遠是可逆的,且 pi(i) 正比於節點 i 的度數——這個事實你可以直接從細緻平衡讀出。第二,而且更為壯觀的是,整個馬可夫鏈蒙地卡羅領域是「反向」運作的:Metropolis-Hastings 演算法刻意設計一條鏈,使它對你想抽樣的目標分布滿足細緻平衡,於是這條鏈的平穩分布恰好就是那個目標。可逆性在這裡不是奇聞,而是設計原則。

讓時鐘連續地走

至此所有討論都假設時鐘以整數步伐滴答:n = 0, 1, 2, ...。但許多真實系統並不等待滴答。一顆放射性原子在某個隨機瞬間衰變;一位顧客來的時候才來;一通電話在無法預測的時長後結束。為了刻畫這些,我們讓鏈在隨機的實數時刻跳躍,得到[[continuous-time-markov-chain|連續時間馬可夫鏈]]。狀態空間依然是離散的(仍是一份狀態清單),但時間如今成了一條連續的線。

這裡只有一樣新材料,而且是馬可夫性質本身逼出來的。鏈在跳走之前,會在一個狀態裡待多久?這個等待時間必須是無記憶的——如果未來只取決於當前狀態,那它就不能同時取決於你已經坐在那裡多久了。恰好只有一個連續分布具有這個性質:指數分布(它的無記憶性正是幾何分布的連續孿生兄弟)。所以每個狀態 i 都把鏈留住一段指數型的等待時間,然後它就跳往別處。每個狀態都有一個[[rate-intensity-parameter|速率]]參數;速率越高,意味著下一次跳躍前的期望停留時間越短。

於是一條連續時間鏈分解成兩個你已經懂的部件:一個決定何時跳的指數時鐘,以及一個決定往哪裡去的普通離散跳躍規則。取代轉移矩陣的記帳工具是生成元矩陣 Q:它的非對角元 q_ij(>= 0)是從 i 直接跳到 j 的速率,而每個對角元被設為該列其餘元之和的相反數,使得 Q 的每一列加總為 0。離散鏈用冪次 P^n 之處,連續鏈改用矩陣指數:時刻 t 的分布依 exp(Qt) 演化,正是反覆相乘在連續時間裡平滑的對應物。

連續時間裡的老朋友

最簡單的連續時間鏈只會往上數:0 -> 1 -> 2 -> ...,每一跳等待一段獨立的 Exponential(lambda) 時間。那就是你也許更早瞥見過的[[poisson-process|卜瓦松過程]]——「事件以穩定平均速率 lambda 隨機到來」的典範模型,從光子打到偵測器,到電子郵件落入收件匣。它的到達間隔時間恰恰就是那些無記憶的指數型等待,這正是卜瓦松過程與指數分布密不可分的原因。

若允許計數既能上升也能下降——出生是一個速率、死亡是另一個速率——你就得到一個[[birth-death-process|生滅過程]],也就是整數上隨機漫步在連續時間裡的表親。這單一個模板能刻畫族群大小、反應中的分子數目,以及最出名的——排隊的長度。一個單一伺服器、卜瓦松到達、指數型服務時間的佇列,就是 M/M/1 佇列,它的平穩分布與平均等待,都直接從生滅方程式掉出來。請注意上一節的回報:生滅鏈自動滿足細緻平衡(你只能經由狀態 n+1 才能從 n 到 n+2),所以它們的平穩分布從逐對平衡中掉出來,無需繁重的代數。

退一步,看看整個階段的弧線。你從一個假設出發——未來只取決於現在——建起了轉移矩陣;你把它相乘以做預測(查普曼–柯爾莫哥洛夫)、剖析它的結構以分類狀態、把它升冪以找出長期的平穩分布,而如今你能為旅程計時(首達時間)、看出一種隱藏的對稱性(可逆性),並讓時鐘平滑地流動(連續時間)。同一副骨架延伸得遠遠超出這一階段:進入排隊理論、族群遺傳學、訓練現代統計模型的演算法,以及在這道階梯頂端等候你的連續狀態布朗運動。