3 統計機器學習
統計機器學習是近幾年被廣泛應用的機器學習方法,事實上,這是一類相當廣泛的方法。更為廣義地說, 這是一類方法學。當我們獲得一組對問題世界的觀測數據, 如果我們不能或者沒有必要對其建立嚴格物理模型,我們可以使用數學的方法, 從這組數據推算問題世界的數學模型, 這類模型一般沒有對問題世界的物理解釋, 但是, 在輸入輸出之間的關系上反映了問題世界的實際, 這就是“黑箱”原理。一般來說,“黑箱”原理是基于統計方法的(假設問題世界滿足一種統計分布) , 統計機器學習本質上就是“黑箱”原理的延續。與感知機時代不同, 由于這類機器學習科學基礎是感知機的延續, 因此,神經科學基礎不是近代統計機器學習關注的主要問題, 數學方法成為研究的焦點。
3.1 統計機器學習概述
統計機器學習方法的基本假設是同類數據具有一定的統計規律性。其目標是從假設空間(也即模型空間,從輸入空間到輸出空間的映射函數空間)中尋找一個最優的模型。
通過對統計機器學習目標的描述,我們可以發現統計機器學習方法主要研究三個問題:
(1)模型假設:這個問題解決的是如何將樣本從輸入空間轉化到輸出空間的,它往往是一個后驗概率或者是一個映射函數。
(2)模型選擇:模型所在空間也就是假設空間,往往包含無窮多個滿足假設的可選模型,如何從假設空間中選擇一個最優模型,應該采用怎樣的選擇標準?這就是模型選擇應該解決的問題。一般采用損失函數來制定模型選擇策略,將模型選擇轉化為一個最優化問題來求解。常用的損失函數包括0-1損失、平方誤差損失、絕對損失、對數損失等等。通常我們也會在損失函數中加上正則化項,從而降低模型的復雜性,提高模型的泛化能力,拒絕Overfitting。
(3)學習算法:學習算法是用來解決最優化問題的方法。在給定損失函數后,如何快速找到損失函數約定條件下的最優解就是學習算法需要解決的問題。常用的學習算法包括梯度下降、擬牛頓法等等。
統計機器學習方法的三個問題都是非常值得研究的,對于模型假設這個問題,如果模型都選擇錯誤,無論后面如何選擇模型,也都難以反映數據集的正確分布。因此,首先需要選擇對模型做出正確假設,如何選擇模型的假設空間是一個學問,除掉交叉驗證的方法之外還有不少其他方法。模型選擇的關鍵在于如何設計損失函數,而損失函數通常包括損失項和正則化項,不同的模型選擇策略通常選出的模型也非常不同,從而導致模型的預測效果也大大不同。學習算法比較定式,不同的學習算法不僅學習的效率不同,而且學習出來的效果也不一樣。
3.2 統計機器學習的理論基礎
機器學習早期研究的特點是以劃分為主要研究課題, 這個考慮一直延續到Vapnik 在20 世紀70 年代發展的關于有限樣本統計理論, 并于20 世紀80 年代末流傳到西方之后,在泛化能力意義下指導算法設計才成為人們關注的主要問題, 這是本文需要進一步討論的問題。
盡管以Open 問題驅動的BP 算法研究大大推動了感知機研究方向的發展, 然而, 近十年計算機科學與技術的快速發展,使得人們獲得數據的能力大大提高, BP 這類算法已不能完全適應這種需求, 同時,Minsky 的算法設計原則愈顯重要。
然而,沿著Barlow 路線的機器學習研究并沒有終止,自1992年開始,Vapnik 將有限樣本統計理論介紹給全世界, 并出版了統計機器學習理論的著作盡管這部著作更多地是從科學、哲學上討論了機器學習的諸多問題, 但是, 其暗示的算法設計思想對以后機器學習算法研究產生了重要的影響。
Vapnik 的研究主要涉及機器學習中兩個相互關聯的問題, 泛化問題與表示問題。前者包含兩個方面的內容: 其一, 有限樣本集合的統計理論; 其二, 概率近似正確的泛化描述。而后者則主要集中在核函數, 由此, 將算法設計建立在線性優化理論之上。
Valiant的“概率近似正確”學習的考慮在機器學習的發展中扮演了一個重要的角色。1984 年,Valiant 提出了機器學習的一個重要考慮, 他建議評價機器學習算法應該以“概率近似正確(PAC)”為基礎,而不是以傳統模式識別理論中以概率為1 成立為基礎,由此, 他引入了類似在數學分析中的ε-δ語言來描述PAC, 這個考慮對近代機器學習研究產生了重要的影響。首先, 統計機器學習理論中泛化不等式的推導均以這個假設為基礎;其次, 基于這個考慮的“弱可學習理論”,為研究基于Hebb 路線的學習算法設計奠定了理論基礎, 并產生被廣泛應用的集群機器學習理念( ensemble )。
3.3 統計機器學習的研究現狀
3.3.1SVM與Deep Learning的競爭
當前統計學習領域最熱門方法主要有deep learning和SVM(supportvector machine),它們是統計學習的代表方法。
可以認為神經網絡與支持向量機都源自于感知機(Perceptron)。感知機是由Rosenblatt發明的線性分類模型(1958年)。感知機對線性分類有效,但現實中的分類問題通常是非線性的。
神經網絡與支持向量機(包含核方法)都是非線性分類模型。1986年,Rummelhart與McClelland發明了神經網絡的學習算法Back Propagation。后來,Vapnik等人于1992年提出了支持向量機。神經網絡是多層(通常是三層)的非線性模型,支持向量機利用核技巧把非線性問題轉換成線性問題。
神經網絡與支持向量機一直處于“競爭”關系。SVM應用核函數的展開定理,無需知道非線性映射的顯式表達式;由于是在高維特征空間中建立線性學習機,所以與線性模型相比,不但幾乎不增加計算的復雜性,而且在某種程度上避免了“維數災難”。而早先的神經網絡算法比較容易過訓練,大量的經驗參數需要設置;訓練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優。
神經網絡研究領域領軍者Hinton在2006年提出了神經網絡Deep Learning算法,使神經網絡的能力大大提高,向支持向量機發出挑戰。Deep Learning假設神經網絡是多層的,首先用RestrictedBoltzmann Machine(非監督學習)學習網絡的結構,然后再通過Back Propagation(監督學習)學習網絡的權值。
3.3.2 支持向量機SVM
SVM方法是通過一個非線性映射p,把樣本空間映射到一個高維乃至無窮維的特征空間中(Hilber空間),使得在原來的樣本空間中非線性可分的問題轉化為在特征空間中的線性可分的問題。升維,就是把樣本向高維空間做映射,一般情況下這會增加計算的復雜性,甚至會引起“維數災難”,因而人們很少問津。但是作為分類、回歸等問題來說,很可能在低維樣本空間無法線性處理的樣本集,在高維特征空間中卻可以通過一個線性超平面實現線性劃分(或回歸)。一般的升維都會帶來計算的復雜化,SVM方法巧妙地解決了這個難題:應用核函數的展開定理,就不需要知道非線性映射的顯式表達式;由于是在高維特征 空間中建立線性學習機,所以與線性模型相比,不但幾乎不增加計算的復雜性,而且在某種程度上避免了“維數災難”.這一切要歸功于核函數的展開和計算理論.
選擇不同的核函數,可以生成不同的SVM,常用的核函數有以下4種:
⑴ 性核函數K(x,y)=x·y;
⑵多項式核函數K(x,y)=[(x·y)+1]d;
⑵ 向基函數K(x,y)=exp(-|x-y|^2/d^2)
⑶ 層神經網絡核函數K(x,y)=tanh(a(x·y)+b).
3.3.2.1 SVM有如下主要幾個特點:
(1)非線性映射是SVM方法的理論基礎,SVM利用內積核函數代替向高維空間的非線性映射;
(2)對特征空間劃分的最優超平面是SVM的目標,最大化分類邊際的思想是SVM方法的核心;
(3)支持向量是SVM的訓練結果,在SVM分類決策中起決定作用的是支持向量。(4)SVM 是一種有堅實理論基礎的新穎的小樣本學習方法。它基本上不涉及概率測度及大數定律等,因此不同于現有的統計方法。從本質上看,它避開了從歸納到演繹的傳統過程,實現了高效的從訓練樣本到預報樣本的“轉導推理”,大大簡化了通常的分類和回歸等問題。
(5)SVM 的最終決策函數只由少數的支持向量所確定,計算的復雜性取決于支持向量的數目,而不是樣本空間的維數,這在某種意義上避免了“維數災難”。
(6)少數支持向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗余樣本,而且注定了該方法不但算法簡單,而且具有較好的“魯棒”性。這種“魯棒”性主要體現在:
①增、刪非支持向量樣本對模型沒有影響;
②支持向量樣本集具有一定的魯棒性;
③有些成功的應用中,SVM 方法對核的選取不敏感
3.3.2.2 SVM的兩個不足:
(1) SVM算法對大規模訓練樣本難以實施
由 于SVM是借助二次規劃來求解支持向量,而求解二次規劃將涉及m階矩陣的計算(m為樣本的個數),當m數目很大時該矩陣的存儲和計算將耗費大量的機器內存 和運算時間。針對以上問題的主要改進有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、張學工的 CSVM以及O.L.Mangasarian等的SOR算法。
(2) 用SVM解決多分類問題存在困難
經典的支持向量機算法只給出了二類分類的算法,而在數據挖掘的實際應用中,一般要解決多類的分類問題??梢酝ㄟ^多個二類支持向量機的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構造多個分類器的組合來解決。主要原理是克服SVM固有的缺點,結合其他算法的優勢,解決多類問題的分類精度。如:與粗集理論結合,形成一種優勢互補的多類問題的組合分類器。
3.3.2 DeepLearning
DeepLearning本身算是MachineLearning的一個分支,簡單可以理解為Neural Network的發展。大約二三十年前,Neural Network曾經是ML領域特別火熱的一個方向,但是后來確慢慢淡出了,原因包括以下幾個方面:
(1) 比較容易過訓練,參數比較難確定;
(2) 訓練速度比較慢,在層次比較少(小于等于3)的情況下效果并不比其它方法更優;
所以中間有大約20多年的時間,神經網絡被關注很少,這段時間基本上由SVM和Boosting算法主導。但是,Hinton堅持下來并最終(和Bengio、Yann.lecun等)提成了一個實際可行的Deep Learning框架。
3.3.3.1 Deep Learning與傳統的神經網絡異同
Deep Learning與傳統的神經網絡的相同在于Deep Learning采用了神經網絡相似的分層結構,系統由包括輸入層、隱層(多層)、輸出層組成的多層網絡,只有相鄰層節點之間有連接,同一層以及跨層節點之間相互無連接,每一層可以看作是一個Logistic Regression模型;這種分層結構,是比較接近人類大腦的結構的。
而為了克服神經網絡訓練中的問題,DL采用了與神經網絡很不同的訓練機制。傳統神經網絡中,采用的是Back Propagation的方式進行,簡單來講就是采用迭代的算法來訓練整個網絡,隨機設定初值,計算當前網絡的輸出,然后根據當前輸出和label之間的 差去改變前面各層的參數,直到收斂(整體是一個梯度下降法)。而DeepLearning整體上是一個Layer-Wise的訓練機制。這樣做的原因是因為,如果采用Back Propagation的機制,對于一個Deep Network(7層以上),殘差傳播到最前面的層已經變得太小,出現所謂的Gradient Diffusion。
3.3.3.2 Deep Learning訓練過程
(1)采用無標定數據(有標定數據也可)分層訓練各層參數,這一步可以看作是一個無監督訓練過程,是和傳統神經網絡區別最大的部分(這個過程可以看作是feature learning過程):具體的,先用無標定數據訓練第一層,訓練時可以采用auto-encoder來學習第一層的參數(這一層可以看作是得到一個使得輸出和輸入差別最小的三層神經網絡的隱層),由于模型capacity的限制以及稀疏性約束,使得得到的模型能夠學習到數據本身的結構,從而得到比輸入更具有表示能力的特征;在學習得到第n-1層后,將n-1層的輸出作為第n層的輸入,訓練第n層,由此分別得到各層的參數;這里面需要重點理解auto-encoder以及sparse的機制的原理和作用??梢詤⒖歼@篇文章。
(2)基于第一步得到的各層參數進一步fine-tune整個多層模型的參數,這一步是一個有監督訓練過程;第一步類似神經網絡的隨機初始化初值過程,由于DL 的第一步不是隨機初始化,而是通過學習輸入數據的結構得到的,因而這個初值更接近全局最優,從而能夠取得更好的效果;所以deep learning效果好很大程度上歸功于第一步的feature learning過程。
總之,deep learning能夠得到更好地表示數據的feature,同時由于模型的層次、參數很多,capacity足夠,因此,模型有能力表示大規模數據,所以對于圖像、語音這種特征不明顯(需要手工設計且很多沒有直觀物理含義)的問題,能夠在大規模訓練數據上取得更好的效果。此外,從模式識別特征和分類器的角 度,deep learning框架將feature和分類器結合到一個框架中,用數據去學習feature,在使用中減少了手工設計feature的巨大工作量(這是目前工業界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處。
評論