跳轉到

1988 - Pearl 貝氏網路(不確定性下的因果推理)#

案件摘要#

1988 年,Judea Pearl(1936–) 出版《Probabilistic Reasoning in Intelligent Systems》:

\[ \boxed{\text{用「有向無環圖 + 條件機率」讓機器在不確定性下推理}} \]

貝氏網路(Bayesian network)的構造極其優雅: - 一張有向無環圖(DAG):節點 = 隨機變數,箭頭 = 直接影響; - 每個節點一張條件機率表(CPT): \(P(X_i \mid \text{parents}(X_i))\) ; - 一套訊息傳播演算法:證據在網路中雙向流動,更新所有節點的信念。

\[ \text{圖結構} + \text{局部機率} = \text{全域一致推理}. \]

他把 AI 從「非真即假」的符號邏輯,帶進了「幾乎真、可能假」的機率世界—— 後來更提出 do-算子與因果階梯,掀起因果革命—— 2011 年,Pearl 獲得圖靈獎。

前因 -- 為什麼會有這個案子#

  • 符號 AI 的無力(1956–1980): 1956-紐厄爾賽蒙邏輯理論家.md 開創的符號主義 AI, 把推理化約為邏輯規則:「若 A 則 B」,命題非真即假。 但真實世界充滿不確定性:病人可能發燒也可能不發燒, 規則 chains 得再多,也無法表達「發燒時有 70% 可能是感冒」。
\[ \text{邏輯:} A \Rightarrow B \quad \text{vs.} \quad \text{真實:} P(B|A) = 0.7. \]
  • Bayes 定理(1763)的沉睡: Thomas Bayes 身後發表的定理,早就給出「由果推因」的數學工具:
\[ P(H|E) = \frac{P(E|H)\,P(H)}{P(E)}. \]

但兩百年來它始終是統計學的內部工具—— 當變數一多, \(P(H|E)\) 的聯合機率表呈指數爆炸,無法實用。 - 專家系統的知識工程瓶頸(1970s–80s): Edward Feigenbaum(1994 圖靈獎)推動的專家系統(如醫療診斷的 MYCIN) 把人類專家的知識寫成數百條規則—— 但知識工程(knowledge engineering)代價高昂,且規則間互相衝突: 兩條規則一個說「可能是白血病」,一個說「不太可能」,系統無法調和。

\[ \text{數百條規則} \xrightarrow{\text{衝突、不一致}} \text{系統崩潰}. \]
  • 證據的傳播問題: 即使加上機率,早期做法(如 MYCIN 的確定因子)也是土法煉鋼: 證據在規則網路中傳播時,同一證據被重複計算、循環論證無法察覺。 Pearl 的洞察:信念的更新必須像流體一樣—— 在一張結構明確的圖上,沿著箭頭雙向傳播,且每份證據只算一次。

線索與推理 -- 數學式、程式、理論#

第一條線索:Bayes 定理——由果推因的引擎#

偵探辦案的核心公式:看到線索 \(E\) (證據),反推嫌疑 \(H\) (假設):

\[ \boxed{P(H|E) = \frac{P(E|H)\,P(H)}{P(E)} = \frac{P(E|H)\,P(H)}{\sum_{H'} P(E|H')\,P(H')}} \]
  • \(P(H)\) :先驗機率(辦案前的嫌疑程度);
  • \(P(E|H)\) :概似度(若 H 為真,看到線索 E 的機會);
  • \(P(H|E)\) :後驗機率(看到線索後,更新的嫌疑程度)。
\[ \text{新信念} = \text{概似度} \times \text{舊信念} \quad\text{(信念隨證據滾動更新)}. \]

第二條線索:貝氏網路——DAG 與聯合機率的分解#

Pearl 的關鍵一步:聯合機率不必存成一張巨大的表, 可以沿著因果的箭頭分解:

\[ \boxed{P(X_1, X_2, \ldots, X_n) = \prod_{i=1}^{n} P\big(X_i \,\big|\, \text{parents}(X_i)\big)} \]
  • 圖:下雨 \(\to\) 灑水器關?不——經典例子是: 下雨 \(\to\) 草地濕,下雨 \(\to\) 天空陰(箭頭代表直接因果影響);
  • 爆炸 vs 分解: \(n\) 個二元變數需 \(2^n - 1\) 個參數, 若每個節點只有少數父節點,分解後只需 **線性於 \(n\) ** 的參數——
\[ n = 30: \; 2^{30} \approx 10^9 \text{ 個參數} \;\xrightarrow{\text{分解}}\; \sim 60 \text{ 個參數}. \]
  • 這是「知識工程」的救星:專家只需回答局部問題 「下雨時草地濕的機率?」——不必回答全域問題「所有變數的聯合分布」。

第三條線索:條件獨立與 d-分離#

分解為什麼合法?因為 DAG 編碼了條件獨立:

\[ X \perp Y \mid Z \;\Longleftrightarrow\; P(X, Y \mid Z) = P(X|Z)\,P(Y|Z). \]

d-分離(d-separation):給定圖上的一條判準,不看機率數字, 只看圖的連通結構就能判斷兩變數在給定條件集下是否獨立: - 鏈 \(X \to M \to Y\) :給定 \(M\) 後 \(X \perp Y \mid M\) (訊息被阻斷); - 分叉 \(X \leftarrow M \to Y\) :給定 \(M\) 後 \(X \perp Y \mid M\) (共同原因被觀察); - 碰撞 \(X \to M \leftarrow Y\) :觀察 \(M\) 反而打開通道(explaining away)!

\[ \boxed{\text{下雨與水管破是獨立的;但「草地濕了」讓它們互相解釋、互相競爭}} \]

這正是偵探的直覺:兩個嫌疑人本來無關, 但一旦確認案發,破案線索會讓兩人互為反證——explaining away。

第四條線索:訊息傳播演算法(1985–88)#

Pearl 的工程傑作:在多樹(polytree)上,信念更新可以局部化: - 每個節點收到來自父節點的 \(\pi\) 訊息(因果診斷,由上而下) 與來自子節點的 \(\lambda\) 訊息(證據診斷,由下而上); - 新信念: \(BEL(X) \propto \pi(X) \cdot \lambda(X)\) ; - 觀察到證據後,訊息沿箭頭雙向流動,數次迭代內全網收斂——

\[ \text{證據(草地濕)} \xrightarrow{\lambda \text{ 訊息}} \text{下雨、灑水器} \xrightarrow{\pi \text{ 訊息}} \text{全網更新}. \]
  • 一般圖上則用團樹(junction tree)等演算法——機率推斷成為可計算的工程。

第五條線索:do-算子與因果階梯(1995 → 2018)#

Pearl 的更深革命:相關 ≠ 因果。觀察 \(X\) 與介入 \(X\) 是兩回事:

\[ P(y \mid x) \;\ne\; P(y \mid do(x)). \]

do-算子: \(do(x)\) 代表強行設定 \(X = x\) (斬斷所有指向 \(X\) 的箭頭):

\[ P(y \mid do(x)) = \sum_{z} P(y \mid x, z)\,P(z) \quad\text{(後門調整公式)}. \]

因果階梯(ladder of causation): 1. 關聯(association): \(P(y \mid x)\) ——「看到 X,Y 的機會?」(觀察者); 2. 介入(intervention): \(P(y \mid do(x))\) ——「做了 X,Y 會怎樣?」(實驗者); 3. 反事實(counterfactual):「若當初做了 X,Y 會怎樣?」(穿越者)。

\[ \text{關聯} < \text{介入} < \text{反事實} \quad\text{(每一層都需要更多的因果知識)}. \]

Python:貝氏網路的窮舉推理與 do-介入#

經典三節點網路:下雨 \(\to\) 草地濕,灑水器 \(\to\) 草地濕。

# 三節點貝氏網路:Rain -> GrassWet, Sprinkler -> GrassWet
# 碰撞結構:Rain -> GrassWet <- Sprinkler

P_rain = {True: 0.2, False: 0.8}                 # 先驗:下雨機率
P_sprinkler = {True: {True: 0.01, False: 0.4},   # 下雨時灑水器幾乎不開
               False: {True: 0.4, False: 0.6}}   # P(S | Rain)
P_wet = {True:  {True: {True: 0.99, False: 0.9}, # 雨+灑水 → 幾乎必濕
                False: {True: 0.9, False: 0.0}}, # 只開灑水 → 90% 濕
         False: {True: {True: 0.8, False: 0.0},  # 只下雨 → 80% 濕
                 False: {True: 0.0, False: 0.0}}} # P(Wet | S, R)

def joint(r, s, w):
    """聯合機率 P(r, s, w) = P(r) P(s|r) P(w|s, r)——沿因果箭頭分解"""
    return P_rain[r] * P_sprinkler[s][r] * P_wet[w][s][r]

def posterior_rain(cond, w=True):
    """P(Rain | 條件)——窮舉所有 (r, s),Bayes 分母歸一化"""
    num = den = 0.0
    for r in (True, False):
        for s in (True, False):
            p = joint(r, s, w)
            den += p
            if cond(r, s):
                num += p
    return num / den

print("三節點貝氏網路:Rain -> GrassWet <- Sprinkler")
print(f"  P(Rain)                    = {P_rain[True]}")

p1 = posterior_rain(lambda r, s: True)
print(f"  P(Rain | Wet)              = {p1:.4f}   (草地濕後,下雨後驗 ↑)")

p2 = posterior_rain(lambda r, s: s == True)
print(f"  P(Rain | Wet, Sprinkler=T) = {p2:.4f}   (explaining away ↓)")

print("\n因果階梯:關聯 vs 介入")

# 觀察(關聯):看見草地濕,反推下雨的後驗
print(f"  關聯 P(Rain | Wet)             = {p1:.4f}")

# 介入(intervention):do(Rain=True),斬斷指向 Rain 的箭頭後窮舉
den = sum(P_sprinkler[s][True] * P_wet[w][s][True]
          for s in (True, False) for w in (True, False))
num = sum(P_sprinkler[s][True] * P_wet[True][s][True] for s in (True, False))
print(f"  介入 P(Wet | do(Rain=True))    = {num/den:.4f}")
print("  觀察下雨(關聯):草地本來就可能因灑水器而濕")
print("  強行下雨(介入):do 斬斷干擾,草地濕的原因被鎖定")

print("\ndo 算子的意義:")
print("  P(y | x)   = 看見 x 時 y 的機會(觀察者)")
print("  P(y | do(x)) = 做了 x 時 y 的機會(實驗者)")
print("  相關 ≠ 因果 ✓")
輸出:
三節點貝氏網路:Rain -> GrassWet <- Sprinkler
  P(Rain)                    = 0.2
  P(Rain | Wet)              = 0.3577   (草地濕後,下雨後驗 ↑)
  P(Rain | Wet, Sprinkler=T) = 0.0833   (explaining away ↓)

因果階梯:關聯 vs 介入
  關聯 P(Rain | Wet)             = 0.3577
  介入 P(Wet | do(Rain=True))    = 0.8487
  觀察下雨(關聯):草地本來就可能因灑水器而濕
  強行下雨(介入):do 斬斷干擾,草地濕的原因被鎖定

do 算子的意義:
  P(y | x)   = 看見 x 時 y 的機會(觀察者)
  P(y | do(x)) = 做了 x 時 y 的機會(實驗者)
  相關 ≠ 因果 ✓

結案 -- 後果與影響#

  • AI 的機率轉向(1988):
\[ \boxed{\text{AI 從「符號邏輯」轉向「機率推理」——不確定性成為一等公民}} \]

1980 年代末,符號主義崩塌、專家系統寒冬來臨, 貝氏網路成為新典範:診斷系統、垃圾郵件過濾、錯誤偵測——全部機率化。 - 圖模型時代(1988–2006)——深度學習的前夜: Pearl 的圖模型開啟了機器學習的黃金二十年: - Hinton 等人在圖模型上累積的機率視野, 為 2006 年後的深度學習鋪路(見 2018-深度學習三巨頭.md); - Judea Pearl 與 Michael Jordan 的學術譜系:圖模型是深度學習的母親。

\[ \text{貝氏網路(1988)} \xrightarrow{\text{圖模型}} \text{深度學習(2012/2018)}. \]
  • 因果革命(2018): Pearl 晚年出版《The Book of Why》,向全世界宣告:
\[ \text{關聯} \xrightarrow{do\text{-算子}} \text{介入} \xrightarrow{\text{反事實}} \text{因果的完整階梯} \]

觀察資料 + 因果圖 = 因果結論——流行病學、經濟學、社會學的方法論革命。 - 醫學診斷與自動駕駛: - 貝氏網路成為醫療診斷輔助(症狀 → 疾病的後驗機率)的標準工具; - 自動駕駛的感知、預測、決策——貝氏推理 + 因果模型是安全的核心: 「行人可能穿越」必須用機率表達,「煞車會避免碰撞」必須用因果表達。 - 圖靈獎(2011): ACM 授獎理由:「對人工智慧的機率與因果推理的基礎性貢獻」——

\[ \text{貝氏網路(1988)} \xrightarrow{\text{圖靈獎(2011)}} \text{因果革命的加冕}. \]
  • 歷史定位:Pearl 是 AI 的福爾摩斯—— 他教會機器由果推因、在疑雲中更新信念、區分相關與因果;
\[ \text{符號 AI(1956)} \xrightarrow{\text{不確定性}} \text{貝氏網路(1988)} \xrightarrow{\text{因果革命}} \text{The Book of Why(2018)}. \]

一切從那張有向無環圖開始。

關鍵人物與文獻#

  • Judea Pearl:Probabilistic Reasoning in Intelligent Systems(1988);Causality(2000);The Book of Why(2018,與 Dana Mackenzie);圖靈獎(2011)。
  • Thomas Bayes:An Essay towards Solving a Problem in the Doctrine of Chances(1763)——貝氏定理的起源。
  • Edward Feigenbaum:專家系統與知識工程(MYCIN、DENDRAL);圖靈獎(1994)——被 Pearl 的機率轉向超越。
  • Alan Newell、Herbert Simon:邏輯理論家(1956)——符號 AI 的創世紀。
  • Geoffrey Hinton、Yann LeCun、Yoshua Bengio:深度學習三巨頭(2018 圖靈獎)——圖模型時代之後的下一章。
  • 相關案件:1956-紐厄爾賽蒙邏輯理論家.md、2018-深度學習三巨頭.md、1948-香農資訊理論.md。