深度學習綜述

摘要:?深度學習可以完成需要高度抽象特征的人工智能任務,如語音識別、圖像識別和檢索、自然語言理解等。深層模型是包含多個隱藏層的人工神經網絡,多層非線性結構使其具備強大的特征表達能力和對復雜任務建模能力。訓練深層模型是長期以來的難題,近年來以層次化、逐層初始化為代表的一系列方法的提出給訓練深層模型帶來了希望,并在多個應用領域獲得了成功。深層模型的并行化框架和訓練加速方法是深度學習走向實用的重要基石,已有多個針對不同深度模型的開源實現,Google、Facebook、百度、騰訊等公司也實現了各自的并行化框架。深度學習是目前最接近人腦的智能學習方法,深度學習引爆的這場革命,將人工智能帶上了一個新的臺階,將對一大批產品和服務產生深遠影響。

深層模型的基本結構

深度學習采用的模型為深層神經網絡(Deep Neural Networks,DNN)模型,即包含多個隱藏層(Hidden Layer,也稱隱含層)的神經網絡(Neural Networks,NN)。深度學習利用模型中的隱藏層,通過特征組合的方式,逐層將原始輸入轉化為淺層特征,中層特征,高層特征直至最終的任務目標。

深度學習源于人工神經網絡的研究,先來回顧一下人工神經網絡。一個神經元如下圖所式[15]:

圖1 神經元結構

這個神經元接受三個輸入x1,x2,x3,神經元輸出為

h(W,b) (x)=f(∑(i=1)^3?〖W_i x_i+b〗),

其中W1, W2, W3和b為神經元的參數,f(z)稱為激活函數,一種典型的激活函數為Sigmoid函數,即f(z)=1/(1+e^(-z) )其圖像為:

圖2 Sigmoid函數圖像

神經網絡則是多個神經元組成的網絡,一個簡單的神經網絡如下圖所示:

圖3 一個簡單的神經網絡

使用圓圈來表示神經網絡的輸入,標上“+1”的圓圈稱為偏置節點,也就是截距項。神經網絡最左邊的一層叫做輸入層(本例中,有3個輸入單元,偏置單元不計);最右的一層叫做輸出層(本例中,輸出層有2個節點);中間的節點叫做隱藏層(本例中,有2個隱藏層,分別包含3個和2個神經元,偏置單元同樣不計),因為不能在訓練樣本集中觀測到它們的值。神經元網絡中的每一條連線對應一個連接參數,連線個數對應網絡的參數個數(本例共有4×3 + 4×2 +3×2=26個參數)。求解這個的神經網絡,需要(x(i),y(i))的樣本集,其中x(i)是3維向量,y(i)是2維向量。

上圖算是一個淺層的神經網絡,下圖是一個用于語音識別的深層神經網絡。具有1個輸入層,4個隱藏層和1個輸出層,相鄰兩層的神經元全部連接。

圖4 一種典型的深層神經網絡模型

選擇深層模型的原因

為什么要構造包含這么多隱藏層的深層網絡結構呢?背后有一些理論依據:

天然層次化的特征

對于很多訓練任務來說,特征具有天然的層次結構。以語音、圖像、文本為例,層次結構大概如下表所示。

表1 幾種任務領域的特征層次結構

以圖像識別為例,圖像的原始輸入是像素,相鄰像素組成線條,多個線條組成紋理,進一步形成圖案,圖案構成了物體的局部,直至整個物體的樣子。不難發現,可以找到原始輸入和淺層特征之間的聯系,再通過中層特征,一步一步獲得和高層特征的聯系。想要從原始輸入直接跨越到高層特征,無疑是困難的。

圖5 人臉識別系統的多層結構和特征表示 [7]

特征的層次可表示性

特征的層次可表示性也得到了證實。1995年前后,Bruno Olshausen和David Field[8]收集了很多黑白風景照,從這些照片中找到了400個16×16的基本碎片,然后從照片中再找到其他一些同樣大小的碎片,希望將其他碎片表示為這400個基本碎片的線性組合,并使誤差盡可能小,使用的碎片盡可能少。表示完成后,再固定其他碎片,選擇更合適的基本碎片組合優化近似結果。反復迭代后,得到了可以表示其他碎片的最佳的基本碎片組合。他們發現,這些基本碎片組合都是不同物體不同方向的邊緣線。

圖6 初級圖像特征的提取和表示(Sparse Coding)(原圖由Andrew Ng提供)

這說明可以通過有效的特征提取,將像素抽象成更高級的特征。類似的結果也適用于語音特征。

從淺層模型到深層模型

前文談到了深層模型的結構和它的優勢。事實上,深層模型具有強大的表達能力,并可以像人類一樣有效提取高級特征,并不是新的發現。那么為什么深層模型直到最近幾年才開始得到廣泛的關注和應用呢?還是從傳統的機器學習方法和淺層學習談起。

淺層模型及訓練方法

反向傳播算法(Back Propagation,BP算法)[11]是一種神經網絡的梯度計算方法。反向傳播算法先定義模型在訓練樣本上的代價函數,再求代價函數對于每個參數的梯度。反向傳播算法巧妙的利用了下層神經元的梯度可由上層神經元的殘差導出的規律,求解的過程也正如算法的名字那樣,自上而下反向逐層計算,直至獲得所有參數的梯度。反向傳播算法可以幫助訓練基于統計的機器學習模型,從大量的訓練樣本中挖掘出統計規律,進而可對未標注的數據進行預測。這種基于統計的學習方法比起傳統的基于規則的方法具備很多優越性[16]。

上世紀八九十年代,人們提出了一系列機器學習模型,應用最為廣泛的包括支持向量機(Support Vector Machine,SVM)[12]和邏輯回歸(Logistic Regression,LR)[13],這兩種模型分別可以看作包含1個隱藏層和沒有隱藏層的淺層模型。訓練時可以利用反向傳播算法計算梯度,再用梯度下降方法在參數空間中尋找最優解。淺層模型往往具有凸代價函數,理論分析相對簡單,訓練方法也容易掌握,取得了很多成功的應用。

深層模型的訓練難度

淺層模型的局限性在于有限參數和計算單元,對復雜函數的表示能力有限,針對復雜分類問題其泛化能力受到一定的制約。深層模型恰恰可以克服淺層模型的這一弱點,然而應用反向傳播和梯度下降來訓練深層模型,就面臨幾個突出的問題[10]:

1.梯局部最優。與淺層模型的代價函數不同,深層模型的每個神經元都是非線性變換,代價函數是高度非凸函數,采用梯度下降的方法容易陷入局部最優。

2.梯度彌散。使用反向傳播算法傳播梯度的時候,隨著傳播深度的增加,梯度的幅度會急劇減小,會導致淺層神經元的權重更新非常緩慢,不能有效學習。這樣一來,深層模型也就變成了前幾層相對固定,只能改變最后幾層的淺層模型。

3.數據獲取。深層模型的表達能力強大,模型的參數也相應增加。對于訓練如此多參數的模型,小訓練數據集是不能實現的,需要海量的有標記的數據,否則只能導致嚴重的過擬合(Over fitting)。

深層模型的訓練方法

盡管挑戰很大,Hinton教授并沒有放棄努力,他30年來一直從事相關研究,終于有了突破性的進展。2006年,他在《Science》上發表了一篇文章[1],掀起了深度學習在學術界和工業界的浪潮。這篇文章的兩個主要觀點是:

1.多隱藏層的人工神經網絡具有優異的特征學習能力,學習到的特征對數據有更本質的刻畫,從而有利于可視化或分類。

2.深度神經網絡在訓練上的難度,可以通過“逐層初始化”(Layer-wise Pre-training)來有效克服,文中給出了無監督的逐層初始化方法。

優異的特征刻畫能力前文已經提到,不再累述,下面重點解釋一下“逐層初始化”的方法。

圖7 逐層初始化的方法(原圖由Marc’Aurelio Ranzato提供)

給定原始輸入后,先要訓練模型的第一層,即圖中左側的黑色框。黑色框可以看作是一個編碼器,將原始輸入編碼為第一層的初級特征,可以將編碼器看作模型的一種“認知”。為了驗證這些特征確實是輸入的一種抽象表示,且沒有丟失太多信息,需要引入一個對應的解碼器,即圖中左側的灰色框,可以看作模型的“生成”。為了讓認知和生成達成一致,就要求原始輸入通過編碼再解碼,可以大致還原為原始輸入。因此將原始輸入與其編碼再解碼之后的誤差定義為代價函數,同時訓練編碼器和解碼器。訓練收斂后,編碼器就是我們要的第一層模型,而解碼器則不再需要了。這時我們得到了原始數據的第一層抽象。固定第一層模型,原始輸入就映射成第一層抽象,將其當作輸入,如法炮制,可以繼續訓練出第二層模型,再根據前兩層模型訓練出第三層模型,以此類推,直至訓練出最高層模型。

逐層初始化完成后,就可以用有標簽的數據,采用反向傳播算法對模型進行整體有監督的訓練了。這一步可看作對多層模型整體的精細調整。由于深層模型具有很多局部最優解,模型初始化的位置將很大程度上決定最終模型的質量。“逐層初始化”的步驟就是讓模型處于一個較為接近全局最優的位置,從而獲得更好的效果。

淺層模型和深層模型的對比

表2 淺層模型和深層模型的對比

淺層模型有一個重要的特點,需要依靠人工經驗來抽取樣本的特征,模型的輸入是這些已經選取好的特征,模型只用來負責分類和預測。在淺層模型中,最重要的往往不是模型的優劣,而是特征的選取的優劣。因此大多數人力都投入到特征的開發和篩選中來,不但需要對任務問題領域有深刻的理解,還要花費大量時間反復實驗摸索,這也限制了淺層模型的效果。

事實上,逐層初始化深層模型也可以看作是特征學習的過程,通過隱藏層對原始輸入的一步一步抽象表示,來學習原始輸入的數據結構,找到更有用的特征,從而最終提高分類問題的準確性。在得到有效特征之后,模型整體訓練也可以水到渠成。

深層模型的層次組件

深層模型是包含多個隱藏層的神經網絡,每一層的具體結構又是怎樣的呢?本節介紹一些常見的深層模型基本層次組件。

自編碼器(Auto-Encoder)

一種常見的深層模型是由自編碼器(Auto-Encoder)構造的[15]。自編碼器可以利用一組無標簽的訓練數據{x(1), x(2), … }(其中x(i)是一個n維向量)進行無監督的模型訓練。它采用反向傳播算法,讓目標值接近輸入值。下圖是一個自編碼器的示例:

圖8 自編碼器

自編碼器嘗試訓練一個恒等函數,讓輸出接近等于輸入值,恒等函數看似沒有學習的意義,但考慮到隱藏層神經元的數目(本例中為3個)小于輸入向量的維數(本例中為6維),事實上隱藏層就變成了輸入數據的一種壓縮的表示,或說是抽象的簡化表示。如果網絡的輸入是完全隨機的,將高維向量壓縮成低維向量會難以實現。但訓練數據往往隱含著特定的結構,自編碼器就會學到這些數據的相關性,從而得到有效的壓縮表示。實際訓練后,如果代價函數越小,就說明輸入和輸出越接近,也就說明這個編碼器越靠譜。當然,自編碼器訓練完成后,實際使用時只需要它的前一層,即編碼部分,解碼部分就沒用了。

稀疏自編碼器(Sparse Auto-Encoder)是自編碼器的一個變體,它在自編碼器的基礎上加入正則化(Regularity)。正則化是在代價函數中加入抑制項,希望隱藏層節點的平均激活值接近于0,有了正則化的約束,輸入數據可以用少數隱藏節點表達。之所以采用稀疏自編碼器,是因為稀疏的表達往往比稠密的表達更有效,人腦神經系統也是稀疏連接,每個神經元只與少數神經元連接。

降噪自編碼器是另一種自編碼器的變體。通過在訓練數據中加入噪聲,可訓練出對輸入信號更加魯棒的表達,從而提升模型的泛化能力,可以更好地應對實際預測時夾雜在數據中的噪聲。

得到自編碼器后,我們還想進一步了解自編碼器到底學到了什么。例如,在10×10的圖像上訓練一個稀疏自編碼器,然后對于每個隱藏神經元,找到什么樣的圖像可以讓隱藏神經元獲得最大程度的激勵,即這個隱藏神經元學習到了什么樣的特征。將100個隱藏神經元的特征都找出來,得到了如下100幅圖像:

圖9 自編碼器的隱藏神經元 [15]

可以看出,這100幅圖像具備了從不同方向檢測物體邊緣的能力。顯然,這樣的能力對后續的圖像識別很有幫助。

受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)

受限玻爾茲曼機(Restricted Boltzmann Machine, RBM)是一個二部圖,一層是輸入層(v),另一層是隱藏層(h),假設所有節點都是隨機二值變量節點,只能取值0或1,同時假設全概率分布p(v, h)滿足Boltzmann分布。

圖10受限玻爾茲曼機(RBM)

由于同層節點之間沒有連接,因此已知輸入層的情況下,隱藏層的各節點是條件獨立的;反之,已知隱藏層的情況下,輸入層各節點也是條件獨立的。同時,可以根據Boltzmann分布,當輸入v時通過p(h|v)生成隱藏層,得到隱藏層之后再通過p(v|h)生成輸入層。相信很多讀者已經猜到了,可以按照訓練其他網絡類似的思路,通過調整參數,希望通過輸入v生成的h,再生成的v’與v盡可能接近,則說明隱藏層h是輸入層v的另外一種表示。這樣就可以作為深層模型的基本層次組件了。全部用RBM形成的深層模型為深度玻爾茲曼機(Deep Boltzmann Machine,DBM)。如果將靠近輸入層的部分替換為貝葉斯信念網絡,即有向圖模型,而在遠離輸入層的部分仍然使用RBM,則稱為深度信念網絡(Deep Belief Networks,DBN)。

卷積神經網絡(Convolutional Neural Networks, CNN)

以上介紹的編碼器都是全連通網絡,可以完成10×10的圖像識別,如手寫體數字識別問題。然而對于更大的圖像,如100×100的圖像,如果要學習100個特征,則需要1,000,000個參數,計算時間會大大增加。解決這種尺寸圖像識別的有效方法是利用圖像的局部性,構造一個部分聯通的網絡。一種最常見的網絡是卷積神經網絡(Convolutional Neural Networks,CNN)[19][20],它利用圖像固有的特性,即圖像局部的統計特性與其他局部是一樣的。因此從某個局部學習來的特征同樣適用于另外的局部,對于這個圖像上的所有位置,都能使用同樣的特征。

具體地說,假設有一幅100×100的圖像,要從中學習一個10×10的局部圖像特征的神經元,如果采用全連接的方式,100×100維的輸入到這個神經元需要有10000個連接權重參數。而采用卷積核的方式,只有10×10=100個參數權重,卷積核可以看作一個10×10的小窗口,在圖像上上下左右移動,走遍圖像中每個10×10的位置(共有91×91個位置)。每移動到一個位置,則將該位置的輸入與卷積核對應位置的參數相乘再累加,得到一個輸出值(輸出值是91×91的圖像)。卷積核的特點是連接數雖然很多,有91×91×10×10個連接,但是參數只有10×10=100個,參數數目大大減小,訓練也變得容易了,并且不容易產生過擬合。當然,一個神經元只能提取一個特征,要提取多個特征就要多個卷積核。

下圖揭示了對一幅8×8維圖像使用卷積方法提取特征的示意過程。其中使用了3×3的卷積核,走遍圖像中每個3×3的位置后,最終得到6×6維的輸出圖像:

圖11 8×8圖像的卷積過程示意

圖12 用戶圖像分類的卷積神經網絡

如圖所示是Hinton的研究小組在ImageNet競賽中使用的卷積神經網絡[3],共有5個卷積層,每層分別有96,256,384,384和256個卷積核,每層卷積核的大小分別為11×11,5×5,3×3,3×3和3×3。網絡的最后兩層是全連接層。

深度學習的訓練加速

深層模型訓練需要各種技巧,例如網絡結構的選取,神經元個數的設定,權重參數的初始化,學習率的調整,Mini-batch的控制等等。即便對這些技巧十分精通,實踐中也要多次訓練,反復摸索嘗試。此外,深層模型參數多,計算量大,訓練數據的規模也更大,需要消耗很多計算資源。如果可以讓訓練加速,就可以在同樣的時間內多嘗試幾個新主意,多調試幾組參數,工作效率會明顯提升,對于大規模的訓練數據和模型來說,更可以將難以完成的任務變成可能。這一節就談談深層模型的訓練加速方法。

GPU加速

矢量化編程是提高算法速度的一種有效方法。為了提升特定數值運算操作(如矩陣相乘、矩陣相加、矩陣-向量乘法等)的速度,數值計算和并行計算的研究人員已經努力了幾十年。矢量化編程強調單一指令并行操作多條相似數據,形成單指令流多數據流(SIMD)的編程泛型。深層模型的算法,如BP,Auto-Encoder,CNN等,都可以寫成矢量化的形式。然而,在單個CPU上執行時,矢量運算會被展開成循環的形式,本質上還是串行執行。

GPU(Graphic Process Units,圖形處理器)的眾核體系結構包含幾千個流處理器,可將矢量運算并行化執行,大幅縮短計算時間。隨著NVIDIA、AMD等公司不斷推進其GPU的大規模并行架構支持,面向通用計算的GPU(General-Purposed GPU, GPGPU)已成為加速可并行應用程序的重要手段。得益于GPU眾核(many-core)體系結構,程序在GPU系統上的運行速度相較于單核CPU往往提升幾十倍乃至上千倍。目前GPU已經發展到了較為成熟的階段,受益最大的是科學計算領域,典型的成功案例包括多體問題(N-Body Problem)、蛋白質分子建模、醫學成像分析、金融計算、密碼計算等。

利用GPU來訓練深度神經網絡,可以充分發揮其數以千計計算核心的高效并行計算能力,在使用海量訓練數據的場景下,所耗費的時間大幅縮短,占用的服務器也更少。如果對針對適當的深度神經網絡進行合理優化,一塊GPU卡可相當于數十甚至上百臺CPU服務器的計算能力,因此GPU已經成為業界在深度學習模型訓練方面的首選解決方案。

數據并行

數據并行是指對訓練數據做切分,同時采用多個模型實例,對多個分片的數據并行訓練。

圖13 數據并行的基本架構 [17]

要完成數據并行需要做參數交換,通常由一個參數服務器(Parameter Server)來幫助完成。在訓練的過程中,多個訓練過程相互獨立,訓練的結果,即模型的變化量ΔW需要匯報給參數服務器,由參數服務器負責更新為最新的模型W’ = W – η ? ΔW,然后再將最新的模型W’分發給訓練程序,以便從新的起點開始訓練。

數據并行有同步模式和異步模式之分。同步模式中,所有訓練程序同時訓練一個批次的訓練數據,完成后經過同步,再同時交換參數。參數交換完成后所有的訓練程序就有了共同的新模型作為起點,再訓練下一個批次。而異步模式中,訓練程序完成一個批次的訓練數據,立即和參數服務器交換參數,不考慮其他訓練程序的狀態。異步模式中一個訓練程序的最新結果不會立刻體現在其他訓練程序中,直到他們進行下次參數交換。

參數服務器只是一個邏輯上的概念,不一定部署為獨立的一臺服務器。有時候它會附屬在某一個訓練程序上,有時也會將參數服務器按照模型劃分為不同的分片,分別部署。

模型并行

模型并行將模型拆分成幾個分片,由幾個訓練單元分別持有,共同協作完成訓練。當一個神經元的輸入來自另一個訓練單元上的神經元的輸出時,產生通信開銷。

圖14 模型并行的基本架構 [17]

多數情況下,模型并行帶來的通信開銷和同步消耗超過數據并行,因此加速比也不及數據并行。但對于單機內存無法容納的大模型來說,模型并行是一個很好的選擇。令人遺憾的是,數據并行和模型并行都不能無限擴展。數據并行的訓練程序太多時,不得不減小學習率,以保證訓練過程的平穩;模型并行的分片太多時,神經元輸出值的交換量會急劇增加,效率大幅下降。因此,同時進行模型并行和數據并行也是一種常見的方案。如下圖所示,4個GPU分為兩組,GPU0,1為一組模型并行,GPU2,3為另一組,每組模型并行在計算過程中交換輸出值和殘差。兩組GPU之間形成數據并行,Mini-batch結束后交換模型權重,考慮到模型的藍色部分由GPU0和GPU2持有,而黃色部分由GPU1和GPU3持有,因此只有同色的GPU之間需要交換權重。

圖15 4GPU卡的數據并行和模型并行混合架構

計算集群

搭建CPU集群用于深度神經網絡模型訓練也是業界常用的解決方案,其優勢在于利用大規模分布式計算集群的強大計算能力,利用模型可分布式存儲、參數可異步通信的特點,達到快速訓練深層模型的目的。

CPU集群方案的基本架構包含用于執行訓練任務的Worker、用于分布式存儲分發模型的參數服務器(Parameter Server)和用于協調整體任務的主控程序(Master)。CPU集群方案適合訓練GPU內存難以容納的大模型,以及稀疏連接神經網絡。Andrew Ng和Jeff Dean在Google用1000臺CPU服務器,完成了模型并行和Downpour SGD數據并行的深度神經網絡訓練[17]。

結合GPU計算和集群計算技術,構建GPU集群正在成為加速大規模深度神經網絡訓練的有效解決方案。GPU集群搭建在CPU-GPU系統之上,采用萬兆網卡或Infiniband等更加快速的網絡通信設施,以及樹形拓撲等邏輯網絡拓撲結構。在發揮出單節點較高計算能力的基礎上,再充分挖掘集群中多臺服務器的協同計算能力,進一步加速大規模訓練任務。

參考文獻

[1] Geoffery E. Hinton, Salakhutdinov RR. Reducing the dimensionality of data with neural networks. Science. 2006 Jul 28;313(5786):504-7.

[2] Geoffrey E. Hinton, Simon Osindero, Yee-Whye Teh, A fast learning algorithm for deep belief nets Neural Compute, 18(7), 1527-54 (2006)

[3] ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.

[4] 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.

[5] Rick Rashid, Speech Recognition Breakthrough for the Spoken, Translated Wordhttp://

[6] NYU “Deep Learning” Professor LeCun Will Lead Facebook’s New Artificial Intelligence Lab.?

[7] A Primer on Deep Learning

[8] 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

[9] Andrew Ng. Machine Learning and AI via Brain simulations,

[10] Deep Networks Overview

[11] Back propagation algorithm

[12] Support Vector Machine?

[13] Logistic Regression?

[14] The Nobel Prize in Physiology or Medicine 1981.

[15] Stanford deep learning tutorial

[16] 余凱,深度學習-機器學習的新浪潮,Technical News程序天下事

[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] Geoffrey Hinton:UCLTutorial on: Deep Belief Nets

[19] 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

[20] Introduction to Convolutional neural network

[21] Krizhevsky, Alex. “ImageNet Classification with Deep Convolutional Neural Networks”. Retrieved 17 November 2013.

[22] Kaldi project?

[23] 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.

[24] cuda-convent?

[25] 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.

[26] 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.

[27] caffe?

[28] Jia, Y. Q. Caffe: An Open Source Convolutional Architecture for Fast Feature Embedding.??(2013).

[29] Theano?

[30] 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.

[31] Overfeat?

[32] Torch7?http://torch.ch

[33] 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.

[34] Yadan, O., Adams, K., Taigman, Y., Ranzato, M. A. Multi-GPU Training of ConvNets. arXiv:1312.5853v4 [cs.LG] (February 2014)

[35] Kaiyu, Large-scale Deep Learning at Baidu, ACM International Conference on Information and Knowledge Management (CIKM 2013)

[36] aaronzou, Mariana深度學習在騰訊的平臺化和應用實踐

[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,

[39] Deep Learning?

[40] Deep Learning?

[41] Introduction to Deep Learning.?

[42] Google的貓臉識別:人工智能的新突破

[43] Andrew Ng’s talk video:?

[44] Invited talk “A Tutorial on Deep Learning” by Dr. Kai Yu

轉自:深度學習(Deep Learning)系列篇(1):深度學習在騰訊的平臺化和應用實踐(全)

當神已無能為力,那便是魔渡眾生

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455466.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac svn工具_Cornerstone 4 for mac(svn管理工具)

Cornerstone 4 for mac是全新版本的svn管理工具,使用cornerstone for mac 特別版建立的版本控制更利于使用,而且cornerstone 4 特別版全面支持Subversion的功能,這里準備了最新版本的cornerstone for mac 特別版,無需激活&#xf…

I幀、B幀和P幀的特點和編碼的基本流程

I幀、B幀和P幀的特點: I幀:幀內編碼幀I幀特點:1.它是一個全幀壓縮編碼幀。它將全幀圖像信息進行JPEG壓縮編碼及傳輸;2.解碼時僅用I幀的數據就可重構完整圖像;3.I幀描述了圖像背景和運動主體的詳情;4.I幀不需要參考其他畫面而生成;5.I幀是P幀和B幀的參考幀(其質量直接影響到同組…

Java筆記11-【異常、線程】

主要內容 異常、線程 第一章 異常 1.1 異常概念 異常,就是不正常的意思。在生活中:醫生說,你的身體某個部位有異常,該部位和正常相比有點不同,該部位的功能將受影響.在程序中的意思就是: 異常 :指的是程序在執行過程中,出現的…

摘抄自知乎的redis相關

1.知乎日報的基礎數據和統計信息是用 Redis 存儲的,這使得請求的平均響應時間能在 10ms 以下。其他數據仍然需要存放在另外的地方,其實完全用 Redis 也是可行的,主要的考量是內存占用。就使用經驗而言,Redis 的數據結構很豐富&…

Java微信開發_00_資源匯總貼

1.微信公眾平臺技術文檔(https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432) 2.微信企業號開發接口文檔(http://qydev.weixin.qq.com/wiki/index.php?title%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8) 3.企業微…

webgl獲取鼠標形狀_三模無線搭配對稱手型設計,游戲致勝利器,ROG烈刃2無線鼠標...

要想有效地提升游戲體驗,我認為除了電腦主機本身的硬件配置要盡可能的硬核之外,玩游戲時所選配的鼠標、鍵盤等外設的作用也是不可忽視的,所以很多比較注重游戲體驗的游戲愛好者都會選擇一款自己用著比較順手的游戲外設裝備。我這次入手的華碩…

牛人學習h264運動估計的方法

轉載自:http://bbs.chinavideo.org/forumdisplay.php?fid29 Chinavideo,一個非常棒的學習論壇 從答辯結束(2008-12-13)起就想寫一篇文章給學習運動估計的朋友們,因為我知道有很多正在寫論文的朋友們,特別是正在入門的朋友們&…

Java筆記11-軟件開發流程設計原則

今天內容: 1.常用的設計原則2.常用的設計模式3.常用的查找算法4.常用的排序算法 1.常用的設計原則(記住) 1.1軟件的開發流程 軟件開發授權-投標 -> 100萬 1. 編寫需求分析文檔 > 2. 概要設計文檔(架構) > 3. 詳細設計文檔(類圖) > 4. 編碼(項目經理分具體任…

magnify.m —— 圖像局部放大鏡工具函數

magnify.m 函數下載地址:magnify - File Exchange - MATLAB Central; magnify.m 函數在執行時,是一種交互式處理。 簡單演示如下: clear, clc% 加載圖像到內存,如讀取matlab自帶的圖像,并將其顯示出來 I i…

【大數據系列】hadoop單節點安裝官方文檔翻譯

Hadoop: Setting up a Single Node Cluster. HADOOP:建立單節點集群 PurposePrerequisites Supported PlatformsRequired SoftwareInstalling SoftwareDownloadPrepare to Start the Hadoop ClusterStandalone OperationPseudo-Distributed Operation Configuration…

qmlcanvas繪制3d圖形_透視Matplotlib核心功能和工具包 - 繪制3D圖形

關聯知識MatplotlibPython線圖在此,我們將學習如何創建3D線圖。 它類似于2D等效折線圖,并且2D折線圖的許多屬性都結轉到3D。我們將在相同的軸上繪制凹凸曲線,并從不同角度查看它們,例如平行視圖,頂視圖以及圍繞z軸的旋…

264 解碼之 yuv

博客訪問量日漸減少,于是我決定丟一點技術東東上去,吸引爬蟲光顧一下。先談談 h.264 的編解碼問題。個人建議做視頻、音頻的孩子們,一定要抓住 RFC 和 standard ,然后多看開源編解碼程序。近來抽空看了兩個 decoder ,一…

Java筆記12-函數式接口

主要內容 自定義函數式接口函數式編程常用函數式接口 第一章 函數式接口 概念 函數式接口在java中指的是:有且只有一個抽象方法的接口 函數式接口,即適用于函數式編程場景的接口.而java中共的函數式編程體現就是Lambda,所以函數式接口就是可以適用于lambda使用的接口.只有…

雷軍曬3億估值,意欲“收編”臺灣硬件創業者?

1月13日,在臺灣的CSMIC 2015移動互聯網兩岸年會上,雷軍以獵豹移動董事長的身份做了《給年輕創業者的兩大方向性建議》演講。 演講中雷軍表示,“在未來5到10年,特別適合臺灣年輕創業者做的兩個方向,一個是移動互聯網&am…

網頁“console”輸出圖文信息

http://www.monmonkey.com/javascript/jiben2.html 參考以上鏈接中的轉義字符使用。 http://www.cnblogs.com/Wayou/p/chrome_dev_tool_style_console.html https://segmentfault.com/a/1190000002511877 以上鏈接里有各種 console 輸出 ASCII圖文的實現方法。 ASCII圖文動態效…

記事本安卓軟件代碼設計_用輕量級工具 Notepad3 替代 36 歲的微軟記事本

一不小心,微軟記事本發布 36 年了。雖然微軟記事本自 1985 年 Windows 1.0 以來已包含在所有版本的 Microsoft Windows 中,但它太基礎了,以至于幾乎所有人都要替代它,比如輕量級的 Notepad3,支持代碼高亮/折疊、括號匹…

H.264編碼技術

H.264基本概況隨著HDTV的興起,H.264這個規范頻頻出現在我們眼前,HD-DVD和藍光DVD均計劃采用這一標準進行節目制作。而且自2005年下半年以來,無論是NVIDIA還是ATI都把支持H.264硬件解碼加速作為自己最值得夸耀的視頻技術。H.264到底是何方“神…

Java筆記13-兄弟連在線考試系統

今天內容: 1.兄弟連在線考試系統 1.1 軟件開發的流程 需求分析文檔 > 概要設計文檔 > 詳細設計文檔 > 編碼和測試1.2 編寫目的 (1)復習JavaSE所學的所有內容。 (2)鍛煉基本的編程能力。 1.3 功能分析 考試系統:(1)學員系統a.修改密碼b.開始…

macOS自帶Python2.7刪除之后的悲劇

2019獨角獸企業重金招聘Python工程師標準>>> 起因 今天打開xcode想要開始繼續寫項目的時候悲劇了. Loading a plug-in failed. The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled. 嘗試用終端打開看看報…

EasyUI 表格點擊右鍵添加或刷新 綁定右鍵菜單

例1 在HTML頁面中設置一個隱藏的菜單&#xff08;前提是已經使用封裝的Easyui&#xff09; 代碼&#xff1a; <div id"contextMenu_jygl" class"easyui-menu" style"width: 80px; display: none;"> <div …