(原做:MSRA劉鐵巖著《分佈式機器學習:算法、理論與實踐》。這一部分敘述很清晰,適合用於系統整理NN知識)git
線性模型算法
線性模型是最簡單的,也是最基本的機器學習模型。其數學形式以下:g(X;W)=WTX。有時,咱們還會在WTX的基礎上額外加入一個偏置項b,不過只要把X擴展出一維常數份量,就能夠把帶偏置項的線性函數歸併到WTX的形式之中。線性模型很是簡單明瞭,參數的每一維對應了相應特徵維度的重要性。可是很顯然,線性模型也存在必定的侷限性。api
首先,線性模型的取值範圍是不受限的,依據w和x的具體取值,它的輸出能夠是很是大的正數或者很是小的負數。然而,在進行分類的時候,咱們預期獲得的模型輸出是某個樣本屬於正類(如正面評價)的可能性,這個可能性一般是取值在0和1之間的一個機率值。爲了解決這兩者之間的差距,人們一般會使用一個對數概率函數對線性模型的輸出進行變換,獲得以下公式:網絡
通過變換,嚴格地講,g(x;w)已經再也不是一個線性函數,而是由一個線性函數派生出來的非線性函數,咱們一般稱這類函數爲廣義線性函數。對數概率模型自己是一個機率形式,很是適合用對數似然損失或者交叉熵損失進行訓練。app
其次,線性模型只能挖掘特徵之間的線性組合關係,沒法對更加複雜、更增強大的非線性組合關係進行建模。爲了解決這個問題,咱們能夠對輸入的各維特徵進行一些顯式的非線性預變換(如單維特徵的指數、對數、多項式變換,以及多維特徵的交叉乘積等),或者採用核方法把原特徵空間隱式地映射到一個高維的非線性空間,再在高維空間裏構建線性模型。機器學習
核方法與支持向量機分佈式
略ide
決策樹與Boosting函數
略學習
神經網絡
神經網絡是一類典型的非線性模型,它的設計受到生物神經網絡的啓發。人們經過對大腦生物機理的研究,發現其基本單元是神經元,每一個神經元經過樹突從上游的神經元那裏獲取輸入信號,通過自身的加工處理後,再經過軸突將輸出信號傳遞給下游的神經元。當神經元的輸入信號總和達到必定強度時,就會激活一個輸出信號,不然就沒有輸出信號(如圖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ε的單隱層全鏈接神經網絡,對這個連續函數的L∞-逼近精度小於ε。這個定理很是重要,它告訴咱們全鏈接神經網絡能夠用來解決很是複雜的問題,當其餘的模型(如線性模型、支持向量機等)沒法逼近這類問題的分類界面時,神經網絡仍然能夠所向披靡、駕輕就熟。近年來,人們指出深層網絡的表達力更強,即表達某些邏輯函數,深層網絡須要的隱含節點數比淺層網絡少不少[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)機器翻譯:序列到序列的循環神經網絡應用
在這個應用中,輸入的是一個語言的文本(時序序列),而輸出的則是另外一個語言的文本(時序序列)。循環神經網絡在這個應用中被使用了兩次:第一次是用來對輸入的源語言文本進行分析和編碼;而第二次則是利用這個編碼信息驅動輸出目標語言的一段文本。
在使用序列到序列的循環神經網絡實現機器翻譯時,在實踐中會遇到一個問題。輸出端翻譯結果中的某個詞其實對於輸入端各個詞彙的依賴程度是不一樣的,經過把整個輸入句子編碼到一個向量來驅動輸出的句子,會致使信息粒度太粗糙,或者長線的依賴關係被忽視。爲了解決這個問題,人們在標準的序列到序列循環神經網絡的基礎上引入了所謂「注意力機制」。在它的幫助下,輸出端的每一個詞的產生會利用到輸入端不一樣詞彙的編碼信息。而這種注意力機制也是帶參數的,能夠在整個循環神經網絡的訓練過程當中自動習得。
神經網絡尤爲是深層神經網絡是一個高速發展的研究領域。隨着整個學術界和工業界的持續關注,這個領域比其餘的機器學習領域得到了更多的發展機會,不斷有新的網絡結構或優化方法被提出。若是讀者對於這個領域感興趣,請關注每一年發表在機器學習主流學術會議上的最新論文。
參考文獻:
[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, Gyrfi 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 Merrinboer 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 for Solving Linear Systems[M]. Washington, DC: NBS, 1952.
[47]Wright S J. Coordinate Descent Algorithms[J]. Mathematical Programming, 2015, 151(1): 3-34.
[48]Polyak B T. Newton’s Method and Its Use in Optimization[J]. European Journal of Operational Research, 2007, 181(3): 1086-1096.
[49]Dennis, Jr J E, Moré J J. Quasi-Newton Methods, Motivation and Theory[J]. SIAM Review, 1977, 19(1): 46-89.
[50]Frank M, Wolfe P. An Algorithm for Quadratic Programming[J]. Naval Research Logistics (NRL), 1956, 3(1-2): 95-110.
[51]Nesterov, Yurii. A method of solving a convex programming problem with convergence rate O (1/k2)[J]. Soviet Mathematics Doklady, 1983, 27(2).
[52]Karmarkar N. A New Polynomial-time Algorithm for Linear Programming[C]//Proceedings of the Sixteenth Annual ACM Symposium on Theory of Computing. ACM, 1984: 302-311.
[53]Geoffrion A M. Duality in Nonlinear Programming: A Simplified Applications-oriented Development[J]. SIAM Review, 1971, 13(1): 1-37.
[54]Johnson R, Zhang T. Accelerating Stochastic Gradient Descent Using Predictive Variance Reduction[C]//Advances in Neural Information Processing Systems. 2013: 315-323.
[55]Sutskever I, Martens J, Dahl G, et al. On the Importance of Initialization and Momentum in Deep Learning[C]//International Conference on Machine Learning. 2013: 1139-1147.
[56]Duchi J, Hazan E, Singer Y. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization[J]. Journal of Machine Learning Research, 2011, 12(7): 2121-2159.
[57]Tieleman T, Hinton G. Lecture 6.5-rmsprop: Divide the Gradient By a Running Average of Its Recent Magnitude[J]. COURSERA: Neural networks for machine learning, 2012, 4(2): 26-31.
[58]Zeiler M D. ADADELTA: An Adaptive Learning Rate Method[J]. arXiv preprint arXiv:1212.5701, 2012.
[59]Kingma D P, Ba J. Adam: A Method for Stochastic Optimization[J]. arXiv preprint arXiv:1412.6980, 2014.
[60]Reddi S, Kale S, Kumar S. On the Convergence of Adam and Beyond[C]// International Conference on Learning Representations, 2018.
[61]Hazan E, Levy K Y, Shalev-Shwartz S. On Graduated Optimization for Stochastic Non-convex Problems[C]//International Conference on Machine Learning. 2016: 1833-1841.