前言
機器學習早已融入你我的生活
你可能不自覺,但其實機器學習(machine learning)早已融入你我的生活中。當你在搜尋引擎輸入一項查詢時,機器學習幫你找出有意義的查詢結果,還有相關的廣告。當你下載電子郵件時,多虧有機器學習的篩選,讓你看不到大部分的垃圾郵件。當你到亞馬遜網路商店(Amazon.com)購買書,或在全球最大線上影音服務平臺Netflix(網飛)觀看一部影片時,機器學習系統會幫你推薦一些你可能會喜歡的建議。就連臉書(Facebook)也運用機器學習來決定,幫你篩選所關心的好友資訊;而推特(Twitter)對於推文(tweets)也是利用類似做法。看來,當你使用電腦時,機器學習早已處處發揮其智慧功能。
傳統上,要讓電腦執行特定事情的唯一辦法,無論從簡單的兩個數字相加,到繁複的自動駕駛飛機,都是編寫演算法,透過演算法詳盡解釋如何執行每個步驟。機器學習演算法也稱為「學習器」(learners),可以自己找出執行方法,藉由從數據資料中進行推論,它們擁有的數據資料越多,運算而得的推論就越精準。如今我們不必編寫程式,機器學習演算法已經可以自行學習編寫電腦程式了。
這現象不只發生在網路世界,也發生在你的一整天生活中,從你醒來的那一刻到睡著時,機器學習無所不在。你的智慧時鐘收音機在早上7點響起,正在播放一首你從不曾聽過卻真心會喜歡的歌曲。這是美國線上電臺潘朵拉(Pandora)所提供的服務,它一直在學習你對音樂的喜好,就像是你自己的個人電臺播放員,也許就連歌曲本身也是藉由機器學習的編寫所產生的。起床後,你吃著早餐並讀著早報,這份報紙在幾個小時前才從印表機印出來,透過學習演算法仔細調整印刷過程,以避免報紙上產生汙痕。由於你安裝了Nest恆溫空調學習控制器(Nest learning thermostat),所以屋內的溫度設定得剛剛好,並且大幅節省了電費。
當你開車去上班時,車子會不斷調整燃油噴射和廢氣再循環,以達成行車的最實惠油耗。你還可以使用交通預測系統Inrix,以縮短在尖峰時段的上下班時間,更可緩解塞車壓力。在工作中,機器學習可以幫助你減輕資訊的氾濫和過載。你可以使用資料方塊(data cube)理論,進行巨量資料的概述,隨意從每一個角度來觀察,都可深度串聯探討最重要的部分。假設你到底要選版型A還是B,才能為你的網站創造更多業績?那麼網路學習系統(web-learning system)便會試驗A、B兩者,並提供回饋報告;當你需要瀏覽一家潛在供應商的網站時,該網站卻剛好是一個外國語系的網站,那也沒問題,Google(谷歌)能幫你自動翻譯這個網頁;你的電子郵件系統也會自動進行信件分類到不同收件匣,收件匣裡會過濾掉垃圾郵件,只留下重要訊息;你的文書處理器會自動檢查你的語法和拼寫是否正確。甚至你規劃一段旅程正尋找航班,此時你會運用Bing旅遊(Bing Travel)快速比價機票價格,並判讀哪些航班很快就會調降票價,提醒你暫緩購買機票。在不知不覺中,與沒有機器學習的幫助相比,你會越來越依賴機器學習完成更多事情。
在休息時間,你查看自己的股票基金,這些基金大多數是機器學習協助你挑選的股票投資組合,完全透過機器學習系統執行運作。午餐時間,你走在大街上,智慧手機幫你找尋用餐地點,例如:美國知名美食評論社群網站Yelp的機器學習系統,可以幫助你找到餐廳。你的手機塞滿機器學習,它們會努力糾正你的拼寫錯誤、理解你的口語指令、減少傳輸錯誤、識別條碼,還有很多其他生活功能。你的手機甚至可以預先料想到,你下一步打算做什麼,並相對應地為你提供建議。例如:當你用完午餐時,它會主動提醒你,下午會議必須延遲開會,因為有一位參與會議的外地訪客的航班延誤了。
夜幕低垂,你下班時,機器學習會幫助你,讓你安全走到停車處,停車場的監控攝影機會提供監測的視訊影像,假如偵測到可疑的活動,就會發出警報提醒保全人員。在你的回家路上,你走進超市裡,所走過的通道都是店家透過機器學習演算法進行最佳化擺設,如哪些商品需要庫存、哪條通道的底端要陳列設置,或是否將莎莎醬放置在醬料區,還是放置在墨西哥脆餅旁邊;而結帳時,你使用信用卡來支付,機器學習演算法會依據信用卡別,為你傳送特定的特惠訊息,並且匹配你的信用額度進行消費。同時,另一個機器學習演算法會不斷防範可疑的交易,如果它認為你的信用卡號碼被盜,便會立即提醒你注意。第三個機器學習演算法則會試著評估你對這張信用卡的滿意度,如果你是一位信用良好的客戶,但系統評估你似乎並不是很滿意,那麼在你換用別張信用卡前,便會主動推薦你一個更適合你的優厚特惠方案。
等你回到家,步行到信箱,你收到一封好友的信件,這封信是透過可以讀取手寫地址的機器學習分發派送給你的。同時還有一堆廣告垃圾信件,也是透過其他機器學習分類打包寄送給你(哦,好吧)!你停下來享受夜晚涼爽的空氣,你所在的城市,犯罪事件已有顯著下降,因為警方開始使用統計學習演算法,預測最可能發生犯罪的地方,並且在這些地方集中部署巡邏員警。晚上,你與家人一起享用晚餐,市長出現在新聞中,你會投票給他,就是因為經過機器學習精確判斷出,你是一位尚未做出決定的關鍵選民,所以他在競選期間親自打電話給你;晚餐後,你觀看球賽,兩隊球員的選擇都是透過統計學習演算法的協助。假日你會和孩子一起玩Xbox家用視訊遊戲機裡的遊戲,還有體感控制(Kinect)的機器學習計算出你正在做什麼動作與動作頻率。睡覺前,你要服用藥物,這些也是透過機器學習幫助,才得以設計與調配出來的藥品。同樣地,醫生也可能使用機器學習來幫你診斷,從X光片的判讀,找出你一系列不尋常的症狀。
機器學習在你人生的每個階段都扮演著重要角色。如果你在線上學習的是美國SAT大學入學考試,機器學習便可以針對你所練習的英文短文寫作,給予等級評分。如果你想要申請商學院,並參加GMAT入學資格考試,你的短文寫作評分者之一也會是機器學習系統。當你申請工作時,機器學習會從一堆簡歷中遴選出你的履歷,並主動排序推薦給你的未來雇主:這位是最適合求職候選人,建議優先關注吧;而你最近薪水調升,可能是由另一套機器學習所提供的綜合評鑑。如果你尋求購買房子,那麼房地產網站Zillow.com將會推薦你考慮哪一間房屋是最適合的。當你決定買下房子,你可能會申請房屋貸款,機器學習會評估你的申請,並建議適當的貸款申請案(或否決申請案)。更重要的,假如你已經在使用線上交友服務,機器學習可以幫助你找到一生的摯愛。
社會不斷地改變,每一段時間會有一個機器學習演算法的出現。機器學習正在重塑科學、技術、商業、政治和戰爭的模式。衛星、DNA序列測定儀(DNA sequencers)和粒子加速器,能以更精細的方式探索自然,而機器學習演算法會將巨量的資料洪流,轉變成新的科學知識。許多公司知道,他們客戶的喜好已經不像從前。擁有最佳選民模式的候選人將會贏得選舉,就像當年歐巴馬(Obama)對抗羅姆尼(Romney)競選美國總統。如今無人駕駛的交通工具也能橫跨陸、海、空進行自動導航。就連亞馬遜的推薦系統,也不需要任何人為你的喜好編寫程式,機器學習會透過你過往的購買行為進行歸納,自行找出你的喜好。而Google的自動駕駛車,已能教導自己如何安穩地行駛在道路上;這臺無人駕駛汽車完全不需要工程師人為撰寫演算法,一步一步地下達指令,教導車子如何從A地開往B地,甚至沒有人知道如何編寫駕駛汽車的程式,而且也不需要任何人去編寫,因為這臺無人駕駛汽車配備了機器學習,可以透過觀察駕駛人的行為,自行學習如何駕駛汽車。
機器學習真是陽光底下罕見的新鮮事,是一種自己建構自己的技術。自從人們遠古的祖先開始把石頭磨製成工具,人類就一直在推陳出新設計新文物,無論它們是純手工打造,或是大批量生產。然而機器學習卻是可以自行設計其他產物的文物。畢卡索(Picasso)曾說:「電腦是沒用的,電腦只能給你答案。」電腦不被認為應該具有創造性的,電腦被認為應該只會做人們交代它們去做的事情。如果你希望要求電腦去做的是具有創意的事情,那麼你就必須投入機器學習新領域研發。一套機器學習演算法就像一位大師級的工匠一樣,它的每一項產出作品都不相同,而且可以為客戶的需求量身訂做。這不是要將石頭變成磚瓦,黃金變成珠寶,學習器是要將數據資料套入演算法,而且擁有越多的數據資料,便能歸納出越複雜的演算法。
當機器學習就像一項新技術一樣,逐漸普及並且改變市場遊戲規則,若仍然只將這項技術視為黑盒子,那就不是明智之舉,反而無法透明地打開潘朵拉的盒子,辨識問題本質真偽。如今亞馬遜的演算法,讓世界各地任何人都能便捷決定要閱讀什麼書籍;美國國家安全局的演算法,可以判斷你是否為潛在的恐怖攻擊分子;氣候模型(Climate models)決定什麼是二氧化碳在大氣中的安全水平;選股模型(Stock-picking models)所驅動的股市交易量,甚至遠超過大多數人所做的。基本上,因為你無法控制自己不理解的東西,所以做為公民、專業人士,以及從事幸福追尋的人們,這就是為什麼你需要了解機器學習的原因。
這本書的首要目標是讓你置身於機器學習的祕密中。只有工程師和機械師需要深入理解汽車的引擎到底是如何運作的原理,然而對每位駕駛人來說,他只需要熟悉控制方向盤,隨心所欲駕馭汽車行駛的方向,腳踩煞車板就可以讓汽車停止前進。現今很少人知道學習器的對應組成元件到底是什麼,更不用說如何使用它們了。心理學家唐.諾曼(Don Norman)創造「概念模型」(conceptual model)這個術語,意思是指為了有效使用一項技術,我們需要具備該項技術的基本知識。所以這本書真正為你解析機器學習的概念模型。
每年數以百計的創新機器學習演算法被發明出來,它們都是基於環境需求被推衍開發出來的。而這些都是這本書所要探究的,它們也正是你需要知道的,以便了解機器學習是如何改變這個世界。本書不會深奧難懂,撇開它們在電腦裡的程式細節,這些機器學習演算法處處關係到我們每個人心中期待理解的問題答案,例如:機器是如何學習的?有沒有更好的方法?機器可以預測什麼?我們可以信任機器學過的東西嗎?針對這些問題,每種競爭的思想學派,在機器學習的思維上都有著南轅北轍的答案。主要的思想學派共分成五個,我們將為每個學派開闢一個章節專門介紹。符號理論學派(Symbolists)將學習視為是一種逆向演繹法,是從哲學、心理學和邏輯思路方面取得概念。類神經網路學派(Connectionists)會進行大腦的反向工程(reverse engineer),主要是受到神經科學和物理學的啟發,模擬人腦思考行為。演化論學派(Evolutionaries)會在電腦上模擬演化演變,澈底運用遺傳學(genetics)和演化生物學(evolutionary biology)理論。貝氏定理學派(Bayesians)相信學習是機率推理的一種形式,是根據統計學做為理論的依據。而類比推理學派(Analogizers)則是透過從相似度判斷進行推論學習,並且受到心理學和數學的最佳化影響。在建構智慧機器的目標推動下,我們將綜觀回顧近百年來許多學派的思想史部分,並且看見其一線新曙光。
機器學習的五大思想學派,每一學派都有其主要的演算法,原則上,你可以使用通用的學習器,從任何領域的數據資料中獲得知識。符號理論學派的主要演算法是逆向演繹法,類神經網路學派的主要演算法是倒傳遞理論演算法(Back propagation),演化論學派的主要演算法是遺傳程式規劃(genetic programming),貝氏定理學派的主要演算法是貝氏的推論,而類比推理學派的主要演算法則是支持向量機(support vector machine)。在實際應用中,這些演算法,對於某些事情可以運作得很好,但對其他事情就不是如此了。然而我們真正想要的是一個單一的演算法,結合各學派的所有重要特點,也就是終極演算法(the ultimate master algorithm)。對於某些人來說,或許這是一個遙不可及的夢想,但對於在機器學習領域的大多數我們來說,這真是一個會讓我們的眼睛閃爍著光芒,使我們不捨晝夜工作的夢想。
如果這是真實存在,那麼大演算便可以從數據資料中獲得在這個世界上過去、現在和未來的所有知識,進而創造大演算無疑將是科學史上最偉大的進步。它會加速全面的機器學習進展,並且用我們幾乎無法想像的方式改變世界。基本上,大演算就是一種機器學習統一理論,正如同標準模型(Standard Model)之於粒子物理學(particle physics),或是中心法則(Central Dogma)在分子生物學(molecular biology)的核心重要性。探索大演算是找尋機器學習的統一理論,讓我們解讀目前為止所知的一切事物變得更有意義,並奠定未來幾十年,甚或幾個世紀發展的機器學習理論基礎。換言之,大演算是我們取得重大進展的途徑,可以協助我們解決一些當前所面臨的困難問題,可以全方位發展允文允武,從家事照護到治療癌症都能樣樣精通的機器人。
以治療癌症為例,想要治療癌症是很困難的,因為癌症並不是一種疾病,而是許多病症的轉移。腫瘤可以被一系列眼花撩亂的原因所引發產生,而且當你的腫瘤轉移時,它們會產生突變。所以要殺死腫瘤最可靠的方法,就是進行其基因組測序,找出哪些藥物可以有效對抗它,而不會傷害到你,從你的基因組和病史,或專門針對你的個案,設計出一種新的抗癌藥物。其實沒有醫生可以完全掌握這一切所需的知識,這聽起來像是機器學習更能勝任的完美工作:實際上,這也是亞馬遜和Netflix公司每天都在做的機器學習智慧搜索工作,只不過醫療領域更是複雜和具挑戰性的搜尋版本,它就是為你尋找正確的治療方法,而不只是適合的書籍或電影。不幸的是,儘管現今的機器學習演算法已能超過人類極限,準確診斷許多疾病,但對治療癌症來說,還是遠遠超出它們的知識範疇。如果我們能成功地尋找到大演算,那麼治療癌症將是指日可待的事情。
這本書的第二個目標,正是觸發你能投入大演算的發明。你會認為這需要繁重的數學知識和嚴謹的理論工作,其實不然,反倒這所需要的是從艱深的數學理論抽離,以便能看到學習現象的整體模式。對於外行人來說,在某些方面比起專家更有優勢,反倒專家很容易沉浸在見樹不見林的狹隘研究中。一旦我們擁有了概念性的解決方案,我們就可以用數學的細節來印證,但這並不是本書的唯一目的,而且也不是最重要的部分。
因此當我們在認識每一種思想學派時,我們的目標是蒐集完整的機器學習拼圖,並詳加解讀每一類型演算法適合應用的地方。要注意的是,沒有一位盲人可以正確摸熟整隻大象身軀。特別是我們將會看到每個學派所能為癌症治療做出的貢獻,也會看到每個學派各自的缺失。然後一步一步地,我們會將所有機器學習的拼圖組合成一個終極解決方案;更確切地說,一個還不算是大演算的解決方案,但與其他相比已經是最接近的了,並且期望該演算法可以成為你想像力的良好跳板。我們還會預覽如何利用這個演算法,做為對抗癌症的一項武器。當你在閱讀本書時,請先隨意瀏覽或跳過任何你覺得困難的部分;你更需要的是重要的整體概念,當機器學習拼圖組合完成後,相信你才能融會貫通重新審視它們,你必能從這些部分獲得更多的創意啟發。
我是一名機器學習的研究學者,投入該領域研究已超過20年。大學四年級時,我在一家書店看到一本標示著奇怪名字的書籍——「人工智慧」(Artificial Intelligence),從此引發了我對機器學習的興趣。雖然這本書只有短短的一個章節是真正探討機器學習,但在閱讀之後,我立即確信,機器學習是解決人工智慧的關鍵,而且當時最先進的發展其實依然才原始起步,所以也許我可以貢獻些心力。我擱置原本攻讀MBA商學院的計畫,進入加州大學歐文分校(University of California, Irvine,簡稱UCI)攻讀博士學位。當時,機器學習是一個小型、鮮為人知的領域,且加州大學歐文分校是擁有少數幾個大的研究團體之一。不過我有些同學退學了,因為他們沒有看到機器學習的璀璨未來,我則堅持繼續研究。
對我來說,沒有什麼能比探討如何讓電腦自行學習更有挑戰性與影響力,如果我們能夠做到這一點,那麼我們會在任何其他問題上獲得幫助。等到我畢業5年之後,爆炸性成長的資料探勘(Dataming,又稱數據挖掘)正如火如荼地進行著,這就是我撰寫這本書的心路歷程。我的博士論文統一了符號與類比推理的學習演算法,過去我更花費十多年的時間,統一了符號理論與貝氏定理,而且不久之前,我還把這兩種理論與類神經網路理論整合在一起。是時候了,我們可以認真進行最終步驟,完整整合這五大機器學習思維模型。
為什麼我們必須了解大演算?
當我撰寫這本書時,心中就設定這本書會有許多不同但部分重疊的讀者。
如果你很好奇,所有圍繞著大數據和機器學習而產生的紛擾都是關於什麼,你也懷疑有些進展比你在報紙上看到的還要更為深入,那麼建議你,這本書將是幫助你飽覽機器學習革命的最佳指南。
如果你主要的興趣是在機器學習商業用途,那麼這本書至少可以在六個方面幫助你:協助你成為一位分析學的精明消費市場分析家、巨量數據資料解讀的科學家;也會協助你避免掉進資料探勘計畫的陷阱,幫助你發掘哪些事情可以自動化,省下人工編寫程式軟體的費用;同時本書可協助你避免資訊系統發展的死板僵化,並且預測出未來你有可能會面臨的新技術發展。過去我已經見過太多的時間與金錢浪費在採用錯誤的機器學習演算法,試圖解決一個問題,或曲解演算法的真正涵義。事實上,你不用特別做太多,就能避免重蹈這些失敗,所有需要去做的,就是好好閱讀這本書。
如果你是一位市民或決策人士,十分關切由大數據和機器學習所引發的社會和政治問題,那麼這本書將是你學習這項技術的入門書。從這本書中,你可以了解什麼是機器學習,它會帶領我們朝什麼方向發展,釐清它可以做到與不能做到的事情,相信你一定不會對這些來龍去脈感到枯燥無聊。從隱私到未來的工作,以及機器人戰爭的倫理,我們將會看到真正的問題在哪裡,並且思考如何看待這些問題。
如果你是一位科學家或工程師,機器學習是你不會不想要擁有的強大軍械庫。然而在巨量(甚至是中等)資料的年代裡,這些傳統、可靠的統計工具,不會給你帶來什麼轉變。你需要機器學習的非線性分析,以便精確地模擬大部分的現象,而且它帶來了一種嶄新的科學世界觀。雖然目前表達典範轉移(expression paradigm shift)被使用得太過浮濫,不過我認為在這本書中所描述的絕非誇張無稽之談。
如果你是一位機器學習專家,你應該已經很熟悉這本書中大部分涵蓋的內容,但是你仍然會在這本書中找到許多新的想法、機器學習發展史上有價值的資訊,以及有用的案例與類似的情境。最重要的,我希望這本書可以提供機器學習的嶄新觀點,甚至可以啟迪你全新的思考方向。雖然我們的身邊到處都是唾手可得的果實,而且我們應當去撿拾這些果實,但我們也不應該忽視等待在後面的更大獎勵。關於這點,我希望各位可以原諒我的放肆,使用了「大演算」一詞來代表通用的學習器。
如果你是一位任何學齡階段的學生,一位不知道要主修什麼的高中生、一位正在決定是否投入研究領域的在校大學生,或是一位具有豐富經驗但考慮轉行的專業人士,我的希望是這本書可以激發你對這個迷人領域的興趣。目前世界各地極度短缺機器學習專家,如果你決定加入我們,你可以期待的不僅是激動人心的時刻,甚至是物質上的獎勵,還能夠擁有一個服務社會的獨特機會。如果你已經開始研究機器學習,我希望這本書可以幫助你了解這個領域的現況;如果在你的人生旅程上,只是偶然碰見大演算,光憑這樣,就是這本書值得一寫的地方了。
最後但同樣重要的,如果你有濃烈求知的渴望,那麼機器學習會是一場智慧的盛宴,希望你能受邀出席,敬請回覆!
推薦序
大演算顛覆世界,也顛覆我的看法
1997年,IBM的深藍電腦擊敗了世界西洋棋冠軍,震撼了整個業界。媒體大肆報導。伴隨而來的是另一股恐慌性的思維──電腦會不會有一天取代人腦,甚至統治了人類?20年過去了,我們都還在為生活而忙碌工作。別說電腦統治人類,它連讓我早一點下班都很勉強了。
2016年,Google Alphago擊敗了世界圍棋冠軍,用的不再是超級電腦的運算能力。取而代之的,是大數據的分析能力、雲端的運算能力和機器學習。機器學習是一個廣泛的名詞,意思是讓電腦透過樣本數據來回答問題或進行預測。也許大家從前幾年開始就不斷聽到大數據,而近期從微軟語音助理Cortana進行世界盃足球的賽事預測,到美國總統大選分析,或是透過相片猜測年齡�顏值,這些都是機器學習的產物。
提到演算法,我想對於資訊相關背景的人來說都不陌生。事實上,我們現在身處的世界,到處都可以看到演算法的身影。舉凡搜尋、電子地圖上的路線、推薦系統等,無一不是透過演算法來達成。如同本書作者所說,大演算終將顛覆我們的世界,在閱讀完本書之後,我覺得這本書則是顛覆我對演算法的看法。
過去在學習演算法的時候,它對我而言,是離散數學。而大演算卻能夠把它描繪得如此生動。例如井字遊戲(Tic-Tac-Toe)使用的極大極小搜尋(Minimax Algorithm),作者卻以另一種形式來描述:
如果你或你的對手,一排已經占有兩個格子,在接續的棋步中,只要下在剩餘的另一個空格上,便可贏得這盤井字遊戲。
否則如果有一個棋步,可以創造出兩行連成兩條連線的雙頭蛇優勢,那麼下在那裡。
否則如果井字中心還是空的,那麼就下在那裡。
否則如果你的對手已經下在一個角位,那麼就下在他相反的角位。
否則如果有一個空的角位,那麼就下在那裡。
否則就下在任何一個空格裡。
當然,本書也不只針對從未接觸過演算法及機器學習的讀者。所謂外行的看熱鬧,內行的看門道。針對相關行業背景的讀者。本書也提供了機器學習所用到的大部分演算法的詳細說明,例如:決策樹、最近鄰居演算法、簡單貝氏演算法等。相信不管是對這個領域充滿好奇,或是想要深入了解的,都能從中獲得幫助。
?
前臺灣微軟合作夥伴技術支援顧問 林泰宏