M3.0 醉漢一小時後在哪:Random Walk 到 Brownian Motion
一條長街,一個喝醉的人
深夜,一條筆直的長街。一個喝醉的人站在路燈下,每一秒鐘隨機往左或往右踏一步,一步一公尺,左右各半、跟上一步完全無關。一小時後,他大概離路燈多遠?
先用直覺回答,並寫下你有多確定、依據是什麼。常見的答案分兩派。一派說「一小時 3600 步,左右抵消,所以大概就在路燈附近,幾公尺內」;另一派說「總會偏向一邊,可能走了幾百公尺」。兩派都說不出自己為什麼對——而正確答案(大約 60 公尺)夾在兩派中間,而且有一個乾淨的規律:距離隨時間的平方根長。為什麼是平方根?這個規律什麼時候會失效?
課堂提問Q1
翻成數學。「每秒隨機一步」是什麼隨機變數?「一小時後的位置」是什麼?「大概離多遠」該用哪個量來衡量——為什麼不能直接算「平均位置」?
先想一想,再展開看整理後的答案
課堂上第一個答案通常是「算平均位置」,然後發現平均位置是 0(左右對稱),這顯然不是「大概多遠」的意思——他不會一直站在路燈下。
寫清楚:第 秒的那一步是隨機變數 ,各半機率,且 彼此 independent(互不影響)。一小時後的位置是
是隨機變數,這個過程叫 random walk(隨機漫步)。「大概多遠」問的不是 (它是 0),而是 的散開程度:最方便的量是 variance ,它的平方根 ——均方根距離——才是「典型的離家距離」。
所以問題變成: 怎麼隨 長?
先看畫面:抵消的不是距離,是方向
想像把一小時的 3600 步分成兩段,各 1800 步。第一段走完他在某處,第二段從那裡重新開始。第二段有一半機率往回走、一半機率繼續往外——所以第二段平均而言既不把他帶遠、也不把他帶回。兩段合起來的距離,不是兩段距離相加(那是「一直往同一邊」才會有的事),也不是互相抵消(那是「第二段剛好反向」才會有的事),而是介於中間:像直角三角形的兩條邊,合起來的長度是平方和再開根號。
段這樣「互相垂直」的小位移疊起來,總長度是 倍的單步長度。3600 步的平方根是 60——這就是 60 公尺的來源。
寫成數學:variance 相加、極限、
定理。 若 independent、、,則 、。
證明(五行)。展開平方:
第二個等號用了 independence:;第三個等號用了 。交叉項全部消失——這就是「垂直的邊」的代數版本。
所以均方根距離是 ;醉漢 、,得 60 公尺。再加一個結論(中央極限定理,M1.0 那類 Gaussian 的加法): 的分佈在 大時趨近 ,不論單步的分佈是什麼,只要有限 variance。
取極限:Brownian motion。 現在把時間切細。每 秒走一步,走到時刻 需要 步。若步長維持 ,;要讓 時位置不退化(既不停在原地、也不爆到無限遠),必須讓 維持常數——步長必須是 的尺度,。這樣極限下的過程 有三個性質:
- ,;
- 增量獨立且平穩:對 ,,且與 之前的一切 independent;
- 軌跡 continuous。
這個極限叫 Brownian motion(或 Wiener process)[3]。性質 2 用一句話說就是:時間 內的位移是一個 ,。 這句話是下一篇模擬 SDE 的全部依據。
展開細節為什麼步長取 h 會讓一切消失、取常數會爆掉
步長 δ、步頻 1/h,走到時刻 t 的 variance 是 δ²·(t/h)。
- δ = h(步長與時間同尺度,像等速前進):variance = h·t → 0。極限是靜止不動——「隨機成分」在細分之下蒸發了。這也是為什麼把噪聲寫成「每步加 h·ε」是錯的。
- δ = 常數:variance = δ²t/h → ∞。爆掉。
- δ = √h:variance = t,有限且非零,且不依賴 h。只有這個尺度能活到極限。 順帶一提,√h 尺度意味著 Brownian motion 的軌跡處處連續但處處不可微:位移 √h 除以時間 h 是 1/√h → ∞。「速度」不存在,所以下一篇的 SDE 不能寫成 ẋ = …,只能寫成增量的形式 dx = …。
回到長街:兩派都錯,錯在同一個地方
「幾公尺內」那一派隱含的假設是「左右抵消得很乾淨」——那是期望值的行為,不是典型值的行為;期望值是 0,但典型偏差是 60。「幾百公尺」那一派隱含的假設是「會偏向一邊」——那要求步伐相關(走了一步左就更可能再走左),與題目的獨立假設矛盾。
理論的判斷是:獨立、有限 variance 的步伐,典型距離是 ,分佈接近 Gaussian。它依賴的假設就這兩個。而它們正是現實中會被違反的地方:真實的醉漢傾向沿著剛才的方向繼續走(步伐相關),這不會破壞 ,但會把係數放大——相鄰兩步相關係數 時,大 下 ; 給 公尺, 給約 260 公尺(推導見展開框)。若步長是重尾的(偶爾一步跳很遠,variance 無限),連 都會被打破,距離長得更快。
展開細節相關步伐的 variance(AR(1) 型的 ±1 步)
令每步以機率 (1+ρ)/2 與上一步同向、否則反向,則 E[ξᵢξᵢ₊ₖ] = ρ^k。 Var(Sₙ) = Σᵢ E[ξᵢ²] + 2Σᵢ<ⱼ E[ξᵢξⱼ] = n + 2Σₖ₌₁ⁿ⁻¹ (n−k)ρ^k ≈ n[1 + 2ρ/(1−ρ)] = n(1+ρ)/(1−ρ)(大 n 時)。 ρ = 0 回到 n;ρ → 1(永遠同向)時因子發散,對應 Var ~ n² 的「等速前進」;ρ < 0(傾向折返)因子小於 1,走得比獨立更近。指數仍是 √n,改變的只是常數——除非 ρ 本身隨 n 趨近 1。
回到長街:模擬一次,再把假設弄壞
import numpy as np
rng = np.random.default_rng(0)
def walk(n=3600, rho=0.0, trials=5000):
keep = rng.random((trials, n)) < (1+rho)/2 # 這一步是否沿用上一步的方向
flips = np.where(keep, 1, -1); flips[:, 0] = 1
steps = rng.choice([-1, 1], trials)[:, None] * np.cumprod(flips, axis=1)
return np.sqrt(np.mean(steps.sum(axis=1)**2)) # 均方根距離
for rho in [0.0, 0.5, 0.9]:
print(rho, round(walk(rho=rho)), round(60*np.sqrt((1+rho)/(1-rho))))
# 0.0: 60 對 60;0.5: 103 對 104;0.9: 257 對 262(模擬值隨種子略有變動)
獨立時模擬與 吻合;加入相關,均方根距離按 放大,理論預測與模擬一致——而且指數仍是 (把 改成 14400 再跑,距離變兩倍)。最後把步長換成重尾分佈(例如 Cauchy),均方根距離會隨 trials 增加而不收斂:這時 variance 不存在, 規律與 Gaussian 極限都失效。
先消化一下
參考文獻
- Grimmett, G., Stirzaker, D. Probability and Random Processes. Oxford University Press, 3rd ed., 2001.(第 3 章 random walk;第 13 章 Brownian motion 的定義與性質。)
- Feller, W. An Introduction to Probability Theory and Its Applications, Vol. 1. Wiley, 3rd ed., 1968.(第 III 章:簡單 random walk 的組合與極限。)
- Mörters, P., Peres, Y. Brownian Motion. Cambridge University Press, 2010.(第 1 章:Brownian motion 的存在、增量獨立、軌跡連續但不可微。)
- Einstein, A. Über die von der molekularkinetischen Theorie der Wärme geforderte Bewegung von in ruhenden Flüssigkeiten suspendierten Teilchen. Annalen der Physik 17, 1905.(歷史出處:懸浮粒子的均方位移與時間成正比。)