從大數據到機器學習,帶你入門史上最強跨界學科

導讀:在傳統的科學研究中,學科與學科之間的融合與交流並不多,而有一門學科則做到了融合計算機科學、統計學、數學、工程學這些學科,甚至將其應用範圍擴展至經濟、生物、醫藥、物理、化學等領域中,這就是機器學習。

在過去的十年中,機器學習的這種多學科魅力逐漸被人們所理解並推崇。

作者:史蒂芬·馬斯蘭(Stephen Marsland)

從大數據到機器學習,帶你入門史上最強跨界學科

假設你經營著一家網站,出售自己編寫的軟件。現在想讓網站為用戶提供更加個性化的服務,所以你開始收集訪問者的數據,比如他們的電腦型號、操作系統、瀏覽器、居住的國家,以及在一天中訪問該網站的時間。

這些數據可以從任何訪問者那裡得到,並且對於那些真正想要購買的用戶來說,你能夠了解到他們購買的東西,以及付款的方式(如PayPal、信用卡)。

因此,對於每一個在網站消費的用戶,你可以得到像電腦型號,瀏覽器,國家,時間,購買的軟件,付款方式這樣的數據清單。比如,你收集到的前三條數據可能是這樣的:

  • Macintosh OS X, Safari, UK, morning, SuperGame1, credit card
  • Windows XP, Internet Explorer, USA, afternoon, SuperGame1, PayPal
  • Windows Vista, Firefox, NZ, evening, SuperGame2, PayPal

以這些數據為基礎,你希望在網站裡添加一個“你可能感興趣的商品”的欄目,從而展示出可能與每一個訪問者的需求有關的軟件,這基於的是網頁載入時你可以訪問的數據,即電腦型號、操作系統、國家以及時間。

你希望隨著更多的人訪問網站而收集更多的數據,從而發現一些趨勢。比如來自於新西蘭的Mac用戶青睞第一款遊戲,或者那些對電腦更加精通的Firefox用戶需要自動下載應用程序等。

當收集了大量這樣的數據之後,你開始觀察它們,思考能夠用這些數據做些什麼。你面對的是一種預測(prediction)問題:根據所擁有的數據,預測下一個用戶將要購買什麼商品。並且你認為這種預測能夠奏效的原因在於,看上去相似的人,他們的行為常常也具有相似性。

那麼應該怎樣著手解決這個問題呢?這也是所謂的監督學習(supervised learning)的一個例子,因為我們知道了對應於一些樣本的正確結果(實際購買的軟件),所以可以把這些已知正確結果的樣本提供給學習器。

從大數據到機器學習,帶你入門史上最強跨界學科

01 如果數據有質量,地球將成為黑洞

在世界的各個角落,計算機每天都在採集和存儲著數以TB級的數據。即使不考慮你收藏的MP3和節假日的照片,還有屬於商店、銀行、醫院、科學實驗室以及其他更多地方的正在不停存儲數據的計算機。

舉例來說,銀行建立關於人們如何花錢的記錄,醫院記錄下對不同疾病的患者所採取的醫療措施,汽車中的引擎監控系統會記錄下引擎的狀況以便檢測出何時會發生故障。這裡的挑戰在於如何對數據進行有用的處理:

  • 如果銀行的計算機能夠學習到消費的模式,它們能否快速檢測出信用卡欺詐?
  • 如果醫院之間共享數據,那麼那些效果沒有達到預期的治療措施能否快速被發現?
  • 一輛智能汽車能否在早期就給出引擎隱患的警報,以至於你不會在最糟糕的地方拋錨?

這些都是能夠用機器學習的方法解決的問題。

科學研究中也同樣使用計算機來存儲大量的數據。首先是在生物學中,測量DNA微陣列中的基因表達將產生大量的數據集,同時還有蛋白質轉錄數據以及可用來描述各物種之間進化關係的系統進化樹。

其他學科也緊隨其後,天文學現在使用數碼望遠鏡,每天晚上世界各地的天文臺會存儲有關夜空的難以置信的高分辨率圖像,大約每晚有1TB。歐洲核子研究中心的大型強子對撞機每年產生大約25PB的數據。

同樣,在醫學裡,大到核磁共振成像,小到血液測試,這些醫療測試的結果也都被存儲起來。

數據爆炸已經廣為人知,如何應用這些數據去做一些有用的事情對我們來說不失為一個挑戰。

從大數據到機器學習,帶你入門史上最強跨界學科

▲圖1-1 一組數據點作為表格數值和圖表上的點。相比於表格數據,我們更容易觀察可視化數據。但如果數據有三個以上的維度,我們就無法一次查看所有數據

這些數據集的大小和複雜度意味著人類無法從中獲取有用的信息。甚至連數據的存儲方式也對我們不利。面對一個滿是數字的文件,我們通常都不願意長時間閱讀。然而,若取出相同數據中的一部分,並且在圖中標記出來,我們就能有所作為。

比較一下圖1-1中的表格和圖像:顯然圖像更容易觀察和處理。不幸的是,我們生活的三維世界不容許我們對更高維度的數據進行處理。就連我們已經收集的簡簡單單的網頁數據也包含了四個不同的特徵,因此如果每一個特徵用一個維度表示的話,我們將需要四個維度!

面對這種情況,有兩種處理方法:降低維度(直到我們“簡單”的大腦能夠處理這個問題),或是使用計算機(它並不覺得高維的問題困難,並且不會對查看大量由數字組成的數據文件感到厭煩)。

從大數據到機器學習,帶你入門史上最強跨界學科

▲圖1-2 相同的兩個風力渦輪機(位於新西蘭阿什赫斯特的Te Apiti風力發電場),相差約30°拍攝的兩幅視圖。三維物體的二維投影會隱藏信息

圖1-2中的兩幅圖表明瞭降低維度(更嚴格地說,映射到更低的維度)帶來的一個問題,即這樣做會掩蓋某些有用的信息,並且使圖像看上去很奇怪。上面討論的問題正是機器學習變得如此流行的原因之——有了電腦的幫助,很多超出人類極限的問題都能夠得到解決。

此外,如果維度不是遠大於三的話,可以使用其他的符號(glyph)表示,如數據點的大小或是顏色來描述其他維度的信息,但是如果數據集有100個維度的話,這種方法也無能為力了。

事實上,很有可能在某個時候你已經接觸到了機器學習的算法。它們在我們使用的很多軟件程序中都有所應用,例如微軟Office中臭名昭著的paperclip工具(也許不是什麼正面的例子)、垃圾郵件過濾器、聲音識別軟件以及大量的電腦遊戲。

它們也是加油站安全監控攝像頭以及收費公路上使用的自動車牌識別系統的一部分,並且在防滑剎車以及車輛穩定性系統中也有應用,甚至還是銀行決定是否給你提供貸款的一套算法中的一部分。

這一節的這個吸引人的標題只有在數據量非常巨大的時候才是正確的。我們很難計算出世界上所有的計算機中一共有多少數據,但是據某報告估計,2006年有大約160EB(160×1018字節)的數據被製造和存儲,2012年增長到2.8ZB(2.8×1021字節),到2020年,這個數字將會增長到40ZB。

然而,要製造一個地球大小的黑洞,其質量需要達到約40×1035克。這意味著,數據如此沉重,你甚至連鋼筆大小的數據都提不動,更不必說一臺計算機了。

然而對於機器學習,事情變得更加有趣,預測2012年數據量將達到2.8ZB的同一份報告(Big Data,Bigger Digital Shadows,and Biggest Growth in the Far East by John Gantz and David Reinsel,EMC Corporation)中還指出,這些數據僅有25%具有有效信息,只有大約3%的數據被標記,而實際用於分析的數據不到0.5%!

從大數據到機器學習,帶你入門史上最強跨界學科

02 學習

在我們深入研究這個話題之前,不妨先後退一步,思考一下究竟什麼是學習。對於機器來說,我們需要考慮的關鍵性概念是從數據中學習,因為數據正是我們所擁有的,某些情況甚至是數以TB級的。

不過,把它用人類行為的術語來翻譯也不是很難,那就是從經驗中學習。我們都認同人類以及其他的動物通過從經驗中學習,能夠展現出我們稱之為智能的行為。學習給我們提供了生活中的靈活性。事實上,無論我們的年齡有多大,都能夠調整和適應新的環境,學習新的技藝。

動物學習的關鍵部分是記憶(remembering)、適應(adapting)和泛化(generalizing):識別出上一次遇到的這種情況(看到這個數據),我們試驗了某個特定的動作(給出了這個輸出),並且起到了作用(是正確的),因此我們將再一次嘗試這個動作,或者若沒有起作用,我們將嘗試一些不同的東西。

最後一個詞——泛化,它的含義是識別出不同情況之間的相似之處,使得應用在一個地方的東西在別處也能有所應用。這使學習變得有用,因為我們可以把知識應用在不同的地方。

當然,對於智能來說,還有很多其他的內容,比如推理(reasoning)和邏輯演繹(logical deduction),但這裡我們不會過多地關注那些。我們感興趣的是智能最基礎的部分——學習和適應,以及如何在計算機中來模擬。

在應用計算機推理和演繹方面人們也有過很多的興趣。這是最早期的人工智能(Artificial Intelligence)的基礎,並且常常被稱為符號處理(symbolic processing),因為這種情況下計算機操作的是能反映環境的符號。與此相反,機器學習的方法有時被稱為是亞符號(subsymbolic)的,因為它不包含符號或是符號的操作。

從大數據到機器學習,帶你入門史上最強跨界學科

03 機器學習

機器學習,其含義是使計算機改進(modify)或是適應(adapt)它們的行為(不管這些行為是做出預測還是控制機器人),從而使這些行為變得更加準確,這裡的準確性是通過測量這些行為在多大程度上反映了正確的行為而得到的。

想象一下,你正在和一臺計算機玩Scrabble遊戲(或是某些其他的遊戲)。也許在開始的時候,你每次都能打敗它,但是在許多局過後,它開始打敗你,直到最後你再也不能獲勝。

這可能部分歸因於你的水平在變差,另一部分是因為計算機在學習如何在Scrabble遊戲中獲勝。當學會如何打敗你之後,它可以繼續在其他的玩家身上使用同樣的策略,這樣就不用在與每一個新玩家進行遊戲的時候都從零開始學習。這就是泛化的一種形式。

直到大概十年前,機器學習內在的多學科性才得到了認可。它融合了神經科學、生物學、統計學、數學以及物理學的觀點,使得計算機能夠學習。

關於學習的可行性有一個極好的證據,那就是在你的兩隻耳朵之間的由水和電(以及一些微量化學元素)組成的袋狀物。我們將簡要地研究一下它的內部構造,並且看看有沒有什麼東西能夠借鑑到機器學習算法中來。

結果當然是有的,並且神經網絡(neural network)正是從此發展而來,儘管現在連它們的發明者都不再予以承認,但經過發展,神經網絡已經被重新解釋為統計性的學習器。

另一個驅動機器學習研究方向改變的是數據挖掘(data mining),它研究的是從大規模的數據集中提取出有用的信息(這裡的挖掘是由使用計算機的人,而不是拿著鎬戴著安全帽的人來進行的),它需要的是高效的算法,這又把更多的重心放回到了計算機科學上。

機器學習方法的計算複雜度(computational complexity)將同樣是我們感興趣的,因為我們製造出來的是算法(algorithm)。這非常重要,因為我們可能想把某些方法應用在很大的數據集上,那些與數據集的大小成高階多項式時間複雜度(甚至更糟)的算法將會是一個問題。

這裡所說的複雜度通常分為兩個部分:訓練的複雜度,以及應用訓練好的算法的複雜度。訓練並不是經常發生,所以通常對時間的要求不是很苛刻,時間長一些也可以接受。

然而,我們在測試一個數據點時,通常需要能夠快速給出結論,而且當一個算法投入使用之後,這樣的測試點可能會有很多,因此較低的計算成本是必不可少的。

從大數據到機器學習,帶你入門史上最強跨界學科

04 機器學習的類別

在本文開始的網站例子中,我們的目標是根據收集的信息,對網站的訪客可能購買哪種軟件做出預測。這裡有幾件有趣的事情。首先是數據,知道訪客之前購買過的軟件以及訪客的年齡可能會有用。

然而,這些信息不可能從他們的瀏覽器中得到(即使是cookie,也不能告訴你某個人的年齡),因此無法使用這些信息。挑選你想要使用的變量(專業術語稱為特徵(feature))對於找到問題合適的解來說,是很重要的一部分。

同樣,選擇如何處理數據也是很重要的。這在例子中時間的獲取上有所體現。你的計算機可以記錄精確到毫秒的時間,但這樣做毫無意義,因為你想要做的是發現用戶之間相似的模式。

基於這個原因,在前面的這個例子中,我選擇把時間量化為四個範圍——上午、下午、晚上、夜間,顯然我需要確保這些時間對於其所在時區來講是正確的。

我們把學習不精確地定義為

通過訓練從而在某項工作上做得更好。這導致了幾個很重要的問題:計算機如何知道它是否表現得更好,抑或是更差,以及它如何知道怎樣才能有所提高?對於這些問題,有幾個不同的但都是合理的答案,而且基於此產生了不同類型的機器學習。

我們可以把某個問題的正確答案提供給算法,這樣下一次算法遇到同樣問題的時候就可以得到正確的結果(這就是在網站例子中發生的,因為我們知道這位用戶已經購買了什麼軟件)。

但是,我們希望只提供給算法部分正確的答案,然後它能夠自動地發現問題所有的正確答案(泛化)。或者,我們所能做的是告知算法某一個答案是否正確,但並不告知如何去尋找正確的答案,這樣它必須對正確的答案進行搜索(search)。

這裡的一個變化是我們根據某個答案的正確程度給它一個得分,而不是隻響應一個“正確或是錯誤”。最後一種情況,我們可能根本沒有正確的答案,只能設法讓算法去尋找具有相似性的輸入。

上面針對這個問題的不同回答,給我們將要討論的機器學習類別提供了一個好的分類方法:

  • 監督學習(supervised learning):提供了一個由包含正確回答(目標(target))的樣本組成的訓練集(training set),並且以這個訓練集為基礎,算法進行泛化,直到對所有可能的輸入都給出正確的回答。這也稱為從範例(exemplar)中學習。
  • 無監督學習(unsupervised learning):沒有提供正確的回答,取而代之的是算法試圖鑑別出輸入之間的相似之處,從而使有著共同點的輸入被歸類為(categorized)同一類。非監督學習的統計學方法稱為密度估計(density estimation)。
  • 強化學習(reinforcement learning):強化學習介於監督學習和非監督學習之間。當答案不正確時,算法會被告知,但如何去改正則不得而知。它需要去探索,試驗不同的可能情況,直到得到正確的答案。強化學習有時被稱為伴隨
    評論家(critic)的學習,因為它只對答案評分,而不提出改進的建議。
  • 進化學習(evolutionary learning):可以將生物學的進化看成一個學習的過程,即生物有機體改變自身,以提高在所處環境下的存活率和擁有後代的概率。我們將研究如何在計算機中對這一過程建模。在此使用適應度(fitness)的概念,相當於是對當前解答方案好壞程度的評分。
從大數據到機器學習,帶你入門史上最強跨界學科

05 機器學習過程

以下簡要闡釋機器學習算法選擇、應用、評估問題的過程。

1. 數據收集和準備

在少數情況下,面對新的問題,我們需要從頭開始收集數據,或者至少需要重組和準備數據。事實上,如果問題是全新的,那麼可以選擇適當的數據,這個過程應該與下一步特徵選擇合併,這樣可以僅收集需要的數據。

這通常可以通過組合一個相當小的數據集來完成,該數據集需要包含你認為可能有用的所有特徵,並在選擇最佳特徵、收集和分析完整數據集之前進行試驗。

通常,困難在於存在大量可能相關的數據,但很難收集這些數據,因為需要進行多次測量,或者因為它們處於各種位置幷包含各種格式,不僅如此,我們很難恰當地融合它們,而且還要確保它們是乾淨的(clean),也就是說,沒有重大錯誤或缺少數據等問題。

對於監督學習,還需要目標數據,這可能需要相關領域的專家參與和大量時間投入。

最後,需要考慮數據量。機器學習算法需要大量數據,最好沒有太多噪聲。但是隨著數據集規模的增加,計算成本也在增加。對於大量數據,沒有額外計算的“最優平衡點”通常很難預測。

2. 特徵選擇

它通過實驗鑑別了對於問題最有用的特徵。這就要求對於問題和數據的先驗知識,對於上面的硬幣示例,常識可幫助我們識別一些可能有用的特徵並排除其他特徵。

除了識別對學習器有用的特徵之外,還必須要求數據收集不必花費大量費用或時間,並且對收集過程中可能出現的噪聲和其他數據損壞具有魯棒性(robust)。

3. 算法選擇

本書為你準備了對於給定數據集的算法(或算法群)選擇方法,為此還包括了每個算法的基本原理知識及其使用示例。

4. 參數和模型選擇

對於許多算法,必須手動設置參數,或者需要實驗來識別適當的值。本書也會在合適的章節討論這個問題。

5. 訓練

給定數據集、算法和參數,訓練應當只是使用計算資源來構建數據模型,以便預測關於新數據的輸出。

6. 評估

在系統投入應用之前,需要對其進行測試並評估其在未經訓練數據上的準確性。這通常包括與該領域的人類專家進行比較,以及為此選擇適當的度量指標。

關於作者: 史蒂芬·馬斯蘭(Stephen Marsland),新西蘭惠靈頓維多利亞大學數學與統計學院教授,兼任新西蘭複雜系統卓越研究中心項目主管,負責複雜性、風險與不確定性等相關主題的研究工作。研究興趣是幾何和複雜系統的應用,主要涉及形狀空間、機器學習和算法。

本文摘編自《機器學習:算法視角》(原書第2版),經出版方授權發佈。

從大數據到機器學習,帶你入門史上最強跨界學科

延伸閱讀《機器學習:算法視角》

推薦語:CRCPress機器學習領域暢銷教材,知名媒體推薦的十大機器學習入門教材之一。


分享到:


相關文章: