昨天龔鶴揚博士在集智的講座因果學習綜述,我藉此機會結合我的理解給大家總結客串下這個講座,和因果學習的核心內容,及巡洋艦一段時間關於因果的文章匯總。
這個講座分為三部分,第一是什麼因果及其哲學基礎,第二是統計學中的因果, 第三是機器學習中的因果。
一, 哲學中的因果以及因果科學的定義
因果已經成為我們最重要的認知工具, 而且被認為是下一代AI革命的重要引擎之一。那麼究竟什麼是因果?用一句話說:因果是當某個變量T改變的時候,在保持其它變量不變的時候, 它是如何導致另一個變量Y改變的(由此我們看出因果的有向性,因果可以獨立作用)。
即使是從這個定義裡我們也可以立刻看到,如果和相關性進行比較, 我們看到這裡的區別一在於改變, 二在於其它變量不變, 這就是說英國是A到B產生的效應,而非僅僅是A
和B的關聯, 它具有明確的方向性和幹預屬性。這種定義的方法包含了幹預主義的核心思想,因此也稱為interventionist
而古往今來的哲學討論裡,另一個核心觀點在於反事實的因果觀念, 這個觀念說的是當假設過去的其它事情不發生,是否有一個因子導致了最終的結果不會發生。這裡我立刻想到類似於法律案件判斷的一種基本思維,那就是指定某個人有罪與否的通常思維是假定他沒有做出某個行為最後罪行的結果還是否會出現。
然而這種因果思維通常存在嚴重的漏洞,比如下面的例子:
A和B一起用石頭扔瓶子, A的石頭恰好擊中了瓶子碎了。那麼如果A不去用石頭打瓶子似乎它也會碎, 你可以因此去說A的石頭不是瓶子碎的原因嗎?如果我們深思,類似的悖論還很多, 比如你和你女友n次吵架最後分手了, 那麼如果沒有第n次吵架你們也許不會分手, 你可以說第n次超級就是分手的原因嗎?
因此對於因果問題的定義是一個細思恐極的事情, 我們看似懂了實際不懂。然而只要它是一種方便的思維工具, 我們還會每天不假思索的用下去而且不著急。事實上唯一嚴格定義清晰的因果是在物理學, 物理學的因果的基礎是相互作用, 而相互作用的結果只有最終在時間維度上體現, 這和我們日常方便性的因果有著本質的區別。
一個有趣的總結是我們可以把因果分成兩類,一個是type causality,一個是actual causality。第一類比較類似自然科學的英國, 或者某種事物作用和變化的機制, 比如濫發鈔票導致通貨膨脹。而另一個則和我說的現實生活中的那些雞毛蒜皮小事的直接原因,比如剛剛舉的吵架導致分手。
最終我對這裡的總結是, 因果是一種工具,追求嚴格定義沒有意義,而是取決於使用的語境。
想要初步了解因果的定義,哲學含義,我們為什麼需要因果, 巡洋艦積累了不少素材,尤其是圍繞Pearl的 重磅級著作 《為什麼》
從相關性到因果性-讀《The book of why》
自由意志和因果推理-《為什麼》書摘
年度必讀書-《為什麼:關於因果關係的新科學》
二, 統計學上的的因果推斷
假定你手裡有若干變量的一堆數據,你希望從這些變量裡提取出一組因果關係。這你就要做的事情是因果推斷。貫穿所有因果問題共通的地方是Judea Pearl的三層框架 , 我們要在我們手裡的觀察數據裡求解出下面三個層次。
事實上為了做到這件事我們可以採用一個非常統一一致的流程, 講這個問題過於枯燥, 這裡新冠病毒死亡率是一個極好的例子, 我們知道義大利的新冠病毒死亡率高於中國, 而這是否說明義大利的醫療治癒情況弱於中國呢?好了我們用統計的方法來回答下這個問題:
1, 定義問題, 把問題和已知信息轉化為因果圖,這個圖一般是coase-grain的世界模型, 把統計上複雜的分布化作一個節點。其實這一步是非常難的,難就在確定問題相關的因子有哪些,表面上這裡只有國家和死亡率兩個節點, 但是事實上潛在的影響因素有很多,比如年齡,性別,教育程度, 如果你仔細去研究這個問題可能要包含了社會的所有方面。所以這裡抬出了統計物理的一個基本思想coase-grain,我們把問題粗粒化最後留下最重要的。最終這裡選擇了國家, 年齡結構和死亡率這三個因素, 因為年齡對死亡的影響其實比較顯著。比如看下圖
2, 形成因果圖, 這個因果圖一般包含treatment和output, 以及其它的cofounder
我們把年齡,國家和死亡率三個要素畫出下圖的三角C代表國家,A代表年齡,M代表死亡率 然後分析這個圖裡的因果關係, 我們看到國家通過年齡結構影響死亡率, 起到了中介變量的作用,因為年紀越大的人死亡率越高。而如果需要分析單純國家對死亡率的影響(這裡包含很多因素,比如國家的醫療條件,空氣汙染程度),則需要阻斷A來分析C到M的影響。
3, 這裡就要給出和因果分析和力學裡的牛頓第二定律般的do calculus。這裡的思維本質就是幹預,既然年齡是一個重要的中介因子, 而兩個國家的年齡又是不同的。我們如果要求得單純國家這個因素對死亡率的影響,就要把年齡這個因素控制成一樣,來求解國家不同對死亡率的影響。具體的做法是把年齡分布(年齡相對國家的條件概率)假定成相同, 求兩個不同國家的死亡率在這個相同分布下的期望, 並取其差值。這個控制也可以看作是阻斷,它阻斷了國家對年齡變量的影響。最終得到了結果的確是義大利的死亡率更低!
4, 另一方面,我們可以計算由中介因子帶來的間接因果效應(年齡的影響)
這一次我們要的控制的是國家這個變量, 也就是假定不同年齡段的死亡率在兩個國家是相同的(以中國為標準), 看不同年齡分布對死亡概率的影響。
這裡我們還觀測到的有趣現象是直接因果效應和間接因果效應的和不等於死亡率, 這也暗示了這兩個因子存在某種相互作用效應。
事實上統計裡的因果推斷的關鍵是消除各種偏差,這些偏差往往是因為已知或未知的中間因子的存在導致x到y的因果效應難以衡量, 比較有名的有cofounder bias , selection bias, 而識別這些偏差關鍵是尋找不同因子背後的因果圖連接(如下),阻斷那些非直接的聯繫。
龔老師還推薦了幾個非常優秀的文獻:
1, Causal inference, Hernán M. A., Robins J. M. 一個非常易懂的入門手冊
2, The handbook of graphical models(2018) 圍繞統計因果學習的工具核心-圖模型
3, Causal Inference for Statistics, Social, and Biomedical Science
介紹幾種常見的因果悖論
論文速遞-新冠死亡率的辛普森悖論,因果推斷的一個例子
速讀悖論,兼談因果推斷的重要性
相關性和因果性的比較
櫻花,氣候,相關性與因果性
用因果的視角看三門問題, 並用此分析華為應對美國制裁的策略
從因果的視角看三門問題與華為斷供
介紹幾種常見的統計因果分析方法
好書推薦-《結果與原因的經濟學》極簡因果推斷教程
非常實用的因果推理入門手冊含代碼
三,基於因果的人工智慧, Causal AI
這一定是如今大部分人都關注的問題, 當下的機器學習缺少因果思維, 剛剛的因果統計能否在這裡助力?首先當下的AI缺少因果這一層次,即使是GPT-3這樣複雜的模型, 事實上也僅僅是相關性的體現。
基於因果的人工智慧一個重要體現是小圖靈測試 - 也就是如何讓機器來表徵因果知識, 然後回答問題 。如果機器能夠做到這一點,無疑是和人的接近程度大大接近。
如何讓機器具備因果思維, 事實上依然是圍繞如何讓機器學習剛剛講的三級因果關係, 關聯, 幹預 和 反事實。大家注意反事實問題在以統計為基礎的機器學習裡是很困難的。
這時候我們來套用機器學習的典型思維,輸入一大堆數據,算法就可以推斷某件事的前因後果,進行反事實推理。
這臺機器就叫做因果推理引擎, 它是一個包含問題, 到模型(圖模型)到求解答案全過程的機器。這臺機器的輸入是問題,數據和假設(對核心變量因果關係的先驗), 把它們轉化為包含因子和邊的圖模型(因果問題的語言), 最終通過結構方程得到需要求解問題的幹預概率(do - calculus),或反事實問題(counter-factual)。
因果推理引擎可以被歸納在結構因果模型裡, 這個模型就是包含節點和邊的圖模型,但是與之不同的是 , 結構模型用結構方程而不是條件概率描述節點和節點的關係,而是用函數形式,X = f(PA,U) PA是一組決定結果的因子, U代表未知的外界隨機變量,這個定義使得因果關係的定義更加靈活,也更符號機器學習語言,同時包含條件概率對不確定性的表達能力。
以下是結構因果模型的一個基本形式,我們非常容易看到它的構建是首先需要把所研究問題的核心變量表達成一個圖結構,這裡研究的是當你發現草坪溼潤了,你要找到這個現象背後的原因。比如氣候, 灑水機工作,或者下雨。這個問題的難點在於因果關係盤根錯節, 比如下雨,灑水和草坪溼潤之間存在已知的因果關係(先驗), 而氣候又影響這兩者。熟悉貝葉斯概率圖模型的同學一定會熟悉這個圖。這裡唯一的區別是貝葉斯的條件概率被替換成為結構方程。
事實上結構方程肯定不是唯一的因果關係的表達形式, 比如動力學方程組組也可以刻畫系統內的因果關係。相比動力學方程組結構因果模型的最大缺點是基於有向無環圖DAG , 而對帶有循環的圖缺少表示能力, 動力學方程則可以。然而結構方程的形式卻更加容易直接做成do calculus,同時結構因果模型也包含了某種世界運行的機理和數據生成的機制,雖然不似微分方程精確。
關於結構方程的好處最好的解釋在CAUSALITY FOR MACHINE LEARNING 這篇文章裡。作者寫到了它和do calculus的內在聯繫, 以及它如何導致一個因子化的概率表示。
具體有了結構方程後,我們需要的依然是用因果分析的牛頓第二定律- do calculus來求解我們需要的幹預條件概率。當然在一個複雜的因果圖裡節點的數量非常多, 為了分析問題的方便, 我們需要動用d-separation條件獨立性, 也就是當阻斷了X和Y間的中間路徑(d-separate)使得X,Y變為條件獨立。具體阻斷的方法是阻斷某個發射節點(影響x和y的共因)而同時不可以阻斷接收節點(否則引入一個額外的相關性)就是下面的1條和2條。
得到d-separation之後, 我們就得到一組條件獨立性,幫我們來去掉do calculus一些不必要的中間變量, 從而更好的計算幹預性問題。
再看反事實推理, 有了結構因果方程,我們就可以得到如下的反事實推理步驟, 1, 溯因:
通過已知的當下結果(x,y)更新結構方程 2, 更換:把之前結構方程的事實X更換為x 3
預測:使用更新後的結構方程得到如果過去的事實按照x發生,則最終的結局 y。
大家注意反事實推理的巨大意義,它事實上是用數據反推一個世界模型,包含那些agent從未經歷的狀態, 從而可以在這個模型裡想像無窮多的平行世界。
把因果引入機器學習將可以解決機器學習裡一些最重要的困境, 比如缺少魯棒性,無法進行外推式的泛化(就是求解數據集分布外的情況), 缺少可解釋性等。而基於因果的AI某種程度都是對這些問題的對症下藥, 首先,基於因果的AI掌握了一個結構方程模型,可以進行反事實推理,這本質是在解決外推問題, 掌握了因果的模型將更難被噪聲幹擾因為它某種程度掌握數據生成的規律, 同時有因果的模型更加符號人類認知因而更具有可解釋性。
在有關因果的人工智慧方面, 巡洋艦也積累了很多素材:
為了研究因果關係,原來科學家在這麼多方向上都有嘗試
維融入機器學習,實現信息處理的自動化
強人工智慧之路中的必選項「因果」-《為什麼》第十章書摘 Part1
讓神經網絡變得透明-因果推理對機器學習的八項助力