搜尋課程與筆記

搜尋筆記

輸入主題、關鍵字或單元編號,例如 Flow Matching、U4。

    按 Esc 關閉 · ⌘ / Ctrl K 開啟搜尋

    M4.0 11 分鐘閱讀 2026年10月

    M4.0 明天的天氣只看今天:Markov Chain 與 Transition Matrix

    從一份氣象紀錄開始

    你手上有一個城市過去幾年的天氣紀錄,每天只記「晴」或「雨」。翻過幾頁之後你發現一個規律:晴天的隔天有八成還是晴天;雨天的隔天有四成會放晴。 沒有別的訊息——前天、上週、季節都先不看。

    先把這當成一個模型:明天只依賴今天,而且規則每天相同。今天是晴天,想知道:

    1. 接下來三天都是晴天的機率大概多少?
    2. 一百天之後那一天是晴天的機率大概多少?——它還跟「今天是晴天」有關嗎?

    第一題可以沿著「晴、晴、晴」這條路相乘。第二題卻不能只乘 0.80.8:中間可能下雨、再放晴,有很多條路會抵達第 100 天的晴天。要怎麼把所有可能的中間狀態一起算進來? 一張轉移表加上 distribution,就能把這些路逐步加總。

    課堂提問Q1

    先不急著算。把「晴天的隔天八成晴、雨天的隔天四成晴」翻成數學:這裡的隨機變數是什麼?我們要算的量又是什麼?「只看今天」這個假設在數學上要怎麼寫?

    先想一想,再展開看整理後的答案

    最直覺的說法是「隨機變數是天氣」,這是對的但不夠精確——每一天各有一個。令 Xn∈{S,R}X_n\in\{\text{S},\text{R}\} 是第 nn 天的天氣(S 晴、R 雨),n=0n=0 是今天。一整串 X0,X1,X2,…X_0,X_1,X_2,\dots 是一個 stochastic process(隨時間演進的一串隨機變數)。

    「只看今天」寫成一條關於 conditional probability 的等式:

    Pr⁡(Xn+1=y∣Xn=x, Xn−1,…,X0)=Pr⁡(Xn+1=y∣Xn=x).\Pr(X_{n+1}=y\mid X_n=x,\ X_{n-1},\dots,X_0)=\Pr(X_{n+1}=y\mid X_n=x).

    給了今天,再多給過去任何資訊都不改變明天的分佈。這叫 Markov property。紀錄裡那兩個數字則是另一個假設:Pr⁡(Xn+1=y∣Xn=x)\Pr(X_{n+1}=y\mid X_n=x) 不隨 nn 變(time-homogeneous,規則每天一樣)。

    我們要算的量有兩個:第一題是一個聯合事件的機率 Pr⁡(X1=X2=X3=S∣X0=S)\Pr(X_1=X_2=X_3=\text{S}\mid X_0=\text{S});第二題是一個邊際分佈 Pr⁡(X100=S∣X0=S)\Pr(X_{100}=\text{S}\mid X_0=\text{S})。兩個都只由那兩個數字決定——這正是 Markov property 的威力:整個過程的所有機率,都由「一步的規則」生出來。

    先抓住這個畫面

    想像一顆棋子在兩個格子之間跳。每一天它擲一次骰子決定要不要換格子:站在「晴」格時,八成留下、兩成跳到「雨」格;站在「雨」格時,六成留下、四成跳回「晴」格。棋子沒有記憶——它不知道自己在這一格已經待了幾天,每天擲的骰子都一樣。

    現在不放一顆棋子,放一千顆,全部從「晴」格出發。第一天結束後約八百顆留在「晴」、兩百顆到了「雨」。第二天,「晴」格裡的八百顆有八成留下(640),「雨」格裡的兩百顆有四成回來(80),所以「晴」格有 720 顆。第三天再算一次……你會看到「晴」格的數量往某個值靠過去,然後不再動。那個不再動的分配,就是這一篇要找的東西。 而「往它靠過去」的速度,決定了「一百天後跟今天有沒有關係」。

    一千顆棋子在兩個格子之間跳

    圖:反覆套用同一個 transition matrix 會忘掉起點,並靠向流量平衡的 stationary distribution。

    把畫面寫成矩陣

    把「一步的規則」排成一張表,列是今天、欄是明天:

    P=(P(S,S)P(S,R)P(R,S)P(R,R))=(0.80.20.40.6),P(x,y)=Pr⁡(Xn+1=y∣Xn=x).P=\begin{pmatrix} P(\text{S},\text{S}) & P(\text{S},\text{R})\\ P(\text{R},\text{S}) & P(\text{R},\text{R})\end{pmatrix} =\begin{pmatrix}0.8&0.2\\0.4&0.6\end{pmatrix},\qquad P(x,y)=\Pr(X_{n+1}=y\mid X_n=x).

    這叫 transition matrix。它每一列的和都是 1(今天是 xx,明天總得在某一格),元素都非負;符合這兩個條件的矩陣叫 stochastic matrix。

    把「今天的分佈」寫成列向量 p0=(Pr⁡(X0=S),Pr⁡(X0=R))p_0=(\Pr(X_0=\text{S}),\Pr(X_0=\text{R}))。明天的分佈是

    p1(y)=∑xp0(x) P(x,y)⟺p1=p0P.p_1(y)=\sum_x p_0(x)\,P(x,y)\quad\Longleftrightarrow\quad p_1=p_0P .

    這一行是 law of total probability:明天在 yy,要嘛今天在 S 然後跳到 yy,要嘛今天在 R 然後跳到 yy。再走一天就是再乘一次,所以

    pn=p0Pn.p_n=p_0P^n .

    矩陣乘法就是「把一步的規則連續套 nn 次」。 兩步的轉移 P2(x,y)=∑zP(x,z)P(z,y)P^2(x,y)=\sum_z P(x,z)P(z,y) 是「先到某個中繼 zz、再到 yy」對所有 zz 加總,這叫 Chapman–Kolmogorov 等式,它只是矩陣乘法的定義。

    第一題現在是三個條件機率相乘(Markov property 讓每一步只看前一步):

    Pr⁡(X1=X2=X3=S∣X0=S)=P(S,S)3=0.83=0.512.\Pr(X_1=X_2=X_3=\text{S}\mid X_0=\text{S})=P(\text{S},\text{S})^3=0.8^3=0.512 .

    直覺答案對了,而且現在知道它為什麼對:三個 0.80.8 能直接相乘,靠的正是 Markov property;如果「連晴兩天後第三天更容易下雨」,這條就不成立。

    不再動的分配

    一個分佈 π\pi 如果滿足

    πP=π,∑xπ(x)=1,\pi P=\pi,\qquad \sum_x\pi(x)=1,

    就叫 stationary distribution:今天的分配是 π\pi,明天還是 π\pi。用 2 狀態手算,πP=π\pi P=\pi 的第一個分量是 0.8πS+0.4πR=πS0.8\pi_\text{S}+0.4\pi_\text{R}=\pi_\text{S},整理成 0.2 πS=0.4 πR0.2\,\pi_\text{S}=0.4\,\pi_\text{R}。讀法:每天從 S 流出的量等於從 R 流回的量(流量平衡)。加上 πS+πR=1\pi_\text{S}+\pi_\text{R}=1 得

    π=(23,13).\pi=\Big(\tfrac23,\tfrac13\Big).

    一般地,π\pi 是 eigenvalue 11 對應的非負、總和為 1 的左 eigenvector。有限 stochastic matrix 至少有一個這樣的 distribution;不只是找到任意 eigenvector 就可以當機率。若任兩狀態互相到得了(irreducible),它才唯一。

    多快忘掉今天

    第二題問的是 p100p_{100}。用 π\pi 把 pn(S)p_n(\text{S}) 分解成「極限」加「離極限的差」。令 dn=pn(S)−23d_n=p_n(\text{S})-\tfrac23。從 pn+1(S)=0.8 pn(S)+0.4 (1−pn(S))=0.4 pn(S)+0.4p_{n+1}(\text{S})=0.8\,p_n(\text{S})+0.4\,(1-p_n(\text{S}))=0.4\,p_n(\text{S})+0.4 可得

    dn+1=0.4 dn⟹pn(S)=23+(p0(S)−23) 0.4 n.d_{n+1}=0.4\,d_n\quad\Longrightarrow\quad p_n(\text{S})=\tfrac23+\Big(p_0(\text{S})-\tfrac23\Big)\,0.4^{\,n}.

    (驗算:p0(S)=1p_0(\text{S})=1 時 p1(S)=23+13⋅0.4=0.8p_1(\text{S})=\tfrac23+\tfrac13\cdot0.4=0.8,正確。)那個 0.4=0.8+0.6−10.4=0.8+0.6-1 是 PP 的第二個 eigenvalue λ2\lambda_2。今天的影響每天縮成 0.40.4 倍:五天後剩 0.45≈1%0.4^5\approx1\%,一百天後是 0.4100≈10−400.4^{100}\approx10^{-40},什麼都不剩。

    所以第二題的答案是 23≈0.667\tfrac23\approx0.667,跟今天是晴是雨無關。「各半」錯在忽略了規則不對稱(晴天比雨天黏);「八成」錯在把「一天的規則」當成「長期的比例」——晴天雖然八成留下,但一旦掉進雨天要花幾天才回來,長期比例是兩種黏性相對強弱的結果,πS/πR=P(R,S)/P(S,R)=0.4/0.2=2\pi_\text{S}/\pi_\text{R}=P(\text{R},\text{S})/P(\text{S},\text{R})=0.4/0.2=2。

    展開細節一般的收斂敘述:Perron–Frobenius 給的三件事

    有限狀態、irreducible 且 aperiodic 的 chain 有唯一的 π\pi,而且任意 p0Pnp_0P^n 都收斂到它 [1, 3]。本篇兩狀態例子的差距精確乘上 0.4n0.4^n;一般矩陣若有非平凡 Jordan block,還可能多出 polynomial factor,不能一律寫成 C∣λ2∣nC|\lambda_2|^n。若其他 eigenvalues 的最大 modulus 是 r<1r<1,對任意 r<ρ<1r<\rho<1,可用 CρρnC_\rho\rho^n 作幾何上界。可對角化、特別是 reversible 的情況,才有更直接的 spectral bound。

    另外,π\pi 還有一個「時間平均」的意義:一條單一軌跡裡,晴天所佔的天數比例以機率 1 收斂到 πS\pi_\text{S}(ergodic theorem)。這是為什麼「一千顆棋子的分配」與「看一條紀錄很多年」會給同一個 23\tfrac23。

    回頭看那兩個直覺

    在這個固定轉移表下,連續三天晴的機率是 0.5120.512;從晴天出發,第 100 天晴的機率則是 2/3+(1/3)0.41002/3+(1/3)0.4^{100}。它極接近 2/32/3,但有限時間不是真的完全與初始狀態無關。長期比例由流量平衡決定,接近它的速度才由剩下的 eigenvalue 控制。

    若轉移表隨季節改變,就要用各時刻的 PnP_n,不能直接用固定 P 的結論;它們仍可能剛好共享同一個 stationary distribution。若規則依賴更長的歷史,也要把足夠的歷史納入狀態。最後,irreducible chain 若有週期,從一般初始分布出發未必收斂:例如每天晴雨互換,從全晴開始就永遠交替;從 π=(1/2,1/2)\pi=(1/2,1/2) 開始卻仍保持 π\pi。

    動手跑一次

    理論預測有三個數字可以對:0.5120.512、23\tfrac23、以及「dnd_n 每天縮 0.40.4 倍」。用十行程式驗證,然後刻意違反一個假設。

    import numpy as np
    rng = np.random.default_rng(0)
    P = np.array([[0.8, 0.2], [0.4, 0.6]])          # 0 = S, 1 = R
    N, x = 200_000, 0                                # 今天晴
    path = np.empty(N, dtype=int)
    for n in range(N):
        x = rng.choice(2, p=P[x]); path[n] = x
    print("長期晴天比例", (path == 0).mean())         # ≈ 0.667
    p = np.array([1.0, 0.0])
    for n in range(1, 6):
        p = p @ P; print(n, p[0], p[0] - 2/3)          # 差每天 ×0.4
    # 違反 Markov:連晴兩天後轉雨機率升到 0.5(二階規則)

    檢查理解

    想一想

    假設頁面點擊是一條有限、irreducible 的 homogeneous Markov chain。想知道長期的點擊次數比例,該用什麼工具?

    想一想

    把天氣的 transition matrix 換成 P=(0110)P=\begin{pmatrix}0&1\\1&0\end{pmatrix},並從 p0=(1,0)p_0=(1,0) 開始。下列哪個敘述正確?

    想一想

    紀錄顯示「連晴三天後,下一天下雨的機率會從 0.2 升到 0.5」。只知道今天晴,不知道已經連晴幾天,還能直接使用原來的兩狀態模型嗎?

    參考文獻

    1. Norris, J. R. Markov Chains. Cambridge University Press, 1997.(第 1 章:離散時間 chain、transition matrix、stationary distribution 與收斂定理。)
    2. Grimmett, G., Stirzaker, D. Probability and Random Processes, 3rd ed. Oxford University Press, 2001.(第 6 章 Markov chains。)
    3. Levin, D. A., Peres, Y. Markov Chains and Mixing Times, 2nd ed. AMS, 2017.(第 4 章:收斂速度與 λ2\lambda_2。)