摘要: 深度學(xué)習(xí)可以完成需要高度抽象特征的人工智能任務(wù),如語(yǔ)音識(shí)別、圖像識(shí)別和檢索、自然語(yǔ)言理解等。深層模型是包含多個(gè)隱藏層的人工神經(jīng)網(wǎng)絡(luò),多層非線性結(jié)構(gòu)使其具備強(qiáng)大的特征表達(dá)能力和對(duì)復(fù)雜任務(wù)建模能力。訓(xùn)練深層模型是長(zhǎng)期以來(lái)的難題,近年來(lái)以層次化、逐層初始化為代表的一系列方法的提出給訓(xùn)練深層模型帶來(lái)了希望,并在多個(gè)應(yīng)用領(lǐng)域獲得了成功。深層模型的并行化框架和訓(xùn)練加速方法是深度學(xué)習(xí)走向?qū)嵱玫闹匾延卸鄠€(gè)針對(duì)不同深度模型的開(kāi)源實(shí)現(xiàn),Google、Facebook、百度、騰訊等公司也實(shí)現(xiàn)了各自的并行化框架。深度學(xué)習(xí)是目前最接近人腦的智能學(xué)習(xí)方法,深度學(xué)習(xí)引爆的這場(chǎng)革命,將人工智能帶上了一個(gè)新的臺(tái)階,將對(duì)一大批產(chǎn)品和服務(wù)產(chǎn)生深遠(yuǎn)影響。
1 深度學(xué)習(xí)的革命
人工智能(Artificial Intelligence),試圖理解智能的實(shí)質(zhì),并制造出能以人類智能相似的方式做出反應(yīng)的智能機(jī)器。如果說(shuō)機(jī)器是人類手的延伸、交通工具是人類腿的延伸,那么人工智能就是人類大腦的延伸,甚至可以幫助人類自我進(jìn)化,超越自我。人工智能也是計(jì)算機(jī)領(lǐng)域最前沿和最具神秘色彩的學(xué)科,科學(xué)家希望制造出代替人類思考的智能機(jī)器,藝術(shù)家將這一題材寫(xiě)進(jìn)小說(shuō),搬上銀幕,引發(fā)人們無(wú)限的遐想。然而,作為一門(mén)嚴(yán)肅的學(xué)科,人工智能在過(guò)去的半個(gè)多世紀(jì)中發(fā)展卻不算順利。過(guò)去的很多努力還是基于某些預(yù)設(shè)規(guī)則的快速搜索和推理,離真正的智能還有相當(dāng)?shù)木嚯x,或者說(shuō)距離創(chuàng)造像人類一樣具有抽象學(xué)習(xí)能力的機(jī)器還很遙遠(yuǎn)。
近年來(lái),深度學(xué)習(xí)(Deep Learning)直接嘗試解決抽象認(rèn)知的難題,并取得了突破性的進(jìn)展。深度學(xué)習(xí)引爆的這場(chǎng)革命,將人工智能帶上了一個(gè)新的臺(tái)階,不僅學(xué)術(shù)意義巨大,而且實(shí)用性很強(qiáng),工業(yè)界也開(kāi)始了大規(guī)模的投入,一大批產(chǎn)品將從中獲益。
2006年,機(jī)器學(xué)習(xí)泰斗、多倫多大學(xué)計(jì)算機(jī)系教授Geoffery Hinton在Science發(fā)表文章[1],提出基于深度信念網(wǎng)絡(luò)(Deep Belief Networks, DBN)可使用非監(jiān)督的逐層貪心訓(xùn)練算法,為訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)帶來(lái)了希望。
2012年,Hinton又帶領(lǐng)學(xué)生在目前最大的圖像數(shù)據(jù)庫(kù)ImageNet上,對(duì)分類問(wèn)題取得了驚人的結(jié)果[2],將Top5錯(cuò)誤率由26%大幅降低至15%。
2012年,由人工智能和機(jī)器學(xué)習(xí)頂級(jí)學(xué)者Andrew Ng和分布式系統(tǒng)頂級(jí)專家Jeff Dean領(lǐng)銜的夢(mèng)幻陣容,開(kāi)始打造Google Brain項(xiàng)目,用包含16000個(gè)CPU核的并行計(jì)算平臺(tái)訓(xùn)練超過(guò)10億個(gè)神經(jīng)元的深度神經(jīng)網(wǎng)絡(luò),在語(yǔ)音識(shí)別和圖像識(shí)別等領(lǐng)域取得了突破性的進(jìn)展[3]。該系統(tǒng)通過(guò)分析YouTube上選取的視頻,采用無(wú)監(jiān)督的方式訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),可將圖像自動(dòng)聚類。在系統(tǒng)中輸入“cat”后,結(jié)果在沒(méi)有外界干涉的條件下,識(shí)別出了貓臉。
2012年,微軟首席研究官Rick Rashid在21世紀(jì)的計(jì)算大會(huì)上演示了一套自動(dòng)同聲傳譯系統(tǒng)[4],將他的英文演講實(shí)時(shí)轉(zhuǎn)換成與他音色相近、字正腔圓的中文演講。同聲傳譯需要經(jīng)歷語(yǔ)音識(shí)別、機(jī)器翻譯、語(yǔ)音合成三個(gè)步驟。該系統(tǒng)一氣呵成,流暢的效果贏得了一致認(rèn)可,深度學(xué)習(xí)則是這一系統(tǒng)中的關(guān)鍵技術(shù)。
2013年,Google收購(gòu)了一家叫DNN Research的神經(jīng)網(wǎng)絡(luò)初創(chuàng)公司,這家公司只有三個(gè)人,Geoffrey Hinton和他的兩個(gè)學(xué)生。這次收購(gòu)并不涉及任何產(chǎn)品和服務(wù),只是希望Hinton可以將深度學(xué)習(xí)打造為支持Google未來(lái)的核心技術(shù)。同年,紐約大學(xué)教授,深度學(xué)習(xí)專家Yann LeCun加盟Facebook,出任人工智能實(shí)驗(yàn)室主任[5],負(fù)責(zé)深度學(xué)習(xí)的研發(fā)工作,利用深度學(xué)習(xí)探尋用戶圖片等信息中蘊(yùn)含的海量信息,希望在未來(lái)能給用戶提供更智能化的產(chǎn)品使用體驗(yàn)。
2013年,百度成立了百度研究院及下屬的深度學(xué)習(xí)研究所(IDL),將深度學(xué)習(xí)應(yīng)用于語(yǔ)音識(shí)別和圖像識(shí)別、檢索,以及廣告CTR預(yù)估(Click-Through-Rate Prediction,pCTR),其中圖片檢索達(dá)到了國(guó)際領(lǐng)先水平。2014年又將Andrew Ng招致麾下,Andrew Ng是斯坦福大學(xué)人工智能實(shí)驗(yàn)室主任,入選過(guò)《時(shí)代》雜志年度全球最有影響力100人,是16位科技界的代表之一。
如果說(shuō)Hinton 2006年發(fā)表在《Science》雜志上的論文[1]只是在學(xué)術(shù)界掀起了對(duì)深度學(xué)習(xí)的研究熱潮,那么近年來(lái)各大巨頭公司爭(zhēng)相跟進(jìn),將頂級(jí)人才從學(xué)術(shù)界爭(zhēng)搶到工業(yè)界,則標(biāo)志著深度學(xué)習(xí)真正進(jìn)入了實(shí)用階段,將對(duì)一系列產(chǎn)品和服務(wù)產(chǎn)生深遠(yuǎn)影響,成為它們背后強(qiáng)大的技術(shù)引擎。
目前,深度學(xué)習(xí)在幾個(gè)主要領(lǐng)域都獲得了突破性的進(jìn)展:在語(yǔ)音識(shí)別領(lǐng)域,深度學(xué)習(xí)用深層模型替換聲學(xué)模型中的混合高斯模型(Gaussian Mixture Model, GMM),獲得了相對(duì)30%左右的錯(cuò)誤率降低;在圖像識(shí)別領(lǐng)域,通過(guò)構(gòu)造深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)[2],將Top5錯(cuò)誤率由26%大幅降低至15%,又通過(guò)加大加深網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)一步降低到11%;在自然語(yǔ)言處理領(lǐng)域,深度學(xué)習(xí)基本獲得了與其他方法水平相當(dāng)?shù)慕Y(jié)果,但可以免去繁瑣的特征提取步驟。可以說(shuō)到目前為止,深度學(xué)習(xí)是最接近人類大腦的智能學(xué)習(xí)方法。
2深層模型的基本結(jié)構(gòu)
深度學(xué)習(xí)采用的模型為深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,DNN)模型,即包含多個(gè)隱藏層(Hidden Layer,也稱隱含層)的神經(jīng)網(wǎng)絡(luò)(Neural Networks,NN)。深度學(xué)習(xí)利用模型中的隱藏層,通過(guò)特征組合的方式,逐層將原始輸入轉(zhuǎn)化為淺層特征,中層特征,高層特征直至最終的任務(wù)目標(biāo)。
深度學(xué)習(xí)源于人工神經(jīng)網(wǎng)絡(luò)的研究,先來(lái)回顧一下人工神經(jīng)網(wǎng)絡(luò)。一個(gè)神經(jīng)元如下圖所示[6]:
這個(gè)神經(jīng)元接受三個(gè)輸入x1,x2,x3,神經(jīng)元輸出為
其中W1, W2, W3和b為神經(jīng)元的參數(shù),f(z)稱為激活函數(shù),一種典型的激活函數(shù)為Sigmoid函數(shù),即
其圖像為
神經(jīng)網(wǎng)絡(luò)則是多個(gè)神經(jīng)元組成的網(wǎng)絡(luò),一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)如下圖所示
使用圓圈來(lái)表示神經(jīng)網(wǎng)絡(luò)的輸入,標(biāo)上“+1”的圓圈稱為偏置節(jié)點(diǎn),也就是截距項(xiàng)。神經(jīng)網(wǎng)絡(luò)最左邊的一層叫做輸入層(本例中,有3個(gè)輸入單元,偏置單元不計(jì));最右的一層叫做輸出層(本例中,輸出層有2個(gè)節(jié)點(diǎn));中間的節(jié)點(diǎn)叫做隱藏層(本例中,有2個(gè)隱藏層,分別包含3個(gè)和2個(gè)神經(jīng)元,偏置單元同樣不計(jì)),因?yàn)椴荒茉谟?xùn)練樣本集中觀測(cè)到它們的值。神經(jīng)元網(wǎng)絡(luò)中的每一條連線對(duì)應(yīng)一個(gè)連接參數(shù),連線個(gè)數(shù)對(duì)應(yīng)網(wǎng)絡(luò)的參數(shù)個(gè)數(shù)(本例共有4×3 + 4×2 +3×2=26個(gè)參數(shù))。求解這個(gè)的神經(jīng)網(wǎng)絡(luò),需要(x(i),y(i))的樣本集,其中x(i)是3維向量,y(i)是2維向量。
上圖算是一個(gè)淺層的神經(jīng)網(wǎng)絡(luò),下圖是一個(gè)用于語(yǔ)音識(shí)別的深層神經(jīng)網(wǎng)絡(luò)。具有1個(gè)輸入層,4個(gè)隱藏層和1個(gè)輸出層,相鄰兩層的神經(jīng)元全部連接。
3 選擇深層模型的原因
為什么要構(gòu)造包含這么多隱藏層的深層網(wǎng)絡(luò)結(jié)構(gòu)呢?背后有一些理論依據(jù):
3.1天然層次化的特征
對(duì)于很多訓(xùn)練任務(wù)來(lái)說(shuō),特征具有天然的層次結(jié)構(gòu)。以語(yǔ)音、圖像、文本為例,層次結(jié)構(gòu)大概如下表所示。
以圖像識(shí)別為例,圖像的原始輸入是像素,相鄰像素組成線條,多個(gè)線條組成紋理,進(jìn)一步形成圖案,圖案構(gòu)成了物體的局部,直至整個(gè)物體的樣子。不難發(fā)現(xiàn),可以找到原始輸入和淺層特征之間的聯(lián)系,再通過(guò)中層特征,一步一步獲得和高層特征的聯(lián)系。想要從原始輸入直接跨越到高層特征,無(wú)疑是困難的。
3.2 仿生學(xué)依據(jù)
人工神經(jīng)網(wǎng)絡(luò)本身就是對(duì)人類神經(jīng)系統(tǒng)的模擬,這種模擬具有仿生學(xué)的依據(jù)。1981年,David Hubel 和Torsten Wiesel發(fā)現(xiàn)可視皮層是分層的[8]。人類的視覺(jué)系統(tǒng)包含了不同的視覺(jué)神經(jīng)元,這些神經(jīng)元與瞳孔所受的刺激(系統(tǒng)輸入)之間存在著某種對(duì)應(yīng)關(guān)系(神經(jīng)元之間的連接參數(shù)),即受到某種刺激后(對(duì)于給定的輸入),某些神經(jīng)元就會(huì)活躍(被激活)。這證實(shí)了人類神經(jīng)系統(tǒng)和大腦的工作其實(shí)是不斷將低級(jí)抽象傳導(dǎo)為高級(jí)抽象的過(guò)程,高層特征是低層特征的組合,越到高層特征就越抽象。
3.3 特征的層次可表示性
特征的層次可表示性也得到了證實(shí)。1995年前后,Bruno Olshausen和David Field[9]收集了很多黑白風(fēng)景照,從這些照片中找到了400個(gè)16×16的基本碎片,然后從照片中再找到其他一些同樣大小的碎片,希望將其他碎片表示為這400個(gè)基本碎片的線性組合,并使誤差盡可能小,使用的碎片盡可能少。表示完成后,再固定其他碎片,選擇更合適的基本碎片組合優(yōu)化近似結(jié)果。反復(fù)迭代后,得到了可以表示其他碎片的最佳的基本碎片組合。他們發(fā)現(xiàn),這些基本碎片組合都是不同物體不同方向的邊緣線。
這說(shuō)明可以通過(guò)有效的特征提取,將像素抽象成更高級(jí)的特征。類似的結(jié)果也適用于語(yǔ)音特征。
4 從淺層模型到深層模型
前文談到了深層模型的結(jié)構(gòu)和它的優(yōu)勢(shì)。事實(shí)上,深層模型具有強(qiáng)大的表達(dá)能力,并可以像人類一樣有效提取高級(jí)特征,并不是新的發(fā)現(xiàn)。那么為什么深層模型直到最近幾年才開(kāi)始得到廣泛的關(guān)注和應(yīng)用呢?還是從傳統(tǒng)的機(jī)器學(xué)習(xí)方法和淺層學(xué)習(xí)談起。
4.1淺層模型及訓(xùn)練方法
反向傳播算法(Back Propagation,BP算法)[10]是一種神經(jīng)網(wǎng)絡(luò)的梯度計(jì)算方法。反向傳播算法先定義模型在訓(xùn)練樣本上的代價(jià)函數(shù),再求代價(jià)函數(shù)對(duì)于每個(gè)參數(shù)的梯度。反向傳播算法巧妙的利用了下層神經(jīng)元的梯度可由上層神經(jīng)元的殘差導(dǎo)出的規(guī)律,求解的過(guò)程也正如算法的名字那樣,自上而下反向逐層計(jì)算,直至獲得所有參數(shù)的梯度。反向傳播算法可以幫助訓(xùn)練基于統(tǒng)計(jì)的機(jī)器學(xué)習(xí)模型,從大量的訓(xùn)練樣本中挖掘出統(tǒng)計(jì)規(guī)律,進(jìn)而可對(duì)未標(biāo)注的數(shù)據(jù)進(jìn)行預(yù)測(cè)。這種基于統(tǒng)計(jì)的學(xué)習(xí)方法比起傳統(tǒng)的基于規(guī)則的方法具備很多優(yōu)越性[11]。
上世紀(jì)八九十年代,人們提出了一系列機(jī)器學(xué)習(xí)模型,應(yīng)用最為廣泛的包括支持向量機(jī)(Support Vector Machine,SVM)[12]和邏輯回歸(Logistic Regression,LR)[13],這兩種模型分別可以看作包含1個(gè)隱藏層和沒(méi)有隱藏層的淺層模型。訓(xùn)練時(shí)可以利用反向傳播算法計(jì)算梯度,再用梯度下降方法在參數(shù)空間中尋找最優(yōu)解。淺層模型往往具有凸代價(jià)函數(shù),理論分析相對(duì)簡(jiǎn)單,訓(xùn)練方法也容易掌握,取得了很多成功的應(yīng)用。
4.2 深層模型的訓(xùn)練難度
淺層模型的局限性在于有限參數(shù)和計(jì)算單元,對(duì)復(fù)雜函數(shù)的表示能力有限,針對(duì)復(fù)雜分類問(wèn)題其泛化能力受到一定的制約。深層模型恰恰可以克服淺層模型的這一弱點(diǎn),然而應(yīng)用反向傳播和梯度下降來(lái)訓(xùn)練深層模型,就面臨幾個(gè)突出的問(wèn)題[14]:
1.局部最優(yōu)。與淺層模型的代價(jià)函數(shù)不同,深層模型的每個(gè)神經(jīng)元都是非線性變換,代價(jià)函數(shù)是高度非凸函數(shù),采用梯度下降的方法容易陷入局部最優(yōu)。
2.梯度彌散。使用反向傳播算法傳播梯度的時(shí)候,隨著傳播深度的增加,梯度的幅度會(huì)急劇減小,會(huì)導(dǎo)致淺層神經(jīng)元的權(quán)重更新非常緩慢,不能有效學(xué)習(xí)。這樣一來(lái),深層模型也就變成了前幾層相對(duì)固定,只能改變最后幾層的淺層模型。
3.數(shù)據(jù)獲齲深層模型的表達(dá)能力強(qiáng)大,模型的參數(shù)也相應(yīng)增加。對(duì)于訓(xùn)練如此多參數(shù)的模型,小訓(xùn)練數(shù)據(jù)集是不能實(shí)現(xiàn)的,需要海量的有標(biāo)記的數(shù)據(jù),否則只能導(dǎo)致嚴(yán)重的過(guò)擬合(Over fitting)。
4.3 深層模型的訓(xùn)練方法
盡管挑戰(zhàn)很大,Hinton教授并沒(méi)有放棄努力,他30年來(lái)一直從事相關(guān)研究,終于有了突破性的進(jìn)展。2006年,他在《Science》上發(fā)表了一篇文章[1],掀起了深度學(xué)習(xí)在學(xué)術(shù)界和工業(yè)界的浪潮。這篇文章的兩個(gè)主要觀點(diǎn)是:
1.多隱藏層的人工神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學(xué)習(xí)能力,學(xué)習(xí)到的特征對(duì)數(shù)據(jù)有更本質(zhì)的刻畫(huà),從而有利于可視化或分類。
2.深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練上的難度,可以通過(guò)“逐層初始化”(Layer-wise Pre-training)來(lái)有效克服,文中給出了無(wú)監(jiān)督的逐層初始化方法。
優(yōu)異的特征刻畫(huà)能力前文已經(jīng)提到,不再累述,下面重點(diǎn)解釋一下“逐層初始化”的方法。
給定原始輸入后,先要訓(xùn)練模型的第一層,即圖中左側(cè)的黑色框。黑色框可以看作是一個(gè)編碼器,將原始輸入編碼為第一層的初級(jí)特征,可以將編碼器看作模型的一種“認(rèn)知”。為了驗(yàn)證這些特征確實(shí)是輸入的一種抽象表示,且沒(méi)有丟失太多信息,需要引入一個(gè)對(duì)應(yīng)的解碼器,即圖中左側(cè)的灰色框,可以看作模型的“生成”。為了讓認(rèn)知和生成達(dá)成一致,就要求原始輸入通過(guò)編碼再解碼,可以大致還原為原始輸入。因此將原始輸入與其編碼再解碼之后的誤差定義為代價(jià)函數(shù),同時(shí)訓(xùn)練編碼器和解碼器。訓(xùn)練收斂后,編碼器就是我們要的第一層模型,而解碼器則不再需要了。這時(shí)我們得到了原始數(shù)據(jù)的第一層抽象。固定第一層模型,原始輸入就映射成第一層抽象,將其當(dāng)作輸入,如法炮制,可以繼續(xù)訓(xùn)練出第二層模型,再根據(jù)前兩層模型訓(xùn)練出第三層模型,以此類推,直至訓(xùn)練出最高層模型。
逐層初始化完成后,就可以用有標(biāo)簽的數(shù)據(jù),采用反向傳播算法對(duì)模型進(jìn)行整體有監(jiān)督的訓(xùn)練了。這一步可看作對(duì)多層模型整體的精細(xì)調(diào)整。由于深層模型具有很多局部最優(yōu)解,模型初始化的位置將很大程度上決定最終模型的質(zhì)量。“逐層初始化”的步驟就是讓模型處于一個(gè)較為接近全局最優(yōu)的位置,從而獲得更好的效果。
4.4 淺層模型和深層模型的對(duì)比
淺層模型有一個(gè)重要的特點(diǎn),需要依靠人工經(jīng)驗(yàn)來(lái)抽取樣本的特征,模型的輸入是這些已經(jīng)選取好的特征,模型只用來(lái)負(fù)責(zé)分類和預(yù)測(cè)。在淺層模型中,最重要的往往不是模型的優(yōu)劣,而是特征的選取的優(yōu)劣。因此大多數(shù)人力都投入到特征的開(kāi)發(fā)和篩選中來(lái),不但需要對(duì)任務(wù)問(wèn)題領(lǐng)域有深刻的理解,還要花費(fèi)大量時(shí)間反復(fù)實(shí)驗(yàn)摸索,這也限制了淺層模型的效果。
事實(shí)上,逐層初始化深層模型也可以看作是特征學(xué)習(xí)的過(guò)程,通過(guò)隱藏層對(duì)原始輸入的一步一步抽象表示,來(lái)學(xué)習(xí)原始輸入的數(shù)據(jù)結(jié)構(gòu),找到更有用的特征,從而最終提高分類問(wèn)題的準(zhǔn)確性。在得到有效特征之后,模型整體訓(xùn)練也可以水到渠成。
5 深層模型的層次組件
深層模型是包含多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),每一層的具體結(jié)構(gòu)又是怎樣的呢?本節(jié)介紹一些常見(jiàn)的深層模型基本層次組件。
5.1 自編碼器(Auto-Encoder)
一種常見(jiàn)的深層模型是由自編碼器(Auto-Encoder)構(gòu)造的[6]。自編碼器可以利用一組無(wú)標(biāo)簽的訓(xùn)練數(shù)據(jù){x(1), x(2), … }(其中x(i)是一個(gè)n維向量)進(jìn)行無(wú)監(jiān)督的模型訓(xùn)練。它采用反向傳播算法,讓目標(biāo)值接近輸入值。下圖是一個(gè)自編碼器的示例:
自編碼器嘗試訓(xùn)練一個(gè)恒等函數(shù),讓輸出接近等于輸入值,恒等函數(shù)看似沒(méi)有學(xué)習(xí)的意義,但考慮到隱藏層神經(jīng)元的數(shù)目(本例中為3個(gè))小于輸入向量的維數(shù)(本例中為6維),事實(shí)上隱藏層就變成了輸入數(shù)據(jù)的一種壓縮的表示,或說(shuō)是抽象的簡(jiǎn)化表示。如果網(wǎng)絡(luò)的輸入是完全隨機(jī)的,將高維向量壓縮成低維向量會(huì)難以實(shí)現(xiàn)。但訓(xùn)練數(shù)據(jù)往往隱含著特定的結(jié)構(gòu),自編碼器就會(huì)學(xué)到這些數(shù)據(jù)的相關(guān)性,從而得到有效的壓縮表示。實(shí)際訓(xùn)練后,如果代價(jià)函數(shù)越小,就說(shuō)明輸入和輸出越接近,也就說(shuō)明這個(gè)編碼器越靠譜。當(dāng)然,自編碼器訓(xùn)練完成后,實(shí)際使用時(shí)只需要它的前一層,即編碼部分,解碼部分就沒(méi)用了。
稀疏自編碼器(Sparse Auto-Encoder)是自編碼器的一個(gè)變體,它在自編碼器的基礎(chǔ)上加入正則化(Regularity)。正則化是在代價(jià)函數(shù)中加入抑制項(xiàng),希望隱藏層節(jié)點(diǎn)的平均激活值接近于0,有了正則化的約束,輸入數(shù)據(jù)可以用少數(shù)隱藏節(jié)點(diǎn)表達(dá)。之所以采用稀疏自編碼器,是因?yàn)橄∈璧谋磉_(dá)往往比稠密的表達(dá)更有效,人腦神經(jīng)系統(tǒng)也是稀疏連接,每個(gè)神經(jīng)元只與少數(shù)神經(jīng)元連接。
降噪自編碼器是另一種自編碼器的變體。通過(guò)在訓(xùn)練數(shù)據(jù)中加入噪聲,可訓(xùn)練出對(duì)輸入信號(hào)更加魯棒的表達(dá),從而提升模型的泛化能力,可以更好地應(yīng)對(duì)實(shí)際預(yù)測(cè)時(shí)夾雜在數(shù)據(jù)中的噪聲。
得到自編碼器后,我們還想進(jìn)一步了解自編碼器到底學(xué)到了什么。例如,在10×10的圖像上訓(xùn)練一個(gè)稀疏自編碼器,然后對(duì)于每個(gè)隱藏神經(jīng)元,找到什么樣的圖像可以讓隱藏神經(jīng)元獲得最大程度的激勵(lì),即這個(gè)隱藏神經(jīng)元學(xué)習(xí)到了什么樣的特征。將100個(gè)隱藏神經(jīng)元的特征都找出來(lái),得到了如下100幅圖像:
可以看出,這100幅圖像具備了從不同方向檢測(cè)物體邊緣的能力。顯然,這樣的能力對(duì)后續(xù)的圖像識(shí)別很有幫助。
5.2 受限玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)
受限玻爾茲曼機(jī)(Restricted Boltzmann Machine, RBM)是一個(gè)二部圖,一層是輸入層(v),另一層是隱藏層(h),假設(shè)所有節(jié)點(diǎn)都是隨機(jī)二值變量節(jié)點(diǎn),只能取值0或1,同時(shí)假設(shè)全概率分布p(v, h)滿足Boltzmann分布。
由于同層節(jié)點(diǎn)之間沒(méi)有連接,因此已知輸入層的情況下,隱藏層的各節(jié)點(diǎn)是條件獨(dú)立的;反之,已知隱藏層的情況下,輸入層各節(jié)點(diǎn)也是條件獨(dú)立的。同時(shí),可以根據(jù)Boltzmann分布,當(dāng)輸入v時(shí)通過(guò)p(h|v)生成隱藏層,得到隱藏層之后再通過(guò)p(v|h)生成輸入層。相信很多讀者已經(jīng)猜到了,可以按照訓(xùn)練其他網(wǎng)絡(luò)類似的思路,通過(guò)調(diào)整參數(shù),希望通過(guò)輸入v生成的h,再生成的v’與v盡可能接近,則說(shuō)明隱藏層h是輸入層v的另外一種表示。這樣就可以作為深層模型的基本層次組件了。全部用RBM形成的深層模型為深度玻爾茲曼機(jī)(Deep Boltzmann Machine,DBM)。如果將靠近輸入層的部分替換為貝葉斯信念網(wǎng)絡(luò),即有向圖模型,而在遠(yuǎn)離輸入層的部分仍然使用RBM,則稱為深度信念網(wǎng)絡(luò)(Deep Belief Networks,DBN)。
5.3 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)
以上介紹的編碼器都是全連通網(wǎng)絡(luò),可以完成10×10的圖像識(shí)別,如手寫(xiě)體數(shù)字識(shí)別問(wèn)題。然而對(duì)于更大的圖像,如100×100的圖像,如果要學(xué)習(xí)100個(gè)特征,則需要1,000,000個(gè)參數(shù),計(jì)算時(shí)間會(huì)大大增加。解決這種尺寸圖像識(shí)別的有效方法是利用圖像的局部性,構(gòu)造一個(gè)部分聯(lián)通的網(wǎng)絡(luò)。一種最常見(jiàn)的網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)[15][16],它利用圖像固有的特性,即圖像局部的統(tǒng)計(jì)特性與其他局部是一樣的。因此從某個(gè)局部學(xué)習(xí)來(lái)的特征同樣適用于另外的局部,對(duì)于這個(gè)圖像上的所有位置,都能使用同樣的特征。
具體地說(shuō),假設(shè)有一幅100×100的圖像,要從中學(xué)習(xí)一個(gè)10×10的局部圖像特征的神經(jīng)元,如果采用全連接的方式,100×100維的輸入到這個(gè)神經(jīng)元需要有10000個(gè)連接權(quán)重參數(shù)。而采用卷積核的方式,只有10×10=100個(gè)參數(shù)權(quán)重,卷積核可以看作一個(gè)10×10的小窗口,在圖像上上下左右移動(dòng),走遍圖像中每個(gè)10×10的位置(共有91×91個(gè)位置)。每移動(dòng)到一個(gè)位置,則將該位置的輸入與卷積核對(duì)應(yīng)位置的參數(shù)相乘再累加,得到一個(gè)輸出值(輸出值是91×91的圖像)。卷積核的特點(diǎn)是連接數(shù)雖然很多,有91×91×10×10個(gè)連接,但是參數(shù)只有10×10=100個(gè),參數(shù)數(shù)目大大減小,訓(xùn)練也變得容易了,并且不容易產(chǎn)生過(guò)擬合。當(dāng)然,一個(gè)神經(jīng)元只能提取一個(gè)特征,要提取多個(gè)特征就要多個(gè)卷積核。
下圖揭示了對(duì)一幅8×8維圖像使用卷積方法提取特征的示意過(guò)程。其中使用了3×3的卷積核,走遍圖像中每個(gè)3×3的位置后,最終得到6×6維的輸出圖像:
如圖所示是Hinton的研究小組在ImageNet競(jìng)賽中使用的卷積神經(jīng)網(wǎng)絡(luò)[2],共有5個(gè)卷積層,每層分別有96,256,384,384和256個(gè)卷積核,每層卷積核的大小分別為11×11,5×5,3×3,3×3和3×3。網(wǎng)絡(luò)的最后兩層是全連接層。
6 深度學(xué)習(xí)的訓(xùn)練加速
深層模型訓(xùn)練需要各種技巧,例如網(wǎng)絡(luò)結(jié)構(gòu)的選取,神經(jīng)元個(gè)數(shù)的設(shè)定,權(quán)重參數(shù)的初始化,學(xué)習(xí)率的調(diào)整,Mini-batch的控制等等。即便對(duì)這些技巧十分精通,實(shí)踐中也要多次訓(xùn)練,反復(fù)摸索嘗試。此外,深層模型參數(shù)多,計(jì)算量大,訓(xùn)練數(shù)據(jù)的規(guī)模也更大,需要消耗很多計(jì)算資源。如果可以讓訓(xùn)練加速,就可以在同樣的時(shí)間內(nèi)多嘗試幾個(gè)新主意,多調(diào)試幾組參數(shù),工作效率會(huì)明顯提升,對(duì)于大規(guī)模的訓(xùn)練數(shù)據(jù)和模型來(lái)說(shuō),更可以將難以完成的任務(wù)變成可能。這一節(jié)就談?wù)勆顚幽P偷挠?xùn)練加速方法。
6.1 GPU加速
矢量化編程是提高算法速度的一種有效方法。為了提升特定數(shù)值運(yùn)算操作(如矩陣相乘、矩陣相加、矩陣-向量乘法等)的速度,數(shù)值計(jì)算和并行計(jì)算的研究人員已經(jīng)努力了幾十年。矢量化編程強(qiáng)調(diào)單一指令并行操作多條相似數(shù)據(jù),形成單指令流多數(shù)據(jù)流(SIMD)的編程泛型。深層模型的算法,如BP,Auto-Encoder,CNN等,都可以寫(xiě)成矢量化的形式。然而,在單個(gè)CPU上執(zhí)行時(shí),矢量運(yùn)算會(huì)被展開(kāi)成循環(huán)的形式,本質(zhì)上還是串行執(zhí)行。
GPU(Graphic Process Units,圖形處理器)的眾核體系結(jié)構(gòu)包含幾千個(gè)流處理器,可將矢量運(yùn)算并行化執(zhí)行,大幅縮短計(jì)算時(shí)間。隨著NVIDIA、AMD等公司不斷推進(jìn)其GPU的大規(guī)模并行架構(gòu)支持,面向通用計(jì)算的GPU(General-Purposed GPU, GPGPU)已成為加速可并行應(yīng)用程序的重要手段。得益于GPU眾核(many-core)體系結(jié)構(gòu),程序在GPU系統(tǒng)上的運(yùn)行速度相較于單核CPU往往提升幾十倍乃至上千倍。目前GPU已經(jīng)發(fā)展到了較為成熟的階段,受益最大的是科學(xué)計(jì)算領(lǐng)域,典型的成功案例包括多體問(wèn)題(N-Body Problem)、蛋白質(zhì)分子建模、醫(yī)學(xué)成像分析、金融計(jì)算、密碼計(jì)算等。
利用GPU來(lái)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò),可以充分發(fā)揮其數(shù)以千計(jì)計(jì)算核心的高效并行計(jì)算能力,在使用海量訓(xùn)練數(shù)據(jù)的場(chǎng)景下,所耗費(fèi)的時(shí)間大幅縮短,占用的服務(wù)器也更少。如果對(duì)針對(duì)適當(dāng)?shù)纳疃壬窠?jīng)網(wǎng)絡(luò)進(jìn)行合理優(yōu)化,一塊GPU卡可相當(dāng)于數(shù)十甚至上百臺(tái)CPU服務(wù)器的計(jì)算能力,因此GPU已經(jīng)成為業(yè)界在深度學(xué)習(xí)模型訓(xùn)練方面的首選解決方案。
6.2數(shù)據(jù)并行
數(shù)據(jù)并行是指對(duì)訓(xùn)練數(shù)據(jù)做切分,同時(shí)采用多個(gè)模型實(shí)例,對(duì)多個(gè)分片的數(shù)據(jù)并行訓(xùn)練。
要完成數(shù)據(jù)并行需要做參數(shù)交換,通常由一個(gè)參數(shù)服務(wù)器(Parameter Server)來(lái)幫助完成。在訓(xùn)練的過(guò)程中,多個(gè)訓(xùn)練過(guò)程相互獨(dú)立,訓(xùn)練的結(jié)果,即模型的變化量ΔW需要匯報(bào)給參數(shù)服務(wù)器,由參數(shù)服務(wù)器負(fù)責(zé)更新為最新的模型W’ = W – η ? ΔW,然后再將最新的模型W’分發(fā)給訓(xùn)練程序,以便從新的起點(diǎn)開(kāi)始訓(xùn)練。
數(shù)據(jù)并行有同步模式和異步模式之分。同步模式中,所有訓(xùn)練程序同時(shí)訓(xùn)練一個(gè)批次的訓(xùn)練數(shù)據(jù),完成后經(jīng)過(guò)同步,再同時(shí)交換參數(shù)。參數(shù)交換完成后所有的訓(xùn)練程序就有了共同的新模型作為起點(diǎn),再訓(xùn)練下一個(gè)批次。而異步模式中,訓(xùn)練程序完成一個(gè)批次的訓(xùn)練數(shù)據(jù),立即和參數(shù)服務(wù)器交換參數(shù),不考慮其他訓(xùn)練程序的狀態(tài)。異步模式中一個(gè)訓(xùn)練程序的最新結(jié)果不會(huì)立刻體現(xiàn)在其他訓(xùn)練程序中,直到他們進(jìn)行下次參數(shù)交換。
參數(shù)服務(wù)器只是一個(gè)邏輯上的概念,不一定部署為獨(dú)立的一臺(tái)服務(wù)器。有時(shí)候它會(huì)附屬在某一個(gè)訓(xùn)練程序上,有時(shí)也會(huì)將參數(shù)服務(wù)器按照模型劃分為不同的分片,分別部署。
6.3模型并行
模型并行將模型拆分成幾個(gè)分片,由幾個(gè)訓(xùn)練單元分別持有,共同協(xié)作完成訓(xùn)練。當(dāng)一個(gè)神經(jīng)元的輸入來(lái)自另一個(gè)訓(xùn)練單元上的神經(jīng)元的輸出時(shí),產(chǎn)生通信開(kāi)銷(xiāo)。
多數(shù)情況下,模型并行帶來(lái)的通信開(kāi)銷(xiāo)和同步消耗超過(guò)數(shù)據(jù)并行,因此加速比也不及數(shù)據(jù)并行。但對(duì)于單機(jī)內(nèi)存無(wú)法容納的大模型來(lái)說(shuō),模型并行是一個(gè)很好的選擇。令人遺憾的是,數(shù)據(jù)并行和模型并行都不能無(wú)限擴(kuò)展。數(shù)據(jù)并行的訓(xùn)練程序太多時(shí),不得不減小學(xué)習(xí)率,以保證訓(xùn)練過(guò)程的平穩(wěn);模型并行的分片太多時(shí),神經(jīng)元輸出值的交換量會(huì)急劇增加,效率大幅下降。因此,同時(shí)進(jìn)行模型并行和數(shù)據(jù)并行也是一種常見(jiàn)的方案。如下圖所示,4個(gè)GPU分為兩組,GPU0,1為一組模型并行,GPU2,3為另一組,每組模型并行在計(jì)算過(guò)程中交換輸出值和殘差。兩組GPU之間形成數(shù)據(jù)并行,Mini-batch結(jié)束后交換模型權(quán)重,考慮到模型的藍(lán)色部分由GPU0和GPU2持有,而黃色部分由GPU1和GPU3持有,因此只有同色的GPU之間需要交換權(quán)重。
6.4計(jì)算集群
搭建CPU集群用于深度神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練也是業(yè)界常用的解決方案,其優(yōu)勢(shì)在于利用大規(guī)模分布式計(jì)算集群的強(qiáng)大計(jì)算能力,利用模型可分布式存儲(chǔ)、參數(shù)可異步通信的特點(diǎn),達(dá)到快速訓(xùn)練深層模型的目的。
CPU集群方案的基本架構(gòu)包含用于執(zhí)行訓(xùn)練任務(wù)的Worker、用于分布式存儲(chǔ)分發(fā)模型的參數(shù)服務(wù)器(Parameter Server)和用于協(xié)調(diào)整體任務(wù)的主控程序(Master)。CPU集群方案適合訓(xùn)練GPU內(nèi)存難以容納的大模型,以及稀疏連接神經(jīng)網(wǎng)絡(luò)。Andrew Ng和Jeff Dean在Google用1000臺(tái)CPU服務(wù)器,完成了模型并行和Downpour SGD數(shù)據(jù)并行的深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練[17]。
結(jié)合GPU計(jì)算和集群計(jì)算技術(shù),構(gòu)建GPU集群正在成為加速大規(guī)模深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練的有效解決方案。GPU集群搭建在CPU-GPU系統(tǒng)之上,采用萬(wàn)兆網(wǎng)卡或Infiniband等更加快速的網(wǎng)絡(luò)通信設(shè)施,以及樹(shù)形拓?fù)涞冗壿嬀W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在發(fā)揮出單節(jié)點(diǎn)較高計(jì)算能力的基礎(chǔ)上,再充分挖掘集群中多臺(tái)服務(wù)器的協(xié)同計(jì)算能力,進(jìn)一步加速大規(guī)模訓(xùn)練任務(wù)。
7 深度學(xué)習(xí)的軟件工具及平臺(tái)
目前,在深度學(xué)習(xí)系統(tǒng)實(shí)現(xiàn)方面,已有諸多較為成熟的軟件工具和平臺(tái)。
7.1 開(kāi)源軟件
在開(kāi)源社區(qū),主要有以下較為成熟的軟件工具:
Kaldi是一個(gè)基于C++和CUDA的語(yǔ)音識(shí)別工具集[18][19],提供給語(yǔ)音識(shí)別的研究人員使用。Kaldi中既實(shí)現(xiàn)了用單個(gè)GPU加速的深度神經(jīng)網(wǎng)絡(luò)SGD訓(xùn)練,也實(shí)現(xiàn)了CPU多線程加速的深度神經(jīng)網(wǎng)絡(luò)SGD訓(xùn)練。
Cuda-convnet基于C++/CUDA編寫(xiě),采用反向傳播算法的深度卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)[20][21]。2012年cuda-convnet發(fā)布,可支持單個(gè)GPU上的訓(xùn)練,基于其訓(xùn)練的深度卷積神經(jīng)網(wǎng)絡(luò)模型在ImageNet LSVRC-2012對(duì)圖像按1000個(gè)類目分類,取得Top 5分類15%錯(cuò)誤率的結(jié)果[2];2014年發(fā)布的版本可以支持多GPU上的數(shù)據(jù)并行和模型并行訓(xùn)練[22]。
Caffe提供了在CPU以及GPU上的快速卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),同時(shí)提供訓(xùn)練算法,使用NVIDIA K40或Titan GPU可以1天完成多于40,000,000張圖片的訓(xùn)練[23][24]。
Theano提供了在深度學(xué)習(xí)數(shù)學(xué)計(jì)算方面的Python庫(kù),它整合了NumPy矩陣計(jì)算庫(kù),可以運(yùn)行在GPU上,并提供良好的算法上的擴(kuò)展性[25][26]。
OverFeat是由紐約大學(xué)CILVR實(shí)驗(yàn)室開(kāi)發(fā)的基于卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng),主要應(yīng)用場(chǎng)景為圖像識(shí)別和圖像特征提取[27]。
Torch7是一個(gè)為機(jī)器學(xué)習(xí)算法提供廣泛支持的科學(xué)計(jì)算框架,其中的神經(jīng)網(wǎng)絡(luò)工具包(Package)實(shí)現(xiàn)了均方標(biāo)準(zhǔn)差代價(jià)函數(shù)、非線性激活函數(shù)和梯度下降訓(xùn)練神經(jīng)網(wǎng)絡(luò)的算法等基礎(chǔ)模塊,可以方便地配置出目標(biāo)多層神經(jīng)網(wǎng)絡(luò)開(kāi)展訓(xùn)練實(shí)驗(yàn)[28]。
7.2 工業(yè)界平臺(tái)
在工業(yè)界,Google、Facebook、百度、騰訊等公司都實(shí)現(xiàn)了自己的軟件框架:
Google的DistBelief系統(tǒng)是CPU集群實(shí)現(xiàn)的數(shù)據(jù)并行和模型并行框架,集群內(nèi)使用上萬(wàn)CPU core來(lái)訓(xùn)練多達(dá)10億參數(shù)的深度神經(jīng)網(wǎng)絡(luò)模型。DistBelief應(yīng)用的主要算法有Downpour SGD和L-BFGS,支持的目標(biāo)應(yīng)用有語(yǔ)音識(shí)別和2.1萬(wàn)類目的圖像分類[17]。
Google的COTS HPC系統(tǒng)是GPU實(shí)現(xiàn)的數(shù)據(jù)并行和模型并行框架,GPU服務(wù)器間使用了Infiniband連接,并由MPI控制通信。COTS可以用3臺(tái)GPU服務(wù)器在數(shù)天內(nèi)完成對(duì)10億參數(shù)的深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練[29]。
Facebook實(shí)現(xiàn)了多GPU訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)的并行框架,結(jié)合數(shù)據(jù)并行和模型并行的方式來(lái)訓(xùn)練CNN模型,使用4張NVIDIA Titan GPU可在數(shù)天內(nèi)訓(xùn)練ImageNet的1000分類網(wǎng)絡(luò)[30]。
百度搭建了Paddle(Parallel Asynchonous Distributed Deep Learning)多機(jī)GPU訓(xùn)練平臺(tái)[31]。將數(shù)據(jù)分布到不同機(jī)器,通過(guò)Parameter Server協(xié)調(diào)各機(jī)器訓(xùn)練。Paddle支持?jǐn)?shù)據(jù)并行和模型并行。
騰訊深度學(xué)習(xí)平臺(tái)(Mariana)是為加速深度學(xué)習(xí)模型訓(xùn)練而開(kāi)發(fā)的并行化平臺(tái),包括深度神經(jīng)網(wǎng)絡(luò)的多GPU數(shù)據(jù)并行框架,深度卷積神經(jīng)網(wǎng)絡(luò)的多GPU模型并行和數(shù)據(jù)并行框架,以及深度神經(jīng)網(wǎng)絡(luò)的CPU集群框架。Mariana基于特定應(yīng)用的訓(xùn)練場(chǎng)景,設(shè)計(jì)定制化的并行化訓(xùn)練平臺(tái),支持了語(yǔ)音識(shí)別、圖像識(shí)別,并積極探索在廣告推薦中的應(yīng)用[32]。
8 總結(jié)
近年來(lái)人工智能領(lǐng)域掀起了深度學(xué)習(xí)的浪潮,從學(xué)術(shù)界到工業(yè)界都熱情高漲。深度學(xué)習(xí)嘗試解決人工智能中抽象認(rèn)知的難題,從理論分析和應(yīng)用方面都獲得了很大的成功。可以說(shuō)深度學(xué)習(xí)是目前最接近人腦的智能學(xué)習(xí)方法。
深度學(xué)習(xí)可通過(guò)學(xué)習(xí)一種深層非線性網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)復(fù)雜函數(shù)逼近,并展現(xiàn)了強(qiáng)大的學(xué)習(xí)數(shù)據(jù)集本質(zhì)和高度抽象化特征的能力。逐層初始化等訓(xùn)練方法顯著提升了深層模型的可學(xué)習(xí)型。與傳統(tǒng)的淺層模型相比,深層模型經(jīng)過(guò)了若干層非線性變換,帶給模型強(qiáng)大的表達(dá)能力,從而有條件為更復(fù)雜的任務(wù)建模。與人工特征工程相比,自動(dòng)學(xué)習(xí)特征,更能挖掘出數(shù)據(jù)中豐富的內(nèi)在信息,并具備更強(qiáng)的可擴(kuò)展性。深度學(xué)習(xí)順應(yīng)了大數(shù)據(jù)的趨勢(shì),有了充足的訓(xùn)練樣本,復(fù)雜的深層模型可以充分發(fā)揮其潛力,挖掘出海量數(shù)據(jù)中蘊(yùn)含的豐富信息。強(qiáng)有力的基礎(chǔ)設(shè)施和定制化的并行計(jì)算框架,讓以往不可想象的訓(xùn)練任務(wù)加速完成,為深度學(xué)習(xí)走向?qū)嵱玫於藞?jiān)實(shí)的基矗已有Kaldi,Cuda-convnet,Caffe等多個(gè)針對(duì)不同深度模型的開(kāi)源實(shí)現(xiàn),Google、Facebook、百度、騰訊等公司也實(shí)現(xiàn)了各自的并行化框架。
深度學(xué)習(xí)引爆的這場(chǎng)革命,將人工智能帶上了一個(gè)新的臺(tái)階,不僅學(xué)術(shù)意義巨大,而且實(shí)用性很強(qiáng),深度學(xué)習(xí)將成為一大批產(chǎn)品和服務(wù)背后強(qiáng)大的技術(shù)引擎。
參考文獻(xiàn)
[1] Geoffery E. Hinton, Salakhutdinov RR. Reducing the dimensionality of data with neural networks. Science. 2006 Jul 28;313(5786):504-7.
[2] ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.
[3] Q.V. Le, M.A. Ranzato, R. Monga, M. Devin, K. Chen, G.S. Corrado, J. Dean, A.Y. Ng. Building high-level features using large scale unsupervised learning. ICML, 2012.
[4] Rick Rashid, Speech Recognition Breakthrough for the Spoken, Translated Word?v=Nu-nlQqFCKg
[5] NYU “Deep Learning” Professor LeCun Will Lead Facebook’s New Artificial Intelligence Lab.
[6] Stanford deep learning tutorial
[7] A Primer on Deep Learning
[8] The Nobel Prize in Physiology or Medicine 1981.
[9] Bruno A. Olshausen & David J. Field, Emergence of simple-cell receptive field properties by learning a sparse code for natural images. Nature. Vol 381. 13 June, 1996 ~little/cpsc425/olshausen_field_nature_1996.pdf
[10] Back propagation algorithm
[11] 余凱,深度學(xué)習(xí)-機(jī)器學(xué)習(xí)的新浪潮,Technical News程序天下事
[12] Support Vector Machine
[13] Logistic Regression
[14] Deep Networks Overview :_Overview
[15] Y. LeCun and Y. Bengio. Convolutional networks for images, speech, and time-series. In M. A. Arbib, editor, The Handbook of Brain Theory and Neural Networks. MIT Press, 1995
[16] Introduction to Convolutional neural network
[17] Dean, J., Corrado, G.S., Monga, R., et al, Ng, A. Y. Large Scale Distributed Deep Networks. In Proceedings of the Neural Information Processing Systems (NIPS’12) (Lake Tahoe, Nevada, United States, December 3–6, 2012). Curran Associates, Inc, 57 Morehouse Lane, Red Hook, NY, 2013, 1223-1232.
[18] Kaldi project
[19] Povey, D., Ghoshal, A. Boulianne, G., et al, Vesely, K. Kaldi. The Kaldi Speech Recognition Toolkit. in Proceedings of IEEE 2011 Workshop on Automatic Speech Recognition and Understanding(ASRU 2011) (Hilton Waikoloa Village, Big Island, Hawaii, US, December 11-15, 2011). IEEE Signal Processing Society. IEEE Catalog No.: CFP11SRW-USB.
[20] cuda-convent https://code.google.com/p/cuda-convnet/
[21] Krizhevsky, A., Sutskever, I., and Hinton, G.E. ImageNet Classification with Deep Convolutional Neural Networks. In Proceedings of the Neural Information Processing Systems (NIPS’12) (Lake Tahoe, Nevada, United States, December 3–6, 2012). Curran Associates, Inc, 57 Morehouse Lane, Red Hook, NY, 2013, 1097-1106.
[22] Krizhevsky, A. Parallelizing Convolutional Neural Networks. in tutorial of IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2014). (Columbus, Ohio, USA, June 23-28, 2014). 2014.
[23] caffe
[24] Jia, Y. Q. Caffe: An Open Source Convolutional Architecture for Fast Feature Embedding. (2013).
[25] Theano https://github.com/Theano/Theano
[26] J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley and Y. Bengio. Theano: A CPU and GPU Math Expression Compiler. Proceedings of the Python for Scientific Computing Conference (SciPy) 2010. June 30 – July 3, Austin, TX.
[27] Overfeat ?id=code:start
[28] Torch7
[29] Coates, A., Huval, B., Wang, T., Wu, D. J., Ng, A. Y. Deep learning with COTS HPC systems. In Proceedings of the 30th International Conference on Machine Learning (ICML’13) (Atlanta, Georgia, USA, June 16–21, 2013). JMLR: W&CP volume 28(3), 2013, 1337-1345.
[30] Yadan, O., Adams, K., Taigman, Y., Ranzato, M. A. Multi-GPU Training of ConvNets. arXiv:1312.5853v4 [cs.LG] (February 2014)
[31] Kaiyu, Large-scale Deep Learning at Baidu, ACM International Conference on Information and Knowledge Management (CIKM 2013)
[32] aaronzou, Mariana深度學(xué)習(xí)在騰訊的平臺(tái)化和應(yīng)用實(shí)踐
[33] Geoffrey E. Hinton, Simon Osindero, Yee-Whye Teh, A fast learning algorithm for deep belief nets Neural Compute, 18(7), 1527-54 (2006)
[34] Andrew Ng. Machine Learning and AI via Brain simulations,
https://forum.stanford.edu/events/2011slides/plenary/2011plenaryNg.pdf
[35] Geoffrey Hinton:UCLTutorial on: Deep Belief Nets
[36] Krizhevsky, Alex. “ImageNet Classification with Deep Convolutional Neural Networks”. Retrieved 17 November 2013.
[37] “Convolutional Neural Networks (LeNet) – DeepLearning 0.1 documentation”. DeepLearning 0.1. LISA Lab. Retrieved 31 August 2013.
[38] Bengio, Learning Deep Architectures for AI, ~bengioy/papers/ftml_book.pdf;
[39] Deep Learning
[40] Deep Learning ~yann/research/deep/
[41] Introduction to Deep Learning.
[42] Google的貓臉識(shí)別:人工智能的新突破
[43] Andrew Ng’s talk video:
[44] Invited talk “A Tutorial on Deep Learning” by Dr. Kai Yu
評(píng)論
查看更多