韓小虎 徐鵬 韓森森
摘 要: 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個(gè)新領(lǐng)域,其動機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),模仿人腦的機(jī)制來解釋數(shù)據(jù)。目前深度學(xué)習(xí)在智能識別方向具有很強(qiáng)的優(yōu)越性。文章主要介紹了深度學(xué)習(xí)的基本理論、常用模型和開發(fā)平臺。
關(guān)鍵詞: 深度學(xué)習(xí); 機(jī)器學(xué)習(xí); 特征表示; 工具
中圖分類號:TP399 文獻(xiàn)標(biāo)志碼: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)絡(luò)的歷史最早可以追溯到上世紀(jì)的40年代,在20世紀(jì)80年末期,Rumelhart、Hinton和Williams在《自然》(Nature)上發(fā)表了用于人工神經(jīng)網(wǎng)絡(luò)的BP(Back-Propagation,反向傳播)算法[1],掀起了一陣機(jī)器學(xué)習(xí)的浪潮,但是由于各種原因,神經(jīng)網(wǎng)絡(luò)被許多學(xué)者放棄。
20世紀(jì)90年代,更多的學(xué)者開始采用淺層機(jī)器學(xué)習(xí)模型,例如SVM(Support Vector Machines,支持向量機(jī)),最近鄰等分類器,Boosting等。這些模型都取得了巨大成功,但是同時(shí)由于理論分析難度大,訓(xùn)練方法復(fù)雜,這個(gè)時(shí)期神經(jīng)網(wǎng)絡(luò)陷入了沉寂。
自2006年以來,深度學(xué)習(xí)領(lǐng)域取得了突破性進(jìn)展,人工智能的實(shí)現(xiàn),不再是那么遙不可及的事情了。至于技術(shù)手段,在依賴云計(jì)算對大數(shù)據(jù)的并行處理能力的基礎(chǔ)上,更加依賴一個(gè)算法,這個(gè)算法就是深度學(xué)習(xí),通過這個(gè)方法,人們終于知道如何處理抽象概念這個(gè)難題。
深度學(xué)習(xí)的概念最早由機(jī)器學(xué)習(xí)領(lǐng)域的泰斗、多倫多大學(xué)G.E.Hinton教授提出[2],之后在各大領(lǐng)域有了飛速的發(fā)展。2012年,由Hinton教授帶領(lǐng)的深度學(xué)習(xí)團(tuán)隊(duì)在ImageNet圖像分類大賽中取得了優(yōu)勝,其準(zhǔn)確率超過了第二名10%以上,引起了計(jì)算機(jī)視覺領(lǐng)域的極大震動,再一次掀起了深度學(xué)習(xí)的浪潮。同年6月,Google被披露出Google Brain計(jì)劃,這個(gè)項(xiàng)目由斯坦福大學(xué)的機(jī)器學(xué)習(xí)教授Andrew Ng和在大規(guī)模計(jì)算機(jī)系統(tǒng)方面的世界頂尖專家JeffDean共同主導(dǎo),用16000個(gè)CPU Core的并行計(jì)算平臺訓(xùn)練一種稱為“深度神經(jīng)網(wǎng)絡(luò)”(DNN,Deep Neural Networks)的機(jī)器學(xué)習(xí)模型,在語音識別和圖像識別等領(lǐng)域獲得了巨大的成功。百度在2013年1月高調(diào)宣布成立百度研究院,其中第一個(gè)便是深度學(xué)習(xí)研究所(IDL,Institute of Deep Learning)。
1 深度學(xué)習(xí)基本理論
人工智能所具有的特征之一就是對信息的學(xué)習(xí)能力,即網(wǎng)絡(luò)的性能是否會隨著數(shù)據(jù)的增加積累也不斷提高。隨著人類社會信息的高度爆發(fā),大數(shù)據(jù)時(shí)代到來,可用計(jì)算能力與數(shù)據(jù)量的增加,為人工智能的發(fā)展提供很好的平臺。在這樣的背景下,深度學(xué)習(xí)在各大領(lǐng)域所取得的成就絕非偶然。
深度學(xué)習(xí)基本理論主要包括深度學(xué)習(xí)的基本概念、深度學(xué)習(xí)的訓(xùn)練過程和深度學(xué)習(xí)的模型三部分。
1.1 深度學(xué)習(xí)的基本概念與架構(gòu)
2006年,加拿大多倫多大學(xué)教授、機(jī)器學(xué)習(xí)領(lǐng)域泰斗Geoffrey Hinton和他的學(xué)生Ruslan SalakHutdinov首次在《科學(xué)》上發(fā)表論文,提出深度學(xué)習(xí)的兩個(gè)主要觀點(diǎn)。
⑴ 含多隱層的人工神經(jīng)網(wǎng)絡(luò)具有很優(yōu)秀的特征學(xué)習(xí)能力,其對學(xué)習(xí)所得到的特征數(shù)據(jù)有更深刻的展示,最終得到的網(wǎng)絡(luò)數(shù)據(jù)更有利于分類或可視化。
⑵ 深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練其本身網(wǎng)絡(luò)參數(shù)上的具有一定的難度,但是這些都可以通過“逐層初始化”(layer-wise pre-training)來克服,而逐層初始化則可以通過無監(jiān)督學(xué)習(xí)來實(shí)現(xiàn)。
深度學(xué)習(xí)允許那些由多處理層組成的計(jì)算模型去學(xué)習(xí)具有多個(gè)等級抽象數(shù)據(jù)的表達(dá),該方法在許多領(lǐng)域得到了廣泛的應(yīng)用,例如視覺對象識別,語音識別,對象檢測等,同時(shí)對醫(yī)藥學(xué)的新發(fā)現(xiàn)和基因組學(xué)的新進(jìn)展也起到了促進(jìn)作用。深度學(xué)習(xí)利用反向傳播算法發(fā)現(xiàn)大數(shù)據(jù)的內(nèi)在復(fù)雜的結(jié)構(gòu),然后BP算法會指導(dǎo)機(jī)器如何在每一層利用從上一層獲得的表達(dá)來改變其內(nèi)部的參數(shù)。
深度學(xué)習(xí)的本質(zhì)是利用海量的訓(xùn)練數(shù)據(jù)(可為無標(biāo)簽數(shù)據(jù)),通過構(gòu)建多隱層的模型,去學(xué)習(xí)更加有用的特征數(shù)據(jù),從而提高數(shù)據(jù)分類效果,提升預(yù)測結(jié)果的準(zhǔn)確性?!吧疃葘W(xué)習(xí)模型”是手段,“特征學(xué)習(xí)”是目的。
1.2 深度學(xué)習(xí)的常用模型
深度學(xué)習(xí)常用模型主要有:自動編碼器(AutoEncoder)、稀疏自動編碼器(Sparse AutoEncoder)、降噪自動編碼器(Denoising AutoEncoder)、限制玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)。
⑴ 自動編碼器[3](AutoEncoder)
深度學(xué)習(xí)中最簡單的一種是利用ANN(即人工神經(jīng)網(wǎng)絡(luò))的層級結(jié)構(gòu)特點(diǎn)設(shè)計(jì)的一種網(wǎng)絡(luò)。對于一個(gè)給定的網(wǎng)絡(luò),我們假設(shè)其輸入與輸出是一致的,接下來我們訓(xùn)練網(wǎng)絡(luò)并調(diào)整網(wǎng)絡(luò)中的參數(shù),得到每一層的權(quán)值。由此我們就得到了輸入數(shù)據(jù)Input的相異表現(xiàn)形式,這些表示就是特征。
AutoEncoder就是一種可以盡可能復(fù)現(xiàn)輸入數(shù)據(jù)的一種神經(jīng)網(wǎng)絡(luò)。自動編碼器基于這樣一個(gè)事實(shí):原始的輸入Input經(jīng)過加權(quán)即(w,b)、還有映射(Sigmoid函數(shù))之后得到一個(gè)數(shù)據(jù)y,然后對y進(jìn)行加權(quán)反向映射得到數(shù)據(jù)z。通過不斷的迭代訓(xùn)練,使得誤差最?。幢M可能使得z接近或者與input相同)。在這個(gè)過程中并沒有使用標(biāo)簽數(shù)據(jù)來計(jì)算數(shù)據(jù)之間的誤差從而去更新參數(shù),所以是無監(jiān)督學(xué)習(xí)網(wǎng)絡(luò),同時(shí)利用了類似神經(jīng)網(wǎng)絡(luò)的雙隱層方式來提取樣本。
自動編碼器一般由兩部分組成:解碼器與編碼器。它們可以被定義為這樣的兩種轉(zhuǎn)換:
在自動編碼器當(dāng)中,如果隱含層的結(jié)點(diǎn)個(gè)數(shù)過少,隱含結(jié)點(diǎn)就需要對原始輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)壓縮,但當(dāng)輸入為隨機(jī)序列的時(shí)候,對輸入提取特征數(shù)據(jù)將會變得困難。雖然在隱含層結(jié)點(diǎn)數(shù)目很大的情況下,仍可以用自動編碼算法,但是需要加入稀疏限制,加入限制之后的自動編碼器就是稀疏自動編碼器。稀疏自動編碼器編碼解碼過程如圖2所示。
⑶ 降噪自動編碼器(Denoising AutoEncoder)
2008年,Vincent在他的論文“Extracting and Composing Robust Features”中突出了AutoEncoder的改良的降噪自動編碼器(DA,Denoising AutoEncoder)。DA采取部分損壞的輸入而訓(xùn)練來恢復(fù)原來的不失真的輸入,這就迫使編碼器去學(xué)習(xí)輸入信號更加robustly的良好表達(dá),一個(gè)很好的表達(dá)對于恢復(fù)相應(yīng)的清晰輸入是很有效果的,這也是DA的泛化能力比一般編碼器強(qiáng)的原因。其訓(xùn)練方法如圖3所示。
⑷ 限制玻爾茲曼機(jī)[4](Restricted Boltzmann Machine,RBM)
限制玻爾茲曼機(jī)(RMB)是一種深度學(xué)習(xí)模型。在1986年它由Hinton和Sejnowski提出,是一種生成式隨機(jī)神經(jīng)網(wǎng)絡(luò)(generative stochastic neural network),整個(gè)網(wǎng)絡(luò)是一個(gè)二部圖,同層次結(jié)點(diǎn)之間沒有鏈接,只有可見單元與隱含單元之間才會存在邊??梢妴卧摧斎霐?shù)據(jù)層,隱含單元即隱含層,它們都是二元變量。與此同時(shí)若全概率分布滿足玻爾茲曼分布的話,我們就把這個(gè)模型稱為限制玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)。限制玻爾茲曼機(jī)RBM由三個(gè)可視層結(jié)點(diǎn)和四個(gè)隱含結(jié)點(diǎn)組成,可以用于降維,學(xué)習(xí)特征以及深度置信網(wǎng)等。通過隱含層層數(shù)增加則可以得到深度玻爾茲曼機(jī)(Deep Boltzmannn Machine)。
1.3 非線性激活函數(shù)
激活函數(shù)是用來為神經(jīng)網(wǎng)絡(luò)加入非線性因素的,因?yàn)榫€性模型的表達(dá)分類能力不夠。某些數(shù)據(jù)是線性可分的,其含義就是,可以用一條直線將數(shù)據(jù)分開。這時(shí)候需要通過一定的機(jī)器學(xué)習(xí)的方法,比如為感知機(jī)算法(perceptron learning algorithm)找到一個(gè)合適的線性方程。但是,有些數(shù)據(jù)是線性不可分的,它們沒有辦法畫一條直線將數(shù)據(jù)區(qū)分。這時(shí)候有兩個(gè)辦法,一個(gè)辦法是做線性變換(linear transformation),比如x,y變成x2,y2,這樣可以畫出圓形;另一個(gè)辦法是加入非線性因素,即激活函數(shù)??偟膩碚f,引入激活函數(shù)就是用來解決線性不可分的問題。本節(jié)主要講解三個(gè)激活函數(shù),sigmoid、tanh以及ReLu。
2001年,Dayan、Abott從生物學(xué)角度提出了模擬腦神經(jīng)元接收信號更清晰的激活模型,這個(gè)模型函數(shù)就是Relu。傳統(tǒng)激活函數(shù)在增加或者減少的時(shí)候梯度會消失,而Relu并不會,這對于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練來說很關(guān)鍵。從數(shù)學(xué)上來看,非線性的sigmoid函數(shù)對兩側(cè)的信號增益較小,對中央?yún)^(qū)域增益較大。從神經(jīng)學(xué)上來說,兩側(cè)區(qū)域類似于抑制區(qū)域,中央?yún)^(qū)域類似于興奮區(qū)域,所以可以將重點(diǎn)推向中央?yún)^(qū),非重點(diǎn)特征放入兩側(cè)區(qū)。而對于Relu來說,其主要有三點(diǎn)變化,第一是單側(cè)抑制;第二是相對寬廣的興奮邊界;第三是稀疏激活性。其公式為:
同年,Charles Dugas等人也提出了Softplus函數(shù),該函數(shù)類似于強(qiáng)制非負(fù)校正函數(shù)max(0,x)的平滑版本。其公式為:
Relu整流線性單元使用深度神經(jīng)網(wǎng)絡(luò)主要應(yīng)用在計(jì)算機(jī)視覺與語音識別等領(lǐng)域中,取得了很好的效果。
2 深度學(xué)習(xí)開發(fā)框架
目前人氣比較高的幾個(gè)深度學(xué)習(xí)的開源框架有三個(gè),分別是Caffe框架,Theano框架和Torch框架。
⑴ Caffe
Caffe源自加州伯克利分校的Caffe被廣泛應(yīng)用,包括Pinterest這樣的Web大戶。與TensorFlow一樣,Caffe也是由C++開發(fā),Caffe也是Google今年早些時(shí)候發(fā)布的DeepDream項(xiàng)目(可以識別“喵星人”的人工智能神經(jīng)網(wǎng)絡(luò))的基礎(chǔ)。
⑵ Theano
2008年Theano誕生于蒙特利爾理工學(xué)院,Theano派生出了大量深度學(xué)習(xí)Python軟件包,最著名的包括Blocks和Keras,近幾年還有Lasagne。
相對于Keras的傻瓜式操作,Lasagne有更復(fù)雜的參數(shù)設(shè)置系統(tǒng),若繼續(xù)深入學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及其流程,Lasagne是更好的選擇。
⑶ Torch
Torch誕生已經(jīng)有十年之久,但是真正起勢得益于14年Facebook開源了大量Torch的深度學(xué)習(xí)模塊和擴(kuò)展。Torch另外一個(gè)特殊之處是采用了不怎么流行的編程語言Lua(該語言曾被用來開發(fā)視頻游戲)。
3 結(jié)束語
深度學(xué)習(xí)的概念自06年被提出以來不斷發(fā)展,受益于大數(shù)據(jù)時(shí)代的到來,深度學(xué)習(xí)受到了越來越多的重視,其在圖像、語音、語文識別領(lǐng)域,以及人工智能領(lǐng)域都有不小的突破。目前深度學(xué)習(xí)領(lǐng)域還有很多有待解決和發(fā)現(xiàn)的問題,在深度學(xué)習(xí)的拓展方面,如何充分利用深度學(xué)習(xí)的方式來增強(qiáng)傳統(tǒng)算法的性能是目前深度學(xué)習(xí)研究的重點(diǎn)。
參考文獻(xiàn)(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.