奧卡姆的威廉還是一名青年時就加入了英國的方濟各會。和許多14世紀的宗教團體一樣,方濟各會的總部設在牛津,它為牛津大學的在校生提供了住所。威廉是一名主修神學的牛津學生,儘管沒有畢業,他後來還是成了中世紀最主要的思想家之一,對物理學、神學、邏輯學和哲學都作出了巨大貢獻。他最著名的思想是奧卡姆剃刀法則,即主張最簡單的解釋通常是最好的解釋。「剃刀」一詞比喻我們可以把一個理論中糾纏複雜的部分像鬍子一樣「剃除」,只留下最簡單的解釋。這一思想貫穿文藝復興時代一直延續到今天,引領著一代又一代人的科學和哲學思潮。
17世紀法國哲學家勒內·笛卡兒通曉奧卡姆剃刀法則。他懷疑一切,甚至對周圍世界的存在性提出質疑。笛卡兒最為著名的哲學命題是Cogito ergo sum,即「我思故我在」。在他的著作《方法論》中,笛卡爾摒棄了一切前提假設,僅從他能通過思考意識到自己這一點,得出了「笛卡爾是存在的」這一結論。那麼笛卡爾如何解釋他感受到的複雜世界呢?萬物是否有可能只存在於笛卡爾的意識中?笛卡兒不贊同這種想法,因為有另一種更簡單和更合理的解釋,那就是其他人和他一樣,大家共同生活在一個可以認知和理解的物質世界之中。
我被「我思故我在」這幾個字迷住了,我確信它是真理,證據只有一條,那就是我清楚地看到,存在是一個事物能夠思辨的必要前提。我甚至可以論斷,一般地講,一切我們能清晰明確地在腦中顯現的事物都是真實的。然而值得注意的問題是,很難恰當地分辨哪些物體是我們能夠明確地想像的。
——笛卡兒,《方法論》,第四部分
和笛卡兒同時代的約翰內斯·克卜勒通過觀測行星運動,歸納出了一系列描述它們運動路線和速度的定律。至於為什麼行星運動符合這些定律,克卜勒無法給出一個簡單的解釋。
艾薩克·牛頓將奧卡姆剃刀法則運用到物理世界。他著名的運動定律以非常簡單的方式,表述了物體如何相互作用:
如果不給物體施加任何力,靜止的物體會保持靜止,運動的物體速度保持不變;
施加於物體上的力將產生一個與其大小成正比的固定加速度;
一個物體給另一個物體施加力,則施力物體也會受到來自受力物體的大小相等、方向相反的力。
通過把運動定律和他對引力的簡單描述相結合,牛頓展示了如何從天體的運動推導出克卜勒定律。簡單的表述可以具有強大的解釋能力。
幾個世紀後,阿爾伯特·愛因斯坦和其他科學家從理論上提出:對於運動速度接近光速的物體,牛頓的簡單運動定律是不成立的。後來的一些實驗基本證明愛因斯坦是對的。他的名言是:「把所有事都變得儘可能簡單,而不可過於簡單。」這並不意味著牛頓錯了,恰恰相反,他的模型是對我們所認知的世界的一個很好的近似。甚至在今天,對於包括駕駛汽車,以及高中大部分科學實驗在內的一些簡單場合,牛頓定律仍然非常適用。
對於非常小的粒子,甚至愛因斯坦的理論也不再成立,它們所服從的法則被稱為量子力學。當代物理學家試圖找到一種能融合愛因斯坦的廣義相對論和量子力學的理論,即所謂的「大統一理論」。
簡單的模型永遠無法反映世界全部的複雜性,但它們通常可以很接近這個目標。為某些情形找到一種簡單的解釋,就能對未來發生的類似情形做出很好的預測。近年來我們看到這個原理在計算機科學世界得到了充分的體現。
今天我可以手寫一張支票,用手機拍張支票的照片,然後通過網際網路存入支票。銀行的軟體通過照片就能識別交易金額和帳號,即使支票是手寫的也沒關係。如果沒有疑議,銀行職員甚至都不用親自去看這張支票。
識別位於支票底部的帳號比較容易,組成帳號的數字符合固定的格式,這是特意為方便計算機識別而設計的。
但是支票上的金額是手寫的「30美元」。每個人寫字的方式都不一樣,計算機如何能判別這張支票的金額呢?
支票
這個問題不簡單。不信你看數字2有多少種寫法。
各種手寫的數字2
計算機科學的一個分支——機器學習就是處理這類問題的。首先用大量的數據訓練一個算法,在這個例子裡,數據就是人們寫數字2和其他數字的樣例。算法會建立一個相對簡單的模型,然後嘗試用這個模型正確區分各種手寫的數字。訓練得好的算法能對新的數字進行正確的分類,即使是對訓練期之後寫出的數字也不例外。
過去20年,計算機科學家在機器學習領域取得了長足的進步,研究出了通過檢查幾千到幾百萬樣例,計算出將數據分類的正確方式。除了識別支票之外,許多照片處理程序還可以根據人臉來對照片排序,效果還過得去。
Amazon、Netflix和Pandora等公司能為顧客推薦圖書、電影和音樂,根據的是顧客之前購買過的商品,以及觀影和聽歌的模式。語音識別和語言翻譯雖然不能做到和真人一樣,但會讓你大致了解寫的或說的是什麼。垃圾郵件識別工具屏蔽了人們不想要的幾乎所有信息。到2020年,所有的汽車有望能夠自動駕駛。
這類技術所能做到的差不多就是這些了,未來取得的進步最終將越變越小。這是否意味著奧卡姆剃刀不再鋒利,寶刀已老?
倒也未必。奧卡姆剃刀法則說的是最簡單的解釋問題的方法就是最好的方法,但它並沒有告訴你如何找到那個最簡表述。如今的機器學習技術只能使用簡單的數據表述方式,通常會把數據的多種特徵用相對直接的方式加以合併。如何找到最簡表述,即找到任意形式的程序中最短小而有效的數據分類程序,是一個困難的問題,一個NP問題。
如果能使用快速解決所有NP問題的厄巴納算法,找到最簡單的數據分類程序就變成了一道簡單的編程練習。我們需要做的只是把海量數據交給算法,然後看著它完成剩下的工作。這樣一來,我們幾乎能了解所有的事物。
本文選自《可能與不可能的邊界:P/NP問題趣史》
點擊「閱讀原文」查看本書更多相關信息。