0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出介紹深度學(xué)習(xí)的基本原理和核心優(yōu)勢

mK5P_AItists ? 來源:未知 ? 作者:李倩 ? 2018-07-25 18:06 ? 次閱讀

本文是《Nature》雜志為紀(jì)念人工智能60周年而專門推出的深度學(xué)習(xí)綜述,也是Hinton、LeCun和Bengio三位大神首次合寫同一篇文章。

本文是《Nature》雜志為紀(jì)念人工智能60周年而專門推出的深度學(xué)習(xí)綜述,也是Hinton、LeCun和Bengio三位大神首次合寫同一篇文章。該綜述在深度學(xué)習(xí)領(lǐng)域的重要性不言而喻,可以說是所有人入門深度學(xué)習(xí)的必讀作品。

本文上半部分深入淺出介紹深度學(xué)習(xí)的基本原理和核心優(yōu)勢,下半部分則詳解CNN、分布式特征表示、RNN及其不同的應(yīng)用,并對深度學(xué)習(xí)技術(shù)的未來發(fā)展進行展望。

論文摘要

深度學(xué)習(xí)可以讓那些擁有多個處理層的計算模型來學(xué)習(xí)具有多層次抽象的數(shù)據(jù)的表示。這些方法在許多方面都帶來了顯著的改善,包括較先進的語音識別、視覺對象識別、對象檢測和許多其它領(lǐng)域,例如藥物發(fā)現(xiàn)和基因組學(xué)等。深度學(xué)習(xí)能夠發(fā)現(xiàn)大數(shù)據(jù)中的復(fù)雜結(jié)構(gòu)。它是利用BP算法來完成這個發(fā)現(xiàn)過程的。BP算法能夠指導(dǎo)機器如何從前一層獲取誤差而改變本層的內(nèi)部參數(shù),這些內(nèi)部參數(shù)可以用于計算表示。深度卷積網(wǎng)絡(luò)在處理圖像、視頻、語音和音頻方面帶來了突破,而遞歸網(wǎng)絡(luò)在處理序列數(shù)據(jù),比如文本和演講方面表現(xiàn)出了閃亮的一面。

機器學(xué)習(xí)技術(shù)在現(xiàn)代社會的各個方面表現(xiàn)出了強大的功能:從Web搜索到社會網(wǎng)絡(luò)內(nèi)容過濾,再到電子商務(wù)網(wǎng)站上的商品推薦都有涉足。并且它越來越多地出現(xiàn)在消費品中,比如相機和智能手機

機器學(xué)習(xí)系統(tǒng)被用來識別圖片中的目標(biāo),將語音轉(zhuǎn)換成文本,匹配新聞元素,根據(jù)用戶興趣提供職位或產(chǎn)品,選擇相關(guān)的搜索結(jié)果。逐漸地,這些應(yīng)用使用一種叫深度學(xué)習(xí)的技術(shù)。傳統(tǒng)的機器學(xué)習(xí)技術(shù)在處理未加工過的數(shù)據(jù)時,體現(xiàn)出來的能力是有限的。

幾十年來,想要構(gòu)建一個模式識別系統(tǒng)或者機器學(xué)習(xí)系統(tǒng),需要一個精致的引擎和相當(dāng)專業(yè)的知識來設(shè)計一個特征提取器,把原始數(shù)據(jù)(如圖像的像素值)轉(zhuǎn)換成一個適當(dāng)?shù)膬?nèi)部特征表示或特征向量,子學(xué)習(xí)系統(tǒng),通常是一個分類器,對輸入的樣本進行檢測或分類。特征表示學(xué)習(xí)是一套給機器灌入原始數(shù)據(jù),然后能自動發(fā)現(xiàn)需要進行檢測和分類的表達的方法。

深度學(xué)習(xí)就是一種特征學(xué)習(xí)方法,把原始數(shù)據(jù)通過一些簡單的但是非線性的模型轉(zhuǎn)變成為更高層次的,更加抽象的表達。通過足夠多的轉(zhuǎn)換的組合,非常復(fù)雜的函數(shù)也可以被學(xué)習(xí)。

對于分類任務(wù),高層次的表達能夠強化輸入數(shù)據(jù)的區(qū)分能力方面,同時削弱不相關(guān)因素。比如,一副圖像的原始格式是一個像素數(shù)組,那么在第一層上的學(xué)習(xí)特征表達通常指的是在圖像的特定位置和方向上有沒有邊的存在。第二層通常會根據(jù)那些邊的某些排放而來檢測圖案,這時候會忽略掉一些邊上的一些小的干擾。第三層或許會把那些圖案進行組合,從而使其對應(yīng)于熟悉目標(biāo)的某部分。隨后的一些層會將這些部分再組合,從而構(gòu)成待檢測目標(biāo)。

深度學(xué)習(xí)的核心方面是,上述各層的特征都不是利用人工工程來設(shè)計的,而是使用一種通用的學(xué)習(xí)過程從數(shù)據(jù)中學(xué)到的。

深度學(xué)習(xí)正在取得重大進展,解決了人工智能界的盡較大努力很多年仍沒有進展的問題。它已經(jīng)被證明,它能夠擅長發(fā)現(xiàn)高維數(shù)據(jù)中的復(fù)雜結(jié)構(gòu),因此它能夠被應(yīng)用于科學(xué)、商業(yè)和政府等領(lǐng)域。除了在圖像識別、語音識別等領(lǐng)域打破了紀(jì)錄,它還在另外的領(lǐng)域擊敗了其他機器學(xué)習(xí)技術(shù),包括預(yù)測潛在的藥物分子的活性、分析粒子加速器數(shù)據(jù)、重建大腦回路、預(yù)測在非編碼DNA突變對基因表達和疾病的影響。

也許更令人驚訝的是,深度學(xué)習(xí)在自然語言理解的各項任務(wù)中產(chǎn)生了非??上驳某晒?,特別是主題分類、情感分析、自動問答和語言翻譯。我們認(rèn)為,在不久的將來,深度學(xué)習(xí)將會取得更多的成功,因為它需要很少的手工工程,它可以很容易受益于可用計算能力和數(shù)據(jù)量的增加。目前正在為深度神經(jīng)網(wǎng)絡(luò)開發(fā)的新的學(xué)習(xí)算法和架構(gòu)只會加速這一進程。

監(jiān)督學(xué)習(xí)

機器學(xué)習(xí)中,不論是否是深層,最常見的形式是監(jiān)督學(xué)習(xí)。

試想一下,我們要建立一個系統(tǒng),它能夠?qū)σ粋€包含了一座房子、一輛汽車、一個人或一個寵物的圖像進行分類。我們先收集大量的房子,汽車,人與寵物的圖像的數(shù)據(jù)集,并對每個對象標(biāo)上它的類別。

在訓(xùn)練期間,機器會獲取一副圖片,然后產(chǎn)生一個輸出,這個輸出以向量形式的分?jǐn)?shù)來表示,每個類別都有一個這樣的向量。我們希望所需的類別在所有的類別中具有較高的得分,但是這在訓(xùn)練之前是不太可能發(fā)生的。通過計算一個目標(biāo)函數(shù)可以獲得輸出分?jǐn)?shù)和期望模式分?jǐn)?shù)之間的誤差(或距離)。然后機器會修改其內(nèi)部可調(diào)參數(shù),以減少這種誤差。這些可調(diào)節(jié)的參數(shù),通常被稱為權(quán)值,它們是一些實數(shù),可以被看作是一些“旋鈕”,定義了機器的輸入輸出功能。

在典型的深學(xué)習(xí)系統(tǒng)中,有可能有數(shù)以百萬計的樣本和權(quán)值,和帶有標(biāo)簽的樣本,用來訓(xùn)練機器。為了正確地調(diào)整權(quán)值向量,該學(xué)習(xí)算法計算每個權(quán)值的梯度向量,表示了如果權(quán)值增加了一個很小的量,那么誤差會增加或減少的量。權(quán)值向量然后在梯度矢量的相反方向上進行調(diào)整。我們的目標(biāo)函數(shù),所有訓(xùn)練樣本的平均,可以被看作是一種在權(quán)值的高維空間上的多變地形。負(fù)的梯度矢量表示在該地形中下降方向最快,使其更接近于最小值,也就是平均輸出誤差低較低的地方。

在實際應(yīng)用中,大部分從業(yè)者都使用一種稱作隨機梯度下降的算法(SGD)。它包含了提供一些輸入向量樣本,計算輸出和誤差,計算這些樣本的平均梯度,然后相應(yīng)的調(diào)整權(quán)值。通過提供小的樣本集合來重復(fù)這個過程用以訓(xùn)練網(wǎng)絡(luò),直到目標(biāo)函數(shù)停止增長。它被稱為隨機的是因為小的樣本集對于全體樣本的平均梯度來說會有噪聲估計。這個簡單過程通常會找到一組不錯的權(quán)值,同其他精心設(shè)計的優(yōu)化技術(shù)相比,它的速度讓人驚奇。訓(xùn)練結(jié)束之后,系統(tǒng)會通過不同的數(shù)據(jù)樣本——測試集來顯示系統(tǒng)的性能。這用于測試機器的泛化能力——對于未訓(xùn)練過的新樣本的識別能力。

當(dāng)前應(yīng)用中的許多機器學(xué)習(xí)技術(shù)使用的是線性分類器來對人工提取的特征進行分類。一個2類線性分類器會計算特征向量的加權(quán)和。當(dāng)加權(quán)和超過一個閾值之后,輸入樣本就會被分配到一個特定的類別中。從20世紀(jì)60年代開始,我們就知道了線性分類器只能夠把樣本分成非常簡單的區(qū)域,也就是說通過一個超平面把空間分成兩部分。

但像圖像和語音識別等問題,它們需要的輸入-輸出函數(shù)要對輸入樣本中不相關(guān)因素的變化不要過于的敏感,如位置的變化,目標(biāo)的方向或光照,或者語音中音調(diào)或語調(diào)的變化等,但是需要對于一些特定的微小變化非常敏感(例如,一只白色的狼和跟狼類似的白色狗——薩莫耶德犬之間的差異)。在像素這一級別上,兩條薩莫耶德犬在不同的姿勢和在不同的環(huán)境下的圖像可以說差異是非常大的,然而,一只薩摩耶德犬和一只狼在相同的位置并在相似背景下的兩個圖像可能就非常類似。

圖1 多層神經(jīng)網(wǎng)絡(luò)和BP算法

多層神經(jīng)網(wǎng)絡(luò)(用連接點表示)可以對輸入空間進行整合,使得數(shù)據(jù)(紅色和藍色線表示的樣本)線性可分。注意輸入空間中的規(guī)則網(wǎng)格(左側(cè))是如何被隱藏層轉(zhuǎn)換的(轉(zhuǎn)換后的在右側(cè))。這個例子中只用了兩個輸入節(jié)點,兩個隱藏節(jié)點和一個輸出節(jié)點,但是用于目標(biāo)識別或自然語言處理的網(wǎng)絡(luò)通常包含數(shù)十個或者數(shù)百個這樣的節(jié)點。獲得C.Olah(http://colah.github.io/) 的許可后重新構(gòu)建的這個圖。

鏈?zhǔn)椒▌t告訴我們兩個小的變化(x和y的微小變化,以及y和z的微小變化)是怎樣組織到一起的。x的微小變化量Δx首先會通過乘以?y/?x(偏導(dǎo)數(shù))轉(zhuǎn)變成y的變化量Δy。類似的,Δy會給z帶來改變Δz。通過鏈?zhǔn)椒▌t可以將一個方程轉(zhuǎn)化到另外的一個——也就是Δx通過乘以?y/?x和?z/?x得到Δz的過程。當(dāng)x,y,z是向量的時候,可以同樣處理(使用雅克比矩陣)。

具有兩個隱層一個輸出層的神經(jīng)網(wǎng)絡(luò)中計算前向傳播的公式。每個都有一個模塊構(gòu)成,用于反向傳播梯度。在每一層上,我們首先計算每個節(jié)點的總輸入z,z是前一層輸出的加權(quán)和。然后利用一個非線性函數(shù)f(.)來計算節(jié)點的輸出。簡單期間,我們忽略掉了閾值項。神經(jīng)網(wǎng)絡(luò)中常用的非線性函數(shù)包括了最近幾年常用的校正線性單元(ReLU)f(z) = max(0,z),和傳統(tǒng)的sigmoids,比如f(z) = (exp(z) ? exp(?z))/(exp(z) + exp(?z)) 和f(z) = 1/(1 + exp(?z))。

計算反向傳播的公式。在隱層,我們計算每個輸出單元產(chǎn)生的誤差,這是由上一層產(chǎn)生的誤差的加權(quán)和。然后我們將輸出層的誤差通過乘以梯度f(z)轉(zhuǎn)換到輸入層。在輸出層上,每個節(jié)點的誤差會用成本函數(shù)的微分來計算。如果節(jié)點l的成本函數(shù)是0.5*(yl-tl)^2, 那么節(jié)點的誤差就是yl-tl,其中tl是期望值。一旦知道了?E/?zk的值,節(jié)點j的內(nèi)星權(quán)向量wjk就可以通過yj ?E/?zk來進行調(diào)整。

一個線性分類器或者其他操作在原始像素上的淺層分類器不能夠區(qū)分后兩者,雖然能夠?qū)⑶罢邭w為同一類。這就是為什么淺分類要求有良好的特征提取器用于解決選擇性不變性困境——提取器會挑選出圖像中能夠區(qū)分目標(biāo)的那些重要因素,但是這些因素對于分辨動物的位置就無能為力了。為了加強分類能力,可以使用泛化的非線性特性,如核方法,但這些泛化特征,比如通過高斯核得到的,并不能夠使得學(xué)習(xí)器從學(xué)習(xí)樣本中產(chǎn)生較好的泛化效果。

傳統(tǒng)的方法是手工設(shè)計良好的特征提取器,這需要大量的工程技術(shù)和專業(yè)領(lǐng)域知識。但是如果通過使用通用學(xué)習(xí)過程而得到良好的特征,那么這些都是可以避免的了。這就是深度學(xué)習(xí)的關(guān)鍵優(yōu)勢。

深度學(xué)習(xí)的體系結(jié)構(gòu)是簡單模塊的多層棧,所有(或大部分)模塊的目標(biāo)是學(xué)習(xí),還有許多計算非線性輸入輸出的映射。棧中的每個模塊將其輸入進行轉(zhuǎn)換,以增加表達的可選擇性和不變性。比如說,具有一個5到20層的非線性多層系統(tǒng)能夠?qū)崿F(xiàn)非常復(fù)雜的功能,比如輸入數(shù)據(jù)對細(xì)節(jié)非常敏感——能夠區(qū)分白狼和薩莫耶德犬,同時又具有強大的抗干擾能力,比如可以忽略掉不同的背景、姿勢、光照和周圍的物體等。

用反向傳播訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)

在最早期的模式識別任務(wù)中,研究者的目標(biāo)一直是使用可以訓(xùn)練的多層網(wǎng)絡(luò)來替代經(jīng)過人工選擇的特征,雖然使用多層神經(jīng)網(wǎng)絡(luò)很簡單,但是得出來的解很糟糕。直到20世紀(jì)80年代,使用簡單的隨機梯度下降來訓(xùn)練多層神經(jīng)網(wǎng)絡(luò),這種糟糕的情況才有所改變。只要網(wǎng)絡(luò)的輸入和內(nèi)部權(quán)值之間的函數(shù)相對平滑,使用梯度下降就湊效,梯度下降方法是在70年代到80年代期間由不同的研究團隊獨立發(fā)明的。

用來求解目標(biāo)函數(shù)關(guān)于多層神經(jīng)網(wǎng)絡(luò)權(quán)值梯度的反向傳播算法(BP)只是一個用來求導(dǎo)的鏈?zhǔn)椒▌t的具體應(yīng)用而已。反向傳播算法的核心思想是:目標(biāo)函數(shù)對于某層輸入的導(dǎo)數(shù)(或者梯度)可以通過向后傳播對該層輸出(或者下一層輸入)的導(dǎo)數(shù)求得(如圖1)。反向傳播算法可以被重復(fù)的用于傳播梯度通過多層神經(jīng)網(wǎng)絡(luò)的每一層:從該多層神經(jīng)網(wǎng)絡(luò)的最頂層的輸出(也就是改網(wǎng)絡(luò)產(chǎn)生預(yù)測的那一層)一直到該多層神經(jīng)網(wǎng)絡(luò)的最底層(也就是被接受外部輸入的那一層),一旦這些關(guān)于(目標(biāo)函數(shù)對)每層輸入的導(dǎo)數(shù)求解完,我們就可以求解每一層上面的(目標(biāo)函數(shù)對)權(quán)值的梯度了。

很多深度學(xué)習(xí)的應(yīng)用都是使用前饋式神經(jīng)網(wǎng)絡(luò)(如圖1),該神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)一個從固定大小輸入(比如輸入是一張圖)到固定大小輸出(例如,到不同類別的概率)的映射。從第一層到下一層,計算前一層神經(jīng)元輸入數(shù)據(jù)的權(quán)值的和,然后把這個和傳給一個非線性激活函數(shù)。當(dāng)前最流行的非線性激活函數(shù)是rectified linear unit(ReLU),函數(shù)形式:f(z)=max(z,0)。過去的幾十年中,神經(jīng)網(wǎng)絡(luò)使用一些更加平滑的非線性函數(shù),比如tanh(z)和1/(1+exp(-z)),但是ReLU通常會讓一個多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的更快,也可以讓一個深度網(wǎng)絡(luò)直接有監(jiān)督的訓(xùn)練(不需要無監(jiān)督的pre-train)。

達到之前那種有pre-train的效果。通常情況下,輸入層和輸出層以外的神經(jīng)單元被稱為隱藏單元。隱藏層的作用可以看成是使用一個非線性的方式打亂輸入數(shù)據(jù),來讓輸入數(shù)據(jù)對應(yīng)的類別在最后一層變得線性可分。

在20世紀(jì)90年代晚期,神經(jīng)網(wǎng)絡(luò)和反向傳播算法被大多數(shù)機器學(xué)習(xí)團隊拋棄,同時也不受計算機視覺和語音識別團隊的重視。人們普遍認(rèn)為,學(xué)習(xí)有用的、多級層次結(jié)構(gòu)的、使用較少先驗知識進行特征提取的這些方法都不靠譜。確切的說是因為簡單的梯度下降會讓整個優(yōu)化陷入到不好的局部最小解。

實踐中,如果在大的網(wǎng)絡(luò)中,不管使用什么樣的初始化條件,局部最小解并不算什么大問題,系統(tǒng)總是得到效果差不多的解。最近的理論和實驗表明,局部最小解還真不是啥大問題。相反,解空間中充滿了大量的鞍點(梯度為0的點),同時鞍點周圍大部分曲面都是往上的。所以這些算法就算是陷入了這些局部最小值,關(guān)系也不太大。

2006年前后,CIFAR(加拿大高級研究院)把一些研究者聚集在一起,人們對深度前饋式神經(jīng)網(wǎng)絡(luò)重新燃起了興趣。研究者們提出了一種非監(jiān)督的學(xué)習(xí)方法,這種方法可以創(chuàng)建一些網(wǎng)絡(luò)層來檢測特征而不使用帶標(biāo)簽的數(shù)據(jù),這些網(wǎng)絡(luò)層可以用來重構(gòu)或者對特征檢測器的活動進行建模。通過預(yù)訓(xùn)練過程,深度網(wǎng)絡(luò)的權(quán)值可以被初始化為有意思的值。然后一個輸出層被添加到該網(wǎng)絡(luò)的頂部,并且使用標(biāo)準(zhǔn)的反向傳播算法進行微調(diào)。這個工作對手寫體數(shù)字的識別以及行人預(yù)測任務(wù)產(chǎn)生了顯著的效果,尤其是帶標(biāo)簽的數(shù)據(jù)非常少的時候。

使用這種與訓(xùn)練方法做出來的第一個比較大的應(yīng)用是關(guān)于語音識別的,并且是在GPU上做的,這樣做是因為寫代碼很方便,并且在訓(xùn)練的時候可以得到10倍或者20倍的加速。2009年,這種方法被用來映射短時間的系數(shù)窗口,該系統(tǒng)窗口是提取自聲波并被轉(zhuǎn)換成一組概率數(shù)字。它在一組使用很少詞匯的標(biāo)準(zhǔn)的語音識別基準(zhǔn)測試程序上達到了驚人的效果,然后又迅速被發(fā)展到另外一個更大的數(shù)據(jù)集上,同時也取得驚人的效果。從2009年到到2012年底,較大的語音團隊開發(fā)了這種深度網(wǎng)絡(luò)的多個版本并且已經(jīng)被用到了安卓手機上。對于小的數(shù)據(jù)集來說,無監(jiān)督的預(yù)訓(xùn)練可以防止過擬合,同時可以帶來更好的泛化性能當(dāng)有標(biāo)簽的樣本很小的時候。一旦深度學(xué)習(xí)技術(shù)重新恢復(fù),這種預(yù)訓(xùn)練只有在數(shù)據(jù)集合較少的時候才需要。

然后,還有一種深度前饋式神經(jīng)網(wǎng)絡(luò),這種網(wǎng)絡(luò)更易于訓(xùn)練并且比那種全連接的神經(jīng)網(wǎng)絡(luò)的泛化性能更好。這就是卷積神經(jīng)網(wǎng)絡(luò)(CNN)。當(dāng)人們對神經(jīng)網(wǎng)絡(luò)不感興趣的時候,卷積神經(jīng)網(wǎng)絡(luò)在實踐中卻取得了很多成功,如今它被計算機視覺團隊廣泛使用。

卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)被設(shè)計用來處理到多維數(shù)組數(shù)據(jù)的,比如一個有3個包含了像素值2-D圖像組合成的一個具有3個顏色通道的彩色圖像。很多數(shù)據(jù)形態(tài)都是這種多維數(shù)組的:1D用來表示信號和序列包括語言,2D用來表示圖像或者聲音,3D用來表示視頻或者有聲音的圖像。卷積神經(jīng)網(wǎng)絡(luò)使用4個關(guān)鍵的想法來利用自然信號的屬性:局部連接、權(quán)值共享、池化以及多網(wǎng)絡(luò)層的使用。

圖2 卷積神經(jīng)網(wǎng)絡(luò)內(nèi)部

一個典型的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(如圖2)是由一系列的過程組成的。最初的幾個階段是由卷積層和池化層組成,卷積層的單元被組織在特征圖中,在特征圖中,每一個單元通過一組叫做濾波器的權(quán)值被連接到上一層的特征圖的一個局部塊,然后這個局部加權(quán)和被傳給一個非線性函數(shù),比如ReLU。在一個特征圖中的全部單元享用相同的過濾器,不同層的特征圖使用不同的過濾器。使用這種結(jié)構(gòu)處于兩方面的原因。

首先,在數(shù)組數(shù)據(jù)中,比如圖像數(shù)據(jù),一個值的附近的值經(jīng)常是高度相關(guān)的,可以形成比較容易被探測到的有區(qū)分性的局部特征。其次,不同位置局部統(tǒng)計特征不太相關(guān)的,也就是說,在一個地方出現(xiàn)的某個特征,也可能出現(xiàn)在別的地方,所以不同位置的單元可以共享權(quán)值以及可以探測相同的樣本。在數(shù)學(xué)上,這種由一個特征圖執(zhí)行的過濾操作是一個離線的卷積,卷積神經(jīng)網(wǎng)絡(luò)也是這么得名來的。

卷積層的作用是探測上一層特征的局部連接,然而池化層的作用是在語義上把相似的特征合并起來,這是因為形成一個主題的特征的相對位置不太一樣。一般地,池化單元計算特征圖中的一個局部塊的較大值,相鄰的池化單元通過移動一行或者一列來從小塊上讀取數(shù)據(jù),因為這樣做就減少的表達的維度以及對數(shù)據(jù)的平移不變性。兩三個這種的卷積、非線性變換以及池化被串起來,后面再加上一個更多卷積和全連接層。在卷積神經(jīng)網(wǎng)絡(luò)上進行反向傳播算法和在一般的深度網(wǎng)絡(luò)上是一樣的,可以讓所有的在過濾器中的權(quán)值得到訓(xùn)練。

深度神經(jīng)網(wǎng)絡(luò)利用的很多自然信號是層級組成的屬性,在這種屬性中高級的特征是通過對低級特征的組合來實現(xiàn)的。在圖像中,局部邊緣的組合形成基本圖案,這些圖案形成物體的局部,然后再形成物體。這種層級結(jié)構(gòu)也存在于語音數(shù)據(jù)以及文本數(shù)據(jù)中,如電話中的聲音,因素,音節(jié),文檔中的單詞和句子。當(dāng)輸入數(shù)據(jù)在前一層中的位置有變化的時候,池化操作讓這些特征表示對這些變化具有魯棒性。

卷積神經(jīng)網(wǎng)絡(luò)中的卷積和池化層靈感直接來源于視覺神經(jīng)科學(xué)中的簡單細(xì)胞和復(fù)雜細(xì)胞。這種細(xì)胞的是以LNG-V1-V2-V4-IT這種層級結(jié)構(gòu)形成視覺回路的。當(dāng)給一個卷積神經(jīng)網(wǎng)絡(luò)和猴子一副相同的圖片的時候,卷積神經(jīng)網(wǎng)絡(luò)展示了猴子下顳葉皮質(zhì)中隨機160個神經(jīng)元的變化。卷積神經(jīng)網(wǎng)絡(luò)有神經(jīng)認(rèn)知的根源,他們的架構(gòu)有點相似,但是在神經(jīng)認(rèn)知中是沒有類似反向傳播算法這種端到端的監(jiān)督學(xué)習(xí)算法的。一個比較原始的1D卷積神經(jīng)網(wǎng)絡(luò)被稱為時延神經(jīng)網(wǎng)絡(luò),可以被用來識別語音以及簡單的單詞。

20世紀(jì)90年代以來,基于卷積神經(jīng)網(wǎng)絡(luò)出現(xiàn)了大量的應(yīng)用。最開始是用時延神經(jīng)網(wǎng)絡(luò)來做語音識別以及文檔閱讀。這個文檔閱讀系統(tǒng)使用一個被訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)和一個概率模型,這個概率模型實現(xiàn)了語言方面的一些約束。20世紀(jì)90年代末,這個系統(tǒng)被用來美國超過10%的支票閱讀上。后來,微軟開發(fā)了基于卷積神經(jīng)網(wǎng)絡(luò)的字符識別系統(tǒng)以及手寫體識別系統(tǒng)。20世紀(jì)90年代早期,卷積神經(jīng)網(wǎng)絡(luò)也被用來自然圖形中的物體識別,比如臉、手以及人臉識別(face recognition )。

使用深度卷積網(wǎng)絡(luò)進行圖像理解

21世紀(jì)開始,卷積神經(jīng)網(wǎng)絡(luò)就被成功的大量用于檢測、分割、物體識別以及圖像的各個領(lǐng)域。這些應(yīng)用都是使用了大量的有標(biāo)簽的數(shù)據(jù),比如交通信號識別,生物信息分割,面部探測,文本、行人以及自然圖形中的人的身體部分的探測。近年來,卷積神經(jīng)網(wǎng)絡(luò)的一個重大成功應(yīng)用是人臉識別。

值得一提的是,圖像可以在像素級別進行打標(biāo)簽,這樣就可以應(yīng)用在比如自動電話接聽機器人、自動駕駛汽車等技術(shù)中。像Mobileye以及NVIDIA公司正在把基于卷積神經(jīng)網(wǎng)絡(luò)的方法用于汽車中的視覺系統(tǒng)中。其它的應(yīng)用涉及到自然語言的理解以及語音識別中。

圖3 從圖像到文字

盡管卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用的很成功,但是它被計算機視覺以及機器學(xué)習(xí)團隊開始重視是在2012年的ImageNet競賽。在該競賽中,深度卷積神經(jīng)網(wǎng)絡(luò)被用在上百萬張網(wǎng)絡(luò)圖片數(shù)據(jù)集,這個數(shù)據(jù)集包含了1000個不同的類。該結(jié)果達到了前所未有的好,幾乎比當(dāng)時較好的方法降低了一半的錯誤率。這個成功來自有效地利用了GPU、ReLU、一個新的被稱為dropout的正則技術(shù),以及通過分解現(xiàn)有樣本產(chǎn)生更多訓(xùn)練樣本的技術(shù)。這個成功給計算機視覺帶來一個革命。如今,卷積神經(jīng)網(wǎng)絡(luò)用于幾乎全部的識別和探測任務(wù)中。最近一個更好的成果是,利用卷積神經(jīng)網(wǎng)絡(luò)結(jié)合回饋神經(jīng)網(wǎng)絡(luò)用來產(chǎn)生圖像標(biāo)題。

如今的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)有10-20層采用ReLU激活函數(shù)、上百萬個權(quán)值以及幾十億個連接。然而訓(xùn)練如此大的網(wǎng)絡(luò)兩年前就只需要幾周了,現(xiàn)在硬件、軟件以及算法并行的進步,又把訓(xùn)練時間壓縮到了幾小時。

基于卷積神經(jīng)網(wǎng)絡(luò)的視覺系統(tǒng)的性能已經(jīng)引起了大型技術(shù)公司的注意,比如Google、Facebook、Microsoft、IBM,yahoo!、Twitter和Adobe等,一些快速增長的創(chuàng)業(yè)公司也同樣如是。

卷積神經(jīng)網(wǎng)絡(luò)很容易在芯片或者現(xiàn)場可編程門陣列(FPGA)中高效實現(xiàn),許多公司比如NVIDIA、Mobileye、Intel、Qualcomm以及Samsung,正在開發(fā)卷積神經(jīng)網(wǎng)絡(luò)芯片,以使智能機、相機、機器人以及自動駕駛汽車中的實時視覺系統(tǒng)成為可能。

分布式特征表示與語言處理

與不使用分布式特征表示(distributed representations )的經(jīng)典學(xué)習(xí)算法相比,深度學(xué)習(xí)理論表明深度網(wǎng)絡(luò)具有兩個不同的巨大的優(yōu)勢。這些優(yōu)勢來源于網(wǎng)絡(luò)中各節(jié)點的權(quán)值,并取決于具有合理結(jié)構(gòu)的底層生成數(shù)據(jù)的分布。首先,學(xué)習(xí)分布式特征表示能夠泛化適應(yīng)新學(xué)習(xí)到的特征值的組合(比如,n元特征就有2n種可能的組合)。其次,深度網(wǎng)絡(luò)中組合表示層帶來了另一個指數(shù)級的優(yōu)勢潛能(指數(shù)級的深度)。

多層神經(jīng)網(wǎng)絡(luò)中的隱層利用網(wǎng)絡(luò)中輸入的數(shù)據(jù)進行特征學(xué)習(xí),使之更加容易預(yù)測目標(biāo)輸出。下面是一個很好的示范例子,比如將本地文本的內(nèi)容作為輸入,訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)來預(yù)測句子中下一個單詞。內(nèi)容中的每個單詞表示為網(wǎng)絡(luò)中的N分之一的向量,也就是說,每個組成部分中有一個值為1其余的全為0。在第一層中,每個單詞創(chuàng)建不同的激活狀態(tài),或單詞向量(如圖4)。在語言模型中,網(wǎng)絡(luò)中其余層學(xué)習(xí)并轉(zhuǎn)化輸入的單詞向量為輸出單詞向量來預(yù)測句子中下一個單詞,可以通過預(yù)測詞匯表中的單詞作為文本句子中下一個單詞出現(xiàn)的概率。網(wǎng)絡(luò)學(xué)習(xí)了包含許多激活節(jié)點的、并且可以解釋為詞的獨立特征的單詞向量,正如第一次示范的文本學(xué)習(xí)分層表征文字符號的例子。這些語義特征在輸入中并沒有明確的表征。

而是在利用“微規(guī)則”(‘micro-rules’,本文中直譯為:微規(guī)則)學(xué)習(xí)過程中被發(fā)掘,并作為一個分解輸入與輸出符號之間關(guān)系結(jié)構(gòu)的好的方式。當(dāng)句子是來自大量的真實文本并且個別的微規(guī)則不可靠的情況下,學(xué)習(xí)單詞向量也一樣能表現(xiàn)得很好。利用訓(xùn)練好的模型預(yù)測新的事例時,一些概念比較相似的詞容易混淆,比如星期二(Tuesday)和星期三(Wednesday),瑞典(Sweden)和挪威(Norway)。這樣的表示方式被稱為分布式特征表示,因為他們的元素之間并不互相排斥,并且他們的構(gòu)造信息對應(yīng)于觀測到的數(shù)據(jù)的變化。這些單詞向量是通過學(xué)習(xí)得到的特征構(gòu)造的,這些特征不是由專家決定的,而是由神經(jīng)網(wǎng)絡(luò)自動發(fā)掘的。從文本中學(xué)習(xí)得單詞向量表示現(xiàn)在廣泛應(yīng)用于自然語言中。

圖4 詞向量學(xué)習(xí)可視化

特征表示問題爭論的中心介于對基于邏輯啟發(fā)和基于神經(jīng)網(wǎng)絡(luò)的認(rèn)識。在邏輯啟發(fā)的范式中,一個符號實體表示某一事物,因為其的屬性與其他符號實體相同或者不同。該符號實例沒有內(nèi)部結(jié)構(gòu),并且結(jié)構(gòu)與使用是相關(guān)的,至于理解符號的語義,就必須與變化的推理規(guī)則合理對應(yīng)。相反地,神經(jīng)網(wǎng)絡(luò)利用了大量活動載體、權(quán)值矩陣和標(biāo)量非線性化,來實現(xiàn)能夠支撐簡單容易的、具有常識推理的快速“直覺”功能。

在介紹神經(jīng)語言模型前,簡述下標(biāo)準(zhǔn)方法,其是基于統(tǒng)計的語言模型,該模型沒有使用分布式特征表示。而是基于統(tǒng)計簡短符號序列出現(xiàn)的頻率增長到N(N-grams,N元文法)。可能的N-grams的數(shù)字接近于VN,其中V是詞匯表的大小,考慮到文本內(nèi)容包含成千上萬個單詞,所以需要一個非常大的語料庫。N-grams將每個單詞看成一個原子單元,因此不能在語義相關(guān)的單詞序列中一概而論,然而神經(jīng)網(wǎng)絡(luò)語言模型可以,是因為他們關(guān)聯(lián)每個詞與真是特征值的向量,并且在向量空間中語義相關(guān)的詞彼此靠近(圖4)。

遞歸神經(jīng)網(wǎng)絡(luò)

首次引入反向傳播算法時,最令人興奮的便是使用遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural networks,下文簡稱RNNs)訓(xùn)練。對于涉及到序列輸入的任務(wù),比如語音和語言,利用RNNs能獲得更好的效果。RNNs一次處理一個輸入序列元素,同時維護網(wǎng)絡(luò)中隱式單元中隱式的包含過去時刻序列元素的歷史信息的“狀態(tài)向量”。如果是深度多層網(wǎng)絡(luò)不同神經(jīng)元的輸出,我們就會考慮這種在不同離散時間步長的隱式單元的輸出,這將會使我們更加清晰怎么利用反向傳播來訓(xùn)練RNNs(如圖5,右)。

圖5 遞歸神經(jīng)網(wǎng)絡(luò)

RNNs是非常強大的動態(tài)系統(tǒng),但是訓(xùn)練它們被證實存在問題的,因為反向傳播的梯度在每個時間間隔內(nèi)是增長或下降的,所以經(jīng)過一段時間后將導(dǎo)致結(jié)果的激增或者降為零。

由于先進的架構(gòu)和訓(xùn)練方式,RNNs被發(fā)現(xiàn)可以很好的預(yù)測文本中下一個字符或者句子中下一個單詞,并且可以應(yīng)用于更加復(fù)雜的任務(wù)。例如在某時刻閱讀英語句子中的單詞后,將會訓(xùn)練一個英語的“編碼器”網(wǎng)絡(luò),使得隱式單元的最終狀態(tài)向量能夠很好地表征句子所要表達的意思或思想。這種“思想向量”(thought vector)可以作為聯(lián)合訓(xùn)練一個法語“編碼器”網(wǎng)絡(luò)的初始化隱式狀態(tài)(或者額外的輸入),其輸出為法語翻譯首單詞的概率分布。

如果從分布中選擇一個特殊的首單詞作為編碼網(wǎng)絡(luò)的輸入,將會輸出翻譯的句子中第二個單詞的概率分布,并直到停止選擇為止??傮w而言,這一過程是根據(jù)英語句子的概率分布而產(chǎn)生的法語詞匯序列。這種簡單的機器翻譯方法的表現(xiàn)甚至可以和較先進的(state-of-the-art)的方法相媲美,同時也引起了人們對于理解句子是否需要像使用推理規(guī)則操作內(nèi)部符號表示質(zhì)疑。這與日常推理中同時涉及到根據(jù)合理結(jié)論類推的觀點是匹配的。

類比于將法語句子的意思翻譯成英語句子,同樣可以學(xué)習(xí)將圖片內(nèi)容“翻譯”為英語句子(如圖3)。這種編碼器是可以在最后的隱層將像素轉(zhuǎn)換為活動向量的深度卷積網(wǎng)絡(luò)(ConvNet)。解碼器與RNNs用于機器翻譯和神經(jīng)網(wǎng)絡(luò)語言模型的類似。近來,已經(jīng)掀起了一股深度學(xué)習(xí)的巨大興趣熱潮(參見文獻[86]提到的例子)。

RNNs一旦展開(如圖5),可以將之視為一個所有層共享同樣權(quán)值的深度前饋神經(jīng)網(wǎng)絡(luò)。雖然它們的目的是學(xué)習(xí)長期的依賴性,但理論的和經(jīng)驗的證據(jù)表明很難學(xué)習(xí)并長期保存信息。

為了解決這個問題,一個增大網(wǎng)絡(luò)存儲的想法隨之產(chǎn)生。采用了特殊隱式單元的LSTM(long short-termmemory networks)被首先提出,其自然行為便是長期的保存輸入。一種稱作記憶細(xì)胞的特殊單元類似累加器和門控神經(jīng)元:它在下一個時間步長將擁有一個權(quán)值并聯(lián)接到自身,拷貝自身狀態(tài)的真實值和累積的外部信號,但這種自聯(lián)接是由另一個單元學(xué)習(xí)并決定何時清除記憶內(nèi)容的乘法門控制的。

LSTM網(wǎng)絡(luò)隨后被證明比傳統(tǒng)的RNNs更加有效,尤其當(dāng)每一個時間步長內(nèi)有若干層時,整個語音識別系統(tǒng)能夠完全一致的將聲學(xué)轉(zhuǎn)錄為字符序列。目前LSTM網(wǎng)絡(luò)或者相關(guān)的門控單元同樣用于編碼和解碼網(wǎng)絡(luò),并且在機器翻譯中表現(xiàn)良好。

過去幾年中,幾位學(xué)者提出了不同的提案用于增強RNNs的記憶模塊。提案中包括神經(jīng)圖靈機,其中通過加入RNNs可讀可寫的“類似磁帶”的存儲來增強網(wǎng)絡(luò),而記憶網(wǎng)絡(luò)中的常規(guī)網(wǎng)絡(luò)通過聯(lián)想記憶來增強。記憶網(wǎng)絡(luò)在標(biāo)準(zhǔn)的問答基準(zhǔn)測試中表現(xiàn)良好,記憶是用來記住稍后要求回答問題的事例。

除了簡單的記憶化,神經(jīng)圖靈機和記憶網(wǎng)絡(luò)正在被用于那些通常需要推理和符號操作的任務(wù),還可以教神經(jīng)圖靈機“算法”。除此以外,他們可以從未排序的輸入符號序列(其中每個符號都有與其在列表中對應(yīng)的表明優(yōu)先級的真實值)中,學(xué)習(xí)輸出一個排序的符號序列。可以訓(xùn)練記憶網(wǎng)絡(luò)用來追蹤一個設(shè)定與文字冒險游戲和故事的世界的狀態(tài),回答一些需要復(fù)雜推理的問題。在一個測試?yán)又?,網(wǎng)絡(luò)能夠正確回答15句版的《指環(huán)王》中諸如“Frodo現(xiàn)在在哪?”的問題。

深度學(xué)習(xí)的未來展望

無監(jiān)督學(xué)習(xí)對于重新點燃深度學(xué)習(xí)的熱潮起到了促進的作用,但是純粹的有監(jiān)督學(xué)習(xí)的成功蓋過了無監(jiān)督學(xué)習(xí)。在本篇綜述中雖然這不是我們的重點,我們還是期望無監(jiān)督學(xué)習(xí)在長期內(nèi)越來越重要。無監(jiān)督學(xué)習(xí)在人類和動物的學(xué)習(xí)中占據(jù)主導(dǎo)地位:我們通過觀察能夠發(fā)現(xiàn)世界的內(nèi)在結(jié)構(gòu),而不是被告知每一個客觀事物的名稱。

人類視覺是一個智能的、基于特定方式的利用小或大分辨率的視網(wǎng)膜中央窩與周圍環(huán)繞區(qū)域?qū)饩€采集成像的活躍的過程。我們期望未來在機器視覺方面會有更多的進步,這些進步來自那些端對端的訓(xùn)練系統(tǒng),并結(jié)合ConvNets和RNNs,采用增強學(xué)習(xí)來決定走向。結(jié)合了深度學(xué)習(xí)和增強學(xué)習(xí)的系統(tǒng)正處在初期,但已經(jīng)在分類任務(wù)中超過了被動視頻系統(tǒng),并在學(xué)習(xí)操作視頻游戲中產(chǎn)生了令人印象深刻的效果。

在未來幾年,自然語言理解將是深度學(xué)習(xí)做出巨大影響的另一個領(lǐng)域。我們預(yù)測那些利用了RNNs的系統(tǒng)將會更好地理解句子或者整個文檔,當(dāng)它們選擇性地學(xué)習(xí)了某時刻部分加入的策略。

最終,在人工智能方面取得的重大進步將來自那些結(jié)合了復(fù)雜推理表示學(xué)習(xí)(representation learning )的系統(tǒng)。盡管深度學(xué)習(xí)和簡單推理已經(jīng)應(yīng)用于語音和手寫字識別很長一段時間了,我們?nèi)孕枰ㄟ^操作大量向量的新范式來代替基于規(guī)則的字符表達式操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:《Nature》紀(jì)念人工智能60周年專題:深度學(xué)習(xí)綜述

文章出處:【微信號:AItists,微信公眾號:人工智能學(xué)家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入淺出AVR

    深入淺出AVR,一本書。
    發(fā)表于 07-15 12:02

    深入淺出玩轉(zhuǎn)FPGA

    深入淺出玩轉(zhuǎn)FPGA
    發(fā)表于 07-21 09:21

    深入淺出Android

    深入淺出Android
    發(fā)表于 08-20 10:14

    ARM7 深入淺出學(xué)習(xí)

    深入淺出ARM7 LPC213x_214 學(xué)習(xí)
    發(fā)表于 12-04 17:28

    深入淺出Android

    深入淺出Android
    發(fā)表于 04-26 10:48

    深入淺出AVR

    深入淺出AVR
    發(fā)表于 08-23 10:10

    深入淺出排序學(xué)習(xí)使用指南

    深入淺出排序學(xué)習(xí):寫給程序員的算法系統(tǒng)開發(fā)實踐
    發(fā)表于 09-16 11:38

    深入淺出matlab

    深入淺出matlab 本書介紹了MATLAB 7.X版本與其他語言混合編程的方法。內(nèi)容包括在MATLAB中以文件方式導(dǎo)入、導(dǎo)
    發(fā)表于 06-18 09:13 ?261次下載
    <b class='flag-5'>深入淺出</b>matlab

    深入淺出Cortex-M0學(xué)習(xí)資料

    深入淺出Cortex-M0學(xué)習(xí)資料
    發(fā)表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學(xué)習(xí)</b>資料

    深入淺出數(shù)據(jù)分析

    深入淺出數(shù)據(jù)分析,有需要的朋友下來看看。
    發(fā)表于 01-15 14:22 ?0次下載

    STM32深入淺出之新手篇

    STM32深入淺出之新手篇,很好的單片機學(xué)習(xí)資料。
    發(fā)表于 03-21 17:43 ?128次下載

    深入淺出AVR單片機_精要

    本書深入淺出介紹了AVR單片機的原理及應(yīng)用
    發(fā)表于 03-24 10:47 ?16次下載

    深入淺出學(xué)習(xí)250個通信原理資源下載

    深入淺出學(xué)習(xí)250個通信原理資源下載
    發(fā)表于 04-12 09:16 ?28次下載

    深入淺出學(xué)習(xí)低功耗藍牙協(xié)議棧

    深入淺出學(xué)習(xí)低功耗藍牙協(xié)議棧
    發(fā)表于 06-23 10:35 ?56次下載

    深入淺出學(xué)習(xí)eTs(七)如何判斷密碼是否正確

    本項目Gitee倉地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com) 一、基本界面 本項目基于#深入淺出
    的頭像 發(fā)表于 05-13 13:20 ?854次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b>eTs(七)如何判斷密碼是否正確