韓小虎 徐鵬 韓森森
摘 要: 深度學習是機器學習研究中的一個新領域,其動機在于建立、模擬人腦進行分析學習的神經(jīng)網(wǎng)絡,模仿人腦的機制來解釋數(shù)據(jù)。目前深度學習在智能識別方向具有很強的優(yōu)越性。文章主要介紹了深度學習的基本理論、常用模型和開發(fā)平臺。
關鍵詞: 深度學習; 機器學習; 特征表示; 工具
中圖分類號:TP399 文獻標志碼:A 文章編號:1006-8228(2016)06-107-04
Abstract: Deep learning is a new field in the research of machine learning, whose motivation is to build and simulate the neural network, with which the human brain analyzes and studies, and simulate the mechanism of human brain to interpret the data. At present, deep learning has a strong advantage in the direction of intelligent identification. This paper mainly introduces the basic theory, common models and development platforms of deep learning.
Key words: machine learning; deep learning; feature expression; tool
0 引言
神經(jīng)網(wǎng)絡的歷史最早可以追溯到上世紀的40年代,在20世紀80年末期,Rumelhart、Hinton和Williams在《自然》(Nature)上發(fā)表了用于人工神經(jīng)網(wǎng)絡的BP(Back-Propagation,反向傳播)算法[1],掀起了一陣機器學習的浪潮,但是由于各種原因,神經(jīng)網(wǎng)絡被許多學者放棄。
20世紀90年代,更多的學者開始采用淺層機器學習模型,例如SVM(Support Vector Machines,支持向量機),最近鄰等分類器,Boosting等。這些模型都取得了巨大成功,但是同時由于理論分析難度大,訓練方法復雜,這個時期神經(jīng)網(wǎng)絡陷入了沉寂。
自2006年以來,深度學習領域取得了突破性進展,人工智能的實現(xiàn),不再是那么遙不可及的事情了。至于技術手段,在依賴云計算對大數(shù)據(jù)的并行處理能力的基礎上,更加依賴一個算法,這個算法就是深度學習,通過這個方法,人們終于知道如何處理抽象概念這個難題。
深度學習的概念最早由機器學習領域的泰斗、多倫多大學G.E.Hinton教授提出[2],之后在各大領域有了飛速的發(fā)展。2012年,由Hinton教授帶領的深度學習團隊在ImageNet圖像分類大賽中取得了優(yōu)勝,其準確率超過了第二名10%以上,引起了計算機視覺領域的極大震動,再一次掀起了深度學習的浪潮。同年6月,Google被披露出Google Brain計劃,這個項目由斯坦福大學的機器學習教授Andrew Ng和在大規(guī)模計算機系統(tǒng)方面的世界頂尖專家JeffDean共同主導,用16000個CPU Core的并行計算平臺訓練一種稱為“深度神經(jīng)網(wǎng)絡”(DNN,Deep Neural Networks)的機器學習模型,在語音識別和圖像識別等領域獲得了巨大的成功。百度在2013年1月高調(diào)宣布成立百度研究院,其中第一個便是深度學習研究所(IDL,Institute of Deep Learning)。
1 深度學習基本理論
人工智能所具有的特征之一就是對信息的學習能力,即網(wǎng)絡的性能是否會隨著數(shù)據(jù)的增加積累也不斷提高。隨著人類社會信息的高度爆發(fā),大數(shù)據(jù)時代到來,可用計算能力與數(shù)據(jù)量的增加,為人工智能的發(fā)展提供很好的平臺。在這樣的背景下,深度學習在各大領域所取得的成就絕非偶然。
深度學習基本理論主要包括深度學習的基本概念、深度學習的訓練過程和深度學習的模型三部分。
1.1 深度學習的基本概念與架構
2006年,加拿大多倫多大學教授、機器學習領域泰斗Geoffrey Hinton和他的學生Ruslan SalakHutdinov首次在《科學》上發(fā)表論文,提出深度學習的兩個主要觀點。
⑴ 含多隱層的人工神經(jīng)網(wǎng)絡具有很優(yōu)秀的特征學習能力,其對學習所得到的特征數(shù)據(jù)有更深刻的展示,最終得到的網(wǎng)絡數(shù)據(jù)更有利于分類或可視化。
⑵ 深度神經(jīng)網(wǎng)絡在訓練其本身網(wǎng)絡參數(shù)上的具有一定的難度,但是這些都可以通過“逐層初始化”(layer-wise pre-training)來克服,而逐層初始化則可以通過無監(jiān)督學習來實現(xiàn)。
深度學習允許那些由多處理層組成的計算模型去學習具有多個等級抽象數(shù)據(jù)的表達,該方法在許多領域得到了廣泛的應用,例如視覺對象識別,語音識別,對象檢測等,同時對醫(yī)藥學的新發(fā)現(xiàn)和基因組學的新進展也起到了促進作用。深度學習利用反向傳播算法發(fā)現(xiàn)大數(shù)據(jù)的內(nèi)在復雜的結構,然后BP算法會指導機器如何在每一層利用從上一層獲得的表達來改變其內(nèi)部的參數(shù)。
深度學習的本質(zhì)是利用海量的訓練數(shù)據(jù)(可為無標簽數(shù)據(jù)),通過構建多隱層的模型,去學習更加有用的特征數(shù)據(jù),從而提高數(shù)據(jù)分類效果,提升預測結果的準確性。“深度學習模型”是手段,“特征學習”是目的。
1.2 深度學習的常用模型
深度學習常用模型主要有:自動編碼器(AutoEncoder)、稀疏自動編碼器(Sparse AutoEncoder)、降噪自動編碼器(Denoising AutoEncoder)、限制玻爾茲曼機(Restricted Boltzmann Machine,RBM)。
⑴ 自動編碼器[3](AutoEncoder)
深度學習中最簡單的一種是利用ANN(即人工神經(jīng)網(wǎng)絡)的層級結構特點設計的一種網(wǎng)絡。對于一個給定的網(wǎng)絡,我們假設其輸入與輸出是一致的,接下來我們訓練網(wǎng)絡并調(diào)整網(wǎng)絡中的參數(shù),得到每一層的權值。由此我們就得到了輸入數(shù)據(jù)Input的相異表現(xiàn)形式,這些表示就是特征。
AutoEncoder就是一種可以盡可能復現(xiàn)輸入數(shù)據(jù)的一種神經(jīng)網(wǎng)絡。自動編碼器基于這樣一個事實:原始的輸入Input經(jīng)過加權即(w,b)、還有映射(Sigmoid函數(shù))之后得到一個數(shù)據(jù)y,然后對y進行加權反向映射得到數(shù)據(jù)z。通過不斷的迭代訓練,使得誤差最小(即盡可能使得z接近或者與input相同)。在這個過程中并沒有使用標簽數(shù)據(jù)來計算數(shù)據(jù)之間的誤差從而去更新參數(shù),所以是無監(jiān)督學習網(wǎng)絡,同時利用了類似神經(jīng)網(wǎng)絡的雙隱層方式來提取樣本。
自動編碼器一般由兩部分組成:解碼器與編碼器。它們可以被定義為這樣的兩種轉換:
在自動編碼器當中,如果隱含層的結點個數(shù)過少,隱含結點就需要對原始輸入數(shù)據(jù)進行數(shù)據(jù)壓縮,但當輸入為隨機序列的時候,對輸入提取特征數(shù)據(jù)將會變得困難。雖然在隱含層結點數(shù)目很大的情況下,仍可以用自動編碼算法,但是需要加入稀疏限制,加入限制之后的自動編碼器就是稀疏自動編碼器。稀疏自動編碼器編碼解碼過程如圖2所示。
⑶ 降噪自動編碼器(Denoising AutoEncoder)
2008年,Vincent在他的論文“Extracting and Composing Robust Features”中突出了AutoEncoder的改良的降噪自動編碼器(DA,Denoising AutoEncoder)。DA采取部分損壞的輸入而訓練來恢復原來的不失真的輸入,這就迫使編碼器去學習輸入信號更加robustly的良好表達,一個很好的表達對于恢復相應的清晰輸入是很有效果的,這也是DA的泛化能力比一般編碼器強的原因。其訓練方法如圖3所示。
⑷ 限制玻爾茲曼機[4](Restricted Boltzmann Machine,RBM)
限制玻爾茲曼機(RMB)是一種深度學習模型。在1986年它由Hinton和Sejnowski提出,是一種生成式隨機神經(jīng)網(wǎng)絡(generative stochastic neural network),整個網(wǎng)絡是一個二部圖,同層次結點之間沒有鏈接,只有可見單元與隱含單元之間才會存在邊??梢妴卧摧斎霐?shù)據(jù)層,隱含單元即隱含層,它們都是二元變量。與此同時若全概率分布滿足玻爾茲曼分布的話,我們就把這個模型稱為限制玻爾茲曼機(Restricted Boltzmann Machine,RBM)。限制玻爾茲曼機RBM由三個可視層結點和四個隱含結點組成,可以用于降維,學習特征以及深度置信網(wǎng)等。通過隱含層層數(shù)增加則可以得到深度玻爾茲曼機(Deep Boltzmannn Machine)。
1.3 非線性激活函數(shù)
激活函數(shù)是用來為神經(jīng)網(wǎng)絡加入非線性因素的,因為線性模型的表達分類能力不夠。某些數(shù)據(jù)是線性可分的,其含義就是,可以用一條直線將數(shù)據(jù)分開。這時候需要通過一定的機器學習的方法,比如為感知機算法(perceptron learning algorithm)找到一個合適的線性方程。但是,有些數(shù)據(jù)是線性不可分的,它們沒有辦法畫一條直線將數(shù)據(jù)區(qū)分。這時候有兩個辦法,一個辦法是做線性變換(linear transformation),比如x,y變成x2,y2,這樣可以畫出圓形;另一個辦法是加入非線性因素,即激活函數(shù)??偟膩碚f,引入激活函數(shù)就是用來解決線性不可分的問題。本節(jié)主要講解三個激活函數(shù),sigmoid、tanh以及ReLu。
2001年,Dayan、Abott從生物學角度提出了模擬腦神經(jīng)元接收信號更清晰的激活模型,這個模型函數(shù)就是Relu。傳統(tǒng)激活函數(shù)在增加或者減少的時候梯度會消失,而Relu并不會,這對于神經(jīng)網(wǎng)絡的訓練來說很關鍵。從數(shù)學上來看,非線性的sigmoid函數(shù)對兩側的信號增益較小,對中央?yún)^(qū)域增益較大。從神經(jīng)學上來說,兩側區(qū)域類似于抑制區(qū)域,中央?yún)^(qū)域類似于興奮區(qū)域,所以可以將重點推向中央?yún)^(qū),非重點特征放入兩側區(qū)。而對于Relu來說,其主要有三點變化,第一是單側抑制;第二是相對寬廣的興奮邊界;第三是稀疏激活性。其公式為:
同年,Charles Dugas等人也提出了Softplus函數(shù),該函數(shù)類似于強制非負校正函數(shù)max(0,x)的平滑版本。其公式為:
Relu整流線性單元使用深度神經(jīng)網(wǎng)絡主要應用在計算機視覺與語音識別等領域中,取得了很好的效果。
2 深度學習開發(fā)框架
目前人氣比較高的幾個深度學習的開源框架有三個,分別是Caffe框架,Theano框架和Torch框架。
⑴ Caffe
Caffe源自加州伯克利分校的Caffe被廣泛應用,包括Pinterest這樣的Web大戶。與TensorFlow一樣,Caffe也是由C++開發(fā),Caffe也是Google今年早些時候發(fā)布的DeepDream項目(可以識別“喵星人”的人工智能神經(jīng)網(wǎng)絡)的基礎。
⑵ Theano
2008年Theano誕生于蒙特利爾理工學院,Theano派生出了大量深度學習Python軟件包,最著名的包括Blocks和Keras,近幾年還有Lasagne。
相對于Keras的傻瓜式操作,Lasagne有更復雜的參數(shù)設置系統(tǒng),若繼續(xù)深入學習神經(jīng)網(wǎng)絡結構及其流程,Lasagne是更好的選擇。
⑶ Torch
Torch誕生已經(jīng)有十年之久,但是真正起勢得益于14年Facebook開源了大量Torch的深度學習模塊和擴展。Torch另外一個特殊之處是采用了不怎么流行的編程語言Lua(該語言曾被用來開發(fā)視頻游戲)。
3 結束語
深度學習的概念自06年被提出以來不斷發(fā)展,受益于大數(shù)據(jù)時代的到來,深度學習受到了越來越多的重視,其在圖像、語音、語文識別領域,以及人工智能領域都有不小的突破。目前深度學習領域還有很多有待解決和發(fā)現(xiàn)的問題,在深度學習的拓展方面,如何充分利用深度學習的方式來增強傳統(tǒng)算法的性能是目前深度學習研究的重點。
參考文獻(References):
[1] D.E.Rumelhart, G.E.Hinton, and R.J.Williams.Learning
internal representations by error propagation. Nature,1986.323(99):533-536
[2] HINTON G E,OSINDERO S,TEH Y W.A fast learning
algorithm for deep belief nets[J].Neural Computation,2006.18(7):1527-1554
[3] Bengio, Yoshua (2009)."Learning Deep Archi-tectures
for AI".Foundations and Trends in Machine Learning2(1):1-127
[4] Larochelle, Hugo; Salakhutdinov, Ruslan (2010). "Efficient
Learning of Deep Boltzmann Machines":693-700
[5] Han, Jun; Morag, Claudio (1995). "The influence of the
sigmoid function parameters on the speed of backpropagation learning". In Mira, José; Sandoval, Francisco. From Natural to Artificial Neural Computation. pp:195-201
[6] Robert E. Bradley, Lawrence A. D'Antonio, Charles
Edward Sandifer.Euler at 300: an appreciation. Mathematical Association of America,2007:100
[7] Xavier Glorot, Antoine Bordes and Yoshua Bengio(2011).
Deep sparse rectifier neural networks. AISTATS.