當前位置:
首頁 > 科技 > 一文掌握常用的機器學習模型

一文掌握常用的機器學習模型

AI 科技大本營按:本文節選自微軟亞洲研究院機器學習研究團隊劉鐵岩、陳薇、王太峰、高飛合著的《分散式機器學習:演算法、理論與實踐》一書。為了讓大家更好地理解分散式機器學習,AI科技大本營聯合華章科技特別邀請到了本書的作者之一——微軟亞洲研究院副院長劉鐵岩老師進行在線公開課分享,詳情請見文末信息,還有福利哦~~

分散式機器學習並非分散式處理技術與機器學習的簡單結合。一方面,它必須考慮機器學習模型構成與演算法流程本身的特點,否則分散式處理的結果可能失之毫釐、謬以千里;另一方面,機器學習內含的演算法隨機性、參數冗餘性等,又會帶來一般分散式處理過程所不具備的、宜於專門利用的便利。

——節選自周志華老師對該書的推薦語

線性模型

線性模型是最簡單的,也是最基本的機器學習模型。其數學形式如下:g(x;w)=。有時,我們還會在的基礎上額外加入一個偏置項b,不過只要把x擴展出一維常數分量,就可以把帶偏置項的線性函數歸併到的形式之中。線性模型非常簡單明了,參數的每一維對應了相應特徵維度的重要性。但是很顯然,線性模型也存在一定的局限性。

首先,線性模型的取值範圍是不受限的,依據w和x的具體取值,它的輸出可以是非常大的正數或者非常小的負數。然而,在進行分類的時候,我們預期得到的模型輸出是某個樣本屬於正類(如正面評價)的可能性,這個可能性通常是取值在0和1之間的一個概率值。為了解決這二者之間的差距,人們通常會使用一個對數幾率函數對線性模型的輸出進行變換,得到如下公式:

經過變換,嚴格地講,g(x;w)已經不再是一個線性函數,而是由一個線性函數派生出來的非線性函數,我們通常稱這類函數為廣義線性函數。對數幾率模型本身是一個概率形式,非常適合用對數似然損失或者交叉熵損失進行訓練。

其次,線性模型只能挖掘特徵之間的線性組合關係,無法對更加複雜、更加強大的非線性組合關係進行建模。為了解決這個問題,我們可以對輸入的各維特徵進行一些顯式的非線性預變換(如單維特徵的指數、對數、多項式變換,以及多維特徵的交叉乘積等),或者採用核方法把原特徵空間隱式地映射到一個高維的非線性空間,再在高維空間里構建線性模型。

核方法與支持向量機

核方法的基本思想是通過一個非線性變換,把輸入數據映射到高維的希爾伯特空間中,在這個高維空間里,那些在原始輸入空間中線性不可分的問題變得更加容易解決,甚至線性可分。支持向量機(Support Vector Machine,SVM)[10]是一類最典型的核方法,下面將以支持向量機為例,對核方法進行簡單的介紹。

支持向量機的基本思想是通過核函數將原始輸入空間變換成一個高維(甚至是無窮維)的空間,在這個空間里尋找一個超平面,它可以把訓練集里的正例和負例盡最大可能地分開(用更加學術的語言描述,就是正負例之間的間隔最大化)。那麼如何才能通過核函數實現空間的非線性映射呢?讓我們從頭談起。

假設存在一個非線性映射函數Φ,可以幫我們把原始輸入空間變換成高維非線性空間。我們的目的是在變換後的空間里,尋找一個線性超平面

,它能夠把所有正例和負例分開,並且距離該超平面最近的正例和負例之間的間隔最大。這個訴求可以用數學語言表述如下:

其中,是離超平面最近的正例和負例之間的間隔(如圖2.6所示)。

圖2.6 最大化間隔與支持向量機

以上的數學描述等價於如下的優化問題:min12w2

上式中的約束條件要求所有的正例和負例分別位於超平面

的兩側。某些情況下,這種約束可能過強,因為我們所擁有的訓練集有時是不可分的。這時候,就需要引入鬆弛變數,把上述優化問題改寫為:

其實這種新的表述等價於最小化一個加了正則項

的Hinge損失函數。這是因為當

小於0的時候,樣本被超平面正確地分到相應的類別里,ξi=0;反之,ξi將大於0,且是

的上界:最小化ξi就相應地最小化了

。基於以上討論,其實支持向量機在最小化如下的目標函數:

其中,

是正則項,對它的最小化可以限制模型的空間,有效提高模型的泛化能力(也就是使模型在訓練集和測試集上的性能更加接近)。

為了求解上述有約束的優化問題,一種常用的技巧是使用拉格朗日乘數法將其轉換成對偶問題進行求解。具體來講,支持向量機對應的對偶問題如下:

在對偶空間里,該優化問題的描述只與和的內積有關,而與映射函數本身的具體形式無關。因此,我們只需定義兩個樣本和之間的核函數k(xi,xj),用以表徵其映射到高維空間之後的內積即可:

至此,我們弄清楚了核函數是如何和空間變換髮生聯繫的。核函數可以有很多不同的選擇,表2.1列出了幾種常用的核函數。

事實上,只要一個對稱函數所對應的核矩陣滿足半正定的條件,它就能作為核函數使用,並總能找到一個與之對應的空間映射。換言之,任何一個核函數都隱式地定義了一個「再生核希爾伯特空間」(Reproducing Kernel Hilbert Space,RKHS)。在這個空間里,兩個向量的內積等於對應核函數的值。

決策樹與Boosting

決策樹也是一類常見的機器學習模型,它的基本思想是根據數據的屬性構造出樹狀結構的決策模型。一棵決策樹包含一個根節點、若干內部節點,以及若干葉子節點。葉子節點對應最終的決策結果,而其他節點則針對數據的某種屬性進行判斷與分支:在這樣的節點上,會對數據的某個屬性(特徵)進行檢測,依據檢測結果把樣本劃分到該節點的某棵子樹之中。通過決策樹,我們可以從根節點出發,把一個具體的樣本最終分配到某個葉子節點上,實現相應的預測功能。

因為在每個節點上的分支操作是非線性的,因此決策樹可以實現比較複雜的非線性映射。決策樹演算法的目的是根據訓練數據,學習出一棵泛化能力較強的決策樹,也就是說,它能夠很好地把未知樣本分到正確的葉子節點上。為了達到這個目的,我們在訓練過程中構建的決策樹不能太複雜,否則可能會過擬合到訓練數據上,而無法正確地處理未知的測試數據。常見的決策樹演算法包括:分類及回歸樹(CART)[21],ID3演算法[11],C4.5演算法[22],決策樹樁(Decision Stump)[23]等。這些演算法的基本流程都比較類似,包括劃分選擇和剪枝處理兩個基本步驟。

劃分選擇要解決的問題是如何根據某種準則在某個節點上把數據集里的樣本分到它的一棵子樹上。常用的準則有:信息增益、增益率、基尼係數等。其具體數學形式雖有差別,但是核心思想大同小異。這裡我們就以信息增益為例進行介紹。所謂信息增益,指的是在某個節點上,用特徵j對數據集D進行劃分得到的樣本集合的純度提升的程度。信息增益的具體數學定義如下:

其中,是特徵的取值集合,而是特徵取值為的那些樣本所組成的子集;Entropy(D)是樣本集合D的信息熵,描述的是D中來自不同類別的樣本的分布情況。不同類別的樣本分布越平均,則信息熵越大,集合純度越低;相反,樣本分布越集中,則信息熵越小,集合純度越高。樣本劃分的目的是找到使得劃分後平均信息熵變得最小的特徵,從而使得信息增益最大。

剪枝處理要解決的問題是抑制過擬合。如果決策樹非常複雜,每個葉子節點上只對應一個訓練樣本,一定可以實現信息增益最大化,可這樣的後果是對訓練數據的過擬合,將導致在測試數據上的精度損失。為了解決這個問題,可以採取剪枝的操作降低決策樹的複雜度。剪枝處理有預剪枝和後剪枝之分:預剪枝指的是在決策樹生成過程中,對每個節點在劃分前先進行估計,如果當前節點的劃分不能帶來決策樹泛化性能的提升(通常可以通過一個交叉驗證集來評估泛化能力),則停止劃分並且將當前節點標記為葉子節點;後剪枝指的是先從訓練集中生成一棵完整的決策樹,然後自底向上地考察去掉每個節點(即將該節點及其子樹合併成為一個葉子節點)以後泛化能力是否有所提高,若有提高,則進行剪枝。

在某些情況下,由於學習任務難度大,單棵決策樹的性能會捉襟見肘,這時人們常常會使用集成學習來提升最終的學習能力。集成學習有很多方法,如Bagging[24]、Boosting[25]等。Boosting的基本思路是先訓練出一個弱學習器,再根據弱學習器的表現對訓練樣本的分布進行調整,使得原來弱學習器無法搞定的錯誤樣本在後續的學習過程中得到更多的關注,然後再根據調整後的樣本分布來訓練下一個弱學習器。如此循環往複,直到最終學到的弱學習器的數目達到預設的上限,或者弱學習器的加權組合能夠達到預期的精度為止。最終的預測模型是所有這些弱學習器的加權求和:

其中,是加權係數,它既可以在訓練過程中根據當前弱學習器的準確程度利用經驗公式求得,也可以在訓練過程結束後(各個弱學習器都已經訓練好以後),再利用新的學習目標通過額外的優化手段求得。

有研究表明Boosting在抵抗過擬合方面有非常好的表現,也就是說,隨著訓練過程的推進,即便在訓練集上已經把誤差降到0,更多的迭代還是可以提高模型在測試集上的性能。人們用間隔定理(Margin Theory)[26]來解釋這種現象——隨著迭代進一步推進,雖然訓練集上的誤差已經不再變化,但是訓練樣本上的分類置信度(對應於每個樣本點上的間隔)卻仍在不斷變大。到今天為止,Boosting演算法,尤其是與決策樹相結合的演算法如梯度提升決策樹(GBDT)[27]仍然在實際應用中挑著大梁,是很多數據挖掘比賽的奪冠熱門。

神經網路

神經網路是一類典型的非線性模型,它的設計受到生物神經網路的啟發。人們通過對大腦生物機理的研究,發現其基本單元是神經元,每個神經元通過樹突從上游的神經元那裡獲取輸入信號,經過自身的加工處理後,再通過軸突將輸出信號傳遞給下游的神經元。當神經元的輸入信號總和達到一定強度時,就會激活一個輸出信號,否則就沒有輸出信號(如圖2.7a所示)。

圖2.7 神經元結構與人工神經網路

這種生物學原理如果用數學語言進行表達,就如圖2.7b所示。神經元對輸入的信號

進行線性加權求和:

,然後依據求和結果的大小來驅動一個激活函數ψ,用以生成輸出信號。生物系統中的激活函數類似於階躍函數:

但是,由於階躍函數本身不連續,對於機器學習而言不是一個好的選擇,因此在人們設計人工神經網路的時候通常採用連續的激活函數,比如Sigmoid函數、雙曲正切函數(tanh)、校正線性單元(ReLU)等。它們的數學形式和函數形狀分別如圖2.8所示。

圖2.8 常用的激活函數

1.全連接神經網路

最基本的神經網路就是把前面描述的神經元互相連接起來,形成層次結構(如圖2.9所示),我們稱之為全連接神經網路。對於圖2.9中這個網路而言,最左邊對應的是輸入節點,最右邊對應的是輸出節點,中間的三層節點都是隱含節點(我們把相應的層稱為隱含層)。每一個隱含節點都會把來自上一層節點的輸出進行加權求和,再經過一個非線性的激活函數,輸出給下一層。而輸出層則一般採用簡單的線性函數,或者進一步使用softmax函數將輸出變成概率形式。

圖2.9 全連接神經網路

全連接神經網路雖然看起來簡單,但它有著非常強大的表達能力。早在20世紀80年代,人們就證明了著名的通用逼近定理(Universal Approximation Theorem[28])。最早的通用逼近定理是針對Sigmoid激活函數證明的,一般情況下的通用逼近定理在2001年被證明[29]。其數學描述是,在激活函數滿足一定條件的前提下,任意給定輸入空間中的一個連續函數和近似精度ε,存在自然數Nε和一個隱含節點數為Nε的單隱層全連接神經網路,對這個連續函數的-逼近精度小於ε。這個定理非常重要,它告訴我們全連接神經網路可以用來解決非常複雜的問題,當其他的模型(如線性模型、支持向量機等)無法逼近這類問題的分類界面時,神經網路仍然可以所向披靡、得心應手。近年來,人們指出深層網路的表達力更強,即表達某些邏輯函數,深層網路需要的隱含節點數比淺層網路少很多[30]。這對於模型存儲和優化而言都是比較有利的,因此人們越來越關注和使用更深層的神經網路。

全連接神經網路在訓練過程中常常選取交叉熵損失函數,並且使用梯度下降法來求解模型參數(實際中為了減少每次模型更新的代價,使用的是小批量的隨機梯度下降法)。要注意的是,雖然交叉熵損失是個凸函數,但由於多層神經網路本身的非線性和非凸本質,損失函數對於模型參數而言其實是嚴重非凸的。在這種情況下,使用梯度下降法求解通常只能找到局部最優解。為了解決這個問題,人們在實踐中常常採用多次隨機初始化或者模擬退火等技術來尋找全局意義下更優的解。近年有研究表明,在滿足一定條件時,如果神經網路足夠深,它的所有局部最優解其實都和全局最優解具有非常類似的損失函數值[31]。換言之,對於深層神經網路而言,「只能找到局部最優解」未見得是一個致命的缺陷,在很多時候這個局部最優解已經足夠好,可以達到非常不錯的實際預測精度。

除了局部最優解和全局最優解的憂慮之外,其實關於使用深層神經網路還有另外兩個困難。

首先,因為深層神經網路的表達能力太強,很容易過擬合到訓練數據上,導致其在測試數據上表現欠佳。為了解決這個問題,人們提出了很多方法,包括DropOut[32]、數據擴張(Data Augmentation)[33]、批量歸一化(Batch Normalization)[34]、權值衰減(Weight Decay)[35]、提前終止(Early Stopping)[36]等,通過在訓練過程中引入隨機性、偽訓練樣本或限定模型空間來提高模型的泛化能力。

其次,當網路很深時,輸出層的預測誤差很難順利地逐層傳遞下去,從而使得靠近輸入層的那些隱含層無法得到充分的訓練。這個問題又稱為「梯度消減」問題[37]。研究表明,梯度消減主要是由神經網路的非線性激活函數帶來的,因為非線性激活函數導數的模都不太大,在使用梯度下降法進行優化的時候,非線性激活函數導數的逐層連乘會出現在梯度的計算公式中,從而使梯度的幅度逐層減小。為了解決這個問題,人們在跨層之間引入了線性直連,或者由門電路控制的線性通路[38],以期為梯度信息的順利回傳提供便利。

2.卷積神經網路

除了全連接神經網路以外,卷積神經網路(Convolutional Neural Network,CNN)[13]也是十分常用的網路結構,尤其適用於處理圖像數據。

卷積神經網路的設計是受生物視覺系統的啟發。研究表明每個視覺細胞只對於局部的小區域敏感,而大量視覺細胞平鋪在視野中,可以很好地利用自然圖像的空間局部相關性。與此類似,卷積神經網路也引入局部連接的概念,並且在空間上平鋪具有同樣參數結構的濾波器(也稱為卷積核)。這些濾波器之間有很大的重疊區域,相當於有個空域滑窗,在滑窗滑到不同空間位置時,對這個窗內的信息使用同樣的濾波器進行分析。這樣雖然網路很大,但是由於不同位置的濾波器共享參數,其實模型參數的個數並不多,參數效率很高。

圖2.10描述了一個2×2的卷積核將輸入圖像進行卷積的例子。所謂卷積就是卷積核的各個參數和圖像中空間位置對應的像素值進行點乘再求和。經過了卷積操作之後,會得到一個和原圖像類似大小的新圖層,其中的每個點都是卷積核在某空間局部區域的作用結果(可能對應於提取圖像的邊緣或抽取更加高級的語義信息)。我們通常稱這個新圖層為特徵映射(feature map)。對於一幅圖像,可以在一個卷積層里使用多個不同的卷積核,從而形成多維的特徵映射;還可以把多個卷積層級聯起來,不斷抽取越來越複雜的語義信息。

圖2.10 卷積過程示意圖

除了卷積以外,池化也是卷積神經網路的重要組成部分。池化的目的是對原特徵映射進行壓縮,從而更好地體現圖像識別的平移不變性,並且有效擴大後續卷積操作的感受野。池化與卷積不同,一般不是參數化的模塊,而是用確定性的方法求出局部區域內的平均值、中位數,或最大值、最小值(近年來,也有一些學者開始研究參數化的池化運算元[39])。圖2.11描述了對圖像局部進行2×2的最大值池化操作後的效果。

圖2.11 池化操作示意圖

在實際操作中,可以把多個卷積層和多個池化層交替級聯,從而實現從原始圖像中不斷抽取高層語義特徵的目的。在此之後,還可以再級聯一個全連接網路,在這些高層語義特徵的基礎上進行模式識別或預測。這個過程如圖2.12所示。

圖2.12 多層卷積神經網路(N1,N2,N3表示對應單元重複的次數)

實踐中,人們開始嘗試使用越來越深的卷積神經網路,以達到越來越好的圖像分類效果。圖2.13描述了近年來人們在ImageNet數據集上不斷通過增加網路深度刷新錯誤率的歷程。其中2015年來自微軟研究院的深達152層的ResNet網路[40],在ImageNet數據集上取得了低達3.57%的Top-5錯誤率,在特定任務上超越了普通人類的圖像識別能力。

圖2.13 卷積神經網路不斷刷新ImageNet數據集的識別結果

圖2.14殘差學習

隨著卷積神經網路變得越來越深,前面提到的梯度消減問題也隨之變得越來越顯著,給模型的訓練帶來了很大難度。為了解決這個問題,近年來人們提出了一系列的方法,包括殘差學習[40-41](如圖2.14所示)、高密度網路[42](如圖2.15所示)等。實驗表明:這些方法可以有效地把訓練誤差傳遞到靠近輸入層的地方,為深層卷積神經網路的訓練奠定了堅實的實踐基礎。

圖2.15 高密度網路

3.循環神經網路

循環神經網路(Recurrent Neural Network,RNN)[14]的設計也有很強的仿生學基礎。我們可以聯想一下自己如何讀書看報。當我們閱讀一個句子時,不會單純地理解當前看到的那個字本身,相反我們之前讀到的文字會在腦海里形成記憶,而這些記憶會幫助我們更好地理解當前看到的文字。這個過程是遞歸的,我們在看下一個文字時,當前文字和歷史記憶又會共同成為我們新的記憶,並對我們理解下一個文字提供幫助。其實,循環神經網路的設計基本就是依照這個思想。我們用表示在時刻的記憶,它是由t時刻看到的輸入和時刻的記憶st-1共同作用產生的。這個過程可以用下式加以表示:

很顯然,這個式子里蘊含著對於記憶單元的循環迭代。在實際應用中,無限長時間的循環迭代並沒有太大意義。比如,當我們閱讀文字的時候,每個句子的平均長度可能只有十幾個字。因此,我們完全可以把循環神經網路在時域上展開,然後在展開的網路上利用梯度下降法來求得參數矩陣U、W、V,如圖2.16所示。用循環神經網路的術語,我們稱之為時域反向傳播(Back Propagation Through Time,BPTT)。

圖2.16 循環神經網路的展開

和全連接神經網路、卷積神經網路類似,當循環神經網路時域展開以後,也會遇到梯度消減的問題。為了解決這個問題,人們提出了一套依靠門電路來控制信息流通的方法。也就是說,在循環神經網路的兩層之間同時存在線性和非線性通路,而哪個通路開、哪個通路關或者多大程度上開關則由一組門電路來控制。這個門電路也是帶參數並且這些參數在神經網路的優化過程中是可學習的。比較著名的兩類方法是LSTM[43]和GRU[44](如圖2.17所示)。GRU相比LSTM更加簡單一些,LSTM有三個門電路(輸入門、忘記門、輸出門),而GRU則有兩個門電路(重置門、更新門),二者在實際中的效果類似,但GRU的訓練速度要快一些,因此近年來有變得更加流行的趨勢。

圖2.17 循環神經網路中的門電路

循環神經網路可以對時間序列進行有效建模,根據它所處理的序列的不同情況,可以把循環神經網路的應用場景分為點到序列、序列到點和序列到序列等類型(如圖2.18所示)。

圖2.18 循環神經網路的不同應用

下面分別介紹幾種循環神經網路的應用場景。

(1)圖像配文字:點到序列的循環神經網路應用

在這個應用中,輸入的是圖像的編碼信息(可以通過卷積神經網路的中間層獲得,也可以直接採用卷積神經網路預測得到的類別標籤),輸出則是靠循環神經網路來驅動產生的一句自然語言文本,用以描述該圖像包含的內容。

(2)情感分類:序列到點的循環神經網路應用

在這個應用中,輸入的是一段文本信息(時序序列),而輸出的是情感分類的標籤(正向情感或反向情感)。循環神經網路用於分析輸入的文本,其隱含節點包含了整個輸入語句的編碼信息,再通過一個全連接的分類器把該編碼信息映射到合適的情感類別之中。

(3)機器翻譯:序列到序列的循環神經網路應用

在這個應用中,輸入的是一個語言的文本(時序序列),而輸出的則是另一個語言的文本(時序序列)。循環神經網路在這個應用中被使用了兩次:第一次是用來對輸入的源語言文本進行分析和編碼;而第二次則是利用這個編碼信息驅動輸出目標語言的一段文本。

在使用序列到序列的循環神經網路實現機器翻譯時,在實踐中會遇到一個問題。輸出端翻譯結果中的某個詞其實對於輸入端各個辭彙的依賴程度是不同的,通過把整個輸入句子編碼到一個向量來驅動輸出的句子,會導致信息粒度太粗糙,或者長線的依賴關係被忽視。為了解決這個問題,人們在標準的序列到序列循環神經網路的基礎上引入了所謂「注意力機制」。在它的幫助下,輸出端的每個詞的產生會利用到輸入端不同辭彙的編碼信息。而這種注意力機制也是帶參數的,可以在整個循環神經網路的訓練過程中自動習得。

神經網路尤其是深層神經網路是一個高速發展的研究領域。隨著整個學術界和工業界的持續關注,這個領域比其他的機器學習領域獲得了更多的發展機會,不斷有新的網路結構或優化方法被提出。如果讀者對於這個領域感興趣,請關注每年發表在機器學習主流學術會議上的最新論文。

想要獲得這本書,可參加AI科技大本營在線公開課,將在公開課微信群中抽出5名用戶送出《分散式機器學習:演算法、理論與實踐》一書(添加小助手微信csdnai,回復:機器學習,加入課程交流群)

公開課介紹

嘉賓:劉鐵岩

主題:推進機器學習發展:技術前沿與未來展望

時間:11月29日20-21點

嘉賓簡介

劉鐵岩,博士,人工智慧領域國際知名學者。現任微軟亞洲研究院副院長,IEEE會士,ACM傑出會員,美國卡內基梅隆大學客座教授,英國諾丁漢大學榮譽教授,中國科技大學教授、博導。在AI領域發表論文200餘篇。最新著作《分散式機器學習》現已出版。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

如此精心整理的深度學習資源只在這裡,值得你擁有!
OCR大突破:Facebook推出大規模圖像文字檢測識別系統——Rosetta

TAG:AI科技大本營 |