「隨機過程(stochastic process)」這個名字,第一次看到時其實不太直觀。「隨機」還算容易理解,但「過程」到底是什麼?而且有趣的是,我們熟悉的隨機變數的英文是 random variable,到了隨機過程卻變成 stochastic process。兩個「隨機」甚至用了不同的英文單字。(這主要是數學上的命名習慣,random和stochastic並不是兩種不同的隨機性。)理解隨機過程最重要的一句話是:

隨機過程是一族按照某種索引組織起來的隨機變數。

但如果只背這句話,通常還是不知道隨機過程到底在研究什麼。真正需要回答的是兩個問題:為什麼要把很多隨機變數組織在一起?組織起來之後,我們究竟要研究什麼?

在回答這兩個問題之前,先補上一點機率論與統計學中最基本的概念。

1. 從機率論開始

1.1 隨機試驗、事件與機率

考慮最經典的擲骰子問題。有一顆六面骰子,擲出去之後,結果可能是 1,2,3,4,5,61,2,3,4,5,6。在擲之前,我們不知道最後會出現哪一個結果,這就是一個隨機試驗(random experiment)

所有可能結果組成的集合稱為樣本空間(sample space),通常記成 Ω\Omega。在這個例子中,可以寫成 Ω=1,2,3,4,5,6\Omega={1,2,3,4,5,6}。如果我們關心「骰出的點數大於 3」,那麼對應的結果集合就是 A=4,5,6A={4,5,6},這個 AA 稱為一個事件(event)

機率則用來描述一個事件發生的可能性,通常寫成 P(A)P(A)。如果骰子是公平的,那麼 P(A)=P(X>3)=3/6=1/2P(A)=P(X>3)=3/6=1/2

所以可以先建立一個簡單的概念:

  • 隨機試驗:做一件結果不確定的事情;
  • 事件:我們關心的某一類結果;
  • 機率:描述這類結果有多可能發生。

當然機率有嚴格的數學定義,這裡討論的是古典概率,但是這種直觀的理解已經足夠我們往下看了。

1.2 隨機變數

擲骰子問題中,我們很關心的一個量就是每一次扔出來的結果,接下來定義 XX 表示骰出的點數,那麼 X1,2,3,4,5,6X\in{1,2,3,4,5,6}。這裡的 XX 就是一個隨機變數(random variable)

名字雖然叫「變數」,但更精確地說,隨機變數其實是一個函數。它把樣本空間中的結果 ω\omega 對應成某個數值,可以寫成 X:ΩRX:\Omega\rightarrow\mathbb{R},也就是 ωX(ω)\omega\mapsto X(\omega)

在骰子的例子中,不需要一開始就把這件事想得太抽象。可以先理解成:隨機試驗產生一個結果,而隨機變數把這個結果表示成我們真正想研究的數值。例如這一次骰出 4,就可以寫成 X(ω)=4X(\omega)=4

這裡需要特別區分三件事:XX 是隨機變數,4 是 XX 的一次實現值,而 X>3X>3 則是一個事件。因此「隨機變數」和「隨機事件」並不是同一件事。

1.3 機率分布與期望值

只知道 XX 可以取哪些值還不夠,我們通常還想知道每一個值出現的可能性有多大。這就需要機率分布(probability distribution)

對公平骰子而言,P(X=1)=P(X=2)==P(X=6)=1/6P(X=1)=P(X=2)=\cdots=P(X=6)=1/6。這整組機率共同描述了隨機變數 XX 的機率分布。

有了機率分布之後,可以進一步定義一個非常重要的量:期望值(expected value)。(直觀理解就是我幹一個事情很多次,平均得到的結果是什麼。)對離散隨機變數而言,期望值定義為:

E[X]=xxP(X=x)E[X]=\sum_x xP(X=x)

公平骰子的期望值為 E[X]=1×16+2×16++6×16=3.5E[X]=1\times\frac16+2\times\frac16+\cdots+6\times\frac16=3.5。當然,骰子永遠不可能真的骰出 3.5。期望值不是「下一次最可能出現的值」,而比較像是:如果相同的隨機試驗重複很多次,結果的平均值會逐漸靠近哪裡。這個概念之後會一直出現在隨機過程裡。例如我們會研究 E[Xt]E[X_t],也就是某一個時間點 tt 上這個隨機變數的平均行為。

1.4 機率論與統計學在做什麼

機率論和統計學關係非常密切,但兩者的方向有些不同。**機率論(probability theory)**通常是在已經知道一個隨機模型的前提下,研究它可能產生什麼結果。例如已知骰子是公平的,計算骰出大於 3 的機率。

**統計學(statistics)**則通常反過來:已經觀察到一些資料,希望從資料推測背後的機率模型。例如實際擲骰子 1000 次,發現點數 6 出現了 400 次,這時候就可能懷疑這顆骰子是否公平。

隨機過程主要建立在機率論之上,但在實際應用中,我們通常只能觀察到一條或幾條資料軌跡,因此最後又會回到統計推論。這也是為什麼「機率」和「統計」經常一起出現。

2. 從隨機變數到隨機過程

2.1 從一個隨機變數開始

回到骰子的例子。如果只擲一次骰子,可以用一個隨機變數 XX 描述結果。但現在假設我們連續擲 1000 次骰子,可以定義 X1,X2,,X1000X_1,X_2,\dots,X_{1000},其中 X1X_1 表示第一次的結果,X2X_2 表示第二次的結果,以此類推。

那麼 (X1,X2,,X1000)(X_1,X_2,\dots,X_{1000}) 就是一個 1000 維隨機向量(random vector)。某一次實際執行這個實驗,可能得到 (3,6,1,4,2,5,,1)(3,6,1,4,2,5,\dots,1)。這是一個具體的 1000 維向量,也是這個隨機向量的一次實現。

這裡可以把「連續擲 1000 次骰子」視為一次完整實驗。如果重新進行整個實驗,就可能得到另一組完全不同的結果。例如:

實驗X1X_1X2X_2X3X_3\cdotsX1000X_{1000}
1361\cdots1
2524\cdots2
3136\cdots3
4412\cdots1
\vdots\vdots\vdots\vdots\vdots
NN412\cdots1

這張表非常重要。直著看一欄,例如 X1X_1,看到的是「第一次擲骰子」這個隨機變數在不同實驗中的不同實現;橫著看一列,看到的是整個 1000 維隨機向量的一次實現。這也是理解隨機過程時最重要的兩個視角。

這裡可能會產生一個疑問:我原本只是想擲 1000 次骰子,為什麼現在又要把整個實驗重複 NN 次?

實際上不一定真的需要做 NN 次。這個想像主要是為了理解「隨機變數」的意義。即使現實中只做了一次實驗,在數學模型裡,我們仍然認為存在許多可能的實驗結果,而實際觀察到的只是其中一次。

2.2 從隨機向量到隨機過程

如果只有 (X1,X2,,X1000)(X_1,X_2,\dots,X_{1000}),把它稱為隨機向量完全沒有問題。例如在 VAE 中,latent variable zz 通常就是一個高維隨機向量。

但如果把索引繼續延伸成 X1,X2,X3,X_1,X_2,X_3,\dots,甚至允許索引連續變化,例如 Xt, t0X_t,\ t\geq0,這時候就不再只是普通的有限維隨機向量。因此數學上通常把它寫成 XttT{X_t}_{t\in T},其中 XtX_t 是一個隨機變數,tt 是索引,而 TT 是索引集合。

這就是隨機過程(stochastic process)最基本的形式。如果 T=0,1,2,T={0,1,2,\dots},稱為離散時間隨機過程(discrete-time stochastic process);如果 T=[0,)T=[0,\infty),則稱為連續時間隨機過程(continuous-time stochastic process)

因此可以先建立一個直觀的演進關係:

隨機變數 → 隨機向量 → 隨機過程

隨機過程可以看成隨機向量向「無限多個索引」或「連續索引」的推廣。但這只是一種直觀理解。隨機過程真正重要的地方,並不是它有很多隨機變數,而是這些隨機變數之間存在某種結構。

3. 索引、實驗與樣本路徑

3.1 索引不一定是時間

隨機過程通常寫成 XtX_t,所以下標經常使用 tt。原因很簡單:很多隨機過程描述的確實是某個系統隨時間的變化。

例如 XtX_t 可以表示第 tt 天的氣溫、時刻 tt 的股票價格、隨機漫步在第 tt 步的位置,或系統在第 tt 個模擬步驟的狀態。

tt 並不一定是物理時間。它也可以表示世代、迭代次數、取樣順序,或者其他具有順序或結構的索引。因此真正重要的不是「時間」這兩個字,而是:

這一族隨機變數之間存在一個有意義的索引結構。

3.2 隨機過程不是一條曲線

假設有一個隨機漫步,可以寫成 Xt+1=Xt+ϵt+1X_{t+1}=X_t+\epsilon_{t+1},其中 ϵt\epsilon_t 有一半的機率取 +1+1,另一半的機率取 1-1

X0=0X_0=0 出發,某一次可能得到 0 → 1 → 2 → 1 → 0 → -1 → 0 → ...,另一次可能得到 0 → -1 → 0 → 1 → 2 → 1 → 2 → ...

這兩條曲線都是這個隨機過程可能產生的結果,但它們都不是隨機過程本身。每一條實際產生的完整序列,稱為一次實現(realization),也稱為一條樣本路徑(sample path)。對前面的骰子例子來說,(3,6,1,4,,1)(3,6,1,4,\dots,1) 就是一條樣本路徑。因此可以說:

隨機過程描述的是所有可能的樣本路徑,以及這些路徑背後的機率規律。

這和隨機變數完全一樣。骰子這一次擲出 4,不代表隨機變數 XX 就是 4;同樣地,今天看到某支股票的一條價格曲線,也不代表這條曲線本身就是隨機過程。它只是這個隨機過程的一次實現。

3.3 固定時間與固定實驗

隨機過程更完整的寫法其實是 X(t,ω)X(t,\omega),其中 tt 是索引,而 ωΩ\omega\in\Omega 表示樣本空間中的一次基本結果。這個表示法看起來抽象,但其實就是前面那張表格的數學版本。

如果固定 t=t0t=t_0,讓 ω\omega 改變,那麼 X(t0,ω)X(t_0,\omega) 就是一個普通的隨機變數。它回答的是:固定某一個時間點,不同可能的實驗結果會得到什麼值?例如固定第 10 次擲骰子,研究 X10X_{10} 的機率分布。

另一方面,如果固定某一個 ω=ω0\omega=\omega_0,讓 tt 改變,那麼 X(t,ω0)X(t,\omega_0) 就是一條樣本路徑。它回答的是:固定某一次完整實驗,系統隨著索引如何變化?

因此可以記成:

固定 tt:得到隨機變數 | 固定 ω\omega:得到樣本路徑

這個視角非常重要。後面理解期望函數、自相關函數、高斯過程,甚至時間序列時,都會不斷用到它。

4. 從標量過程到隨機場

4.1 XtX_t 不一定是一個數

初學隨機過程時,XtX_t 經常表示氣溫、價格或一維位置,所以很容易產生一個錯覺:XtX_t 是不是一定要是一個純量?

其實不是。XtX_t 本身完全可以是一個向量。例如二維隨機漫步可以寫成 Xt=(xt,yt)X_t=(x_t,y_t),這時候每一個 XtX_t 都是一個二維隨機向量。如果研究一台車的運動狀態,也可以定義 Xt=(xt,vt,at)X_t=(x_t,v_t,a_t),分別表示位置、速度與加速度。

所以需要分清楚兩件事:tt 描述的是索引的結構,而 XtX_t 描述的是每個索引位置上的狀態。一個隨機過程完全可以是「一維時間索引 + 高維狀態」。

4.2 索引本身也可以變成高維

還可以繼續往前走一步。假設我們不是研究時間,而是研究一張影像,可以令 Xi,jX_{i,j} 表示影像位置 (i,j)(i,j) 上的畫素值。此時索引不再只有一個 tt,而是變成二維的 (i,j)(i,j)。這類具有多維索引的隨機物件通常稱為隨機場(random field)。(哈哈哈, 這裡的隨機又是random了。)

這裡可能又會出現一個問題:一張已經拍好的照片,每個畫素明明都是確定的,為什麼還要說它是隨機的?關鍵仍然在於「觀察之前」與「觀察之後」。已經拿到手上的某一張照片,當然是一個確定的影像;但如果我們建立的是一個「可能產生各種影像」的機率模型,那麼在影像真正被觀察之前,每個位置的畫素值都可以被視為隨機變數。另外,相機感光元件本身也會產生雜訊,因此即使對著相同場景重複拍攝,畫素值也可能有所差異。這類隨機性同樣可以利用隨機變數來描述。

如果是 RGB 彩色影像,可以進一步寫成 Xi,j,cX_{i,j,c},其中 cc 表示色彩通道。如果再加入影片的時間維度,可以寫成 Xt,i,j,cX_{t,i,j,c},其中 t,i,j,ct,i,j,c 分別表示時間、垂直位置、水平位置與色彩通道。

因此可以得到一個更統一的觀點:

物件表示索引結構
隨機變數XX無額外索引
隨機過程XtX_t一維索引
二維隨機場Xi,jX_{i,j}二維索引
高維隨機場Xt,i,j,cX_{t,i,j,c}多維索引

它們背後其實是同一個想法:

利用索引集合,組織一族彼此具有聯合機率結構的隨機變數。

5. 隨機過程真正研究的是什麼

這裡會產生一個很自然的問題:如果隨機過程只是一大堆隨機變數,為什麼還需要專門發展一整套理論?

原因是,我們真正感興趣的通常不是每個 XtX_t 單獨是什麼分布,而是不同時間點的隨機變數之間有什麼關係

例如,假設我們已經知道每一天的氣溫都近似服從某個分布,這還遠遠不夠。我們還想知道:今天比較熱,明天是不是也比較可能偏熱?XtX_tXt+1X_{t+1} 之間有多強的相關性?已經知道 XtX_t 之後,Xt1X_{t-1} 是否還能提供額外資訊?Xt+hXtX_{t+h}-X_t 的分布是否只和 hh 有關?兩個時間點距離越遠,相關性會不會逐漸降低?過程的平均值 E[Xt]E[X_t] 是否隨時間改變?

所以隨機過程並不要求 X1,X2,X3,X_1,X_2,X_3,\dots 彼此獨立,也不要求它們具有完全相同的機率分布。它們可能獨立,也可能高度相關;可能每個時間點都有相同的分布,也可能隨時間不斷改變。

例如,如果每次擲骰子的結果彼此獨立,那麼 XtX_tXt+1X_{t+1} 沒有依賴關係。但股票價格顯然不是這樣,今天的價格通常和昨天的價格有很強的關係。氣溫也是如此,今天是 30°C,明天突然變成 -20°C 的可能性通常很低。

所以隨機過程真正關心的是:

這一族隨機變數的聯合分布,以及它們之間的依賴結構。

這也是「把很多隨機變數放在一起」真正有意義的地方。

6. 小結

隨機過程最基本的數學形式是 XttT{X_t}_{t\in T},其中每一個 XtX_t 都是一個隨機變數,而 TT 是索引集合。

如果只記住一個最核心的直覺,可以記成:

隨機過程 = 一族按照某種索引組織起來的隨機變數。

但還要記住另一件更重要的事。實際觀察到的 x0,x1,x2,x_0,x_1,x_2,\dots,只是隨機過程的一條樣本路徑;隨機過程本身描述的是所有可能的樣本路徑,以及它們背後的機率規律。

從隨機變數繼續往外擴充,可以形成:

隨機變數 → 隨機向量 → 隨機過程 → 隨機場

真正讓隨機過程值得被獨立研究的,並不是「隨機變數的數量變多」,而是不同 XtX_t 之間存在怎樣的聯合分布與依賴關係。

這也自然帶出下一個問題:假設我們已經知道每一個 XtX_t 自己的機率分布,例如知道 P(Xt=x)P(X_t=x),是不是就等於已經知道整個隨機過程?

答案是否定的。知道每一個時間點各自的分布,並不能告訴我們不同時間點之間如何一起變化。

因此,接下來真正需要討論的是聯合分布、期望值、變異數、共變異數、自相關,以及隨機變數之間的依賴關係。這些概念才是從「一群隨機變數」真正走向「隨機過程」的關鍵。