深度译文:机器学习那些事
【原題】A Few Useful Things to Know About Machine Learning
【譯題】機器學習的那些事
【作者】Pedro Domingos
【譯者】劉知遠
【說明】譯文載于《中國計算機學會通訊》 第 8 卷 第 11 期 2012 年 11 月 ,本文譯自Communications of the ACM 2012年第10期的“A Few Useful Things to Know About Machine Learning”一文。
機器學習系統自動地從數據中學習程序。與手工編程相比,這非常吸引人。在過去的20年中,機器學習已經迅速地在計算機科學等領域普及。機器學習被用于網絡搜索、垃圾郵件過濾、推薦系統、廣告投放、信用評價、欺詐檢測、股票交易和藥物設計等應用。
麥肯錫全球研究院(the McKinsey Global Institute)最近一份報告指出,機器學習(又稱數據挖掘或者預測分析)將驅動下一輪創新【15】。現在已經有幾本優秀的機器學習教材書可以供感興趣的研究者和實踐者使用(例如米切爾(Mitchell)和維滕(Witten)等人的教材【16,24】)。但是,成功使用機器學習所應掌握的大量“民間知識”并沒有出現在這些教材中。因此,很多機器學習項目浪費了大量時間,甚深入了解所需的“民間知識”可推進機器學習的應用。至最終也沒有得到理想的結果。其實這些“民間知識”非常容易理解。本文的目的就是介紹這些知識。
機器學習有許多不同的類型,但為了展示方便,本文將主要介紹其中最常用的類型:分類。但是,本文所探討的問題適用于所有的機器學習類型。一個分類器(classifier)是一個系統,系統輸入是一個包括若干離散或連續的特征值(feature values)的向量,系統輸出是一個離散值,代表分類的類別(class)。例如,一個垃圾郵件過濾器會將郵件信息分類到“是垃圾郵件”和“不是垃圾郵件”兩個類別中。它的輸入可以是一個布爾向量 x=(x1,…,xj,…,xd) ,其中如果詞典中的第 j 個詞出現在該郵件中,則 xj=1,否則 xj=0 。一個學習器將一個訓練集(trainingset)樣例 (xi,yi) 作為輸入,其中xi=(xi,1,…,xi,d) 是觀察到的輸入,yi 是相應的輸出,學習器的輸出是一個分類器。對學習器的檢驗就是判斷它輸出的分類器是否能夠對將來的輸入樣例 xt 輸出正確的 yt(例如,垃圾郵件過濾器是否能夠將訓練時沒有見過的郵件信息正確分類)。
學習=表示 + 評價+ 優化
假設有一個應用,你認為機器學習有可能在其中發揮作用。那么,你面臨的第一個問題是各種機器學習算法令人眼花繚亂。應挑選使用哪一個?現在有成千上萬的機器學習算法,每年還有成百上千的新算法發表出來。免迷失在這么多算法中的關鍵是,要認識到這些算法都是由三個部分組成的,分別是:
表示(Representation)
一個分類器必須用計算機可以處理的某種形式語言來表示。反過來講,為學習器選擇一種表示,就意味選擇一個特定的分類器集合。學習器可能學出的分類器只能在這個集合中。這個集合被稱為學習器的假設空間(hypothesis space)。如果某個分類器不在該空間中,它就不可能被該學習器學到。與此相關的一個問題是如何表示輸入,即使用哪些特征,本文稍后介紹。
評價(Evaluation)
我們需要一個評價函數(亦稱為目標函數或打分函數)來判斷分類器的優劣。機器學習算法內部使用的評價函數和我們希望分類器進行優化的外部評價函數有所不同。這是為了便于優化,接下來會討論。
優化(Optimization)
最后,我們需要一個搜索方法,能夠在假設空間中找到評價函數得分最高的那個分類器。優化技術的選擇對學習器效率至關重要;而當評價函數有多個最優結果時,優化技術也有助于從中選擇。初學者通常會采用現成的優化方法,之后再用定制專門的優化方法來替代。表 1 展示了三個組成部分常見的例子。例如,對一個測試樣例, k-近鄰方法會尋找它的 k 個最相似的訓練樣例,并將這些樣例中出現最多的類別作為該測試樣例的類別。超平面方法會為每一個類別構造一個特征的線性組合,并將得分最高的組合所對應的類別作為預測結果。決策樹方法會在樹上的每個內部節點測試一個特征,每個特征值會對應一個分支,而不同的葉子節點會對應不同的類別。算法 1 展示了一個極簡單的二分類決策樹學習器,其中使用了信息增益(informationgain)和貪心搜索(greedysearch)【20】。InfoGain(xj,y ) 表示特征 xj 與類別 y 之間的互信息(mutualinformation)。 MakeNode(x,c0,c1 ) 會返回一個測試特征 x 的節點,該節點以 c0 作為 x
= 0 時的孩子節點,以 c1 作為 x
= 1 時的孩子節點。
當然,并不是表 1 中從各列選出元素的相互組合都同樣有意義。例如,離散表示很自然地與組合優化相結合;而連續表示則與連續優化相結合。然而,很多學習器同時包含離散和連續的部分。實際上,所有可能的組合也都快被實現過了。
大部分教科書是以表示為視角組織內容的。這通常會讓人忽略掉一個事實,即其他部分也同樣重要。雖然對如何在每個部分做出選擇并沒有簡單的秘訣,但本文將涉及其中幾個重要的問題。正如我們以后會看到的那樣,機器學習項目中的某些選擇甚至比學習器的選擇更加重要。
泛化(Generalization)很重要
機器學習的基本目標是對訓練集合中樣例的泛化。這是因為,不管我們有多少訓練數據,在測試階段這些數據都不太可能會重復出現。(注意,如果在詞典中有?100000個詞,前述垃圾郵件過濾器將會有種?2100000?種可能的不同輸入)。
在訓練集上表現出色其實很簡單(只要記住這些訓練樣例即可)。機器學習初學者最常犯的錯誤是在訓練數據上做測試,從而產生勝利的錯覺。如果這時將選中的分類器在新數據上測試,它往往還不如隨機猜測準確。因此,如果你雇人來訓練分類器,一定要自己保存一些數據,來測試他們給你的分類器的性能。相反,如果你被人雇來訓練分類器,一開始就應該將一部分數據取出來,只用它們來測試你選擇的分類器性能,接下來再在整個數據上學習你最終的分類器。
你的分類器可能會在不知不覺中受到測試數據的影響,例如你可能會使用測試數據來調節參數并做了很多調節(機器學習算法有很多參數,算法成功往往源自對這些參數的精細調節,因此這是非常值得關注的問題)。當然,保留一部分數據用于測試會減少訓練數據的數量。這個問題可以通過交叉驗證(cross – validation)來解決:將訓練數據隨機地等分為若干份(如 10份),其中的每一份均可用作測試,而剩下的數據用作訓練,然后將每個學習的分類器在它沒見過的樣例上進行測試,將測試結果取平均后,就可用來評價不同參數設置的性能。
僅有數據還不夠
將泛化作為目標帶來的另外一個重要結果是,僅有數據還不夠,無論你有多少。考慮要從100萬樣例中學習一個包含 100個變量的布爾函數。此時將有2100??– 106?個樣例的類別是不知道的(注:這里2100?表示?100個布爾變量的所有可能情況的個數,而106表示已經看到的100萬樣例,因此有?2100?-106?個可能情況是沒有看到過的,因此也不知道它們的類別)。你如何確定那些樣例的類別呢?在沒有更進一步信息的情況下,除了拋硬幣隨機猜之外將束手無策。哲學家大衛 ·休謨(David Hume)在?200多年前首次指出這一問題(以某種不同的形式),但直到今天機器學習中的很多錯誤仍是由于沒有意識到這一問題造成的。每個學習器都必須包含一些數據之外的知識或假設(assumption),才能夠將數據泛化。這一概念被沃爾伯特(Wolpert)形式化為“沒有免費的午餐”定理。根據該定理,沒有學習器能夠比在所有可能的布爾函數中隨機猜測的結果更優【25】。
這似乎是一個非常讓人失望的消息。那我們還能指望能學到什么東西嗎?幸運的是,在真實世界中,我們要學習的函數并非均勻地來自所有可能的函數!實際上,一些非常泛泛的假設——比如平滑(smoothness),相似的樣例有相似的類別,有限依賴,或者有限復雜度——通常足夠起很大作用,這也是機器學習能夠如此成功的重要原因。如同演繹(deduction)一樣,歸納(induction,正是學習器所做的) 起到知識杠桿的作用 —— 它將少量的輸入知識轉化成為大量的輸出知識。歸納是比演繹強大得多的杠桿,只要求很少的輸入知識就可以產生有用的結果,但是它終歸不能在沒有知識的情況下工作。而且就像任何杠桿一樣,輸入越多,我們得到的輸出就越多。
從中可以得到的一個推論是,選擇表示的關鍵標準之一是,它比較易于表達什么類型的知識。例如,如果我們擁有大量關于在我們的領域是什么造成樣例相似的知識,基于實例的方法也許就是合適的選擇。如果我們擁有概率依賴的知識,圖模型則比較適合。如果我們擁有每個類別要求的先決條件的知識,“ If…Then…(如果…那么…)”規則的表示也許是最好的選擇。在這一點上,最有用的學習器是那些并非將假設固化在其中,而是允許我們用顯式規定假設,在大范圍改變假設,并自動將其體現在學習中(例如采用一階邏輯 【21】或者語法 【6】)的學習器。
說到這里,學習需要知識,這并不讓人驚訝。機器學習不是魔術,它無法憑空變出東西。它所做的是由少變多。編程就像所有的工程技術那樣,意味著大量的工作,必須從頭開始建造一切。而機器學習更像是種田,它讓大自然做大部分工作。農夫將種子與肥料混合種出莊稼。學習器將知識和數據結合“種出”程序。
過擬合(Overfitting)有多張面孔
如果我們擁有的知識和數據并不足以學習出正確的分類器,將會怎樣呢?我們就得冒風險構建一個分類器(或者其中一部分),這個分類器并非建立在現實基礎上,而是將數據隨機表現加以解讀。這個問題稱為過擬合,它是機器學習中的棘手問題。當你的學習器輸出的分類器在訓練數據上準確率為 100%,而在測試數據上僅有 50% 的時候(而本來可以學到一個分類器能夠在兩個數據上均達到 75% 的準確率),說明這個分類器發生過擬合了。
機器學習領域的每個人都了解過擬合,但過擬合會以多種并不明顯的形式出現。一種理解過擬合的方式是將泛化誤差(generalization error)分解為偏置(bias)和方差( variance)【9】。偏置度量了學習器傾向于一直學習相同錯誤的程度。方差則度量了學習器傾向于忽略真實信號、學習隨機事物的程度。圖 1用朝板子扔飛鏢作為類比進行了直觀說明。
一個線性學習器有較高的偏置,因為當兩個類別的交界不是超平面的時候,這個學習器就無法進行歸納(摘注:原文 A linear learner has high bias, because when the frontier between two classes is not a hyper-plane the learner is unable
to induce it)。決策樹就不會有這個問題,因為它可以表示任意的布爾函數,但在另一方面,決策樹會面臨高方差的問題:在同一現象所產生的不同訓練數據上學習的決策樹往往差異巨大,而實際上它們應當是相同的。類似道理也適用于優化方法的選擇上:與貪心搜索相比,柱搜索的偏置較低,但方差較高,原因是柱搜索會嘗試搜索更多的假設。因此,與直覺相反,一個學習能力更強的學習器并不見得比學習能力弱的效果更好。
圖 2 示例說明了這一點(注:訓練樣例含有 64 個布爾類型特征和 1 個根據一個集合的“如果…那么…”的規則集合計算得到的布爾類型的類別。圖中的曲線是對 100 次運行結果的平均,每次對應不同的隨機產生的規則集合。誤差條(error bar)代表兩個標準方差。具體細節請參考論文【10】)。即使真正的分類器是一個規則集合,但根據 1000個樣例學習的樸素貝葉斯學習器(摘注:原文 Naive?Bayes)仍比一個規則學習器的準確率更高。甚至當樸素貝葉斯錯誤地假設分類面是線性的,也依然如此。這種情形在機器學習領域很常見:一個強錯誤假設比那些弱正確假設更好,這是因為后者需要更多的數據才能避免過擬合。
交叉驗證可以幫助避免過擬合,例如通過交叉驗證來選擇決策樹的最佳大小。但這不能徹底解決問題,因為假如我們利用交叉驗證做太多的參數選擇,它本身就會開始過擬合【17】。
除了交叉驗證以外,還有很多方法可以避免過擬合。最常用的方法是對評價函數增加一個正則項(regularization term)。這樣做可以懲罰那些包含更多結構的分類器,偏好更小的分類器,從而降低過擬合的可能性。另一個方案是在決定是否增加新的結構時進行諸如卡方測試(chi-squre)等統計顯著性檢驗(statistical?significance test),用來決定類別分布是否會因為增加這個結構而不同。當數據非常缺乏時,這些技術非常有用。然而,你應該對那些宣稱某項技術“解決”了過擬合問題的說法持懷疑態度。我們會很容易在避免過擬合(或者說“方差”)時,造成另外一個相反的錯誤—— 欠擬合( underfitting,或者說“偏置”)。要學習一個完美的分類器來同時避免過擬合和欠擬合,事先又沒有足夠知識,這種情形下沒有任何單一技術能夠總是表現最好(沒有免費的午餐)。
對過擬合的一個常見誤解是認為它是由噪音造成的,例如有些訓練樣例的標注類別是錯誤的。這的確會加劇過擬合,因為分類器會調整分類面讓那些樣例保持在分類器認為正確的一側。但是即使沒有噪音依然會發生嚴重的過擬合。例如,假如我們學習一個布爾類型分類器,它是訓練數據中所有標為“true”的樣例的析取(disjunction)。(換句話說,這個分類器是一個析取范式(disjunctive normal form)的布爾類型公式,其中每一項是某個特定訓練樣例的所有特征值的合取(conjunction)。)這個分類器對所有的訓練樣例都分類正確,但對測試樣例中的每個正例都分類錯誤,不管訓練數據是否有噪音。
多重檢驗(multiple testing)【13】問題與過擬合密切相關。標準的統計檢驗中只有一個假設被檢驗,而現代學習器在結束學習前會輕易地檢驗上百萬個假設。因此,那些看上去很顯著的結論實際并不如此。例如,一個連續十年跑贏市場的共同基金(mutual fund)看上去很引人注目。但當你發現,如果有1000家基金,每家都有50%的概率在某年跑贏市場,在這種情況下,極有可能會有一家基金能夠憑僥幸而連續10次都跑贏市場。這個問題可以通過在顯著性檢驗中將假設的個數考慮進去來解決,但這樣也會導致欠擬合。更好的途徑是控制錯誤接受的非零假設(non-null hypotheses)的比率,該方法通常被稱為錯誤發現率(false dis-covery rate)方法【3】。
直覺不適用于高維空間
機器學習中緊接過擬合之后的最大問題就是維度災難(curse of dimensionality)。這一概念是由貝爾曼(Bellman)在1961年首先提出的,用來描述以下事實:許多在低維空間表現很好的算法,當輸入是高維度的時候,就變得計算不可行(intractable)了。但在機器學習領域,這有更多的意義。隨著樣例維度(即特征數目)的增長,正確泛化的難度會以指數級增加,原因是同等規模的訓練集只能覆蓋越來越少的輸入空間比例。即使對于中等大小的 100維布爾空間,一個包含 1 萬億樣例的大型數據集合也只能覆蓋輸入空間的 10-18 左右(譯注:這里作者指的是輸入為布爾量時的情形)。這體現了機器學習存在的必要性,也是它的難點所在。
更嚴格地講,機器學習算法所(顯式或隱式)依賴的基于相似度的推理在高維空間不再有效。現在考慮一個采用漢明距離(hamming distance)作為相似度度量的最近鄰分類器,并設定樣例的分類類別是 x1∧x2 。如果沒有其他特征,這是一個很容易的問題。但是當增加 98 個不相關的特征 x3,…,x100 的時候,來自這些特征的噪音會淹沒來自 x1 和 x2 的信號,導致所找到的最近鄰相當于做出隨機預測。
更多的困擾是,即使所有的100個特征都是相關的,最近鄰方法依然會有問題。這是因為在高維空間所有的樣例都變得很相似。例如,假設所有樣例分布在規則的網格上,現在考慮一個測試樣例 xt。如果網格是 d-維的,會有個 2d 個 xt 最近鄰樣例與 xt 的距離相等。因此,隨著維數的增加,越來越多的樣例會變成 xt 的最近鄰,以致最后最近鄰的選擇實際上變成隨機的(類別選擇也因此變成隨機的)。
這只是高維空間上更廣泛問題的一個實例。我們的來自三維世界的直覺在高維空間通常并不奏效(摘注:原文our intuitions, which come from a three dimensional world, often do not apply in high-dimensional ones.)。在高維空間,多元高斯分布(multivariate?Gaussian distribution)的大部分質量(mass)并不分布在均值附近,而是在逐漸遠離均值的一層“殼”上;打個比方,一個高維的橘子的大部分質量不在瓤上,而是在皮上。如果數量一定的樣例均勻分布在一個(維數不斷增加的)高維的超立方體中,那么超出某個維數后,大部分樣例與超立方體的某一面的距離要小于與它們最近鄰的距離。如果我們在超立方體中內接一個超球面,那么超立方體的幾乎所有質量都會分布在超球面之外。這對機器學習是一個壞消息,因為機器學習常常用一種類型的形狀來近似另一種類型的形狀。
在二維或三維空間構建分類器很簡單,我們可以僅通過肉眼觀察發現不同類別樣例的分界線(甚至可以說,假如人們有在高維空間中觀察的能力,機器學習就沒有存在的必要了)。但是在高維空間中很難理解正在發生什么。因此也就很難設計一個好的分類器。人們也許會天真地認為收集更多的特征永遠不會有什么壞處,因為最壞的情況也不過是沒有提供關于類別的新信息而已。但實際上這樣做的好處可能要遠小于維度災難帶來的問題。
幸運的是,有一個效應可以在一定程度上抵消維度災難,那就是所謂的“非均勻性的祝福”(blessing of nonuniformity)。在大多數應用中,樣例在空間中并非均勻分布,而是集中在一個低維流形(manifold)上面或附近。例如在手寫體數字識別任務中,即使數字圖片的每個像素都單獨作為一個特征,近鄰方法在該任務上表現依然良好,這是因為數字圖片的空間要遠小于整個可能的空間。學習器可以隱式地充分利用這個有效的更低維空間,也可以顯式地進行降維(例如特南鮑姆(Tenenbaum)的工作【22】)。
理論保證(Theoretical Guarantees)與看上去的不一樣
機器學習論文充滿了理論保證。最常見的類型是能保證泛化所需樣例數目的邊界(bound)。你應當如何理解這些保證呢?首先,需要注意的是它們是否可行。歸納與演繹相反:在演繹中你可以保證結論是對的;在歸納中就難說了。這是很多世紀以來的普遍共識。最近幾十年的一個重要進展是我們認識到可以有歸納結果正確性的保證,特別是如果我們愿意接受概率保證(摘注:原文One
of the major developments of recent decades has been the realization that in fact we can have guarantees on the results of induction, particularly if we’re willing to settle for probabilistic guarantees.)。
基本論證非常簡單【5】。如果一個分類器的真實錯誤率(true error rate)大于 ? ,我們稱該分類器是壞的。那么一個壞分類器在 n 個隨機獨立訓練樣例上都保持正確的概率小于(1??)n 。設 b 是學習器的假設空間 H 中壞分類器的個數,其中至少有一個分類器能保持正確的概率小于 b(1??)n ,即所謂“一致限(union bound)”。假設學習器返回的都是保持正確的分類器,那么這個分類器是壞的概率小于 |H|(1??)n ,這里我們利用了 b≤|H| 這個事實。所以,如果我們希望這個概率小于 δ的充分條件是使 n>1/?(ln|H|+ln1/δ)≥ln(δ/|H|)/ln(1??) (摘注:原文該公式為 n>ln(δ/|H|)/ln(1??)≥1?(ln|H|+ln1δ) ,修改原文公式的譯注為—— 原文公式有誤,根據參考文獻【5】應為該公式 )。
不幸的是,對這類保證得十分小心。這是因為通過這種方式獲得的邊界往往非常松散(loose)。這種邊界的突出優點是所要求的樣例數目只隨 |H| 和 1/delta呈對數增長。但遺憾的是,大多數假設空間是隨著特征數目呈雙指數級增長的,這就要求我們提供的樣例數目 d 也隨著呈指數增長。例如,考慮包含 d 個布爾變量的布爾類型函數空間。如果有 e 個可能不同的樣例,就會有 2e 個可能不同的函數。因此,由于有 2d 個可能的樣例,函數總數達到個 22d 。即使對“僅僅”為指數級的假設空間,這個邊界仍然很松,因為一致限非常保守。例如,如果有 100 個布爾特征,假設空間是層數最多為 10 的決策樹,為了保證 δ=?=1 ,我們需要 50 萬個樣例。但實際上,只需要其中的一小部分數據就足以精確學習了。
而且,我們必須留意邊界所包含的意義。例如,邊界并不意味著,假如你的學習器返回了一個在某個特定訓練集上保持正確的假設,這個假設就可能實現了泛化。邊界的意思是,給定一個足夠大的訓練集,告訴你在很大的概率上你的學習器會返回一個成功泛化的假設,還是無法找到一個保持正確的假設。這個邊界也無法告訴我們如何選擇好的假設空間。它只能告訴我們,如果這個假設空間包含真實分類器,那么學習器輸出一個壞分類器的概率隨著訓練數據規模的增長而降低(摘注:原文 It only tells us that, if the hypothesis?space contains the true classifier, then the probability that the learner outputs a bad classifier decreases with training set size.)。如果我們縮小假設空間,邊界就會得到改善,但是空間包含真實分類器的幾率也降低了(在真實分類器不在假設空間中的情況下也會有邊界,以上討論同樣適用)。
另一類常用理論保證是漸進(asymptotic):給定無窮數據,學習器將保證輸出正確的分類器。這個保證讓人欣慰,但如果只是因為有漸進保證而選擇一個分類器則是非常草率的。在實踐中,我們很少處于漸進狀態(或稱為漸進態(asymptopia))。而且,由于我們前面探討過的偏置-方差的權衡(trade-off),如果對無窮數據,學習器 A 比學習器B好,那么在有限數據的情況下 B 通常比 A 好。
機器學習中理論保證的主要作用并不是在實踐中作為決策的標準,而是在算法設計中作為理解和驅動的來源。在這方面,它們作用巨大;實際上,理論與實踐的緊密結合是機器學習在過去幾年中取得重大進展的重要原因。但是使用者需要謹慎:學習是一個復雜現象,因為一個學習器既有理論證明又有實際應用,而前者并未成為后者的依據(摘注:本段原文 The main role of theoretical guarantees in machine learning is not as a criterion for practical decisions,but as a source of understanding and driving force for algorithm design. In this capacity, they are quite useful; indeed, the close interplay of theory and practice is one of the main reasons machine learning has made so much progress over the years. But caveatemptor: learning is a complex phenomenon, and just because a learner has a theoretical justification and works in practice doesn’t mean the former is the reason for the latter. )。
特征工程(Feature Engineering)是關鍵
在考慮所有情況之后,有的機器學習項目成功了而有的則失敗了。這是什么原因造成的呢?無疑最重要的因素是所利用的特征。如果你有很多與類別非常相關的獨立特征,學習起來很容易。但另一方面,如果特征與類別的關系非常復雜,你就不一定能夠學到它了。通常原始數據不能直接拿來學習,你需要從中構建特征。這是機器學習項目的主要工作。這通常也是最有趣的部分,在這里直覺、創造性和魔法與技術一樣都很重要。
初學者往往驚訝于機器學習項目中真正用于機器學習的時間是如此之少。但假如你考慮到對數據的收集、整合、清理和預處理是多么費時,以及特征設計需要經歷多少試驗和錯誤,就會理解這個過程了。還有,機器學習無法做到一次性就能完成構建數據集合和運行學習器,它是一個反復迭代的過程,包括運行學習器,分析結果,修改數據和/或學習器等,不斷重復。學習往往是這其中最快完成的部分,原因在于我們已經非常精通它了!特征工程更加困難,原因是它是領域相關(domain-specific)的,而學習器則很大程度是通用的。不過,兩者并沒有明確界限,這也是最有用的學習器往往是那些有助于融入領域知識的學習器的原因之一。
當然,機器學習的一個終極目標就是將特征工程過程越來越多地自動化(摘注:原文one of the holy grails of machine learning is to automate more and more of the feature engineering process )。現在經常采用的一種方式是先自動產生大量的候選特征,然后根據它們與分類類別的信息增益等方法來選取最好的特征。但需要牢記在心的是,特征獨立地看也許與分類無關,但組合起來也許就相關了。例如,如果分類類別是取 k 個輸入特征的“XOR(異或)”,那么每個特征單獨看都與分類沒有關系(如果你想給機器學習找點亂子,就祭出 XOR 來吧)。但是,運行包含大量特征的學習器來尋找有用的特征組合太耗時,也容易導致過擬合。因此,歸根到底你仍需責無旁貸地介入特征工程的工作。
更多的數據勝過更聰明的算法
假設你已經盡你所能構建了最好的特征集合,但分類器的效果仍不夠好,這時候應該怎么辦呢?有兩個主要選擇:設計更好的學習算法,或者收集更多數據(包括更多的樣例和不致造成維度災難的更多可能的原始特征)。機器學習研究者更關注前者,但從實用角度來看,最快捷的方法是收集更多數據。作為一條經驗,有大量數據的笨算法要勝過數據量較少的聰明算法。(畢竟,機器學習就是研究如何讓數據發揮作用的。)
然而這帶來了另外一個問題:可擴展性(scalability)。在絕大多數計算機科學問題中,兩個主要資源是有限的——時間和內存。而在機器學習中,還有第三個:訓練數據(摘注:原文training data )。其中哪一個資源會成為瓶頸是隨著時間變化而不斷變化的。在20世紀80年代,瓶頸是數據。現在的瓶頸則是時間。我們有海量數據,但沒有足夠的時間處理它們,只能棄之不用。這就造成一個悖論:即使理論上說,更多數據意味著我們可以學習更復雜的分類器,但在實踐中由于復雜分類器需要更多的學習時間,我們只能選用更簡單的分類器。一個解決方案是對復雜分類器提出快速學習算法,在這個方向上已經有了一些引人注目的進展(例如赫爾滕(Hulten)和多明戈斯(Domingos)的工作【11】)。
采用更聰明的算法得到的回報比預期要少,一部分原因是,機器學習的工作機制基本上是相同的。這個論斷也許讓你吃驚,特別是當你想到諸如規則集與神經網絡之間差異巨大的表示方法的時候。但實際上,命題規則的確可以輕易地表示成神經網絡,其他表示之間也有類似的關系。本質上所有的學習器都是將臨近的樣例歸類到同一個類別中;關鍵的不同之處在于“臨近”的意義。對于非均勻分布的數據,不同的學習器可以產生迥乎不同的分類邊界,同時仍能在關心的領域(即那些有大量訓練樣例、測試樣例也會有很大概率出現的領域)保證得到相的預測結果。這也有助于解釋為什么能力強的學習器雖然不穩定卻仍然很精確。圖 3在二維空間展示了這一點,在高維空間這個效應會更強。
作為一條規則,首先嘗試最簡單的學習器總是有好處的(例如應該在邏輯斯蒂回歸之前先嘗試樸素貝葉斯,在支持向量機之前先嘗試近鄰 [ 摘注:原文, na?ve Bayes before logistic?regression, k-nearest neighbor beforesupport vector machines)])。更復雜的分類器固然誘人,但它們通常比較難駕馭,原因包括我們需要調節更多的參數才能得到好的結果,以及它們的內部機制更不透明。
學習器可以分為兩大類:一類的表示是大小不變的,比如線性分類器(摘注:原文 linear classifiers);另一類的表示會隨著數據而增長,比如決策樹(摘注:原文 decisiontrees)。(后者有時候會被稱為非參數化學習器(nonparametric learners),但不幸的是,它們通常需要比參數化學習器學習更多的參數。)數據超過一定數量后,大小不變的學習器就不能再從中獲益。(注意圖 2 中樸素貝葉斯的準確率是如何逼近大約 70%的。)而如果有足夠的數據,大小可變的學習器理論上可以學習任何函數,但實際上卻無法做到。這主要是受到算法(例如貪心搜索會陷入局部最優)和計算復雜度的限制。而且,由于維度災難,再多的數據也不會夠。正是由于這些原因,只要你努力,聰明的算法——那些充分利用已有數據和計算資源的算法——最后總能取得成功。在設計學習器和學習分類器之間并沒有明顯的界限;因為任何知識要么可以被編碼進學習器,要么可以從數據中學到。所以,機器學習項目通常會有學習器設計這一重要部分,機器學習實踐者應當在這方面積累一些專門知識【12】。
終極而言,最大的瓶頸既不是數據,也不是 CPU速度,而是人力。在研究論文中,學習器一般都在準確率和計算復雜度方面進行比較。但更重要的是節省的人力和得到的知識,雖然這些更難度量。這使那些產生人類可理解的輸出的學習器(比如規則集合)更為受到青睞。機器學習成果最豐碩的,是那些建立了機器學習的基本條件,能夠便捷地在多個學習器、數據來源和學習問題上方便有效地開展實驗,并實現機器學習專家與領域專家的密切合作的組織。
要學習很多模型,而不僅僅是一個
在機器學習早期,每個人都有一個最喜歡的學習器,并由于一些先入為主的原因堅信它的優越性。人們花費大部分精力來嘗試它的各種變種,從中選擇最好的那個。后來,系統的實驗比較表明在不同應用上的最佳學習器并不相同,因此開始出現包含多種學習器的系統。這時,人們嘗試不同學習器的各種變種,仍然只是找出其中表現最好的那個。后來研究者注意到,如果不是只選最好的那個,而是將多個學習器結合,結果會更好——通常是好得多——而這只需要花費人們很少的精力。
現在建立模型集成(model ensembles)已經實現標準化【1】。最簡單的集成技術是 bagging(裝袋)方法,該方法通過重采樣(resampling)隨機產生若干個不同的訓練集,在每個集合上訓練一個分類器,然后用投票(voting)的方式將結果合并。該方法比較有效,原因是它在輕度增加偏置的同時,極大地降低了方差。在boosting(強化提升)方法中,每個訓練樣例都有權重,權重會不斷變化,每次訓練新分類器的時候都集中在那些分類器之前傾向于分錯的樣例上。在stacking(堆疊)方法中,每個單獨分類器的輸出會作為更高層分類器的輸入,更高層分類器可以判斷如何更好地合并這些來自低層的輸出。
此外,還有很多其他技術,現在的趨勢是越來越大型的集成。在Netflix大獎賽中,來自世界各地的團隊競爭建立最好的視頻推薦系統(http://netflixprize.com)。隨著競賽的開展,團隊們開始發現與其他團隊合并學習器會取得最好的結果,因此團隊開始合并,越來越大。競賽的第一名和第二名團隊都合并了超過100個學習器,將這兩者集成后又進一步提升了效果。毫無疑問,未來我們會看到更大的集成學習器。
模型集成不應與貝葉斯模型平均(bayesian model averaging,BMA)混淆,后者是學習的一種理論最優化方法【4】。在貝葉斯模型平均方法中,對新樣例的預測是對假設空間中的所有分類器的預測取平均得到的,每個分類器會根據它解釋訓練數據的能力和我們對它的先驗信任度而有不同的權重。雖然模型集成與貝葉斯模型平均方法表面上很相似,它們其實非常不同。集成方法改變了假設空間(例如從單獨的決策樹變成了決策樹的線性組合),而且可以采用多種多樣的形式。貝葉斯模型平均方法只是根據某個準則對原始空間的假設賦予不同的權重。貝葉斯模型平均方法的權重與bagging或者boosting等集成方法產生的權重非常不同。后者很平均,而前者波動很大,甚至出現某個權重最大的分類器占據統治地位的情況,導致貝葉斯模型平均方法實際上等同于直接選擇這個權重最大的分類器【8】。一個實際的后果是,模型集成已經成為機器學習工具的重要組成部分,而貝葉斯模型平均方法則少有人問津。
簡單并不意味著準確
著名的奧坎姆剃刀(occam’s razor)原理稱:若無必要,勿增實體(entities should not be multi-plied beyond necessity)。在機器學習中,這經常被用來表示成:對于有相同訓練誤差的兩個分類器,比較簡單的那個更可能有較低的測試誤差。關于這個斷言的證明經常出現在文獻中,但實際上對此有很多反例,而且“沒有免費的午餐”定理也暗示了這個斷言并不正確。
我們前面已經看到了一個反例:模型集成。集成模型的泛化誤差會一直隨著增加新的分類器而改進,甚至可以優于訓練誤差。另一個反例是支持向量機,它實際上可以有無限個參數而不至于過擬合。而與之相反,函數可以將軸上任意數量、任意分類的數據點劃分開,即使它只有1個參數【23】。因此,與直覺相反,在模型參數的數量和過擬合之間并無直接聯系。
一個更成熟的認識是將復雜度等同于假設空間的大小。這是基于以下事實:更小的假設空間允許用更短的代碼表示假設。那么“理論保證”一節中的邊界就暗示了,更短的假設可以泛化得更好。這還可以進一步改善為,為有先驗偏好的空間中的假設分配更短的代碼。但如果將此看作是準確(accuracy)和簡單(simplicity)之間權衡的“證明”,那就變成循環論證了—— 我們將所偏好的假設設計得更加簡單,而如果結果是準確的是因為我們的偏好是準確的,而不是因為這些假設在我們選擇的表示方法中是“簡單的”(摘注:該段原文 A more sophisticated?view instead equates complexity with the size of the hypothesis space, on the basis that smaller spaces allow hypotheses to be represented by shorter codes. Bounds like the one in the section on theoretical guarantees above might then be viewed as implying that shorter hypotheses generalize better. This can be further refined by assigning shorter codes to the hypothesis in the space that we have some a priori preference for. But viewing this as “proof” of a tradeoff between accuracy and simplicity is circularreasoning: we made the hypotheses we prefer simpler by design, and if they are accurate it’s because our preferences are accurate, not because the hypotheses are “simple” in the representation we chose.)。
問題的復雜性還來自這樣一個因素:幾乎沒有學習器能窮盡搜索整個假設空間。一個在較大的假設空間搜索較少假設的學習器,比一個在較小空間中搜索較多假設的學習器更不容易過擬合(摘注:原文 A learner with a larger hypothesis space that tries fewer hypotheses from it is less likely to over fit than one that tries more hypotheses from a smaller space.)。正如珀爾(Pearl)【18】指出的,假設空間的大小只是對對確定影響訓練誤差和測試誤差的關鍵因素有初步的指導意義。
多明戈斯 【7】調研了機器學習中奧坎姆剃刀原理問題的主要論證和論據。結論是,應當先選擇簡單假設,這是因為簡單本身就是一個優點,而不是因為所假設的與準確率有什么聯系。這也許正是奧坎姆最初想表達的意思。
可表示并不意味著可學習
從本質上講,用于大小可變的學習器的所有表示都有其形式為“每個函數都可以表達為或以無限接近的方式近似表達為××表示”的定理與之伴隨。正因為如此,某種表示方法的擁躉往往會忽略其他方法。但是,僅僅因為一個函數可以被表示,并不意味著它是可被學習的。例如,標準的決策樹學習器無法學習出比訓練樣例更多的葉子節點。在連續空間中,用一個固定的基元(primitives)族來表示哪怕很簡單的函數,也常常要由無限多項組成。更進一步,如果假設空間有許多評價函數的局部最優點,正如經常發生的那樣,學習器可能根本無法找到這個真正的函數,即使它是可表示的。給定有限數據、時間和內存,標準學習器只能學到所有可能函數中很有限的子集。這個子集會隨著表示方法的不同而不同。因此,關鍵問題不是“它是否可表示?”(這個問題的答案通常無關緊要),而是“它是否可以被學習?”這值得我們嘗試不同的學習器(或者它們的組合)來尋找答案。
對某些函數來講,一些表示方法會比其他方法更加精簡,從而只需要更少的數據來學習那些函數。很多學習器的工作機制是將簡單的基函數(basis function)進行線性組合。例如,支持向量機就形成了集中在某些訓練樣例(也就是那些支持向量)上的核(kernels)的組合。如果用這種組合方法來表示 n 個比特的奇偶性(parity),將需要 2n 個基函數。但如果采用多層表示(也就是說在輸入和輸出之間存在多步),奇偶性就可以用一個線性規模的分類器表示。探索這種深層表示的學習方法是機器學習的主要研究前沿之一 【2】。
相關并不意味著因果
相關不意味著因果,這一點經常被提起,好像在這兒已經不值得再加贅述了。但是,即使我們討論的這些學習器只能學習到相關性,它們的結果也經常被作為因果關系來對待。這樣做錯了么?如果是錯的,為什么人們還這樣做呢?
更多時候,人們學習預測模型的目標是作為行動指南。如果我們發現超市里的啤酒和尿布經常被一起購買,那將啤酒放在尿布旁邊將會提高銷售量。(這是數據挖掘領域的著名例子。)但除非真的做實驗,不然很難發現這一點。機器學習通常應用于觀測(observational)數據,在觀測數據中預測變量并不在學習器的控制之下,這與實驗(experimental)數據相反,后者的預測變量在控制范圍內。一些學習算法其實有潛力做到從觀測數據發現因果信息,但它們的可用性比較差 【19】。而另一方面,相關性是因果關系的標志,我們可以將其作為進一步考察的指南(例如試圖理解因果鏈可能是什么樣)。
很多研究者相信因果只是一種為了方便而杜撰的概念。例如,在物理定律中并沒有因果的概念。因果是否真的存在是一個深奧的哲學問題,現在并沒有一個確定的答案。但對于機器學習有兩個實用的要點。首先,無論我們是否稱它們為“因果關系”,我們都希望能預測我們行動的效果,而不僅僅是觀測變量之間的相關性;其次,如果你能夠獲取到實驗數據(例如能夠隨機分配訪問者到一個網站的不同版本),那么務必盡量獲取 【14】。
結論
就像其他任何一個學科那樣,機器學習擁有的很多“民間智慧”并不是那么容易就能了解到,但這些知識對于成功運用機器學習至關重要。這篇文章總結了其中最主要的幾條知識。當然這只是對機器學習的傳統學習內容的補充。讀者可以參加一個有完整內容的機器學習在線課程,其中融合了正式和非正式的知識,網站是http://www.cs.washington.edu/homes/pedrod/。此外,在http://videolectures.net/上還有大量寶貴的與機器學習相關的學術報告。 Weka【24】是一款優秀的機器學習開源工具包。
祝大家學習快樂!
參考:
【1】 E. Bauer and R. Kohavi. An empirical comparison of voting classification algorithms: Bagging, boosting and variants.Machine Learning, 36:105–142, 1999.
【2】 Y. Bengio. Learning deep architectures for AI.Foundations and Trends in Machine Learning,2:1–127, 2009.
【3】 Y. Benjamini and Y. Hochberg. Controlling the false discovery rate: A practical and powerful approach to multiple testing.Journal of the Royal Statistical Society, Series B, 57:289–300, 1995.
【4】 J. M. Bernardo and A. F. M. Smith.Bayesian Theory.Wiley, New York, NY, 1994.
【5】 A. Blumer, A. Ehrenfeucht, D. Haussler, and M. K.Warmuth. Occam’s razor. Information Processing Letters, 24:377–380, 1987.
【6】 W. W. Cohen. Grammatically biased learning:Learning logic programs using an explicit antecedent description language. Artificial Intelligence,68:303–366, 1994.
【7】 P. Domingos. 奧卡姆剃刀在知識發現中的角色The role of Occam’s razor in knowledge discovery. Data Mining and Knowledge Discovery, 3:409–425, 1999.
【8】 P. Domingos. Bayesian averaging of classifiers and the overfitting problem. In Proceedings of the Seventeenth International Conference on Machine Learning, pages 223–230, Stanford, CA, 2000. Morgan Kaufmann.
【9】 P. Domingos A unified bias-variance decomposition and its applications. In Proceedings of the Seventeenth International Conference on Machine Learning
pages 231–238, Stanford, CA, 2000. Morgan Kaufmann.
【10】 P. Domingos and M. Pazzani On the optimality of the simple Bayesian classifier under zero-one loss. Machine Learning, 29:103–130, 1997.
【11】 G. Hulten and P. Domingos. Mining complex models from arbitrarily large databases in constant time. In Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,pages 525–531, Edmonton, Canada, 2002. ACMPress.
【12】 D. Kibler and P. Langley. 作為一門實驗科學的機器學習Machine learning as an experimental science. In Proceedings of the Third European Working Session on Learning, London, UK, 1988. Pitman.
【13】 A. J. Klockars and G. Sax. Multiple Comparisons.Sage, Beverly Hills, CA, 1986.
【14】 R. Kohavi, R. Longbotham, D. Sommerfield, and R. Henne. Controlled experiments on the Web: Survey and practical guide. Data Mining and Knowledge Discovery, 18:140–181, 2009.
【15】 Manyika, J., Chui, M., Brown, B.,Bughin, J., Dobbs, R., Roxburgh,C. and A.Byers 大數據:創新、競爭和生產力的下一個前沿 Big data: The next frontier for innovation,competition, and productivity.Technical report, McKinsey Global Institute, 2011
【16】 Mitchell, T.M. Machine Learning.McGraw-Hill, NY, 1997
【17】 A. Y. Ng. 阻止交叉驗證數據的“多擬合”Preventing “overfitting” of cross-validation data. In Proceedings of the Fourteenth International Conference
on Machine Learning pages 245–253, Nashville, TN, 1997. Morgan Kaufmann.
【18】 J. Pearl. 關于推斷模型之復雜性和可信性間的聯系On the connection between the complexity and credibility of inferred models. International Journal of General Systems, 4:255–264, 1978.
【19】 J. Pearl. 因果關系:模型,推理和推斷Causality: Models, Reasoning, and Inference.Cambridge University Press, Cambridge, UK, 2000.
【20】 J. R. Quinlan. C4.5: Programs for Machine Learning.Morgan Kaufmann, San Mateo, CA, 1993.
【21】 M. Richardson and P. Domingos. 馬爾科夫邏輯網絡 Markov logic networks. Machine Learning, 62:107–136, 2006.
【22】 J. Tenenbaum, V. Silva, and J. Langford. A global geometric framework for nonlinear dimensionality reduction. Science, 290:2319–2323, 2000.
【23】 V. N. Vapnik. The Nature of Statistical Learning Theory. Springer, New York, NY, 1995.
【24】 Witten, I., Frank, E. and Hall, M Data Mining: Practical Machine Learning Tools and Techniques 3rd Edition. Morgan Kaufmann,San Mateo, CA, 2011
【25】 D. Wolpert. The lack of a priori distinctions between learning algorithms. Neural Computation,8:1341–1390, 1996.
附加:下載?機器學習的那些事.Pdf?
End.
出處:http://www.36dsj.com/archives/22728
總結
以上是生活随笔為你收集整理的深度译文:机器学习那些事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习和计算机视觉有关的数学
- 下一篇: 如何实现科技论文里面的算法