第一章 機器學習革命

我們生活在算法的時代。一兩代人以前,提到「算法」這個詞,可能多數人會腦中一片空白。當今,文明社會的每個角落都存在算法,日常生活的每分每秒也都和算法有關。算法不僅存在於你的手機或筆記本電腦,還存在於你的汽車、房子、家電以及玩具當中。當人們進出銀行時,銀行系統就是由各種算法交織而成的龐大集合體。算法安排航班,也駕駛飛機。算法能經營工廠、進行交易、運輸貨物、處理現金收益,還能保存記錄。如果所有算法都突然停止運轉,那麼就是人類的世界末日。

算法就是一系列指令,告訴計算機該做什麼。計算機是由幾十億個微小開關(稱為晶體管)組成的,而算法能在一秒內打開並關閉這些開關幾十億次。最簡單的算法是觸動開關。一個晶體管的狀態就是一個比特信息:如果開關打開,信息就是1;如果開關關閉,信息就是0。銀行的計算機的某個比特信息會顯示你的賬戶是否已透支。美國社會保障總署的計算機的某個比特信息表明你是活著還是已死亡。第二簡單的算法是:把兩個比特結合起來。克勞德·香農以「信息論之父」而為人所知,他第一個意識到晶體管的活動就是在運算,因為晶體管開了又關,是對其他晶體管的回應(這是他在麻省理工學院的碩士論文——有史以來最有意義的碩士論文)。如果A晶體管只有在B和C晶體管都打開時才打開,那麼這時它就是在做小型的邏輯運算。如果A晶體管在B和C晶體管其中一個打開時才打開,就是另外一種小型邏輯運算。如果A晶體管在B晶體管任何關閉的時候打開,或者反過來,這又是第三種運算。信不信由你,所有算法,無論多複雜,都能分解為這三種邏輯運算:且,或,非。利用不同的符號來代替「且」「或」「非」運算,簡單的算法就可以用圖表來表示。例如,如果發燒可由感冒或者瘧疾引起,那麼你應該用泰諾來治療發燒和頭疼,可以用圖1–1表示。

圖1–1

通過結合許多這樣的邏輯運算,我們可以進行極其複雜的邏輯推理。人們往往認為計算機只和數字有關,其實並非如此,它完全關乎邏輯。數字和算術都是由邏輯構成的,而計算機的所有其他部分也是如此。想把兩個數相加?可以由晶體管的組合體來完成。想贏得《危險邊緣》智力比賽?也可以由晶體管的組合體來完成(當然,這個組合體龐大得多)。

即便如此,為了做不同的事而製造新的計算機代價過於昂貴。當然,現代計算機是各種晶體管的大集合,能做許多不同的事,這取決於哪些晶體管被激活。米開朗琪羅說過,他所做的一切,就是從大理石石塊中看出雕像,然後將多餘的石頭刻掉,直到雕像的形狀顯現出來。同樣,算法排除計算機中多餘的晶體管,直到出現想要的功能,無論是客機的自動駕駛儀,還是皮克斯的新電影,原理都是這樣。

一種算法不僅是簡單的一套指令,這些指令必須精確且不能模糊,這樣計算機才能夠執行。例如,食譜並不算一種算法,因為食譜沒有明確給出做事的順序,或者具體每一步是怎樣的。一勺白糖到底是幾克?每個嘗試新食譜的人都知道,跟著食譜做,可能會做出很美味的食物,也可能會做得一塌糊塗。相比之下,算法總能得出同樣的結果。即便食譜明確指出需要半盎司白糖,計算機也不知道如何執行,因為計算機不知道什麼是白糖、什麼是盎司。如果我們想對廚用機器人編程,讓它來做蛋糕,我們要通過視頻教它如何辨認白糖、如何拿起勺子等(我們現在仍在努力)。計算機必須知道如何執行算法,直到打開及關閉指定的晶體管。因此,食譜離算法還很遠。

另一方面,下面是玩井字棋的算法:

如果你或對手有兩粒連子,佔據剩下的角落。

否則,如果兩邊有兩個連子的走法,就那樣走。

否則,如果正中央是空的,走正中央。

否則,如果你的對手走到角落,佔據他的對角。

否則,如果有空白的角落,佔據它。

否則,佔據任意空白的角落。

這個算法有很大的優點,那就是它絕對不會輸。當然,它仍忽略了許多細節,比如在計算機的記憶中,棋盤如何表示,而棋的走法又如何改變這種表示方法。例如,每個角落我們有兩個比特,如果中間是空的,值就是00;如果有一個圈,值就變成01;如果有一個叉,值就變成10。即便如此,這也足夠精確、清晰,能讓有能力的編程員來填補被忽略的空白。它還有一個好處,就是不用我們自己指定算法,細到單個晶體管。在構建數據存儲塊時,我們可以使用之前存在的算法,而且有很多這樣的算法供選擇。

算法是一套嚴格的標準。人們常說,你沒法真正瞭解某樣東西,直到你能用一種算法來將其表達出來(理查德·費曼曾說,「如果我無法創造某樣東西,那麼也就無法理解它」)。方程式對物理學家和工程師來說就是謀生工具,而這也僅僅是一種特殊算法。例如,牛頓第二定律,可以說是有史以來最重要的等式,告訴你用物體的質量乘以其加速度,可以算出作用在物體上的力。該定律還隱含地告訴你,加速度等於作用力除以質量,要弄明白這一點,只需一個運算步驟。在科學的任何領域,如果某個理論無法用算法表示,那麼它就不是很嚴謹(更別提你無法用計算機來解決這個問題,因為你能讓計算機替你做的事實在太有限)。科學家提出理論,工程師製造設備,計算機科學家提出算法,這和理論及設備都有關。

設計算法並沒有那麼簡單。這個過程充滿陷阱,什麼事都不能想當然。如果你的一些構建已經出錯,就得找其他方法。設計算法最重要的一點就是,你得用一種計算機能理解的語言來將算法記錄下來,比如Java或者Python(從這個角度看,就是一個程序)。接下來,你得對其進行糾錯:找出每個誤差並修正,直到計算機能夠運行程序,而不至於搞砸。一旦你有了能完成你心願的程序,就輕鬆多了。計算機會以飛快的速度,按我們的要求辦事,而且毫無怨言。世界上的每個人都能享用你的創作成果。如果你願意,這個成果可以一文不收;當然,如果你解決的問題足夠有意義,這個成果也可以讓你成為億萬富翁。程序員(創造算法並將其編碼的人)是一個「小神靈」,能任意創造不同的世界。甚至你也可以說《聖經·創世記》裡的神也是「程序員」:語言(而不是統治權)才是他創造世界的工具。語言構成了這個世界。當今時代,坐在沙發上利用筆記本電腦,你就可以成為一個「神」。你完全可以想像一個世界,並實現它。

有朝一日,計算機科學家會互相依賴各自的成果,然後為新事物創造算法。這些算法會與其他算法相結合,目的是利用其他算法的成果,反過來產生能服務更多算法的成果。每一秒鐘,數十億計算機裡的數十億晶體管會打開關閉數十億次。算法形成新型生態系統,它將生生不息,具有無可比擬的生命多樣性。

然而,不可避免地,在這個「伊甸園」裡也會有狡猾的人存在,人們稱之為「複雜性怪獸」。和九頭蛇一樣,這個複雜性怪獸有很多頭,其中一個就是空間複雜性,即為了儲存在計算機內存中,一個算法所需信息的比特數量。如果計算機無法提供該算法所需的內存,那麼這個算法就沒用,必須忽略。接著是邪惡的同類——時間複雜性:該算法運行多長時間,也就是說,在產生想要的結果之前,算法利用及重新利用晶體管的步驟有多少。如果算法運行時間太久,我們等不了,那麼這個算法也沒用。複雜怪獸最恐怖的一面就是人類的複雜性。當算法變得很複雜以致人類大腦已無法理解,當算法不同部分的交互過多且過於深入時,誤差就會悄然潛入。我們找不到這些誤差,也就無法糾正它們,算法也就不會做我們想做的事。即便我們讓它運行起來,它也會停下來。對使用它的人來說,它沒必要那麼複雜,而且它和其他算法也合作得不好,這為日後埋下隱患。

每位計算機科學家每天都在和「複雜性怪獸」做鬥爭。如果科學家輸了這場鬥爭,複雜性就會滲入我們的生活。你可能已經注意到,很多這樣的鬥爭科學家已經輸了。即便如此,我們也會繼續構建我們的算法之塔,並迎接越來越大的挑戰。每一代新的算法都要在之前的基礎上構建,除了這代算法的複雜性,它們還面臨之前算法的複雜性。塔會變得越來越高,會覆蓋整個世界,但它也會變得越來越脆弱,像一座紙片做的房子,隨時都會倒塌。算法裡的微小誤差可能導致價值10億美元的火箭爆炸,或者可能導致停電,造成數百萬美元的損失。算法以意想不到的方式進行交互,股票市場就會崩潰。

如果程序員是「小神」,複雜性怪獸就是魔鬼。慢慢地,魔鬼會贏得戰爭。

總得有個更好的方法來與魔鬼做鬥爭。

學習算法入門

每個算法都會有輸入和輸出:數據輸入計算機,算法會利用數據完成接下來的事,然後結果就出來了。機器學習則顛倒了這個順序:輸入數據和想要的結果,輸出的則是算法,即把數據轉換成結果的算法。學習算法能夠製作其他算法。通過機器學習,計算機就會自己編寫程序,就用不到我們了。

哇!

計算機會自己編寫程序。現在看來這是一個強大的想法,甚至可能有點嚇人。如果計算機開始自己編程,那麼我們將如何控制它們?我們會看到,人類可以很好地控制它們。可能會有人當即反對,這聽起來太美好了,不像真的。當然,編寫算法需要智力、創造力、問題解決能力,這些都是計算機沒有的。如何把機器學習與魔法區分開來?的確,今天為止,人們能編寫許多計算機無法學習的程序。可令人更為驚訝的是,計算機卻能學習人們無法編寫出來的程序。我們會開車、會辨認字跡,但這些技能都是潛意識發揮出來的,無法向計算機解釋這些事情是如何完成的。但是,如果我們把關於這些事情的足夠多的例子交給學習算法,該算法會很樂意弄明白怎樣獨立完成這些事情,這時我們就可以放手讓算法去做了。郵局正是通過這種方法來識別郵政編碼,自動駕駛汽車也是這樣才得以實現在路上跑。

解釋機器學習的力量的最好方法,也許就是將其與其他低技術含量的活動進行類比。工業社會,商品由工廠製造,這也意味著工程師必須弄明白商品如何通過零件組裝起來、這些零件如何生產等,細到生產原料。這是一項大工程。計算機是人類發明的最複雜的產品,計算機設計、工廠生產、程序運行都涉及大量的工作。還有另外一種方法能讓我們得到一些想要的東西:讓自然規律去塑造它們。在農業當中,我們播種,確保種子有足夠的水分和營養,然後收割成熟的作物。為什麼技術不能這樣?完全可以,而這也是機器學習的承諾。學習算法是種子,數據是土壤,被掌握的程序是成熟的作物。機器學習專家就像農民,播下種子,灌溉,施肥,留意作物的生長狀況,事事親力親為,而不是退居一旁。

一旦我們這樣看待機器學習,隨即也會發生兩件事:

第一,我們掌握的數據越多,我們能學的也越多。沒有數據?什麼也學不到。大數據?很多東西可以學習。這也是機器學習無處不在的原因,因為有飛速增長的數據。如果你在超市購買機器學習,其包裝上可能會寫著「只需添加數據」。

第二,機器學習是一把劍,利用這把劍可以殺死複雜性怪獸。只要有足夠的數據,一段只有幾百行代碼的程序可以輕易生成擁有上百萬行代碼的程序,而且它可以為解決不同問題不停產生不同的程序。這可以顯著降低程序員工作的複雜度。當然,就像對付九頭蛇,我們砍掉它的頭,會立即長出新頭,但長出的頭會變小,而且頭的生長也需要時間,因此我們仍有可能勝出。

我們可以把機器學習當作逆運算,正如開平方是平方的逆運算、整合是分化的逆運算。正如我們會問「什麼數的平方是16」,或者「導數為x+1的函數是什麼」,我們也會問「什麼算法會得出該結果」。我們很快會看到,怎樣將這個觀點運用到具體的學習算法中。

有些學習算法學習知識,有的則學習技能。「所有人都會死」是知識,騎單車是技能。在機器學習中,知識往往以統計模型的形式出現,因為多數知識都是可以統計的:所有人都會死,但只有4%是美國人。技能往往以程序的形式出現:如果馬路向左彎曲,那麼向左轉動車頭;如果一隻鹿跳到你面前,那麼立刻剎車(很遺憾,在寫這本書時,谷歌的自動駕駛汽車仍會把被風吹起的塑料袋和鹿弄混)。通常,這些程序都很簡單,複雜的是它們的核心知識。如果你能判斷哪些郵件是垃圾郵件,那麼你也就能判斷該刪除哪些郵件。如果你能在象棋遊戲中判斷這盤棋自己的優勢在哪裡,那麼你也就懂得該怎麼走(能讓你處於最有利地位的一步)。

機器學習有許多不同的形式,也會涉及許多不同的名字:模式識別、統計建模、數據挖掘、知識發現、預測分析、數據科學、適應系統、自組織系統等。這些概念供不同群體使用,擁有不同的聯繫。有些有很長的半衰期,有些則較短。在本書中,我用「機器學習」一詞泛指所有這些概念。

機器學習有時會和人工智能(AI)混淆。嚴格來講,機器學習是人工智能的子域,但機器學習發展得如此壯大且成功,現已超越以前它引以為傲的母領域。人工智能的目標是教會計算機完成現在人類做得更好的事,而機器學習可以說就是其中最重要的事:沒有學習,計算機就永遠無法跟上人類的步伐;有了學習,一切都與時俱進。

在信息處理這個生態系統中,學習算法是頂級掠食者。數據庫、網絡爬蟲、索引器等相當於食草動物,耐心地對無限領域中的數據進行蠶食。統計算法、線上分析處理等則相當於食肉動物。食草動物有必要存在,因為沒有它們,其他動物無法存活,但頂級掠食者有更為刺激的生活。數據爬蟲就像一頭牛,網頁相當於它的草原,每個網頁就是一根草。當網絡爬蟲進行破壞行動時,網站的副本就會保存在其硬盤當中。索引器接著做一個頁面的列表,每個詞都會出現在頁面當中,這很像一本書後的索引。數據庫就像大象,又大又重,永遠不會被忽略。在這些動物當中,耐心的野獸飛快運轉統計和分析算法,壓縮並進行選擇,將數據變為信息。學習算法將這些信息吞下、消化,然後將其變成知識。

機器學習專家在計算機科學家中就是一種精英式的「神職」。許多計算機科學家,尤其是更老的那一代,並不如他們想的那樣能很好地理解機器學習。這是因為,計算機科學通常需要的是準確思維,但機器學習需要的是統計思維。例如,如果有條規定是「垃圾郵件標記的正確率是99%」,這並不意味存在缺陷,而可能意味這是你的最好水平,已經很好用了。這種思維上的差別很大程度上也解釋了為什麼微軟能趕上網景公司,但想趕上谷歌卻困難得多。說到底,瀏覽器只是一個標準的軟件,而搜索引擎則需要不同的思維模式。

之所以說機器學習研究者是超級計算機迷的另外一個原因,就是當今世界急需他們,但他們寥寥無幾。按照計算機科學嚴格的標準,這樣的人數量就更少了。蒂姆·奧萊利認為,「數據科學家」是硅谷最熱門的職業。根據麥肯錫全球研究院估計,截至2018年,僅美國就需要再培養14萬~19萬機器學習專家才夠用,另外還需要150萬有數據頭腦的經理。機器學習的應用爆發得如此突然,連教育都無法跟上其步伐,同時,人才奇缺也是因為這門學科在人們看來很難而令人望而生畏。教科書很可能會讓你感到數學很難,然而,這個困難表面看起來很大,其實並不是。機器學習所有的重要觀點可以不用通過數學表示出來。當你讀這本書時,甚至可能會發現,你發明了自己的學習算法,而且看不到一個方程式的影子。

工業革命使手工業自動化,信息革命解放了腦力勞動,而機器學習則使自動化本身自動化。沒有機器學習,程序員會成為阻撓進步的障礙。有了機器學習,進步的步伐就會加快。如果你是一個懶惰又不那麼聰明的計算機科學家,機器學習就是理想的職業,因為學習算法會完成所有事情,功勞卻是你的。從另一方面講,學習算法會讓我們失業,這也只是我們應受的懲罰。

將自動化帶入新的高度,機器學習革命會帶來廣泛的經濟及社會變革,正如互聯網、個人計算機、汽車以及蒸汽機在當時對社會和經濟的影響那樣。這些變革已經明顯存在的領域就是商業。

為何商業擁護機器學習

為什麼谷歌比雅虎要有價值得多?它們都是用戶登錄最多的網站,都靠在網頁上登廣告賺錢。它們都用拍賣的方式銷售廣告,用機器學習來預測用戶點擊某廣告的概率(概率越大,廣告價值越大),但谷歌的機器學習就比雅虎要好很多。這不是它們市場價值差異巨大的唯一原因,卻是主要原因。如果沒有達到預測的點擊量,對廣告商來說就是浪費機會,對網站來說是收益損失。谷歌每年的收入是500億美元,預測點擊率每上升1%,就可能意味著每年為公司帶來額外5億美元的收入。難怪谷歌是機器學習的鐵桿粉絲,雅虎和其他公司也在奮起直追。

網絡營銷僅僅是巨大變革中的一種表現形式。無論什麼市場,生產商和用戶在交易發生之前,都需要進行聯繫。在互聯網出現之前,交易的主要障礙就是實地交易。你只能從當地的書店購買書籍,而當地書店的書架空間又有限。但當你可以隨時把所有書下載到電子閱讀器時,問題就變成了可供選擇的書太多。你怎麼瀏覽書店裡上百萬不同名字的書?同樣的問題也出現在其他信息產品當中:視頻、音樂、新聞、推特文章、博客、網頁。這個問題還會出現在能夠遠程購買的產品和服務當中:鞋子、鮮花、小配件、酒店房間、輔導、投資。人們在找工作或挑日子時,也會遇到選擇過多的問題。你們如何找到彼此?這是信息時代的定義問題,而機器學習就是問題解決方案的主要部分。

當公司不斷發展壯大後,它會經歷三個階段:

第一階段的所有事都由人工完成——夫妻店的店主親自瞭解其顧客,他們依照顧客類型訂購、展示、推薦產品。這很不錯,但規模不大。

第二階段是最辛苦的時期,公司變得越來越大,需要用到計算機。公司招來程序員、顧問,買來數據庫管理器,程序員編寫了成百萬行的代碼來使公司所有能自動化的功能自動化。更多的人享受到服務,但也有麻煩:決定是在粗略的人口統計類別的基礎上做出來的,計算機程序也過於死板,無法與人類無限的才能相匹配。

經過一段時間進入第三階段,沒有足夠的程序員和顧問滿足公司的需要,因此公司不可避免地向機器學習尋求幫助。亞馬遜無法通過計算機程序將所有用戶的喜好熟練地進行編碼,臉書也不知道如何編寫這樣的程序,能選擇最好的更新內容展示給每位用戶。沃爾瑪每天銷售百萬件商品,還要做數十億個選擇。如果沃爾瑪的程序員努力編寫出能夠做所有選擇的程序,這些選擇就不用人來做了。相反,這些公司所做的工作是,它們在收集到如山的數據後,讓學習算法盡情學習,然後預測顧客想要什麼產品。

學習算法就是「媒人」:它們讓生產商和顧客找到對方,克服信息過載。如果這些算法足夠智能,你就能取得兩全其美的結果:從宏觀來講,選擇廣、成本低;從微觀來講,能夠瞭解顧客的個性化需求。學習算法並不是完美的,決定的最後一步通常還得由人來做,但學習算法很智能,為人們減少了需要做的選擇。

回顧過去,我們看到,從計算機到互聯網再到機器學習的進步是必然的:計算機使互聯網成為可能,這個過程產生大量數據以及無限選擇這個問題。單單互聯網還不足以把「一個尺寸滿足所有」的需求轉向追求無限多樣化的長尾效應。網飛公司的庫存裡可能有10萬種不同名字的DVD(數字多功能光盤),但如果顧客不懂得如何找到自己喜歡的,他們就會默認選擇最流行的DVD。只有網飛公司有了學習算法之後,才能幫助它瞭解顧客的喜好,並推薦DVD,長尾效應也才得以真正實現。

一旦必然的事情發生,機器學習成為媒介,那麼其力量也開始慢慢積聚。谷歌的算法很大程度上決定你會找到什麼信息,亞馬遜決定你會買到什麼產品,全球最大的婚戀網站默契網(Match.com)決定你的約會對象是誰。最好的選擇權仍在你手裡——從算法給你展示的所有選項中挑選,但99.9%的選擇由算法做出。當下,一家公司的成敗取決於學習算法對其產品的喜愛程度,而整個經濟體的成功——是否每個人都能得到自己需要的物美價廉的產品,則取決於學習算法的好用程度。

公司確保學習算法喜愛其產品的最佳方法就是,讓公司自己運行算法。誰有最佳算法、數據最多,誰就能贏。新型網絡效應佔據上風:誰有最多的用戶,誰就能積累最多的數據,誰有最多的數據,誰就能學到最好的模型,誰學到最好的模型,誰就能吸引最多的用戶,這是一種良性循環(如果你在競爭,就會變成惡性循環)。把搜索引擎從谷歌轉換到必應,可能會比把應用系統從Windows切換到Mac要簡單,但在實際操作中,你不會這麼做,因為谷歌擁有領先優勢及更大的市場份額,比必應更懂得你想要什麼,雖然必應的技術也不錯。可惜的是,必應剛進入搜索行業,沒有什麼數據資源,而谷歌卻擁有十餘年的機器學習經驗。

你可能會認為,過一段時間,更多的數據結果意味著更多的重複,但數據的飽和點還未出現,長尾效應持續起作用。如果你看亞馬遜或網飛公司為你提供的推薦產品,很明顯,這些推薦項仍很粗略,而谷歌的搜索結果也有很大的優化空間。每個產品的特性、網頁的每個角落都有很大的潛力,能通過機器學習得到改善。網頁底部的鏈接應該是紅色的還是藍色的?兩個顏色都試試,看看哪個顏色的點擊率會更高。還有,最好讓機器學習持續運行,不斷調整網頁的所有方面。

所有擁有眾多選擇和大量數據的市場都會發生這樣的動態循環。比賽正在進行,誰學得最快,誰就贏了。隨著越來越好地瞭解用戶需求,這個比賽不會停止:企業可以將機器學習應用到企業運作的每個方面,只要有足夠的數據,只要數據能夠從計算機、通信設備以及更廉價、更普適的傳感器源源不斷地輸出。「數據是新型石油」是目前的流行說法,既然是石油,提煉石油就是一筆大生意。和其他公司一樣,IBM已制定經濟增長戰略,為企業提供分析服務。業界將數據看作戰略資產:我有什麼數據,而競爭對手卻沒有?我要怎麼利用這些數據?競爭對手有什麼數據,而我卻沒有?

同樣的道理,沒有數據庫的銀行無法和有數據庫的銀行競爭,沒有機器學習的企業也無法跟上使用機器學習的企業。雖然第一家公司的專家寫了上千條規則,預測用戶的喜好,但是第二家公司的算法卻能學習數十億條規則,一整套規則都可用於每位用戶。這就相當於長矛對機關鎗。機器學習是很棒的新技術,但這並不是商業界擁護它的原因——人們之所以擁護它,是因為別無選擇。

給科學方法增壓

機器學習是「打了類固醇」的科學方法,也遵循同樣的過程:產生假設、驗證、放棄或完善。科學家可能會花費畢生精力來提出或驗證幾百個假設,而機器學習系統卻能在一秒鐘內做完這些事。機器學習使科學的發現過程自動化。因此,並不奇怪,這既是商業領域的革命,也是科學領域的革命。

為了取得進步,科學的每個領域都需要足夠的數據,以與其研究現象的複雜性相對應。這是物理成為第一個騰飛學科的原因:第谷·布拉赫對星球位置的記錄,以及伽利略對鐘擺擺動、斜面的觀察,已經足以推導出牛頓定律。這也是為什麼雖然分子生物學這個學科比神經科學年輕,但是已超越神經科學:DNA(脫氧核糖核酸)微陣列以及高通量測序技術提供了大量的數據,而神經科學家對此只能可望而不可即。這也是為什麼社會科學研究是一場艱苦卓絕的鬥爭:你擁有的只是100人的樣本和每個人的十幾個測量值,你能模擬的也只是某個規模很有限的現象,甚至這個現象可能不是孤立存在的,還受到其他現象的影響,這就意味你仍然沒有徹底瞭解它。

有個好消息,那就是之前缺乏數據的學科現在擁有很多數據。用不著讓50名睡眼惺忪的本科生到實驗室完成任務並付給他們報酬,心理學家通過在亞馬遜「土耳其機器人」[3]上發佈實驗任務,就可以找到滿足他們數量要求的實驗對像(這個網站對更多樣化的樣本也有幫助)。雖然回想起來越來越困難,但也只是10年前,研究社交網絡的社會學家哀歎說,他們無法得到成員超過幾百人的社交網絡。現在有了臉書,有超過10億用戶。大部分用戶會發佈有關他們生活的很多細節,就像地球社會生活的實時直播。在神經科學領域,神經連接組學和功能性磁共振成像讓人們對大腦有了十分詳細的瞭解。在分子生物學領域,基因和蛋白質的數據庫數量以指數級速度增長。甚至更為「年長」的學科,如物理學和解剖學也在不斷進步,因為粒子加速器和數字巡天領域的數據在源源不斷輸出。

如果你不將大數據變成知識,它將毫無用處,可是世界上沒有那麼多科學家來完成這件事。埃德溫·哈勃通過鑽研照相底片發現新的星系,但史隆數字巡天計劃中,多達5億的天體肯定不是這樣被辨認出來的。這就像在沙灘上用手來數沙粒的數目。你可以記錄規則,把星系從星星及干擾物(如鳥、飛機、超人)區分開來,但得出的星系並不是那麼準確。相比之下,天體圖像目錄編輯和分析工具(SKICAT)項目使用了學習算法。底片包括標記了正確類別的天體,從這些底片出發,學習算法可以明白每個分類的特點,並將其應用到沒有標記的底片當中。甚至更理想的是,學習算法能夠將那些對人類來說難以標記的天體進行分類,這些天體正是該項調查計劃的主要內容。

有了大數據和機器學習,你就能弄明白比之前複雜很多的現象。在多數領域,科學家一般只使用種類很有限的模型,例如線性回歸模型,在這個模型當中,你用來適應數據的曲線總是一條直線。遺憾的是,世界上的大多數現象都是非線性的(或者說這也是一件幸事,如果是線性的,生活會變得非常乏味。實際上,那樣就不會存在生命了)。機器學習打開了廣闊、全新的非線性模型世界。這就好比在只有幾縷月光照射的房間,打開了明亮的燈。

在生物學領域,學習算法的研究成果包括:DNA分子中基因的位置;在蛋白質合成前,多餘的核糖核酸在哪裡進行絞接;蛋白質如何折疊成各自的特有形狀;不同條件如何對基因的表達造成影響。用不著在實驗室對新藥進行測試,機器學習就可以預測這些藥物是否有效,只有最有效的藥品才會受到測試。學習算法還會剔除那些可能產生嚴重副作用(甚至導致癌症)的藥物,備選藥物無須在經過人體試驗被證明無效後才被禁止使用,從而避免了代價昂貴的失敗。

然而,最大的挑戰就是將所有這些數據組合成一個整體。導致你患心臟病的因素有哪些?這些因素如何相互影響?牛頓需要的只是三個運動定律和一個萬有引力定律,但一個細胞、一個有機體、一個社會的完整模型卻無法由一個人來發現。雖然隨著知識的增長,科學家的分工變得越來越細,但是沒有人能夠將所有知識整合到一起,因為知識太多了。雖然科學家們會合作,但語言是傳播速度非常緩慢的介質。雖然科學家們想努力追上別人的研究,但出版物的數量如此之多,他們的距離被拉得越來越遠。通常是,重做一項實驗比找到該實驗的報告還要容易。機器學習在這時就會起作用,它能根據相關信息搜索文獻,將某領域的行話翻譯到另一個領域,並建立聯繫,而科學家們在過去都沒有意識到。漸漸地,機器學習成為一個巨大的中心,通過這個中心,某領域裡發明的建模技術將會被引入其他領域。

如果計算機沒有被發明出來,20世紀下半葉的科學將停滯不前。這可能不會很快在科學家當中表現出來,因為他們專注於所有仍可努力實現、有限的進步,但進步的空間真的太小了。同樣,如果沒有機器學習,許多科學在未來10年將會面臨收益遞減。

為了預見科學的未來,看看曼徹斯特大學生物技術研究院的實驗室,在那裡,一個名叫亞當的機器人正在努力工作,目的是找到哪些基因在酵母中對哪些酶進行編碼。亞當有一個酵母新陳代謝的模型,還掌握了基本的基因及蛋白質知識。它提出假設,設計實驗驗證假設,進行實地實驗,分析結果,提出新的假設,直到它滿意為止。當下,人類科學家仍然在獨立檢查亞當的結果,然後才會相信這些結果,但在未來,他們就會交給機器人科學家來驗證彼此的假設。

10億個比爾·克林頓

在2012年的美國總統選舉中,機器學習決定了誰能當上總統。通常決定總統選舉的因素包括經濟、候選人的親民度等,但這些因素沒有起到作用,而選舉的結果主要受到幾個「搖擺州」的影響。米特·羅姆尼的競選採用的是傳統的投票策略,將選民分成幾大類,然後選擇是否把每個類別作為目標。尼爾·紐豪斯(羅姆尼的民意調查專家)說道:「如果我們能在俄亥俄州贏得無黨派人士,那麼這場競賽我們就贏了。」雖然羅姆尼獲得了7%無黨派人士的支持,但他仍失去了這個州,在競選中失利。

相比之下,奧巴馬總統僱用了拉伊德·賈尼(機器學習專家,他是奧巴馬競選中的首席科學家)。賈尼研究的是如何整合最偉大的分析運算,並將其應用到政治史中。他們將所有選民的信息整合成單個數據庫,然後將該數據庫和他們能在社交網絡、市場營銷等領域找到的資源結合起來。之後著手對每個選民做四種預測:(1)支持奧巴馬的可能性有多大;(2)會不會參加民意調查;(3)會不會回應競選宣傳並照做;(4)對特定問題進行對話之後,他們會不會改變選舉決定。基於這些選民的例子,奧巴馬團隊每個晚上進行66 000場選舉模擬,並用這些結果指導奧巴馬競選的志願者大軍:該給誰打電話,該拜訪誰,該說什麼。

在政界、商界以及戰爭中,最糟糕的事情莫過於,你不明白對手的行動,而知道該怎麼做時,為時已晚。這就是發生在羅姆尼競選中的事情,他們能看到對手的團隊在特定鎮的特定電台花錢做宣傳,卻不知道這是為什麼,他們能預測的實在太少。最後,奧巴馬除了北卡羅來納州以外,贏得了每個州,而且與最可靠的民意調查專家的預測相比,他贏得了更多。反過來,最可靠的民意調查專家(例如內特·希爾)使用的是最複雜的預測技術,預測結果卻沒有奧巴馬競選團隊的結果準確,因為他們的資源比較少。但他們比那些所謂的權威人士要準確很多,因為那些人的預測只是基於他們自己的專業知識。

也許你會認為,2012年的美國總統競選只是機緣巧合:大多數選舉結果並不那麼接近,機器學習無法成為決定因素。但未來機器學習會讓更多的選舉結果更接近。在政界,正如在所有領域那樣,學習就像一場掰手腕比賽。在卡爾·羅夫(前直銷商和數據挖掘工程師)的年代,共和黨是領先的。到了2012年,共和黨開始掉隊,但現在他們又追上來了。我們不知道下一輪選舉誰會領先,但我們知道兩個黨派為了贏得選舉都很努力。這也就意味著,應該更好地瞭解選民,根據候選人的情況進行宣傳,甚至根據實際情況選擇候選人。在選舉期間以及每輪選舉之間,這適用於整個黨綱:在硬數據的基礎上,如果詳細的選民模式表明該黨派現在的綱領是失敗的,那麼該黨派就應改變它。因此,把主要選舉活動放到一邊,民意調查中候選人的差距會變得越來越小,而且很快會消失。其他條件不變,擁有更好選民模式的候選人會贏得選舉,而選民也會因此得到更好的服務。

政治家最偉大的才能之一,就是能夠瞭解其選民個人或者選民團體,然後直接與他們對話,比爾·克林頓就是其中的一個典範。機器學習的作用就是,讓每位選民都覺得克林頓對待他們親力親為、非常用心。儘管他們心目中的這些小小克林頓與真的克林頓相差太遠了,但優勢在於「小克林頓」的數量眾多,哪怕比爾·克林頓根本無法瞭解美國的每位選民是怎麼想的(雖然他確實想知道)。學習算法是最強大的政治家推銷商。

當然,就像企業一樣,政治家能把機器學習掌握的信息用好,也可能會用得很糟糕。例如,對不同的選民,他們可能會給出不一致的承諾,但選民、媒體、監督組織也會自己進行數據挖掘,並揭露做得太過分的政治家。競選活動不僅僅是候選人之間的較量,還涉及民主進程中的所有參與者。

更大範圍的結果就是,民主會更好地得到實現,因為選民與政治家之間交流的範圍會飛速擴大。在當今這個高速互聯網時代,民意代表從你身上獲取的信息數量仍像19世紀時一樣有限:每兩年會有100比特左右的信息,數量正好對應一張選票。這些信息會由民意信息來補充,或許偶爾還會有電子郵件和市民大會的信息,但還是少得可憐。大數據和機器學習正改變這種等式關係。在未來,只要選民模式準確,當選官員就可以每天詢問選民上千次想要什麼,然後根據詢問結果來辦事,不用在現實中糾纏選民。

學習算法與國家安全

在網絡空間之外,學習算法是保護國家的壁壘。每天,國外襲擊者都會企圖闖進五角大樓、國防承包商以及其他公司和政府機構的計算機。他們的計謀不斷變化,能抵抗昨天襲擊的方法,今天就已經不管用了。編寫代碼來偵查並阻止每場襲擊,可能會和馬其諾防線一樣有效,五角大樓的網絡司令部十分瞭解這一點。但如果是恐怖分子的第一次襲擊,而且也沒有之前的例子供機器學習來參考,那麼機器學習就會遇到問題。學習算法會構建正常行為的模型(這樣的模型數量很多),標出異常行為,然後召集來「騎兵」(系統管理員)。如果網絡戰爭發生,人類就是總指揮,算法就是步兵。人類速度太慢、數量太少,很快就會被機器人大軍殲滅。我們需要自己的機器人軍隊,而機器學習就像機器人中的西點軍校。

網絡戰爭是不對稱戰爭的一個例子,一方的傳統軍事實力比不上另一方,但仍然可以給對方造成嚴重傷害。少數恐怖分子只用美工刀就可以撞到雙子塔,並讓幾千名無辜者遇難。當今美國安全最大的威脅就是不對稱戰爭,而且抵抗所有威脅的有效武器就是信息。如果敵人躲不了,那麼他也活不了。好消息就是我們有大量信息,但也有壞消息。

美國國家安全局已經對數據產生無限大的胃口,也因此聲名狼藉。據估計,每天美國國家安全局竊聽著全球10億多個通話,還有其他通信。但是,拋開隱私問題,它也沒有讓上百萬員工來竊聽這些通話、偷看郵件,甚至也不會記錄誰和誰通話。絕大多數通話是沒有嫌疑的,而專門編寫程序來找出有嫌疑的通話又很困難。過去,美國國家安全局利用關鍵詞配對方法,但要應付這個方法也很容易(例如,把爆炸襲擊稱作「結婚」,把炸彈稱作「結婚蛋糕」)。21世紀,這些事就可以交給機器學習。保密是安全局的標誌,但安全局局長已經向美國國會證明,通話記錄挖掘已經阻止了幾十起恐怖威脅。

恐怖分子可隱藏在足球比賽的人群中,但學習算法能辨認他們的相貌。恐怖分子可以在國外製造爆炸事件,但學習算法能找出他們。學習算法還可以做更加精細的事情:將機器人與事件連接起來,這些事件單個看起來並無危害,但集中起來可能就預示著不祥。這種方法本可以阻止「9·11」事件的發生。有一個進一步的轉折:一旦確定的程序部署下來,壞人可能會改變其活動,以擾亂該程序。這與自然世界不同,自然世界總是以同樣的方式運轉。要解決這個問題,就要將機器學習與博弈論相結合,這是我已經在做的工作:別只想著打擊對手當前想做的事,要學會巧妙地迴避對手對你的學習算法的損害。正如博弈論那樣,把各種措施的成本和利益考慮在內,這也有助於找到隱私與安全之間的平衡點。

不列顛之戰期間,英國空軍阻止了納粹德國空軍的進攻,儘管後者人數比前者多很多。德國飛行員不明白,為什麼無論走到哪裡,他們總會碰上英國空軍。英國有一個秘密武器:雷達,可以在德國飛機越境進入英國領空時,就探測到它們。機器學習就像裝了雷達,能夠預知未來。別只是回擊對手的行動,要預測他們的行動,並先發制人。

一個更確切的例子就是人們熟知的「預知執法」。通過預測犯罪傾向,戰略性地將巡邏隊集中在最可能需要的地方,同時採取其他預防措施,這樣一座城市的警力就能有效地完成更大範圍的工作。在許多方面,執法過程就像不對稱戰爭,會用到許多相似的學習算法,無論是在偵查詐騙、揭露犯罪網絡,還是普通傳統的打擊執法中。

機器學習在戰爭中也將扮演越來越重要的角色。學習算法能有助於驅散戰爭迷霧,篩選偵察圖像,處理後續報告,並整合信息,為指揮官提供戰爭形勢分析。學習算法可以武裝軍用機器人的大腦,幫助其保持方位,適應地形,把敵機和民用機區別開來,以及進行制導。美國國防部高級研究計劃局(DARPA)的領頭狗(AlphaDog)能為士兵搬運設備。遙控飛機在學習算法的作用下可自主飛行。雖然它們仍受到人類飛行員的部分控制,但未來的趨勢是一個飛行員監控越來越多的遙控飛機群。在未來的軍隊裡,學習算法的數量會大大超過士兵的人數,這將減少許多士兵的傷亡。

我們將走向何方

科技潮流奔湧而來並迅猛向前。機器學習不同尋常的一點就是,在經歷所有這些變革以及繁榮和破產之後,它開始逐漸強大。它遇到的第一個大的打擊是在金融領域,預測股票的起伏波動,起於20世紀80年代。接下來的一波是挖掘企業數據庫,在20世紀90年代中開始發展壯大,尤其是在直接營銷、客戶關係管理、資信評分以及詐騙偵查等領域。接著是網絡和電子商務,在這些領域中,自動個性化很快流行起來。當互聯網泡沫暫時削弱這種趨勢時,將機器學習應用到網頁搜索和廣告投放的做法開始騰飛起來。不管怎樣,「9·11」恐怖襲擊後機器學習被應用到打擊恐怖主義的戰爭中。網絡2.0帶來一連串的新應用,包括挖掘社交網絡、搜索哪些博客談到你的產品。同時,各個領域的科學家也逐漸轉向大規模建模,由分子生物學家和天文學家打頭陣。人們勉強留意到了房地產泡沫,而其主要影響就是使人才從華爾街轉移到硅谷,並受到歡迎。2011年,「大數據」的概念流行起來,機器學習被明確歸入全球經濟未來的中心。當今,似乎沒有哪個人類鑽研的領域不受到機器學習的影響,甚至包括看起來沒有多大關係的領域(如音樂、體育、品酒)。

儘管機器學習發展很明顯,但這也僅僅是未來的預告。雖然它有用,但實際上當今在工業上起作用的學習算法的生成還是受到了很大限制。如果現在實驗室的算法能在各領域的前線使用,比爾·蓋茨說機器學習的突破產生的價值將相當於10家微軟,其實這個說法有點保守了。如果這些觀點讓研究人員真正覺得眼前一片光明,而且收到效果,那麼機器學習帶來的就不僅僅是新的文明時代,還是地球生命進化的新階段。

怎樣才能實現這個目標?學習算法如何運行?現在它們不能做什麼?它們的下一代會是怎樣的?機器學習革命將以什麼方式呈現?你得抓住哪些機遇,提防哪些危險?這些就是這本書要講的內容。

[3] 亞馬遜「土耳其機器人」(Amazon Mechanical Turk)是一個Web服務應用程序接口,開發商通過它可以將人的智能整合到遠程過程調用。——編者注

《終極算法:機器學習和人工智能如何重塑世界》