你也許不知道,但機器學習就在你身邊。當你把查詢信息輸入搜索引擎時,它確定該向你顯示哪些搜索結果(包括顯示哪些廣告)。當你打開郵箱時,大部分垃圾郵件你無法看到,因為計算機已經把這些垃圾郵件過濾了。登錄亞馬遜網站購買一本書,或登錄網飛(Netflix)公司網站觀看視頻,機器學習系統會推薦一些你可能喜歡的產品。臉書(Facebook)利用機器學習決定該向你展示哪些更新,推特(Twitter)也同樣會決定顯示哪些文章。你使用計算機的任何時候,都有可能涉及機器學習。
傳統上認為,讓計算機完成某件事情的唯一方法(從把兩個數相加到駕駛飛機),就是非常詳細地記錄某個算法並解釋其如何運行。但機器學習算法就不一樣:通過從數據中推斷,它們自己會弄明白做事方法。掌握的數據越多,它們的工作就越順利。現在我們不用給計算機編程,它們自己給自己編程。
機器學習不僅存在於網絡空間,它還存在於你每天的生活中:從你醒來到入睡,每時每刻無所不在。
早上7點你的收音機鬧鐘響起,播放的是你之前從未聽過的歌曲,但你的確很喜歡這首歌。Pandora電台(可免費根據你的喜好播放歌曲)的優勢在於,根據你聽的音樂,電台掌握了你的品位,就像你自己的radio jock賬號一樣。這些歌曲本身可能借助機器學習來播放。接下來你吃早餐,閱讀早報。早報在幾個小時前印好,利用學習算法,印刷過程經過仔細調整,以免報紙出現折痕。你房間的溫度剛剛好,電費明顯少了很多,因為你安裝了Nest智能溫控器。
你開車去上班,車持續調整燃油噴射和排氣再循環,以達到最佳的油耗。你利用一個交通預報系統(Inrix)來縮短高峰時段上下班的時間,這當然能減緩你的壓力。上班時,機器學習幫你克服信息超載。你利用數據立方體來匯總大量數據,從每個角度觀察該立方體,獲取最有用的信息。你要決定是採用佈局方案A,還是採用佈局方案B,以便為網站帶來更多的業務。網絡學習系統會嘗試兩種佈局方案,並給予反饋。你得對潛在供應商的網站進行調查,但網站的語言是外語。沒關係,谷歌會自動為你翻譯。E–mail會自動分類並歸入相應的文件夾,只把最重要的信息留在郵箱裡,非常方便。文字處理軟件幫你查找語法和拼寫錯誤。你為即將到來的行程查找到一個航班,但決定推遲購買機票,因為必應旅行(Bing Travel)預測票價很快會下降。也許你沒有意識到以上這些,要不是機器學習幫助你,你可能要馬不停蹄地親自做很多事情。
你在休息時間查看自己的共同基金,大部分基金利用學習算法來選股,其中的某些基金完全由學習系統運作。午餐時間到了,你走在大街上,想找個吃飯的地方,這時候用手機上的Yelp點評應用程序來幫助你。你的手機充滿了學習算法,它們努力工作,改正拼寫錯誤、理解口頭指令、減少傳輸誤差、識別條形碼,還有其他很多事情。手機甚至可以預測你接下來會做什麼,然後依此給出建議。例如,當你吃完午餐後,它會小心翼翼地提示你,下午和外地來訪者的會面要推遲,因為她的航班延誤了。
下班時夜幕已降臨,你走向自己的車,機器學習會保證你的安全,監測停車場監控攝像頭的錄像,如果探測到可疑人的行動,它會提示不在場的安保人員。在回家路上,你在超市門口停車,走向超市貨物通道,通道借助學習算法進行佈置:該擺放哪些貨物,通道末尾該展示哪些產品,洋蔥番茄辣醬是否該放在調味醬區域,或是放在墨西哥玉米片旁邊。你用信用卡付款。學習算法會向你發送信用卡支付提示,並在得到你的確認後完成支付。另外一個算法持續尋找可疑交易,如果它覺得你的卡號被盜,則會提示你。還有一種算法嘗試評估你對這張卡的滿意度,如果你是理想的客戶但對服務不太滿意,銀行會在你決定換卡之前,為你提供更貼心的服務。
你回到家,走到信箱旁,發現有朋友的一封來信,這是通過能閱讀手寫地址的學習算法派送的。當然也會有垃圾來信,由另外的學習算法進行選擇。你停留了一會兒,呼吸夜晚清新涼爽的空氣。你所在城市的犯罪率明顯下降了,因為警察開始使用統計算法來預測哪裡的犯罪率最高,並在那裡集中巡警力量。你和家人共享晚餐。市長出現在新聞裡,你為他投票,因為選舉那天,學習算法確定你為「關鍵未投票選民」之後,他親自給你打了電話。吃完晚餐,你觀看球賽,兩支球隊都借助統計學習來挑選隊員。你也可能和孩子們在Xbox上玩遊戲,Kinect[1]學習算法確定你在哪裡、在做什麼。你在睡前吃藥,醫生通過學習算法的輔助來設定和檢測吃藥的最佳時間。醫生也可能利用機器學習來幫你診斷疾病,例如,分析X射線結果並弄明白一系列非正常症狀。
機器學習參與了你人生的每個階段。如果你為了參加SAT大學入學考試(美國學術能力評估測試)而在網上學習,某學習算法會給你的練習短文打分。如果你申請商學院,且最近要參加GMAT(經企管理研究生入學考試),其中的一個文章打分工具就是一個學習系統。可能當你求職時,某學習算法會從虛擬文件中挑選出你的簡歷,並告訴未來的僱主:這位是很不錯的人選,看看吧。最近公司給你加薪可能還多虧另外的學習算法。如果想買套房子,Zillow.com網站會估算你看中的每套房的價值,接著房子就有了著落。之後申請住房貸款,某學習算法會研究你的申請,並建議是否可以通過申請。最重要的是,如果你使用在線約會服務,機器學習甚至可能幫你找到人生摯愛。
社會在不斷變化,學習算法也是如此。機器學習正在重塑科學、技術、商業、政治以及戰爭。衛星、DNA(脫氧核糖核酸)測序儀以及粒子加速器以前所未有的精細程度探索自然,同時,學習算法將龐大的數據轉變成新的科學知識。企業從未像現在這樣瞭解自己的用戶。在美國大選中,擁有最佳選舉模型的候選人奧巴馬最終戰勝了對手羅姆尼,獲得了競選勝利。無人駕駛汽車、輪船、飛機分別在陸地、海面、空中進行生產前測試。沒有人把你的喜好編入亞馬遜的推薦系統,學習算法通過匯總你過去的購買經歷就能確定你的喜好。谷歌的無人駕駛汽車通過自學,懂得如何在公路上平穩行駛,沒有哪個工程師會編寫算法,一步一步指導它該怎麼走、如何從A地到達B地——這也沒必要,因為配有學習算法的汽車能通過觀察司機的操作來掌握開車技能。
機器學習是「太陽底下的新鮮事」:一種能夠構建自我的技術。從遠古祖先學會打磨石頭開始,人類就一直在設計工具,無論這些工具是手工完成的,還是大批量生產的。學習算法本身也屬於工具,可以用它們來設計其他工具。「計算機毫無用處,」畢加索說,「它們只能給你提供答案。」計算機並沒有創造性,它們只能做你讓它們做的事。如果你告訴它們要做的事涉及創造力,那麼就要用到機器學習。學習算法就像技藝精湛的工匠,它生產的每個產品都不一樣,而且專門根據顧客的需要精細定制。但是不像把石頭變成磚、把金子變成珠寶,學習算法是把數據變成算法。它們掌握的數據越多,算法也就越精準。
現代人希望讓世界來適應自己,而不是改變自己來適應世界。機器學習是100萬年傳奇中最新的篇章:有了它,不費吹灰之力,世界就能感知你想要的東西,並依此做出改變。就像身處魔法林,在你通過時,周圍的環境(今天虛擬,明天現實)會進行自我重組。你在樹木和灌木中選出的路線會變成一條路,迷路的地方還會出現指路標誌。
這些看似有魔力的技術十分有用,因為機器學習的核心就是預測:預測我們想要什麼,預測我們行為的結果,預測如何能實現我們的目標,預測世界將如何改變。從前,我們依賴巫醫和占卜師進行預測,但他們太不可靠;科學的預測就更值得信賴,但也僅限於我們能系統觀察和易於模仿的事物,大數據和機器學習卻大大超出這個範圍。我們可通過獨立的思維來預測一些常見的事情,包括接球和與人對話,但有些事情,即便我們很努力,也無法預測。可預測與難以預測之間的巨大鴻溝,可以交給機器學習來填補。
矛盾的是,儘管學習算法在自然和人類行為領域開闢了新天地,但它們仍籠罩在神秘之中。媒體每天都報道涉及機器學習的新聞:蘋果公司發佈Siri個人助理,IBM[2]沃森(IBM的超級計算機)在《危險邊緣》遊戲中戰勝了人類,塔吉特(Target)能在未成年媽媽的父母發現之前通知她懷孕,美國國家安全局在尋找信息連接點……在這些新聞事件中,學習算法如何起作用仍不得而知。計算機「吞入」數以萬億的字節,並神奇地產生新的觀點,關於大數據的書籍甚至也避談「這個過程到底發生了什麼」。我們一般認為學習算法就是找到兩個事件之間的聯結點,例如,用谷歌搜索「感冒藥」和患感冒之間的聯繫。然而,尋找聯結點與機器學習的關係就像是磚與房子的關係,房子是由磚組成的,但一堆磚頭肯定不能稱之為「房子」。
當一項新技術同機器學習一樣流行且具有革命性時,不弄明白其中的奧妙實在太可惜。模稜兩可會導致誤差和濫用。亞馬遜的算法能斷定當今世界人們在讀什麼書,這一點比誰都強。美國國家安全局的算法能斷定你是否為潛在恐怖分子。氣候模型可以判定大氣中二氧化碳的安全水平。選股模型比我們當中的多數人更能推動經濟發展。你無法控制自己理解不了的東西,這也是追求幸福的公民、專家或普通人需要瞭解機器學習的原因。
本書的第一個目標就是揭示機器學習的秘密。只有工程師和機修工有必要知道汽車發動機如何運作,但每位司機都必須明白轉動方向盤會改變汽車的方向、踩剎車會讓車停下。當今極少有人知道學習算法對應的原理是什麼,更不用說如何使用學習算法。心理學家丹·諾曼(Don Norman)創造了「概念模型」(conceptual model)這個新詞,代指為了有效利用某項技術而需粗略掌握的知識。本書就將介紹機器學習的概念模型。
並不是所有算法的工作原理都相同,這些差異會產生不同的結果,比如亞馬遜和網飛的推薦系統。假設這兩個系統試著根據「你喜歡的東西」來對你進行引導,亞馬遜很有可能會把你帶到你之前常瀏覽的書籍類別,網飛則可能會把你帶到你不熟悉且似乎有點奇怪的區域,並引導你愛上那裡。在本書當中,我們會看到諸如亞馬遜、網飛之類的公司使用的各式各樣的算法。與亞馬遜相比,網飛公司的算法對你的愛好理解得更深(儘管還是很有限),然而具有諷刺意味的是,這並非意味著亞馬遜也應該利用這個算法。網飛的商業模式是依靠晦澀的電影、電視節目的長尾效應來推動需求,這些電影和節目的成本很低。它一般不推薦大片,因為你的會員訂閱費可能有限。亞馬遜則沒有這樣的問題:儘管擅長利用長尾效應,但它同樣樂意把更昂貴的熱銷商品賣給你,這也會簡化其物流工作。對於那些奇怪的產品,如果是訂閱會員可免費享用的,我們可能會樂意去嘗試,而如果需要另外掏錢,我們去選擇它們的可能性就小得多。
每年都會出現上百種新的算法,但它們都是基於幾個相似的基本思路。為了明白機器學習如何改變世界,你有必要理解這些思路。本書就將對此進行介紹。學習算法並不是那麼深奧難懂,除了運用在計算機上,對於我們來說很重要的問題都可以通過學習算法找到答案,比如:我們如何學習?有沒有更好的方法?我們能預測什麼?我們能信任所學的知識嗎?對這些問題,機器學習的各個學派有不同的答案。
機器學習主要有5個學派,我們會對每個學派分別介紹:符號學派將學習看作逆向演繹,並從哲學、心理學、邏輯學中尋求洞見;聯結學派對大腦進行逆向分析,靈感來源於神經科學和物理學;進化學派在計算機上模擬進化,並利用遺傳學和進化生物學知識;貝葉斯學派認為學習是一種概率推理形式,理論根基在於統計學;類推學派通過對相似性判斷的外推來進行學習,並受心理學和數學最優化的影響。在構建機器學習的目標推動下,我們將回顧過去100年的思想史,並以新的觀點來看待這段歷史。
機器學習的5個學派都有自己的主算法,利用這種萬能學習算法,原則上,你可以通過任何領域的數據來挖掘知識:符號學派的主算法是逆向演繹,聯結學派的主算法是反向傳播,進化學派的主算法是遺傳編程,貝葉斯學派的主算法是貝葉斯推理,類推學派的主算法是支持向量機。在實踐中,這些算法可能在有些工作中可用,而在其他工作中不可用。我們真正想要尋找的是能夠綜合這5種算法的終極算法。雖然有些人認為這難以實現,但對機器學習領域的人來說,這個夢想賦予我們力量,促使我們夜以繼日地工作。
如果存在終極算法,那麼它可以通過數據學得包括過去的、現在的以及未來的所有知識。創造終極算法將是科學歷史上最偉大的進步之一。它可以加速各類知識的進步,並以我們現在甚至無法想像的方式改變世界。終極算法與機器學習的關係就像標準模型和粒子物理學或中心法則與分子生物學的關係:該統一原理能理解人類當今知道的一切,並為未來數十年或者數百年的進步奠定基礎。今天我們面臨許多難題,比如製造家用機器人和治癒癌症,終極算法就是解決這些難題的關鍵。
以癌症為例。治癒癌症十分困難,因為它往往是一種綜合疾病。腫瘤可由各種原因誘發,且在轉移時會發生突變。殺死腫瘤細胞最可靠的方法是對其基因進行排序,弄明白哪些藥物可以抵抗癌細胞(這種方法不會對人造成傷害,患者必須提供基因和用藥史),甚至為你專門研製一種新藥。沒有哪個醫生能夠掌握該過程所需的所有知識。對於機器學習來說,這卻是再合適不過的任務。實際上,與亞馬遜和網飛每天所做的搜索工作相比,它的工作是為你找到正確的療法,而不是合適的書籍或者電影,而且它的工作更為複雜,也更具挑戰。遺憾的是,雖然當今的學習算法能以超出人類水平的精確度來診斷疾病,但治癒癌症仍遠遠超出它們的理解範圍。如果我們可以找到終極算法,這將不再是難題。
因此,本書的第二個目標就是幫你創造終極算法。你可能會認為這需要高深的數學運算和嚴謹的理論方面的工作,正相反,它需要暫時放下數學奧秘,來觀看各種學習行為包羅萬象的模型。對外行人來說,他們就像從遠方趕到終極算法這片森林,從某些角度看,他們比專家更適合創造終極算法,因為專家對某些學科已經過於投入。一旦我們有了概念性的解決方法,就能補充數學上的細節,但這不是本書的目標和重點。我們之所以談論每個學派,是為了收集它們的觀點,並找到其適用之處。請記住,沒有哪個盲人能瞭解整頭大象。我們會尤其關注哪個學派能對治療癌症做出貢獻,也關注該學派的缺失。然後,我們會將所有觀點集中,一步步地變成解決方案——這個解決方案可能還不是終極算法,但已是我們能找到的最接近終極算法的方案。希望它能解放你的大腦,讓你大膽想像。當你閱讀本書時,如果覺得某些章節讀起來困難,可以隨意略讀甚至跳過它們。本書的概要才是重中之重,當明白所有學派的觀點之後,如果你重讀那些困難的章節,收穫可能會比之前更多。
我研究機器學習已經有20餘年了。我對機器學習的興趣因一本書而起,大四時我在書店看到這本書名很奇怪的書——《人工智能》(Artificial Intelligenc)。那本書只有一個章節是關於機器學習的,但讀那個章節時,我立即確定,學習是實現人工智能的關鍵,而且當時技術水平如此原始,我也許能做點什麼。所以我擱置了讀MBA(工商管理碩士)的計劃,到加利福尼亞歐文分校攻讀博士。機器學習當時是一個小眾且鮮為人知的領域,研究人員寥寥無幾,但加利福尼亞大學卻擁有一個巨大的研究團隊。一些同學中途放棄了,因為他們看不到機器學習的未來,而我堅持了下來。對我來說,沒有什麼能比教計算機學習更有吸引力的了:如果我們做到這一點,其他問題就會迎刃而解。5年後我畢業了,那時數據挖掘技術十分流行,我開始寫這本書。我的博士論文結合了符號學派和類推學派的觀點。過去10年,我一直在整合符號學派和貝葉斯學派的觀點,最近又在嘗試整合它們與聯結學派的觀點。是時候進行下一步研究,並嘗試綜合這5個範式了。
寫這本書時,我的腦海裡浮現出各式各樣但又有相似之處的讀者。
圍繞大數據以及機器學習的討論充滿爭議,如果你對此感到好奇,且懷疑有比論文上看到的更為深層次的東西,那麼這本書就是你進行革命的指南。
如果你的主要興趣是機器學習的商業用途,那麼本書至少能通過6種方法幫助你:成為分析學中更精明的消費者;充分利用你的數據專家;減少許多數據挖掘項目的隱患;看看如果不買手寫編碼軟件,你能讓什麼進行自動操作;降低信息系統的僵硬度;期待正朝你走來的新技術。我見過太多浪費大量時間和金錢去解決難題的人,他們使用了錯誤的學習算法,或者誤解了學習算法的含義。要避免這些慘敗,實際上,你只需要閱讀這本書。
如果你是普通人或者決策者,關注由大數據和機器學習引發的社會和政治問題,那麼本書將為你提供該技術的入門知識:什麼是機器學習,機器學習能幹什麼、不能幹什麼。本書沒有讓你覺得乏味的複雜細節。從隱私問題到未來的工作,以及機器人化引起戰爭的道德觀,我們會看到真正的問題所在,以及如何正確思考。
如果你是科學家或者工程師,那麼機器學習肯定是你不想錯過的有力武器。在大數據時代(即便是中型數據時代),陳舊的、靠得住的統計工具並不會讓你走得更遠。你需要的是機器學習的非線性技術來精確模仿多種現象,它會帶來全新的、科學的世界觀。今天,「範式轉移」被人們用得過於隨意,但我可以毫不誇張地說,本書要講的內容就是和「範式轉移」相關。
如果你是機器學習專家,那麼你可能對本書的大部分內容已經相當熟悉,但你仍會發現其中有許多新穎的看法、經典的觀點,以及有用的例子和類比。很大程度上,我希望本書能提出與機器學習相關的、新的看法,甚至能讓你開始思考新的方向。我們身邊到處是容易達成的目標,我們理應追尋這種目標,但我們也不應忽略不遠處就有更大的目標(關於這一點,我希望你們能原諒我詩意地用「終極算法」來指通用型學習算法)。
如果你是學生,無論你多大,是考慮該選什麼專業的高中生,還是決定該研究什麼領域的本科生,或者是考慮轉行、經驗豐富的專家,我希望本書能讓你對這個令人著迷的領域感興趣。當今世界極度缺乏機器學習專家,如果你決定加入這一行列,你不僅能得到令人激動的時刻和豐厚的物質回報,還有服務社會的大好機會。如果你已經在研究並學習主算法,我希望本書能幫你瞭解它的歷史。如果你在旅途中偶然發現本書,也值得你用心閱讀。
最後要強調一點,如果你渴望奇跡,那麼機器學習對你來說就是一場精神盛宴。我誠摯地邀請你一同前往。
[1] Kinect是微軟對Xbox360體感周邊外設正式發佈的名字。——編者注
[2] IBM,國際商業機器公司。——編者注