【編者按】三大牛Yann LeCun、Yoshua Bengio和Geoffrey Hinton在深度學(xué)習(xí)領(lǐng)域的地位無人不知。為紀(jì)念人工智能提出60周年,最新的《Nature》雜志專門開辟了一個“人工智能 + 機(jī)器人”專題 ,發(fā)表多篇相關(guān)論文,其中包括了Yann LeCun、Yoshua Bengio和Geoffrey Hinton首次合作的這篇綜述文章“Deep Learning”。本文為該綜述文章中文譯文的上半部分,深入淺出地介紹了深度學(xué)習(xí)的基本原理和核心優(yōu)勢。
原文摘要:深度學(xué)習(xí)可以讓那些擁有多個處理層的計算模型來學(xué)習(xí)具有多層次抽象的數(shù)據(jù)的表示。這些方法在許多方面都帶來了顯著的改善,包括最先進(jìn)的語音識別、視覺對象識別、對象檢測和許多其它領(lǐng)域,例如藥物發(fā)現(xiàn)和基因組學(xué)等。深度學(xué)習(xí)能夠發(fā)現(xiàn)大數(shù)據(jù)中的復(fù)雜結(jié)構(gòu)。它是利用BP算法來完成這個發(fā)現(xiàn)過程的。BP算法能夠指導(dǎo)機(jī)器如何從前一層獲取誤差而改變本層的內(nèi)部參數(shù),這些內(nèi)部參數(shù)可以用于計算表示。深度卷積網(wǎng)絡(luò)在處理圖像、視頻、語音和音頻方面帶來了突破,而遞歸網(wǎng)絡(luò)在處理序列數(shù)據(jù),比如文本和演講方面表現(xiàn)出了閃亮的一面。
機(jī)器學(xué)習(xí)技術(shù)在現(xiàn)代社會的各個方面表現(xiàn)出了強(qiáng)大的功能:從Web搜索到社會網(wǎng)絡(luò)內(nèi)容過濾,再到電子商務(wù)網(wǎng)站上的商品推薦都有涉足。并且它越來越多地出現(xiàn)在消費(fèi)品中,比如相機(jī)和智能手機(jī)。
機(jī)器學(xué)習(xí)系統(tǒng)被用來識別圖片中的目標(biāo),將語音轉(zhuǎn)換成文本,匹配新聞元素,根據(jù)用戶興趣提供職位或產(chǎn)品,選擇相關(guān)的搜索結(jié)果。逐漸地,這些應(yīng)用使用一種叫深度學(xué)習(xí)的技術(shù)。傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)在處理未加工過的數(shù)據(jù)時,體現(xiàn)出來的能力是有限的。幾十年來,想要構(gòu)建一個模式識別系統(tǒng)或者機(jī)器學(xué)習(xí)系統(tǒng),需要一個精致的引擎和相當(dāng)專業(yè)的知識來設(shè)計一個特征提取器,把原始數(shù)據(jù)(如圖像的像素值)轉(zhuǎn)換成一個適當(dāng)?shù)膬?nèi)部特征表示或特征向量,子學(xué)習(xí)系統(tǒng),通常是一個分類器,對輸入的樣本進(jìn)行檢測或分類。特征表示學(xué)習(xí)是一套給機(jī)器灌入原始數(shù)據(jù),然后能自動發(fā)現(xiàn)需要進(jìn)行檢測和分類的表達(dá)的方法。深度學(xué)習(xí)就是一種特征學(xué)習(xí)方法,把原始數(shù)據(jù)通過一些簡單的但是非線性的模型轉(zhuǎn)變成為更高層次的,更加抽象的表達(dá)。通過足夠多的轉(zhuǎn)換的組合,非常復(fù)雜的函數(shù)也可以被學(xué)習(xí)。對于分類任務(wù),高層次的表達(dá)能夠強(qiáng)化輸入數(shù)據(jù)的區(qū)分能力方面,同時削弱不相關(guān)因素。比如,一副圖像的原始格式是一個像素數(shù)組,那么在第一層上的學(xué)習(xí)特征表達(dá)通常指的是在圖像的特定位置和方向上有沒有邊的存在。第二層通常會根據(jù)那些邊的某些排放而來檢測圖案,這時候會忽略掉一些邊上的一些小的干擾。第三層或許會把那些圖案進(jìn)行組合,從而使其對應(yīng)于熟悉目標(biāo)的某部分。隨后的一些層會將這些部分再組合,從而構(gòu)成待檢測目標(biāo)。深度學(xué)習(xí)的核心方面是,上述各層的特征都不是利用人工工程來設(shè)計的,而是使用一種通用的學(xué)習(xí)過程從數(shù)據(jù)中學(xué)到的。
深度學(xué)習(xí)正在取得重大進(jìn)展,解決了人工智能界的盡最大努力很多年仍沒有進(jìn)展的問題。它已經(jīng)被證明,它能夠擅長發(fā)現(xiàn)高維數(shù)據(jù)中的復(fù)雜結(jié)構(gòu),因此它能夠被應(yīng)用于科學(xué)、商業(yè)和政府等領(lǐng)域。除了在圖像識別、語音識別等領(lǐng)域打破了紀(jì)錄,它還在另外的領(lǐng)域擊敗了其他機(jī)器學(xué)習(xí)技術(shù),包括預(yù)測潛在的藥物分子的活性、分析粒子加速器數(shù)據(jù)、重建大腦回路、預(yù)測在非編碼DNA突變對基因表達(dá)和疾病的影響。也許更令人驚訝的是,深度學(xué)習(xí)在自然語言理解的各項任務(wù)中產(chǎn)生了非??上驳某晒?,特別是主題分類、情感分析、自動問答和語言翻譯。我們認(rèn)為,在不久的將來,深度學(xué)習(xí)將會取得更多的成功,因為它需要很少的手工工程,它可以很容易受益于可用計算能力和數(shù)據(jù)量的增加。目前正在為深度神經(jīng)網(wǎng)絡(luò)開發(fā)的新的學(xué)習(xí)算法和架構(gòu)只會加速這一進(jìn)程。
機(jī)器學(xué)習(xí)中,不論是否是深層,最常見的形式是監(jiān)督學(xué)習(xí)。試想一下,我們要建立一個系統(tǒng),它能夠?qū)σ粋€包含了一座房子、一輛汽車、一個人或一個寵物的圖像進(jìn)行分類。我們先收集大量的房子,汽車,人與寵物的圖像的數(shù)據(jù)集,并對每個對象標(biāo)上它的類別。在訓(xùn)練期間,機(jī)器會獲取一副圖片,然后產(chǎn)生一個輸出,這個輸出以向量形式的分?jǐn)?shù)來表示,每個類別都有一個這樣的向量。我們希望所需的類別在所有的類別中具有最高的得分,但是這在訓(xùn)練之前是不太可能發(fā)生的。通過計算一個目標(biāo)函數(shù)可以獲得輸出分?jǐn)?shù)和期望模式分?jǐn)?shù)之間的誤差(或距離)。然后機(jī)器會修改其內(nèi)部可調(diào)參數(shù),以減少這種誤差。這些可調(diào)節(jié)的參數(shù),通常被稱為權(quán)值,它們是一些實數(shù),可以被看作是一些“旋鈕”,定義了機(jī)器的輸入輸出功能。在典型的深學(xué)習(xí)系統(tǒng)中,有可能有數(shù)以百萬計的樣本和權(quán)值,和帶有標(biāo)簽的樣本,用來訓(xùn)練機(jī)器。為了正確地調(diào)整權(quán)值向量,該學(xué)習(xí)算法計算每個權(quán)值的梯度向量,表示了如果權(quán)值增加了一個很小的量,那么誤差會增加或減少的量。權(quán)值向量然后在梯度矢量的相反方向上進(jìn)行調(diào)整。我們的目標(biāo)函數(shù),所有訓(xùn)練樣本的平均,可以被看作是一種在權(quán)值的高維空間上的多變地形。負(fù)的梯度矢量表示在該地形中下降方向最快,使其更接近于最小值,也就是平均輸出誤差低最低的地方。
在實際應(yīng)用中,大部分從業(yè)者都使用一種稱作隨機(jī)梯度下降的算法(SGD)。它包含了提供一些輸入向量樣本,計算輸出和誤差,計算這些樣本的平均梯度,然后相應(yīng)的調(diào)整權(quán)值。通過提供小的樣本集合來重復(fù)這個過程用以訓(xùn)練網(wǎng)絡(luò),直到目標(biāo)函數(shù)停止增長。它被稱為隨機(jī)的是因為小的樣本集對于全體樣本的平均梯度來說會有噪聲估計。這個簡單過程通常會找到一組不錯的權(quán)值,同其他精心設(shè)計的優(yōu)化技術(shù)相比,它的速度讓人驚奇。訓(xùn)練結(jié)束之后,系統(tǒng)會通過不同的數(shù)據(jù)樣本——測試集來顯示系統(tǒng)的性能。這用于測試機(jī)器的泛化能力——對于未訓(xùn)練過的新樣本的識別能力。
當(dāng)前應(yīng)用中的許多機(jī)器學(xué)習(xí)技術(shù)使用的是線性分類器來對人工提取的特征進(jìn)行分類。一個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ò)(用連接點表示)可以對輸入空間進(jìn)行整合,使得數(shù)據(jù)(紅色和藍(lán)色線表示的樣本)線性可分。注意輸入空間中的規(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來進(jìn)行調(diào)整。
一個線性分類器或者其他操作在原始像素上的淺層分類器不能夠區(qū)分后兩者,雖然能夠?qū)⑶罢邭w為同一類。這就是為什么淺分類要求有良好的特征提取器用于解決選擇性不變性困境——提取器會挑選出圖像中能夠區(qū)分目標(biāo)的那些重要因素,但是這些因素對于分辨動物的位置就無能為力了。為了加強(qiáng)分類能力,可以使用泛化的非線性特性,如核方法,但這些泛化特征,比如通過高斯核得到的,并不能夠使得學(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í),還有許多計算非線性輸入輸出的映射。棧中的每個模塊將其輸入進(jìn)行轉(zhuǎn)換,以增加表達(dá)的可選擇性和不變性。比如說,具有一個5到20層的非線性多層系統(tǒng)能夠?qū)崿F(xiàn)非常復(fù)雜的功能,比如輸入數(shù)據(jù)對細(xì)節(jié)非常敏感——能夠區(qū)分白狼和薩莫耶德犬,同時又具有強(qiáng)大的抗干擾能力,比如可以忽略掉不同的背景、姿勢、光照和周圍的物體等。
在最早期的模式識別任務(wù)中,研究者的目標(biāo)一直是使用可以訓(xùn)練的多層網(wǎng)絡(luò)來替代經(jīng)過人工選擇的特征,雖然使用多層神經(jīng)網(wǎng)絡(luò)很簡單,但是得出來的解很糟糕。直到20世紀(jì)80年代,使用簡單的隨機(jī)梯度下降來訓(xùn)練多層神經(jīng)網(wǎng)絡(luò),這種糟糕的情況才有所改變。只要網(wǎng)絡(luò)的輸入和內(nèi)部權(quán)值之間的函數(shù)相對平滑,使用梯度下降就湊效,梯度下降方法是在70年代到80年代期間由不同的研究團(tuán)隊獨(dú)立發(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)。
達(dá)到之前那種有pre-train的效果。通常情況下,輸入層和輸出層以外的神經(jīng)單元被稱為隱藏單元。隱藏層的作用可以看成是使用一個非線性的方式打亂輸入數(shù)據(jù),來讓輸入數(shù)據(jù)對應(yīng)的類別在最后一層變得線性可分。
在20世紀(jì)90年代晚期,神經(jīng)網(wǎng)絡(luò)和反向傳播算法被大多數(shù)機(jī)器學(xué)習(xí)團(tuán)隊拋棄,同時也不受計算機(jī)視覺和語音識別團(tuán)隊的重視。人們普遍認(rèn)為,學(xué)習(xí)有用的、多級層次結(jié)構(gòu)的、使用較少先驗知識進(jìn)行特征提取的這些方法都不靠譜。確切的說是因為簡單的梯度下降會讓整個優(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)或者對特征檢測器的活動進(jìn)行建模。通過預(yù)訓(xùn)練過程,深度網(wǎng)絡(luò)的權(quán)值可以被初始化為有意思的值。然后一個輸出層被添加到該網(wǎng)絡(luò)的頂部,并且使用標(biāo)準(zhǔn)的反向傳播算法進(jì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)測試程序上達(dá)到了驚人的效果,然后又迅速被發(fā)展到另外一個更大的數(shù)據(jù)集上,同時也取得驚人的效果。從2009年到到2012年底,較大的語音團(tuán)隊開發(fā)了這種深度網(wǎng)絡(luò)的多個版本并且已經(jīng)被用到了安卓手機(jī)上。對于小的數(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ī)視覺團(tuán)隊廣泛使用。
聯(lián)系客服