奧卡姆剃刀
奧卡姆剃刀(Occam's Razor),是由14世紀邏輯學家、圣方濟各會修士奧卡姆的威廉(William of Occam)提出的一個解決問題的法則。這個法則的表述很多,其中最流行的莫過于:
如非必需,勿增實體
(More things should not be used than are necessary)
換句話說,如果關于一個或多個現象,有許多種理論都能作出同樣準確的解釋,那么應該挑選其中使用假定最少的。
其實,除了這位奧卡姆之外,有很多名人,包括我們的老子,也都說過類似的話:
- 老子:大道至簡;為學日益,為道日損。
- 亞里士多德: 自然界選擇最短的道路。(Nature operates in the shortest way possible)
- 托勒密:我們認為一個很好的原則是通過最簡單的假設來解釋現象(We consider it a good principle to explain the phenomena by the simplest hypothesis possible)
- 伽利略:大自然不會無緣無故的增加事物;她善于利用最簡單和最容易的手段來達到目的;她從來不做徒勞無功的事情(Nature does not multiply things unnecessarily; that she makes use of the easiest and simplest means for producing her effects)
- 牛頓:解釋自然界的一切,應該追求使用最少的原理。如果很少的理由就能解釋自然,那么再列舉更多的理由就是多余的了(We are to admit no more causes of natural things than such as are both true and sufficient to explain their appearances. Nature does nothing in vain, and more is in vain when less will serve.)
- 愛因斯坦:凡事盡可能簡潔,但不能太過簡單(Everything should be made as simple as possible, but no simpler)
關于如何用奧卡姆剃刀幫我們找到現象背后的真理,維基百科上有兩個例子
例子1: 樹吹倒了
在一個有風的夜晚,有兩棵樹連根倒下了,除此之外沒有任何別的痕跡。這是我們觀察到的現象。
可以解釋這兩棵樹倒掉的兩個可能的解釋為(1)風把他們吹倒了 (2)有兩顆隕石從天而降,每顆隕石撞到了一棵樹,并且最后兩顆相互相撞,除去了自己的痕跡。
盡管這兩個解釋都可以很好的解釋觀察到的現象,但是后者一看就需要更多的假設:首先需要兩顆隕石掉下來,正好砸到兩個樹上,這本身就相當罕見。此外,還需要隕石相互撞上而抹去他們自己的痕跡,這個也很罕見。因此,盡管第二個假設也可以解釋樹倒了這個現象,由于這第二個解釋需要更多的且相當罕見的假設,我們仍然應該堅定不移的選擇第一個解釋,這就是用奧卡姆剃刀得到的結果。
例子2: 醫生診斷
奧卡姆的剃刀也經常用于醫生診斷中。當一個癥狀可以有多種病癥對應時,醫生應該首先懷疑的是最普遍的病癥。例如,如果發現一個小孩流鼻涕,那么醫生應該首先懷疑這個小孩是否患有感冒,而不是某一種罕見的先天性疾病。醫學院的學生經常被老師告誡,“當你聽到馬蹄聲的時候,要想到馬,而不是斑馬(When you hear hoofbeats, think horses, not zebras)。
例子3: 誰把花盆砸了
假設你一天晚上到家,看到你擺在客廳里的一盆花被砸在地板上,除了這盆花之外,家里沒有任何其他的變化。你腦子里立刻列出幾個可能的原因(1)花盆被一個鬼魂撞倒了,(2)花盆被一個偷偷闖入你家里的人碰倒了,并且他沒有拿任何東西。(3)花盆被你家養的貓弄砸了。
首先,這三個原因都可以很好的解釋這個現象。在這個前提下,用奧卡姆剃刀就可以很好的幫我們找到真相。首先,花盆被鬼魂碰倒了這個原因,需要非常多的很強的假設。因為首先需要鬼魂存在。這個假設非常強,因為到現在為止沒有證據證明有鬼魂存在。并且,這個鬼魂還跑到你家里,專門把你家里的花給碰倒了。第二個原因的假設也很多。首先,需要假設有一個人闖入你家里,并且該人就是專門為了把你的花盆給砸了(除了花盆之外,家里沒有任何損失)。在此,這個闖入你家里的人,要么有你們家的門鑰匙,要么知道如何開鎖以不留下任何痕跡。
而相比于這兩個原因,第三個原因需要的假設并不強,你家里本來就有一只貓,并且貓碰到花盆,也不是一個特別小的概率。因此用奧卡姆剃刀來判斷的話,一定會保留第三個。
例子4: 地心說和日心說
給我留下最深印象的,就是這個地心說和日心說。吳軍老師在他的《數學之美》的第19章《談談數學模型的重要性》中,提到了這個例子。數學家和天文學家的托勒密的地心說中,由于從地球上看,行星的運動軌跡是不規則的,因此托勒密用了40-60個小圓套大圓的方法,精確地計算出了所有行星運動的軌跡,如下圖所示。托勒密模型的精度之高,讓后來所有的科學家都驚嘆不已。即使今天,我們在計算機的幫助下,也很難解出40個套在一起的圓的方程。
而后,波蘭天文學家哥白尼發現,如果以太陽為中心來描述星體的運行,只需要8-10個圓,就能計算出一個行星的運動軌跡,他因此提出了日心說。然而,很遺憾的是,哥白尼的模型的誤差比托勒密模型的誤差要大不少。所以日心說要想讓人心服口服地接受,就得更準確地描述行星運動。
完成這一使命的是約翰內斯·開普勒。開普勒很幸運地發現了行星圍繞太陽運轉的軌道實際上是橢圓形的,這樣不需要用多個小圓套大圓,而只要用一個橢圓就能將星體運動規律描述清楚了。只是開普勒的知識水平不足以解釋為什么行星的軌跡是橢圓形的。解釋行星運動的軌道為什么是橢圓形這個光榮而艱巨的任務,最后由偉大的科學家牛頓用萬有引力定律解釋得清清楚楚。
總結一下,拿到的觀測是太陽系的某個星體的軌跡,有三個模型可以較好的解釋上述的觀測
- 托勒密的以地球為中心,40-60個小圓套大圓
- 哥白尼的以太陽為中心,8-10個圓
- 開普勒的以太陽為中心,一個橢圓。
我們可以看出,上述的模型一個比一個簡單,由于它們都可以較好的解釋觀測到的軌跡,因此當然應該選最后一個。
用貝葉斯定理來解釋奧卡姆剃刀
我們來回顧一下貝葉斯定理。當我們觀察到某一個現象,或者拿到某一個證據的時候,我們總想找到現象背后的原因。與很多人的思考方式不同,貝葉斯并不是只選擇一個,而是對所有的可能的原因,都找到一個概率,這個概率就是在觀察到這個現象后,每個原因的概率。這個概率P(原因i|當前的觀測),通常
被稱為后驗概率(Posterior probability)。后驗概率中的`后',就是拿到觀測/證據以后,再判斷該原因的概率的含義。
貝葉斯定理給出了后驗概率的表達式:
P(原因i)這個概率是我們在拿到現象/觀測之前,我們對于原因i本身成立的概率的評估。這個通常稱為先驗概率(Prior probability)。先驗概率中的`先',就是拿到觀測之前的意思。先驗概率依賴于原因i發生的概率,也就是這個原因是否常見。
P(當前的觀測|原因i)是在原因i成立時,我們能夠觀察到該現象出現的概率,通常我們把這個叫做似然概率(Likelihood probability)。這個似然概率描述了原因i能夠用來解釋當前拿到的現象或觀測的程度(解釋力度)。解釋的越好,那么似然概率就越大。
最后一個,P(當前的觀測)這個概率描述了該觀測到的現象發生的概率。注意不同的原因i對應的該概率都一樣。這意味著,貝葉斯定理最后選擇哪個原因,只取決于
P(原因 i)*P(當前的觀測|原因 i)
這說明,貝葉斯定理選出的原因,是似然概率P(現象|原因)和先驗概率P(原因)的乘積最大的。前者表示了該原因解釋當前的現象的力度(解釋的好不好),而后者表示了該原因發生的概率(常不常見)。通俗的來說,在一定程度上解釋該現象(似然概率較高),并且本身也常見(先驗概率較大)的原因最容易勝出。
現在我們用貝葉斯定理來解釋奧卡姆剃刀。 首先,奧卡姆剃刀`如非必需,勿增實體'可以表示為,如果兩個原因,原因A和原因B都可以很好的解釋觀測,并且原因A比原因B更簡單的話,那么應該選擇原因A。
`原因A和原因B都可以很好的解釋觀測'這句話用貝葉斯定理來解釋,就是這兩個原因的似然概率都比較大,即
`原因A比原因B更簡單'這句話用貝葉斯定理來解釋,就是原因A的先驗概率比原因B要大,即
在這種情況下,奧卡姆剃刀選擇了第一個原因。這個完全符合貝葉斯定理,因為貝葉斯定理選出的原因,就是先驗概率和似然概率乘積最大的原因。
有人會問,為什么奧卡姆剃刀中的簡單的原因,其先驗概率比較大?因為簡單的原因不需要那么多強假設就可以成立;而如果一個原因需要的假設越多,假設越強,那么它發生的概率就越低。例如,如果原因A需要2個假設成立才成立,每個假設自身的概率為10%,那么原因A的先驗概率為
P(原因A)=1%,而如果原因B需要4個假設,每個假設成立的概率為10%,那么那么原因B的先驗概率為P(原因B)=0.01%。
如果我們現在再看愛因斯坦說的那句話,
Everything should be made as simple as possible, but not simpler,
你就會認識到,as simple as possible,就是先驗概率越大的原因越好;而 not simpler,就是說這個原因仍然需要能夠解釋當前的觀測。這句話翻譯成貝葉斯定理的語言,就是說,你最終找到的原因是在能夠解釋當前的觀測的前提下,先驗概率最大的那個原因。
所以我們可以說,奧卡姆剃刀,是貝葉斯定理的一種特殊情況。奧卡姆剃刀告訴我們,在多個有相同的解釋力的原因中要選出一個簡單的;而貝葉斯定理告訴我們更一般的情況,即在解釋力和復雜性中找到最好的平衡。
在這種情況下,奧卡姆剃刀選擇了第一個原因。這個完全符合貝葉斯定理,因為貝葉斯定理選出的原因,就是先驗概率和似然概率乘積最大的原因。
所以我們可以說,奧卡姆剃刀,是貝葉斯定理的一種特殊情況。奧卡姆剃刀告訴我們,在多個有相同的解釋力的原因中要選出一個簡單的;而貝葉斯定理告訴我們更一般的情況,即在解釋力和復雜性中找到最好的平衡。
我們再來看幾個例子。
例子5: 樹后面的箱子
這是一個被廣泛用來解釋奧卡姆剃刀的例子,原文出自MacKay D J C. Information theory, inference and learning algorithms[M]. Cambridge university press, 2003.。下圖中有多少個箱子?特別地,那棵書后面是一個箱子?還是兩個箱子?絕大多數人一眼看去,都會覺得樹后面肯定是一個箱子而不是兩個。我們來解釋一下后面的道理。
首先我們來梳理一下這個問題中的觀測和待定的原因。 首先,觀測就是上面的圖。 我們有兩個備選原因需要考慮。
- h1:正好有一個箱子擺在如圖所示的樹的后面(見圖\ref{fig:Occam_razor}下方的第一個小圖)。
- h2: 正好有兩個箱子擺在如圖所示的樹的后面(見圖\ref{fig:Occam_razor}下方的第二個小圖)。
我們來分析一下為什么選h1。
首先,h1和h2都可以完美的解釋上面的圖。其次,h1比h2要更簡單,或者等價的,h1發生的可能性比h2要大。很容易看出,h2需要多個條件同時滿足才能發生,包括(1)兩個箱子的位置要正好在圖中的位置,(2)兩個箱子的高度要一致,(3)兩個箱子的長度也要正好匹配,并且(4)兩個箱子的顏色也要相同。 只要有一個條件不滿足,那么就得不到上面的圖了。簡單的說就是,哪有這么巧的兩個高度相同,長短合適、顏色相同的兩個箱子正好擺在樹后面?
相比于h2,h1所需要的假設就少得多,只需要一個箱子擺在圖中的位置可以了。因此根據奧卡姆剃刀原理(或者貝葉斯定理),我們應選擇h1,而不是h2。
例子6: 找規律填數字
很小的孩子,都會做下面的填下一個數字的題目。例如,給出下面這個序列的后兩個數字:
-1,3,7,11
我想絕大部分人,都會立刻從前面4個數字看出一個規律:后面一個比前面一個增加4。 就是說,把前一個數字作為x,下一個數字x'滿足
因此,11后面的兩個數字應該為 15和19。
可是有沒有想過,還有一個規律可以完全解釋上面的4個數,即
用這么個模型來預測,那么后面的兩個數就是-19.9和1043.8。
為什么這個模型能夠同樣完美的解釋這4個數字,但是大家都不會采用它呢?主要原因在于,后面一個模型比前面一個模型要復雜的多。
同樣兩個模型,一個簡單,一個復雜,都可以完美的解釋這4個數,根據奧卡姆剃刀,選擇前一個嘍。
如果我們用貝葉斯定理來分析,就是這兩個模型(原因),都可以完美的解釋給出的4個數,但是第一個模型的先驗概率要高于第二個模型,因此我們選擇第一個模型。
我們來具體說明為什么簡單的模型對應的先驗概率比較高。 我們可以這么想,我們假設通過擲骰子來產生上面兩個模型的所有的系數。為了能找到系數,我們假設擲的骰子是類似于下圖中的多面骰子。我們這里的骰子有101面,每一個面上是一個整數,依次從-50到50。此外,每個系數,都從擲的兩顆骰子A和B的數字的比值來決定。例如擲出的兩顆骰子的數字為-10和1,那么就得到了一個系數-10。
模型1包括兩個系數,一次項系數1和常數項系數4。因此我們每次擲4顆骰子,骰子A,B,C,D,并且把A和B的比值作為一次項系數,C和D的比值作為常數項系數。
而模型2包括三個系數,三次項系數-1/11,二次項系數9/11,和常數項系數23/11。因此我們一次性擲出6顆骰子,骰子A,B,C,D,E,F并且把A和B的比值作為三次項系數,C和D的比值作為二次項系數,E和F的比值作為常數項系數。
好了,交代完畢,現在終于可以擲骰子了。你把這些骰子丟給造物主,讓它來擲,我們來看下,它分別擲出模型1和模型2概率是多少。
對于模型1,擲出的A,B骰子的比值為1的概率為 1/101,同樣,產生常數項系數4的概率,為 24/101^2(有24種可能的組合可以產生4的比值)。由于這兩個系數獨立,因此,隨機產生一個可以符合h1的模型的概率為
對于模型2,擲出的A,B骰子的比值為三次項系數-1/11的概率為 8/101^2。 擲出的C,D骰子的比值為二次項系數9/11的概率也是8/101^2。擲出的E,F骰子的比值為常數項系數23/11的概率 4/101^2。因此,你擲出6顆骰子一次性可以產生
h2的模型的概率為
因此 P(h1)遠遠大于P(h2)。換句話說,如果按照上述的方法,造物主通過擲骰子產生模型h1的概率要遠遠大于h2。這就是為什么我們要選擇簡單的模型的原因。因為簡單的模型,在現實中不常出現。
奧卡姆剃刀要求原因可以較好的解釋當前的現象。但如果某個原因不能夠解釋當前的現象時,或者某個原因可以解釋過去的現象,但是新的現象無法解釋,那我們應該怎么辦呢?很簡單,我們需要去調整原因,使其同樣能夠解釋當前的現象。同樣,在多個可能解釋新的現象的原因中,我們找到一個最簡單的,作為最后的結果。
我在維基百科上找到了這樣一個例子作為本章的結束(見下圖),這個例子也在松鼠同學會上被引用過。
總結
- 奧卡姆剃刀:如非必需,勿增實體。
- 奧卡姆剃刀可以用貝葉斯定理來解釋:Keep it simple 意味著先驗概率大; Not simpler,意味著這 個原因仍然需要能夠解釋當前的觀測。
- 奧卡姆剃刀,是貝葉斯定理的一種特殊情況。奧卡姆剃刀告訴我們,在多個有相同的解釋力的原因中要選出一個簡單的;而貝葉斯定理不僅僅可以解釋奧卡姆剃刀,而且告訴我們更一般的情況,即在解釋力和復雜性中找到最好的平衡。