1. 程式人生 > >機器學習的幾個重要問題

機器學習的幾個重要問題


本文是我看《機器學習哪些事》的一些總結和感想。如果我現在就是一個能夠學習的機器的話,那我現在進行的就是機器學習中的“歸納”。

另:本人剛開始接觸機器學習這一領域,歡迎交流溝通,表述如有不當之處,懇求指出。

*我的總結:

1.機器學習實現為一個學習器,學習器通過樣例訓練集的訓練,學到假設空間裡一個最優的演算法(比如一個最優的分類器集合中的一個分類器)。其中,樣例訓練集可以理解為學習器要學習的知識,選出來的最優演算法要再使用樣例測試集進行測試(即現在的軟體測試)。

2.學習器之所以能夠學習成功,就是在一些特定的例項上,進行一些泛化假設,從而繞過了“沒有免費的午餐”理論的限制。所以最好的學習器的表示應該是基於例項的方法。

一、一些介紹:

1.機器學習系統自動地從資料中學習程式。 並實現為一個學習器(見下面的定義)。

2.機器學習分類

        機器學習有許多不同的型別, 一個最常用的是分類,一個分類器(classifier)是一個系統,系統輸入是一個包含若干相關或者離散的特徵值(feature values)的向量,系統輸出是一個離散的值,代表分類的類別(class).

3.學習器的定義

        一個學習器將一個訓練集(training set)樣例(x i,y i)作為輸入,其中x i = (x i,1,...,x i,d)是觀察到的輸入,y i是相應的輸出,學習器的輸出是一個分類器。對學習器的檢驗就是判斷它輸出的分類器是否能夠對將來的輸入樣例x t輸出正確的y t。

4.如何選擇一個機器學習演算法

       現在有成千上萬的機器學習演算法,每年還有成百上千的新演算法發表出來。避免迷失在這麼多演算法中的關鍵是,要認識到這些演算法都是由三個部分組成的,分別是:

       a)表示(Representation) ,為學習器選擇一種表示,就意味選擇一個特定的分類器集合。學習器可能學出的分類器只能在這個集合中。這個集合被稱為學習器的假設空間(hypothesis space)。如果某個分類器不在該空間中,它就不可能被該學習器學到。

       b)評價(Evaluation),我們需要一個評價函式(亦稱為目標函式或打分函式)來判斷分類器的優劣。機器學習演算法內部使用的評價函式和我們希望分類器進行優化的外部評價函式有所不同。

       c)優化(Optimization),最後,我們需要一個搜尋方法,能夠在假設空間中找到評價函式得分最高的那個分類器。

5.泛化(generalization)很重要

      機器學習的基本目標是對訓練集合中樣例的泛化。這是因為,不管我們有多少訓練資料, 在測試階段(更不用說生產階段)這些資料都不太可能會重複出現。

6.“沒有免費的午餐”定理

     沒有學習器能夠比在所有可能的布林函式中隨機猜測的結果更優。這似乎是一個非常讓人失望的訊息。那我們還能指望能學到什麼東西嗎?幸運的是,在真實世界中,我們要學習的函式並非均勻地來自所有可能的函式!實際上,一些非常泛泛的假設——比如平滑(smoothness),相似的樣例有相似的類別,有限依賴,或者有限複雜度——通常足夠起很大作用,這也是機器學習能夠如此成功的重要原因。                  

二、幾個重要的問題:

1.過擬合(overfitting)有多張面孔

       一種理解:過擬合是將泛化誤差(generalization error)分為偏置(bias)和方差(variance)。偏置度量了學習器傾向於一直學習相同錯誤的程度。方差則度量了學習器傾向於忽略真實訊號、學習隨機事物的程度。

      一種誤解:認為它是由噪音造成的,但是即使沒有噪音依然會發生嚴重的過擬合。

      解決方法:交叉驗證 、對評價函式增加一個正則項(regularization term),等等。。。

      另一個問題:多重檢驗(multiple testing)問題與過擬合密切相關。 這個問題可以通過在顯著性檢驗中將假設的個數考慮進去來解決,但這樣也會導致欠擬合。更好的途徑是控制錯誤接受的非零假設(non-null  hypotheses)的比率,該方法通常被稱為錯誤發現率(false discovery rate)方法。  

2.維度災難(curse of dimensionality)問題

       定義:許多在低維度工作良好的演算法,當輸入是高維度的時候就變得不可行了。

       解釋:隨著樣例維度(即特徵數目)的增加,正確泛化的難度將會以指數增加,原因就是同等規模的訓練集只能覆蓋越來越少的輸入空間比例。

       解決方法:降低樣例的維度。一種是學習器隱式的利用輸入樣例的有效的更低維的空間(如果輸入樣例有這個特性的話,即是“非均勻性的祝福”),另一種就是學習器可以顯式的進行將維。

3.理論保證(theoretical guarantees)通常與實際情況不一樣

      兩種常見的理論保證:樣例數目的邊界保證(bound)、漸進(asymptotic,即是輸入資料無窮多)保證。

      應用:機器學習中理論保證的主要作用並不是在實踐中作為決策的標準,而是在演算法設計時作為理解和驅動的來源。

4.特徵工程(feature engineering)是關鍵

      地位:原始資料不能拿來直接學習,需要從中構建特徵,這是機器學習的主要工作,這通常也是最有趣的地方。

      構建特徵的方法:機器學習的一個終極目標就是將特徵工程過程越來越多的自動化,但是這樣容易導致出現上述的問題1,因此,仍需要人為地介入特徵工程。

5.更多的資料和聰明的演算法之間的關係

      當你構建的最好的學習器仍不能很好的工作的事後,機器學習研究者更關注設計更好的學習演算法,但是作為一條經驗,有大量資料的笨演算法要勝過資料量較少的聰明演算法。而後者又會遇到可擴充套件性的問題。

      這裡面,大資料和聰明的演算法之間存在一個悖論。即,聰明的演算法沒有學習更多的資料有效,另一方面,實際上不會有足夠多的資料供學習(維度災難)或者演算法的複雜度問題,哪些聰明的演算法(能夠充分利用現有的資料的演算法)又能夠取得很好的效果。

6.建立模型整合(model ensembels)

      模型整合已經成為機器學習工具的重要組成部分。

7.簡單並不意味著準確

      這部分暫時沒有看懂,暫略。

8.可表示並不意味著可學習

      略

9.相關並不意味著因果

      因果是否存在是一個哲學問題,機器學習關注的是:根據相關性來預測我們行動的效果。

結尾語:本文講的是“民間智慧”,即正規知識的民間化表達。