1. 程式人生 > >一文掌握常用的機器學習模型(文末福利)

一文掌握常用的機器學習模型(文末福利)

640?wx_fmt=jpeg


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


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


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


線性模型


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


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


640?wx_fmt=png


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


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


核方法與支援向量機


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


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


假設存在一個非線性對映函式Φ,可以幫我們把原始輸入空間變換成高維非線性空間。我們的目的是在變換後的空間裡,尋找一個線性超平面640?wx_fmt=png它能夠把所有正例和負例分開,並且距離該超平面最近的正例和負例之間的間隔最大。這個訴求可以用數學語言表述如下:


640?wx_fmt=png


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


640?wx_fmt=png

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


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


640?wx_fmt=png


上式中的約束條件要求所有的正例和負例分別位於超平面640?wx_fmt=png的兩側。某些情況下,這種約束可能過強,因為我們所擁有的訓練集有時是不可分的。這時候,就需要引入鬆弛變數640?wx_fmt=png,把上述優化問題改寫為:


640?wx_fmt=png


其實這種新的表述等價於最小化一個加了正則項640?wx_fmt=png的Hinge損失函式。這是因為當640?wx_fmt=png小於0的時候,樣本640?wx_fmt=png被超平面正確地分到相應的類別裡,ξi=0;反之,ξi將大於0,且是640?wx_fmt=png的上界:最小化ξi就相應地最小化了640?wx_fmt=png。基於以上討論,其實支援向量機在最小化如下的目標函式:


640?wx_fmt=png


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


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


640?wx_fmt=png


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


640?wx_fmt=png


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


640?wx_fmt=png


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


決策樹與Boosting


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


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


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


640?wx_fmt=png


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


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


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


640?wx_fmt=png


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


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


神經網路


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


640?wx_fmt=png

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


這種生物學原理如果用數學語言進行表達,就如圖2.7b所示。神經元對輸入的訊號640?wx_fmt=png進行線性加權求和:640?wx_fmt=png,然後依據求和結果的大小來驅動一個啟用函式ψ,用以生成輸出訊號。生物系統中的啟用函式類似於階躍函式:


640?wx_fmt=png


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

640?wx_fmt=png

640?wx_fmt=png

圖2.8 常用的啟用函式


1.全連線神經網路


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


640?wx_fmt=png

圖2.9 全連線神經網路


全連線神經網路雖然看起來簡單,但它有著非常強大的表達能力。早在20世紀80年代,人們就證明了著名的通用逼近定理(Universal Approximation Theorem[28])。最早的通用逼近定理是針對Sigmoid啟用函式證明的,一般情況下的通用逼近定理在2001年被證明[29]。其數學描述是,在啟用函式滿足一定條件的前提下,任意給定輸入空間中的一個連續函式和近似精度ε,存在自然數Nε和一個隱含節點數為Nε的單隱層全連線神經網路,對這個連續函式的640?wx_fmt=png-逼近精度小於ε。這個定理非常重要,它告訴我們全連線神經網路可以用來解決非常複雜的問題,當其他的模型(如線性模型、支援向量機等)無法逼近這類問題的分類介面時,神經網路仍然可以所向披靡、得心應手。近年來,人們指出深層網路的表達力更強,即表達某些邏輯函式,深層網路需要的隱含節點數比淺層網路少很多[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)。對於一幅影象,可以在一個卷積層裡使用多個不同的卷積核,從而形成多維的特徵對映;還可以把多個卷積層級聯起來,不斷抽取越來越複雜的語義資訊。


640?wx_fmt=png

圖2.10 卷積過程示意圖


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


640?wx_fmt=png

圖2.11 池化操作示意圖


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


640?wx_fmt=png

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


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


640?wx_fmt=png

圖2.13 卷積神經網路不斷重新整理ImageNet資料集的識別結果


640?wx_fmt=png

圖2.14殘差學習


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


640?wx_fmt=png

圖2.15 高密度網路


3.迴圈神經網路


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


640?wx_fmt=png


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


640?wx_fmt=png

圖2.16 迴圈神經網路的展開


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


640?wx_fmt=png

圖2.17 迴圈神經網路中的閘電路


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


640?wx_fmt=png

圖2.18 迴圈神經網路的不同應用


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


(1)影象配文字:點到序列的迴圈神經網路應用


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


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


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


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


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


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


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


參考文獻

[1]Cao Z, Qin T, Liu T Y, et al. Learning to Rank: From Pairwise Approach to Listwise Approach\[C\]//Proceedings of the 24th international conference on Machine learning. ACM, 2007: 129-136.

[2]Liu T Y. Learning to rank for information retrieval\[J\]. Foundations and Trends in Information Retrieval, 2009, 3(3): 225-331.

[3]Kotsiantis S B, Zaharakis I, Pintelas P. Supervised Machine Learning: A Review of Classification Techniques\[J\]. Emerging Artificial Intelligence Applications in Computer Engineering, 2007, 160: 3-24.

[4]Chapelle O, Scholkopf B, Zien A. Semi-supervised Learning (chapelle, o. et al., eds.; 2006)\[J\]. IEEE Transactions on Neural Networks, 2009, 20(3): 542-542.

[5]He D, Xia Y, Qin T, et al. Dual learning for machine translation\[C\]//Advances in Neural Information Processing Systems. 2016: 820-828.

[6]Hastie T, Tibshirani R, Friedman J. Unsupervised Learning\[M\]//The Elements of Statistical Learning. New York: Springer, 2009: 485-585.

[7]Sutton R S, Barto A G. Reinforcement Learning: An Introduction\[M\]. Cambridge: MIT press, 1998.

[8]Seber G A F, Lee A J. Linear Regression Analysis\[M\]. John Wiley & Sons, 2012.

[9]Harrell F E. Ordinal Logistic Regression\[M\]//Regression modeling strategies. New York: Springer, 2001: 331-343.

[10]Cortes C, Vapnik V. Support-Vector Networks\[J\]. Machine Learning, 1995, 20(3): 273-297.

[11]Quinlan J R. Induction of Decision Trees\[J\]. Machine Learning, 1986, 1(1): 81-106.

[12]McCulloch, Warren; Walter Pitts (1943). "A Logical Calculus of Ideas Immanent in Nervous Activity" \[EB\]. Bulletin of Mathematical Biophysics. 5(4): 115-133.

[13]LeCun Y, Jackel L D, Bottou L, et al. Learning Algorithms for Classification: A Comparison on Handwritten Digit Recognition\[J\]. Neural networks: The Statistical Mechanics Perspective, 1995, 261: 276.

[14]Elman J L. Finding structure in time\[J\]. Cognitive Science, 1990, 14(2): 179-211.

[15]周志華. 機器學習[M]. 北京:清華大學出版社,2017.

[16]Tom Mitchell. Machine Learning\[M\]. McGraw-Hill, 1997.

[17]Nasrabadi N M. Pattern Recognition and Machine Learning\[J\]. Journal of Electronic Imaging, 2007, 16(4): 049901.

[18]Voorhees E M. The TREC-8 Question Answering Track Report\[C\]//Trec. 1999, 99: 77-82.

[19]Wang Y, Wang L, Li Y, et al. A Theoretical Analysis of Ndcg Type Ranking Measures\[C\]//Conference on Learning Theory. 2013: 25-54.

[20]Devroye L, Gyrfi L, Lugosi G. A Probabilistic Theory of Pattern Recognition\[M\]. Springer Science & Business Media, 2013.

[21]Breiman L, Friedman J, Olshen R A, et al. Classification and Regression Trees\[J\]. 1984.

[22]Quinlan J R. C4. 5: Programs for Machine Learning\[M\]. Morgan Kaufmann, 1993.

[23]Iba W, Langley P. Induction of One-level Decision Trees\[J\]//Machine Learning Proceedings 1992. 1992: 233-240.

[24]Breiman L. Bagging predictors\[J\]. Machine Learning, 1996, 24(2): 123-140.

[25]Schapire R E. The Strength of Weak Learnability\[J\]. Machine Learning, 1990, 5(2): 197-227. 

[26]Schapire R E, Freund Y, Bartlett P, et al. Boosting the Margin: A New Explanation for The Effectiveness of Voting Methods\[J\]. Annals of Statistics, 1998: 1651-1686.

[27]Friedman J H. Greedy Function Approximation: A Gradient Boosting Machine\[J\]. Annals of statistics, 2001: 1189-1232.

[28]Gybenko G. Approximation by Superposition of Sigmoidal Functions\[J\]. Mathematics of Control, Signals and Systems, 1989, 2(4): 303-314.

[29]Csáji B C. Approximation with Artificial Neural Networks\[J\]. Faculty of Sciences, Etvs Lornd University, Hungary, 2001, 24: 48.

[30]Sun S, Chen W, Wang L, et al. On the Depth of Deep Neural Networks: A Theoretical View\[C\]//AAAI. 2016: 2066-2072.

[31]Kawaguchi K. Deep Learning Without Poor Local Minima\[C\]//Advances in Neural Information Processing Systems. 2016: 586-594.

[32]Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: A Simple Way to Prevent Neural Networks from Overfitting\[J\]. The Journal of Machine Learning Research, 2014, 15(1): 1929-1958.

[33]Tanner M A, Wong W H. The Calculation of Posterior Distributions by Data Augmentation\[J\]. Journal of the American statistical Association, 1987, 82(398): 528-540.

[34] Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift\[C\]//International Conference on Machine Learning. 2015: 448-456.

[35]Krogh A, Hertz J A. A Simple Weight Decay Can Improve Generalization\[C\]//Advances in neural information processing systems. 1992: 950-957.

[36]Prechelt L. Automatic Early Stopping Using Cross Validation: Quantifying the Criteria\[J\]. Neural Networks, 1998, 11(4): 761-767.

[37]Bengio Y, Simard P, Frasconi P. Learning Long-term Dependencies with Gradient Descent is Difficult\[J\]. IEEE Transactions on Neural Networks, 1994, 5(2): 157-166.

[38]Srivastava R K, Greff K, Schmidhuber J. Highway networks\[J\]. arXiv preprint arXiv:1505.00387, 2015.

[39]Lin M, Chen Q, Yan S. Network in Network\[J\]. arXiv preprint arXiv:1312.4400, 2013.

[40]He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition\[C\]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 770-778.

[41]He K, Zhang X, Ren S, et al. Identity Mappings in Deep Residual Networks\[C\]//European Conference on Computer Vision. Springer, 2016: 630-645.

[42]Huang G, Liu Z, Weinberger K Q, et al. Densely Connected Convolutional Networks\[C\]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017, 1(2): 3.

[43]Hochreiter S, Schmidhuber J. Long Short-term Memory\[J\]. Neural Computation, 1997, 9(8): 1735-1780.

[44]Cho K, Van Merrinboer B, Gulcehre C, et al. Learning Phrase Representations Using RNN Encoder-decoder for Statistical Machine Translation\[J\]. arXiv preprint arXiv:1406.1078, 2014.

[45]Cauchy A. Méthode générale pour la résolution des systemes d’équations simultanées\[J\]. Comp. Rend. Sci. Paris, 1847, 25(1847): 536-538.

[46]Hestenes M R, Stiefel E. Methods of Conjugate Gradients