終極演算法:機器學習和人工智慧如何重塑世界

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...
目錄

內容簡介

演算法已在多大程度上影響我們的生活?購物網站用演算法來為你推薦商品,點評網站用演算法來幫你選擇餐館,GPS 系統用演算法來幫你選擇好的路線,公司用演算法來選擇求職者……當機器最終學會如何學習時,將會發生什麼?

不同於傳統演算法,現在悄然主導我們生活的是“能夠學習的機器”,它們通過學習我們瑣碎的資料,來執行任務;它們甚至在我們還沒提出要求,就能完成我們想做的事。

什麼是終極演算法?

機器學習五大學派,每個學派都有自己的主演算法,能幫助人們解決特定的問題。而如果整合所有這些演算法的優點,就有可能找到一種“終極演算法”,該演算法可以獲得過去、現在和未來的所有知識,這也必將創造新的人類文明。

你為什麼必須瞭解終極演算法?

不論你身處什麼行業、做什麼工作,瞭解終極演算法都將帶給你嶄新的科學世界觀,預測以後的科技發展,佈局未來,佔位未來!

作者簡介

佩德羅 · 多明戈斯(Pedro Domingos),美國華盛頓大學電腦科學教授,加州大學歐文分校資訊與電腦科學博士,在機器學習與資料探勘方面著有200多部專業著作和數百篇論文。國際機器學習學會聯合創始人,《機器學習》雜誌編委會成員,JAIR 前副主編。美國人工智慧協會院士(AAAI Fellow,國際人工智慧界的最 高榮譽),榮獲 SIGKDD 創新大獎(資料科學領域的最 高獎項)、斯隆獎(Sloan Fellowship)、美國國家科學基金會成就獎(NSF CAREER Award)、富布賴特獎學金、IBM 學院獎以及多個論文獎項。

本書內容

推薦序

作為一位機器學習領域研習10年以上的專業技術人員,我當初入行的時候沒有想到,短短的10年間,這項技術會如此快速地改變眾多行業,並影響全球數十億使用者生活的方方面面。在今天,當你用今日頭條瀏覽新聞資訊的時候,當你用網易雲音樂檢視推薦歌單的時候,當你在百度搜尋資訊的時候,當你在網際網路金融平臺申請借款的時候,甚至在你調戲 Siri 和小冰的時候,其實都是其背後的機器學習演算法在雲端伺服器中為你默默服務。但對於這樣一種重要技術,市面上一直缺少一本適合普通讀者的入門科普讀物,而眾多的專業書籍要求讀者具備一定的高等數學和計算機基礎演算法知識,並不適合科普的需要。直到中信出版社的朋友將這本書的翻譯稿推薦給我時,我欣慰地發現,這正是想了解一點機器學習的普通讀者所需要的啊。本書的作者多明戈斯是華盛頓大學的終身教授,也是一位在機器學習領域具有20年研究經歷的資深科學家。多明戈斯一直致力於融合各種機器學習演算法的優勢,提出一種可以解決所有應用問題的通用演算法,即終極演算法。在這本書裡,作者詳細地闡述了他的思路。其實我個人在閱讀本書的過程中,始終對“終極演算法”的提法充滿懷疑。在我看來,機器學習作為人工智慧領域的主流技術,在現實社會中一直以技術工具的面目為人所知。不同的技術流派和相應演算法往往可以很好地解決一些問題,卻對另一些問題一籌莫展。所謂的終極演算法真的存在嗎?如果存在,有價值嗎?

可以拿內燃機舉個例子,就我這個外行來說,也知道存在活塞式發動機、渦噴發動機、渦軸發動機、渦扇發動機、渦槳發動機、衝壓發動機等不同種類的內燃機。不同的內燃機特性迥異,適用的工況也不盡相同。小到家用小汽車,大到導彈驅逐艦,人類製造的各種機動裝置,都可以根據自己的效率需求、動力需求、壽命需求,乃至啟動速度等多種需求維度選擇發動機種類。如果有人非要搞個終極內燃機,並企圖用這種內燃機替代現存的各類內燃機,為所有大大小小、需求不同的機動裝置提供統一動力,估計大概率是要失敗的。這種通用的終極內燃機如果能搞出來,在大部分領域肯定競爭不過各領域的專用內燃機,或者成本太高,或者能效太低。

帶著這種疑問,我通篇讀下來之後才發現作者的另一層用意。誠如作者所說,很多普通人可能沒有意識到自己的生活中機器學習演算法的影響已經無處不在,機器學習已經在逐漸接管現實世界。大眾對這樣一種技術的認知程度和該技術的重要性相比顯得遠遠不夠,在不遠的未來,瞭解機器學習並有能力利用機器學習改進自己工作的人在職業發展上會具備巨大的優勢。“不要和人工智慧對抗,要讓人工智慧為你服務”是作者誠摯的忠告。而要利用好機器學習這個工具,並不一定需要讀一個計算機博士學位,但有必要了解一些基本的概念,瞭解各種技術的優缺點和能力邊界。正如一位稱職的駕駛員不必瞭解具體怎麼製造汽車發動機,但是對發動機的工作原理和種類還是需要略知一二的。因此,相比一板一眼地介紹機器學習的典型演算法,作者設計了一個更引人入勝的套路:先丟擲一個“是否存在一種終極演算法”的問題,然後帶著讀者一章一章地回顧機器學習發展史上的重要流派和代表演算法。每回顧一派,就鼓勵讀者思考終極演算法應該如何借鑑這類演算法的優點。好奇的普通讀者帶著疑問讀完本書後,不論其是否相信終極演算法的存在,至少對各類演算法都會有一定的印象。以討論終極演算法為名,行科普之實,到這一步,我覺得作者的目的已經達到一半了。

另外,在文末作者還提到,無論終極演算法是否存在,他希望這個大膽的問題能夠激發部分讀者的好奇,甚至被這個問題吸引成為機器學習的專業研究人員。確實,每一種學科都需要至高的理想驅動向前,就如同物理的大一統理論,當無數傑出的天才為一個終極問題孜孜以求時,就算這個問題本身在這些人的有生之年可能沒有答案,但是這個學科一定會因為這些偉大的探索歷程取得輝煌的進步。我想,這也許是作者因為對機器學習的熱愛夾帶的另一個私貨吧。

作為今日頭條的一位演算法架構師,我倒是希望頭條使用者都能陷入作者的“圈套”,帶著好奇心,好好讀讀這本書。如果大多數使用者都能瞭解一些機器學習的基礎知識,應該就能夠更好地和推薦演算法互動,不斷把演算法調教得更好,更符合自己真正的興趣,而不會因為演算法一開始推薦的內容不好就放棄這個產品。誠如作者所說,也許在未來,對應人類的心理學,也會出現機器心理學,瞭解一點機器人的心理,會讓你和機器的互動更有效率,也會讓機器更快地成為你忠實、不知疲倦的助手。

曹歡歡

今日頭條首席演算法構架師

你也許不知道,但機器學習就在你身邊。當你把查詢資訊輸入搜尋引擎時,它確定該向你顯示哪些搜尋結果(包括顯示哪些廣告)。當你開啟郵箱時,大部分垃圾郵件你無法看到,因為計算機已經把這些垃圾郵件過濾了。登入亞馬遜網站購買一本書,或登入網飛(Netflix)公司網站觀看視訊,機器學習系統會推薦一些你可能喜歡的產品。臉書(Facebook)利用機器學習決定該向你展示哪些更新,推特(Twitter)也同樣會決定顯示哪些文章。你使用計算機的任何時候,都有可能涉及機器學習。

傳統上認為,讓計算機完成某件事情的唯一方法(從把兩個數相加到駕駛飛機),就是非常詳細地記錄某個演算法並解釋其如何執行。但機器學習演算法就不一樣:通過從資料中推斷,它們自己會弄明白做事方法。掌握的資料越多,它們的工作就越順利。現在我們不用給計算機程式設計,它們自己給自己程式設計。

機器學習不僅存在於網路空間,它還存在於你每天的生活中:從你醒來到入睡,每時每刻無所不在。

早上7點你的收音機鬧鐘響起,播放的是你之前從未聽過的歌曲,但你的確很喜歡這首歌。Pandora 電臺(可免費根據你的喜好播放歌曲)的優勢在於,根據你聽的音樂,電臺掌握了你的品位,就像你自己的 radiojock 賬號一樣。這些歌曲本身可能借助機器學習來播放。接下來你吃早餐,閱讀早報。早報在幾個小時前印好,利用學習演算法,印刷過程經過仔細調整,以免報紙出現摺痕。你房間的溫度剛剛好,電費明顯少了很多,因為你安裝了 Nest 智慧溫控器。

你開車去上班,車持續調整燃油噴射和排氣再迴圈,以達到最佳的油耗。你利用一個交通預報系統(Inrix)來縮短高峰時段上下班的時間,這當然能減緩你的壓力。上班時,機器學習幫你克服資訊超載。你利用資料立方體來彙總大量資料,從每個角度觀察該立方體,獲取最有用的資訊。你要決定是採用佈局方案A,還是採用佈局方案 B,以便為網站帶來更多的業務。網路學習系統會嘗試兩種佈局方案,並給予反饋。你得對潛在供應商的網站進行調查,但網站的語言是外語。沒關係,谷歌會自動為你翻譯。E–mail 會自動分類並歸入相應的資料夾,只把最重要的資訊留在郵箱裡,非常方便。文書處理軟體幫你查詢語法和拼寫錯誤。你為即將到來的行程查詢到一個航班,但決定推遲購買機票,因為必應旅行(Bing Travel)預測票價很快會下降。也許你沒有意識到以上這些,要不是機器學習幫助你,你可能要馬不停蹄地親自做很多事情。

你在休息時間檢視自己的共同基金,大部分基金利用學習演算法來選股,其中的某些基金完全由學習系統運作。午餐時間到了,你走在大街上,想找個吃飯的地方,這時候用手機上的 Yelp 點評應用程式來幫助你。你的手機充滿了學習演算法,它們努力工作,改正拼寫錯誤、理解口頭指令、減少傳輸誤差、識別條形碼,還有其他很多事情。手機甚至可以預測你接下來會做什麼,然後依此給出建議。例如,當你吃完午餐後,它會小心翼翼地提示你,下午和外地來訪者的會面要推遲,因為她的航班延誤了。

下班時夜幕已降臨,你走向自己的車,機器學習會保證你的安全,監測停車場監控攝像頭的錄影,如果探測到可疑人的行動,它會提示不在場的安保人員。在回家路上,你在超市門口停車,走向超市貨物通道,通道藉助學習演算法進行佈置:該擺放哪些貨物,通道末尾該展示哪些產品,洋蔥番茄辣醬是否該放在調味醬區域,或是放在墨西哥玉米片旁邊。你用信用卡付款。學習演算法會向你傳送信用卡支付提示,並在得到你的確認後完成支付。另外一個演算法持續尋找可疑交易,如果它覺得你的卡號被盜,則會提示你。還有一種演算法嘗試評估你對這張卡的滿意度,如果你是理想的客戶但對服務不太滿意,銀行會在你決定換卡之前,為你提供更貼心的服務。

你回到家,走到信箱旁,發現有朋友的一封來信,這是通過能閱讀手寫地址的學習演算法派送的。當然也會有垃圾來信,由另外的學習演算法進行選擇。你停留了一會兒,呼吸夜晚清新涼爽的空氣。你所在城市的犯罪率明顯下降了,因為警察開始使用統計演算法來預測哪裡的犯罪率最高,並在那裡集中巡警力量。你和家人共享晚餐。市長出現在新聞裡,你為他投票,因為選舉那天,學習演算法確定你為“關鍵未投票選民”之後,他親自給你打了電話。吃完晚餐,你觀看球賽,兩支球隊都藉助統計學習來挑選隊員。你也可能和孩子們在 Xbox 上玩遊戲,Kinecta 學習演算法確定你在哪裡、在做什麼。你在睡前吃藥,醫生通過學習演算法的輔助來設定和檢測吃藥的最佳時間。醫生也可能利用機器學習來幫你診斷疾病,例如,分析X射線結果並弄明白一系列非正常症狀。

機器學習參與了你人生的每個階段。如果你為了參加 SAT 大學入學考試(美國學術能力評估測試)而在網上學習,某學習演算法會給你的練習短文打分。如果你申請商學院,且最近要參加 GMAT(經企管理研究生入學考試),其中的一個文章打分工具就是一個學習系統。可能當你求職時,某學習演算法會從虛擬檔案中挑選出你的簡歷,並告訴未來的僱主:這位是很不錯的人選,看看吧。最近公司給你加薪可能還多虧另外的學習演算法。如果想買套房子,Zillow.com 網站會估算你看中的每套房的價值,接著房子就有了著落。之後申請住房貸款,某學習演算法會研究你的申請,並建議是否可以通過申請。最重要的是,如果你使用線上約會服務,機器學習甚至可能幫你找到人生摯愛。

社會在不斷變化,學習演算法也是如此。機器學習正在重塑科學、技術、商業、政治以及戰爭。衛星、DNA(脫氧核糖核酸)測序儀以及粒子加速器以前所未有的精細程度探索自然,同時,學習演算法將龐大的資料轉變成新的科學知識。企業從未像現在這樣瞭解自己的使用者。在美國大選中,擁有最佳選舉模型的候選人奧巴馬最終戰勝了對手羅姆尼,獲得了競選勝利。無人駕駛汽車、輪船、飛機分別在陸地、海面、空中進行生產前測試。沒有人把你的喜好編入亞馬遜的推薦系統,學習演算法通過彙總你過去的購買經歷就能確定你的喜好。谷歌的無人駕駛汽車通過自學,懂得如何在公路上平穩行駛,沒有哪個工程師會編寫演算法,一步一步指導它該怎麼走、如何從 A 地到達 B 地——這也沒必要,因為配有學習演算法的汽車能通過觀察司機的操作來掌握開車技能。

機器學習是“太陽底下的新鮮事”:一種能夠構建自我的技術。從遠古祖先學會打磨石頭開始,人類就一直在設計工具,無論這些工具是手工完成的,還是大批量生產的。學習演算法本身也屬於工具,可以用它們來設計其他工具。“計算機毫無用處,”畢加索說,“它們只能給你提供答案。”計算機並沒有創造性,它們只能做你讓它們做的事。如果你告訴它們要做的事涉及創造力,那麼就要用到機器學習。學習演算法就像技藝精湛的工匠,它生產的每個產品都不一樣,而且專門根據顧客的需要精細定製。但是不像把石頭變成磚、把金子變成珠寶,學習演算法是把資料變成演算法。它們掌握的資料越多,演算法也就越精準。

現代人希望讓世界來適應自己,而不是改變自己來適應世界。機器學習是100萬年傳奇中最新的篇章:有了它,不費吹灰之力,世界就能感知你想要的東西,並依此做出改變。就像身處魔法林,在你通過時,周圍的環境(今天虛擬,明天現實)會進行自我重組。你在樹木和灌木中選出的路線會變成一條路,迷路的地方還會出現指路標誌。

這些看似有魔力的技術十分有用,因為機器學習的核心就是預測:預測我們想要什麼,預測我們行為的結果,預測如何能實現我們的目標,預測世界將如何改變。從前,我們依賴巫醫和占卜師進行預測,但他們太不可靠;科學的預測就更值得信賴,但也僅限於我們能系統觀察和易於模仿的事物,大資料和機器學習卻大大超出這個範圍。我們可通過獨立的思維來預測一些常見的事情,包括接球和與人對話,但有些事情,即便我們很努力,也無法預測。可預測與難以預測之間的巨大鴻溝,可以交給機器學習來填補。

矛盾的是,儘管學習演算法在自然和人類行為領域開闢了新天地,但它們仍籠罩在神祕之中。媒體每天都報道涉及機器學習的新聞:蘋果公司釋出 Siri 個人助理,IBM 沃森(IBM 的超級計算機)在《危險邊緣》遊戲中戰勝了人類,塔吉特(Target)能在未成年媽媽的父母發現之前通知她懷孕,美國國家安全域性在尋找資訊連線點……在這些新聞事件中,學習演算法如何起作用仍不得而知。計算機“吞入”數以萬億的位元組,並神奇地產生新的觀點,關於大資料的書籍甚至也避談“這個過程到底發生了什麼”。我們一般認為學習演算法就是找到兩個事件之間的聯結點,例如,用谷歌搜尋“感冒藥”和患感冒之間的聯絡。然而,尋找聯結點與機器學習的關係就像是磚與房子的關係,房子是由磚組成的,但一堆磚頭肯定不能稱之為“房子”。

當一項新技術同機器學習一樣流行且具有革命性時,不弄明白其中的奧妙實在太可惜。模稜兩可會導致誤差和濫用。亞馬遜的演算法能斷定當今世界人們在讀什麼書,這一點比誰都強。美國國家安全域性的演算法能斷定你是否為潛在恐怖分子。氣候模型可以判定大氣中二氧化碳的安全水平。選股模型比我們當中的多數人更能推動經濟發展。你無法控制自己理解不了的東西,這也是追求幸福的公民、專家或普通人需要了解機器學習的原因。

本書的第一個目標就是揭示機器學習的祕密。只有工程師和機修工有必要知道汽車發動機如何運作,但每位司機都必須明白轉動方向盤會改變汽車的方向、踩剎車會讓車停下。當今極少有人知道學習演算法對應的原理是什麼,更不用說如何使用學習演算法。心理學家丹 · 諾曼(Don Norman)創造了“概念模型”(conceptualmodel)這個新詞,代指為了有效利用某項技術而需粗略掌握的知識。本書就將介紹機器學習的概念模型。

並不是所有演算法的工作原理都相同,這些差異會產生不同的結果,比如亞馬遜和網飛的推薦系統。假設這兩個系統試著根據“你喜歡的東西”來對你進行引導,亞馬遜很有可能會把你帶到你之前常瀏覽的書籍類別,網飛則可能會把你帶到你不熟悉且似乎有點奇怪的區域,並引導你愛上那裡。在本書當中,我們會看到諸如亞馬遜、網飛之類的公司使用的各式各樣的演算法。與亞馬遜相比,網飛公司的演算法對你的愛好理解得更深(儘管還是很有限),然而具有諷刺意味的是,這並非意味著亞馬遜也應該利用這個演算法。網飛的商業模式是依靠晦澀的電影、電視節目的長尾效應來推動需求,這些電影和節目的成本很低。它一般不推薦大片,因為你的會員訂閱費可能有限。亞馬遜則沒有這樣的問題:儘管擅長利用長尾效應,但它同樣樂意把更昂貴的熱銷商品賣給你,這也會簡化其物流工作。對於那些奇怪的產品,如果是訂閱會員可免費享用的,我們可能會樂意去嘗試,而如果需要另外掏錢,我們去選擇它們的可能性就小得多。

每年都會出現上百種新的演算法,但它們都是基於幾個相似的基本思路。為了明白機器學習如何改變世界,你有必要理解這些思路。本書就將對此進行介紹。學習演算法並不是那麼深奧難懂,除了運用在計算機上,對於我們來說很重要的問題都可以通過學習演算法找到答案,比如:我們如何學習?有沒有更好的方法?我們能預測什麼?我們能信任所學的知識嗎?對這些問題,機器學習的各個學派有不同的答案。

機器學習主要有5個學派,我們會對每個學派分別介紹:符號學派將學習看作逆向演繹,並從哲學、心理學、邏輯學中尋求洞見;聯結學派對大腦進行逆向分析,靈感來源於神經科學和物理學;進化學派在計算機上模擬進化,並利用遺傳學和進化生物學知識;貝葉斯學派認為學習是一種概率推理形式,理論根基在於統計學;類推學派通過對相似性判斷的外推來進行學習,並受心理學和數學最優化的影響。在構建機器學習的目標推動下,我們將回顧過去100年的思想史,並以新的觀點來看待這段歷史。

機器學習的5個學派都有自己的主演算法,利用這種萬能學習演算法,原則上,你可以通過任何領域的資料來挖掘知識:符號學派的主演算法是逆向演繹,聯結學派的主演算法是反向傳播,進化學派的主演算法是遺傳程式設計,貝葉斯學派的主演算法是貝葉斯推理,類推學派的主演算法是支援向量機。在實踐中,這些演算法可能在有些工作中可用,而在其他工作中不可用。我們真正想要尋找的是能夠綜合這5種演算法的終極演算法。雖然有些人認為這難以實現,但對機器學習領域的人來說,這個夢想賦予我們力量,促使我們夜以繼日地工作。

如果存在終極演算法,那麼它可以通過資料學得包括過去的、現在的以及未來的所有知識。創造終極演算法將是科學歷史上最偉大的進步之一。它可以加速各類知識的進步,並以我們現在甚至無法想象的方式改變世界。終極演算法與機器學習的關係就像標準模型和粒子物理學或中心法則與分子生物學的關係:該統一原理能理解人類當今知道的一切,併為未來數十年或者數百年的進步奠定基礎。今天我們面臨許多難題,比如製造家用機器人和治癒癌症,終極演算法就是解決這些難題的關鍵。

以癌症為例。治癒癌症十分困難,因為它往往是一種綜合疾病。腫瘤可由各種原因誘發,且在轉移時會發生突變。殺死腫瘤細胞最可靠的方法是對其基因進行排序,弄明白哪些藥物可以抵抗癌細胞(這種方法不會對人造成傷害,患者必須提供基因和用藥史),甚至為你專門研製一種新葯。沒有哪個醫生能夠掌握該過程所需的所有知識。對於機器學習來說,這卻是再合適不過的任務。實際上,與亞馬遜和網飛每天所做的搜尋工作相比,它的工作是為你找到正確的療法,而不是合適的書籍或者電影,而且它的工作更為複雜,也更具挑戰。遺憾的是,雖然當今的學習演算法能以超出人類水平的精確度來診斷疾病,但治癒癌症仍遠遠超出它們的理解範圍。如果我們可以找到終極演算法,這將不再是難題。

因此,本書的第二個目標就是幫你創造終極演算法。你可能會認為這需要高深的數學運算和嚴謹的理論方面的工作,正相反,它需要暫時放下數學奧祕,來觀看各種學習行為包羅永珍的模型。對外行人來說,他們就像從遠方趕到終極演算法這片森林,從某些角度看,他們比專家更適合創造終極演算法,因為專家對某些學科已經過於投入。一旦我們有了概念性的解決方法,就能補充數學上的細節,但這不是本書的目標和重點。我們之所以談論每個學派,是為了收集它們的觀點,並找到其適用之處。請記住,沒有哪個盲人能瞭解整頭大象。我們會尤其關注哪個學派能對治療癌症做出貢獻,也關注該學派的缺失。然後,我們會將所有觀點集中,一步步地變成解決方案——這個解決方案可能還不是終極演算法,但已是我們能找到的最接近終極演算法的方案。希望它能解放你的大腦,讓你大膽想象。當你閱讀本書時,如果覺得某些章節讀起來困難,可以隨意略讀甚至跳過它們。本書的概要才是重中之重,當明白所有學派的觀點之後,如果你重讀那些困難的章節,收穫可能會比之前更多。

我研究機器學習已經有20餘年了。我對機器學習的興趣因一本書而起,大四時我在書店看到這本書名很奇怪的書——《人工智慧》(Articial Intelligence)。那本書只有一個章節是關於機器學習的,但讀那個章節時,我立即確定,學習是實現人工智慧的關鍵,而且當時技術水平如此原始,我也許能做點什麼。所以我擱置了讀 MBA(工商管理碩士)的計劃,到加利福尼亞歐文分校攻讀博士。機器學習當時是一個小眾且鮮為人知的領域,研究人員寥寥無幾,但加利福尼亞大學卻擁有一個巨大的研究團隊。一些同學中途放棄了,因為他們看不到機器學習的未來,而我堅持了下來。對我來說,沒有什麼能比教計算機學習更有吸引力的了:如果我們做到這一點,其他問題就會迎刃而解。5年後我畢業了,那時資料探勘技術十分流行,我開始寫這本書。我的博士論文結合了符號學派和類推學派的觀點。過去10年,我一直在整合符號學派和貝葉斯學派的觀點,最近又在嘗試整合它們與聯結學派的觀點。是時候進行下一步研究,並嘗試綜合這5個正規化了。

寫這本書時,我的腦海裡浮現出各式各樣但又有相似之處的讀者。

圍繞大資料以及機器學習的討論充滿爭議,如果你對此感到好奇,且懷疑有比論文上看到的更為深層次的東西,那麼這本書就是你進行革命的指南。

如果你的主要興趣是機器學習的商業用途,那麼本書至少能通過6種方法幫助你:成為分析學中更精明的消費者;充分利用你的資料專家;減少許多資料探勘專案的隱患;看看如果不買手寫編碼軟體,你能讓什麼進行自動操作;降低資訊系統的僵硬度;期待正朝你走來的新技術。我見過太多浪費大量時間和金錢去解決難題的人,他們使用了錯誤的學習演算法,或者誤解了學習演算法的含義。要避免這些慘敗,實際上,你只需要閱讀這本書。

如果你是普通人或者決策者,關注由大資料和機器學習引發的社會和政治問題,那麼本書將為你提供該技術的入門知識:什麼是機器學習,機器學習能幹什麼、不能幹什麼。本書沒有讓你覺得乏味的複雜細節。從隱私問題到未來的工作,以及機器人化引起戰爭的道德觀,我們會看到真正的問題所在,以及如何正確思考。

如果你是科學家或者工程師,那麼機器學習肯定是你不想錯過的有力武器。在大資料時代(即便是中型資料時代),陳舊的、靠得住的統計工具並不會讓你走得更遠。你需要的是機器學習的非線性技術來精確模仿多種現象,它會帶來全新的、科學的世界觀。今天,“正規化轉移”被人們用得過於隨意,但我可以毫不誇張地說,本書要講的內容就是和“正規化轉移”相關。

如果你是機器學習專家,那麼你可能對本書的大部分內容已經相當熟悉,但你仍會發現其中有許多新穎的看法、經典的觀點,以及有用的例子和類比。很大程度上,我希望本書能提出與機器學習相關的、新的看法,甚至能讓你開始思考新的方向。我們身邊到處是容易達成的目標,我們理應追尋這種目標,但我們也不應忽略不遠處就有更大的目標(關於這一點,我希望你們能原諒我詩意地用“終極演算法”來指通用型學習演算法)。

如果你是學生,無論你多大,是考慮該選什麼專業的高中生,還是決定該研究什麼領域的本科生,或者是考慮轉行、經驗豐富的專家,我希望本書能讓你對這個令人著迷的領域感興趣。當今世界極度缺乏機器學習專家,如果你決定加入這一行列,你不僅能得到令人激動的時刻和豐厚的物質回報,還有服務社會的大好機會。如果你已經在研究並學習主演算法,我希望本書能幫你瞭解它的歷史。如果你在旅途中偶然發現本書,也值得你用心閱讀。

最後要強調一點,如果你渴望奇蹟,那麼機器學習對你來說就是一場精神盛宴。我誠摯地邀請你一同前往。

第1章 機器學習革命(上)

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

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

enter image description here

圖1–1

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

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

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

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

如果你或對手有兩粒連子,佔據剩下的角落。
否則,如果兩邊有兩個連子的走法,就那樣走。
否則,如果正中央是空的,走正中央。
否則,如果你的對手走到角落,佔據他的對角。
否則,如果有空白的角落,佔據它。
否則,佔據任意空白的角落。

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

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

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

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

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

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

如果程式設計師是“小神”,複雜性怪獸就是魔鬼。慢慢地,魔鬼會贏得戰爭。

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

學習演算法入門

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

哇!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第1章 機器學習革命(中)

為何商業擁護機器學習

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

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

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

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

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

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

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

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

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

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

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

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

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

給科學方法增壓

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

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

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

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

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

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

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

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

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

第1章 機器學習革命(下)

10億個比爾 · 克林頓

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

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

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

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

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

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

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

學習演算法與國家安全

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

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

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

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

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

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

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

我們將走向何方

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

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

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

第2章 終極演算法(上)

第2章 終極演算法(中)

第2章 終極演算法(下)

第3章 符號學派:休謨的歸納問題(上)

第3章 符號學派:休謨的歸納問題(中)

第3章 符號學派:休謨的歸納問題(下)

第4章 聯結學派:大腦如何學習(上)

第4章 聯結學派:大腦如何學習(中)

第4章 聯結學派:大腦如何學習(下)

第5章 進化學派: 自然的學習演算法(上)

第5章 進化學派:自然的學習演算法(下)

第6章 貝葉斯學派:在貝葉斯教堂裡(上)

第6章 貝葉斯學派:在貝葉斯教堂裡(中)

第6章 貝葉斯學派:在貝葉斯教堂裡(下)

第7章 類推學派:像什麼就是什麼(上)

第7章 類推學派:像什麼就是什麼(中)

第7章 類推學派:像什麼就是什麼(下)

第8章 無師自通(上)

第8章 無師自通(中)

第8章 無師自通(下)

第9章 解開迷惑(上)

第9章 解開迷惑(中)

第9章 解開迷惑(下)

第10章 建立在機器學習之上的世界(上)

第10章 建立在機器學習之上的世界(中)

第10章 建立在機器學習之上的世界(下)

後記

致謝

閱讀全文: http://gitbook.cn/gitchat/geekbook/5a409c8cf59ac3165704787b

程式語言 最新文章