寫在最前面
如今機器學習和深度學習如此火熱,相信很多像我一樣的普通程序猿或者還在大學校園中的同學,一定也想?yún)⑴c其中。不管是出于好奇,還是自身充電,跟上潮流,我覺得都值得試一試。對于自己,經歷了一段時間的系統(tǒng)學習(參考《機器學習/深度學習入門資料匯總》),現(xiàn)在計劃重新閱讀《機器學習》[周志華]和《深度學習》[Goodfellow et al]這兩本書,并在閱讀的過程中進行記錄和總結。這兩本是機器學習和深度學習的入門經典。筆記中除了會對書中核心及重點內容進行記錄,同時,也會增加自己的理解,包括過程中的疑問,并盡量的和實際的工程應用和現(xiàn)實場景進行結合,使得知識不只是停留在理論層面,而是能夠更好的指導實踐。記錄筆記,一方面,是對自己先前學習過程的總結和補充。 另一方面,相信這個系列學習過程的記錄,也能為像我一樣入門機器學習和深度學習同學作為學習參考。
章節(jié)目錄
- k近鄰學習
- 低緯嵌入
- 主成分分析
- 核化線性降維
- 流形學習
- 度量學習
(一)k近鄰學習
k近鄰(k-Nearest,簡稱kNN)學習是一種常用的監(jiān)督學習方法,其工作機制非常簡單:給定測試樣本,基于某種距離度量找出訓練集中與其最靠近的k個訓練樣本。然后基于這k個“鄰居”的信息進行預測。通常,在分類任務中可使用“投票法”,即選擇這k個樣本中出現(xiàn)最多的類別標記作為預測結果;在回歸任務中可使用“平均法”,即將這k個樣本的實際值輸出標記的平均值作為預測結果。還可基于距離遠近的加權平均或加權投票,距離越近的樣本權重越大。
與先前介紹的學習方法相比,k近鄰學習有一個明顯的不同之處,它似乎沒有顯示的訓練過程。事實上,它是“懶惰學習”(lazy learning)的著名代表,此類學習技術在訓練階段僅僅是將樣本存儲起來,訓練開銷為零,待收到測試樣本后再進行處理;相應的,那些在訓練階段就對樣本進行學習處理的方法,稱為“急切學習”(eager learning)。
下圖給出了k近鄰分類器的一個示意圖,
近鄰分類器雖簡單,但它的泛化錯誤率不超過貝葉斯最優(yōu)分類器的錯誤率的兩倍。
(二)低維嵌入
上一節(jié)的討論是基于一個重要假設:任意測試樣本x附近任意小的δ距離范圍內總能找到一個訓練樣本,即訓練樣本的采樣密度足夠大,或稱為“密采樣”(dense sample)。然而,這個假設在現(xiàn)實任務中通常很難滿足。此外,許多學習方法都涉及距離計算,而高維空間會給距離計算帶來很大麻煩,例如當維數(shù)很高時,甚至連計算內積都不再容易。
事實上,在高維情形下出現(xiàn)的數(shù)據(jù)樣本稀疏,計算距離困難等問題,是所有機器學習方法共同面臨的嚴重障礙,被稱為“維數(shù)災難”(curse of dimensionality)。
緩解維數(shù)災難的一個重要途徑是降維(dimension reduction),亦稱“維數(shù)簡約”,即通過某種數(shù)學變換將原始高緯度屬性空間轉變?yōu)橐粋€低維“子空間”(subspace),在這個子空間中樣本密度大幅提高,計算距離也變得更為容易。為什么能進行降維?這是因為在很多時候,人們人們觀測或收集到的數(shù)據(jù)樣本雖是高維的,但與學習任務密切相關的也許僅是某個低維分布,即高維空間的一個底維“嵌入”(embedding)。下圖給出了一個直觀的例子,原始高維空間中的樣本點,在這個低緯嵌入子空間中更容易進行學習。
若要求原始空間中的樣本之間距離在低維空間中得以保持,如上圖所示,即得到“多維縮放”(Multiple Dimensional Scaling,簡稱MDS)這樣一種經典的降維方法。
對降維效果的評估,通常是比較降維前后學習器的性能,若性能有所提高則認為降維起到了作用。若維數(shù)降低到二維或三維,則可通過可視化技術來直觀的判斷降維效果。
(三)主成分分析
主成分分析(Principal Component Analysis,簡稱PCA)是最常用的一種降維方法。
PCA僅需保留W與與樣本的均值向量即可通過簡單的向量減法和矩陣向量乘法將樣本投影到低維空間中。顯然,低維空間與原始高維空間必有不同,因為對應于最小的d-d'個特征值的特征向量被舍棄了,這是降維導致的結果。但舍棄這樣的信息往往是必要的:
- 一方面,舍棄這部分信息之后能使樣本的采樣密度增大,這正是降維的重要動機;
- 另一方面,當數(shù)據(jù)受到噪聲影響時,最小的特征值所對應的特征向量往往與噪聲有關,將它們舍棄能在一定程度上起到去噪的效果。
(四)核化線性降維
線性降維方法假設從高維空間到低維空間的函數(shù)映射是線性的,然而,在不少實際任務中,可能需要非線性映射才能找到恰當?shù)牡途S嵌入。
非線性降維的一種常用方法,是基于核技巧對線性降維方法進行”核化“(kernelized)。
(五)流形學習
流形學習(manifold learning)是一類借鑒了拓撲流形概念的降維方法?!绷餍巍笆窃诰植颗c歐氏空間同胚的空間,換言之,它在局部具有歐氏空間的性質,能用歐氏距離來進行距離計算。這給降維方法帶來了很大的啟發(fā)。若低維流形嵌入到高維空間中,則數(shù)據(jù)樣本在高維空間的分布雖然看上去非常復雜,但在局部上仍具有歐氏空間的性質,因此,可以容易的在局部建立降維映射關系,然后,再設法將局部映射關系推廣到全局。當維數(shù)被降至二維或三維時,能對數(shù)據(jù)進行可視化展示,因此流形學習也可被用于可視化。
其中,等量度映射和局部線性嵌入式兩種著名的流形學習方法。
(六)度量學習
在機器學習中,對高維數(shù)據(jù)進行降維的主要目的是希望找到一個合適的低維空間,在此空間中進行學習能比原始空間性能更好。事實上,每個空間對應了在樣本屬性上定義的一個距離度量,而尋找合適的空間,實質上就是在尋找一個合適的距離度量。直接嘗試”學習“出一個合適的距離度量,就是度量學習(metric learning)的基本動機。