深度學習綜述:Hinton、Yann LeCun和Bengio經典重讀
翻譯 | kevin,劉志遠
審校 | 李成華
深度學習世界
【編者按】
深度學習三巨頭
Geoffrey Hinton、Yann LeCun和Yoshua Bengio對AI
領域的貢獻無人不知、無人不曉。本文是《Nature》雜誌
為紀念人工智慧60周年而專門推出的深度學習綜述,也是Hinton、
LeCun和Bengio
三位大神
首次合寫
同一篇文章。該綜述在深度學習領域的重要性不言而喻,可以說是所有人入門深度學習的必讀作品。本文上半部分深入淺出介紹深度學習的基本原理和核心優勢,下半部分則詳解CNN、分散式特徵表示、RNN及其不同的應用,並對深度學習技術的未來發展進行展望。
原文鏈接:
https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf
論文摘要
深度學習可以讓那些擁有多個處理層的計算模型來學習具有多層次抽象的數據的表示。這些方法在許多方面都帶來了顯著的改善,包括最先進的語音識別、視覺對象識別、對象檢測和許多其它領域,例如藥物發現和基因組學等。深度學習能夠發現大數據中的複雜結構。它是利用BP演算法來完成這個發現過程的。BP演算法能夠指導機器如何從前一層獲取誤差而改變本層的內部參數,這些內部參數可以用於計算表示。深度卷積網路在處理圖像、視頻、語音和音頻方面帶來了突破,而遞歸網路在處理序列數據,比如文本和演講方面表現出了閃亮的一面。
機器學習技術在現代社會的各個方面表現出了強大的功能:從Web搜索到社會網路內容過濾,再到電子商務網站上的商品推薦都有涉足。並且它越來越多地出現在消費品中,比如相機和智能手機。
機器學習系統被用來識別圖片中的目標,將語音轉換成文本,匹配新聞元素,根據用戶興趣提供職位或產品,選擇相關的搜索結果。逐漸地,這些應用使用一種叫深度學習的技術。傳統的機器學習技術在處理未加工過的數據時,體現出來的能力是有限的。
幾十年來,想要構建一個模式識別系統或者機器學習系統,需要一個精緻的引擎和相當專業的知識來設計一個特徵提取器,把原始數據(如圖像的像素值)轉換成一個適當的內部特徵表示或特徵向量,子學習系統,通常是一個分類器,對輸入的樣本進行檢測或分類。特徵表示學習是一套給機器灌入原始數據,然後能自動發現需要進行檢測和分類的表達的方法。
深度學習就是一種特徵學習方法,把原始數據通過一些簡單的但是非線性的模型轉變成為更高層次的,更加抽象的表達。通過足夠多的轉換的組合,非常複雜的函數也可以被學習。
對於分類任務,高層次的表達能夠強化輸入數據的區分能力方面,同時削弱不相關因素。比如,一副圖像的原始格式是一個像素數組,那麼在第一層上的學習特徵表達通常指的是在圖像的特定位置和方向上有沒有邊的存在。第二層通常會根據那些邊的某些排放而來檢測圖案,這時候會忽略掉一些邊上的一些小的干擾。第三層或許會把那些圖案進行組合,從而使其對應於熟悉目標的某部分。隨後的一些層會將這些部分再組合,從而構成待檢測目標。
深度學習的核心方面是,上述各層的特徵都不是利用人工工程來設計的,而是使用一種通用的學習過程從數據中學到的。
深度學習正在取得重大進展,解決了人工智慧界的盡最大努力很多年仍沒有進展的問題。它已經被證明,它能夠擅長發現高維數據中的複雜結構,因此它能夠被應用於科學、商業和政府等領域。除了在圖像識別、語音識別等領域打破了紀錄,它還在另外的領域擊敗了其他機器學習技術,包括預測潛在的藥物分子的活性、分析粒子加速器數據、重建大腦迴路、預測在非編碼DNA突變對基因表達和疾病的影響。
也許更令人驚訝的是,深度學習在自然語言理解的各項任務中產生了非常可喜的成果,特別是主題分類、情感分析、自動問答和語言翻譯。我們認為,在不久的將來,深度學習將會取得更多的成功,因為它需要很少的手工工程,它可以很容易受益於可用計算能力和數據量的增加。目前正在為深度神經網路開發的新的學習演算法和架構只會加速這一進程。
監督學習
機器學習中,不論是否是深層,最常見的形式是監督學習。
試想一下,我們要建立一個系統,它能夠對一個包含了一座房子、一輛汽車、一個人或一個寵物的圖像進行分類。我們先收集大量的房子,汽車,人與寵物的圖像的數據集,並對每個對象標上它的類別。在訓練期間,機器會獲取一副圖片,然後產生一個輸出,這個輸出以向量形式的分數來表示,每個類別都有一個這樣的向量。我們希望所需的類別在所有的類別中具有最高的得分,但是這在訓練之前是不太可能發生的。通過計算一個目標函數可以獲得輸出分數和期望模式分數之間的誤差(或距離)。然後機器會修改其內部可調參數,以減少這種誤差。這些可調節的參數,通常被稱為權值,它們是一些實數,可以被看作是一些「旋鈕」,定義了機器的輸入輸出功能。
在典型的深學習系統中,有可能有數以百萬計的樣本和權值,和帶有標籤的樣本,用來訓練機器。為了正確地調整權值向量,該學習演算法計算每個權值的梯度向量,表示了如果權值增加了一個很小的量,那麼誤差會增加或減少的量。權值向量然後在梯度矢量的相反方向上進行調整。我們的目標函數,所有訓練樣本的平均,可以被看作是一種在權值的高維空間上的多變地形。負的梯度矢量表示在該地形中下降方向最快,使其更接近於最小值,也就是平均輸出誤差低最低的地方。
在實際應用中,大部分從業者都使用一種稱作隨機梯度下降的演算法(SGD)。
它包含了提供一些輸入向量樣本,計算輸出和誤差,計算這些樣本的平均梯度,然後相應的調整權值。通過提供小的樣本集合來重複這個過程用以訓練網路,直到目標函數停止增長。它被稱為隨機的是因為小的樣本集對於全體樣本的平均梯度來說會有雜訊估計。這個簡單過程通常會找到一組不錯的權值,同其他精心設計的優化技術相比,它的速度讓人驚奇。訓練結束之後,系統會通過不同的數據樣本——測試集來顯示系統的性能。這用於測試機器的泛化能力——對於未訓練過的新樣本的識別能力。
當前應用中的許多機器學習技術使用的是線性分類器來對人工提取的特徵進行分類。一個2類線性分類器會計算特徵向量的加權和。當加權和超過一個閾值之後,輸入樣本就會被分配到一個特定的類別中。從20世紀60年代開始,我們就知道了線性分類器只能夠把樣本分成非常簡單的區域,也就是說通過一個超平面把空間分成兩部分。
但像圖像和語音識別等問題,它們需要的輸入-輸出函數要對輸入樣本中不相關因素的變化不要過於的敏感,如位置的變化,目標的方向或光照,或者語音中音調或語調的變化等,但是需要對於一些特定的微小變化非常敏感(例如,一隻白色的狼和跟狼類似的白色狗——薩莫耶德犬之間的差異)。在像素這一級別上,兩條薩莫耶德犬在不同的姿勢和在不同的環境下的圖像可以說差異是非常大的,然而,一隻薩摩耶德犬和一隻狼在相同的位置並在相似背景下的兩個圖像可能就非常類似。
圖1 多層神經網路和BP演算法
多層神經網路(用連接點表示)可以對輸入空間進行整合,使得數據(紅色和藍色線表示的樣本)線性可分。
注意輸入空間中的規則網格(左側)是如何被隱藏層轉換的(轉換後的在右側)。這個例子中只用了兩個輸入節點,兩個隱藏節點和一個輸出節點,但是用於目標識別或自然語言處理的網路通常包含數十個或者數百個這樣的節點。獲得C.Olah
(http://colah.github.io/)
的許可後重新構建的這個圖。
鏈式法則告訴我們兩個小的變化(x和y的微小變化,以及y和z的微小變化)是怎樣組織到一起的。
x的微小變化量Δx首先會通過乘以?y/?x(偏導數)轉變成y的變化量Δy。類似的,Δy會給z帶來改變Δz。通過鏈式法則可以將一個方程轉化到另外的一個——也就是Δx通過乘以?y/?x和?z/?x得到Δz的過程。當x,y,z是向量的時候,可以同樣處理(使用雅克比矩陣)。
具有兩個隱層一個輸出層的神經網路中計算前向傳播的公式。每個都有一個模塊構成,用於反向傳播梯度。
在每一層上,我們首先計算每個節點的總輸入z,z是前一層輸出的加權和。然後利用一個非線性函數f(.)來計算節點的輸出。簡單期間,我們忽略掉了閾值項。神經網路中常用的非線性函數包括了最近幾年常用的校正線性單元(ReLU)f(z) = max(0,z),和傳統的sigmoids,比如f(z) = (exp(z) ? exp(?z))/(exp(z) + exp(?z)) 和f(z) = 1/(1 + exp(?z))。
計算反向傳播的公式。
在隱層,我們計算每個輸出單元產生的誤差,這是由上一層產生的誤差的加權和。然後我們將輸出層的誤差通過乘以梯度f(z)轉換到輸入層。在輸出層上,每個節點的誤差會用成本函數的微分來計算。如果節點l的成本函數是0.5*(yl-tl)^2, 那麼節點的誤差就是yl-tl,其中tl是期望值。一旦知道了?E/?zk的值,節點j的內星權向量wjk就可以通過yj ?E/?zk來進行調整。
一個線性分類器或者其他操作在原始像素上的淺層分類器不能夠區分後兩者,雖然能夠將前者歸為同一類。這就是為什麼淺分類要求有良好的特徵提取器用於解決選擇性不變性困境——提取器會挑選出圖像中能夠區分目標的那些重要因素,但是這些因素對於分辨動物的位置就無能為力了。為了加強分類能力,可以使用泛化的非線性特性,如核方法,但這些泛化特徵,比如通過高斯核得到的,並不能夠使得學習器從學習樣本中產生較好的泛化效果。
傳統的方法是手工設計良好的特徵提取器,這需要大量的工程技術和專業領域知識。但是如果通過使用通用學習過程而得到良好的特徵,那麼這些都是可以避免的了。這就是深度學習的關鍵優勢。
深度學習的體系結構是簡單模塊的多層棧,所有(或大部分)模塊的目標是學習,還有許多計算非線性輸入輸出的映射。棧中的每個模塊將其輸入進行轉換,以增加表達的可選擇性和不變性。比如說,具有一個5到20層的非線性多層系統能夠實現非常複雜的功能,比如輸入數據對細節非常敏感——能夠區分白狼和薩莫耶德犬,同時又具有強大的抗干擾能力,比如可以忽略掉不同的背景、姿勢、光照和周圍的物體等。
用反向傳播訓練多層神經網路
在最早期的模式識別任務中,研究者的目標一直是使用可以訓練的多層網路來替代經過人工選擇的特徵,雖然使用多層神經網路很簡單,但是得出來的解很糟糕。直到20世紀80年代,使用簡單的隨機梯度下降來訓練多層神經網路,這種糟糕的情況才有所改變。只要網路的輸入和內部權值之間的函數相對平滑,使用梯度下降就湊效,梯度下降方法是在70年代到80年代期間由不同的研究團隊獨立發明的。
用來求解目標函數關於多層神經網路權值梯度的反向傳播演算法(BP)只是一個用來求導的鏈式法則的具體應用而已。
反向傳播演算法的核心思想是:目標函數對於某層輸入的導數(或者梯度)可以通過向後傳播對該層輸出(或者下一層輸入)的導數求得(如圖1)。
反向傳播演算法可以被重複的用於傳播梯度通過多層神經網路的每一層:從該多層神經網路的最頂層的輸出(也就是改網路產生預測的那一層)一直到該多層神經網路的最底層(也就是被接受外部輸入的那一層),一旦這些關於(目標函數對)每層輸入的導數求解完,我們就可以求解每一層上面的(目標函數對)權值的梯度了。很多深度學習的應用都是使用前饋式神經網路(如圖1),該神經網路學習一個從固定大小輸入(比如輸入是一張圖)到固定大小輸出(例如,到不同類別的概率)的映射。從第一層到下一層,計算前一層神經元輸入數據的權值的和,然後把這個和傳給一個非線性激活函數。當前最流行的非線性激活函數是rectified linear unit(ReLU),函數形式:f(z)=max(z,0)。過去的幾十年中,神經網路使用一些更加平滑的非線性函數,比如tanh(z)和1/(1+exp(-z)),但是ReLU通常會讓一個多層神經網路學習的更快,也可以讓一個深度網路直接有監督的訓練(不需要無監督的pre-train)。
達到之前那種有pre-train的效果。通常情況下,輸入層和輸出層以外的神經單元被稱為隱藏單元。隱藏層的作用可以看成是使用一個非線性的方式打亂輸入數據,來讓輸入數據對應的類別在最後一層變得線性可分。
在20世紀90年代晚期,神經網路和反向傳播演算法被大多數機器學習團隊拋棄,同時也不受計算機視覺和語音識別團隊的重視。人們普遍認為,學習有用的、多級層次結構的、使用較少先驗知識進行特徵提取的這些方法都不靠譜。
確切的說是因為簡單的梯度下降會讓整個優化陷入到不好的局部最小解。
實踐中,如果在大的網路中,不管使用什麼樣的初始化條件,局部最小解並不算什麼大問題,系統總是得到效果差不多的解。最近的理論和實驗表明,局部最小解還真不是啥大問題。相反,解空間中充滿了大量的鞍點(梯度為0的點),同時鞍點周圍大部分曲面都是往上的。所以這些演算法就算是陷入了這些局部最小值,關係也不太大。
2006年前後,CIFAR(加拿大高級研究院)把一些研究者聚集在一起,人們對深度前饋式神經網路重新燃起了興趣。研究者們提出了一種非監督的學習方法,這種方法可以創建一些網路層來檢測特徵而不使用帶標籤的數據,這些網路層可以用來重構或者對特徵檢測器的活動進行建模。通過預訓練過程,深度網路的權值可以被初始化為有意思的值。然後一個輸出層被添加到該網路的頂部,並且使用標準的反向傳播演算法進行微調。這個工作對手寫體數字的識別以及行人預測任務產生了顯著的效果,尤其是帶標籤的數據非常少的時候。
使用這種與訓練方法做出來的第一個比較大的應用是關於語音識別的,並且是在GPU上做的,這樣做是因為寫代碼很方便,並且在訓練的時候可以得到10倍或者20倍的加速。2009年,這種方法被用來映射短時間的係數窗口,該系統窗口是提取自聲波並被轉換成一組概率數字。它在一組使用很少辭彙的標準的語音識別基準測試程序上達到了驚人的效果,然後又迅速被發展到另外一個更大的數據集上,同時也取得驚人的效果。從2009年到到2012年底,較大的語音團隊開發了這種深度網路的多個版本並且已經被用到了安卓手機上。對於小的數據集來說,無監督的預訓練可以防止過擬合,同時可以帶來更好的泛化性能當有標籤的樣本很小的時候。一旦深度學習技術重新恢復,這種預訓練只有在數據集合較少的時候才需要。
然後,還有一種深度前饋式神經網路,這種網路更易於訓練並且比那種全連接的神經網路的泛化性能更好。這就是卷積神經網路(CNN)。當人們對神經網路不感興趣的時候,卷積神經網路在實踐中卻取得了很多成功,如今它被計算機視覺團隊廣泛使用。
卷積神經網路
卷積神經網路被設計用來處理到多維數組數據的,比如一個有3個包含了像素值2-D圖像組合成的一個具有3個顏色通道的彩色圖像。很多數據形態都是這種多維數組的:1D用來表示信號和序列包括語言,2D用來表示圖像或者聲音,3D用來表示視頻或者有聲音的圖像。卷積神經網路使用4個關鍵的想法來利用自然信號的屬性:局部連接、權值共享、池化以及多網路層的使用。
圖2 卷積神經網路內部
一個典型的卷積神經網路結構(如圖2)是由一系列的過程組成的。最初的幾個階段是由卷積層和池化層組成,卷積層的單元被組織在特徵圖中,在特徵圖中,每一個單元通過一組叫做濾波器的權值被連接到上一層的特徵圖的一個局部塊,然後這個局部加權和被傳給一個非線性函數,比如ReLU。在一個特徵圖中的全部單元享用相同的過濾器,不同層的特徵圖使用不同的過濾器。使用這種結構處於兩方面的原因。
首先,在數組數據中,比如圖像數據,一個值的附近的值經常是高度相關的,可以形成比較容易被探測到的有區分性的局部特徵。其次,不同位置局部統計特徵不太相關的,也就是說,在一個地方出現的某個特徵,也可能出現在別的地方,所以不同位置的單元可以共享權值以及可以探測相同的樣本。在數學上,這種由一個特徵圖執行的過濾操作是一個離線的卷積,卷積神經網路也是這麼得名來的。
卷積層的作用是探測上一層特徵的局部連接,然而池化層的作用是在語義上把相似的特徵合併起來,這是因為形成一個主題的特徵的相對位置不太一樣。一般地,池化單元計算特徵圖中的一個局部塊的最大值,相鄰的池化單元通過移動一行或者一列來從小塊上讀取數據,因為這樣做就減少的表達的維度以及對數據的平移不變性。兩三個這種的卷積、非線性變換以及池化被串起來,後面再加上一個更多卷積和全連接層。在卷積神經網路上進行反向傳播演算法和在一般的深度網路上是一樣的,可以讓所有的在過濾器中的權值得到訓練。
深度神經網路利用的很多自然信號是層級組成的屬性,在這種屬性中高級的特徵是通過對低級特徵的組合來實現的。在圖像中,局部邊緣的組合形成基本圖案,這些圖案形成物體的局部,然後再形成物體。這種層級結構也存在於語音數據以及文本數據中,如電話中的聲音,因素,音節,文檔中的單詞和句子。當輸入數據在前一層中的位置有變化的時候,池化操作讓這些特徵表示對這些變化具有魯棒性。
卷積神經網路中的卷積和池化層靈感直接來源於視覺神經科學中的簡單細胞和複雜細胞。這種細胞的是以LNG-V1-V2-V4-IT這種層級結構形成視覺迴路的。當給一個卷積神經網路和猴子一副相同的圖片的時候,卷積神經網路展示了猴子下顳葉皮質中隨機160個神經元的變化。卷積神經網路有神經認知的根源,他們的架構有點相似,但是在神經認知中是沒有類似反向傳播演算法這種端到端的監督學習演算法的。一個比較原始的1D卷積神經網路被稱為時延神經網路,可以被用來識別語音以及簡單的單詞。
20世紀90年代以來,基於卷積神經網路出現了大量的應用。最開始是用時延神經網路來做語音識別以及文檔閱讀。這個文檔閱讀系統使用一個被訓練好的卷積神經網路和一個概率模型,這個概率模型實現了語言方面的一些約束。20世紀90年代末,這個系統被用來美國超過10%的支票閱讀上。後來,微軟開發了基於卷積神經網路的字元識別系統以及手寫體識別系統。20世紀90年代早期,卷積神經網路也被用來自然圖形中的物體識別,比如臉、手以及人臉識別(face recognition )。
使用深度卷積網路進行圖像理解
21世紀開始,卷積神經網路就被成功的大量用於檢測、分割、物體識別以及圖像的各個領域。這些應用都是使用了大量的有標籤的數據,比如交通信號識別,生物信息分割,面部探測,文本、行人以及自然圖形中的人的身體部分的探測。近年來,卷積神經網路的一個重大成功應用是人臉識別。
值得一提的是,圖像可以在像素級別進行打標籤,這樣就可以應用在比如自動電話接聽機器人、自動駕駛汽車等技術中。像Mobileye以及NVIDIA公司正在把基於卷積神經網路的方法用於汽車中的視覺系統中。其它的應用涉及到自然語言的理解以及語音識別中。
圖3 從圖像到文字
儘管卷積神經網路應用的很成功,但是它被計算機視覺以及機器學習團隊開始重視是在2012年的ImageNet競賽。在該競賽中,深度卷積神經網路被用在上百萬張網路圖片數據集,這個數據集包含了1000個不同的類。該結果達到了前所未有的好,幾乎比當時最好的方法降低了一半的錯誤率。這個成功來自有效地利用了GPU、ReLU、一個新的被稱為dropout的正則技術,以及通過分解現有樣本產生更多訓練樣本的技術。這個成功給計算機視覺帶來一個革命。如今,卷積神經網路用於幾乎全部的識別和探測任務中。最近一個更好的成果是,利用卷積神經網路結合回饋神經網路用來產生圖像標題。
如今的卷積神經網路架構有10-20層採用ReLU激活函數、上百萬個權值以及幾十億個連接。然而訓練如此大的網路兩年前就只需要幾周了,現在硬體、軟體以及演算法並行的進步,又把訓練時間壓縮到了幾小時。
基於卷積神經網路的視覺系統的性能已經引起了大型技術公司的注意,比如Google、Facebook、Microsoft、IBM,yahoo!、Twitter和Adobe等,一些快速增長的創業公司也同樣如是。
卷積神經網路很容易在晶元或者現場可編程門陣列(FPGA)中高效實現,許多公司比如NVIDIA、Mobileye、Intel、Qualcomm以及Samsung,正在開發卷積神經網路晶元,以使智能機、相機、機器人以及自動駕駛汽車中的實時視覺系統成為可能。
分散式特徵表示與語言處理
與不使用分散式特徵表示(distributed representations )的經典學習演算法相比,深度學習理論表明深度網路具有兩個不同的巨大的優勢。這些優勢來源於網路中各節點的權值,並取決於具有合理結構的底層生成數據的分布。首先,學習分散式特徵表示能夠泛化適應新學習到的特徵值的組合(比如,n元特徵就有2n種可能的組合)。其次,深度網路中組合表示層帶來了另一個指數級的優勢潛能(指數級的深度)。
多層神經網路中的隱層利用網路中輸入的數據進行特徵學習,使之更加容易預測目標輸出。下面是一個很好的示範例子,比如將本地文本的內容作為輸入,訓練多層神經網路來預測句子中下一個單詞。內容中的每個單詞表示為網路中的N分之一的向量,也就是說,每個組成部分中有一個值為1其餘的全為0。在第一層中,每個單詞創建不同的激活狀態,或單詞向量(如圖4)。在語言模型中,網路中其餘層學習並轉化輸入的單詞向量為輸出單詞向量來預測句子中下一個單詞,可以通過預測辭彙表中的單詞作為文本句子中下一個單詞出現的概率。網路學習了包含許多激活節點的、並且可以解釋為詞的獨立特徵的單詞向量,正如第一次示範的文本學習分層表徵文字元號的例子。這些語義特徵在輸入中並沒有明確的表徵。而是在利用「微規則」(『micro-rules』,本文中直譯為:微規則)學習過程中被發掘,並作為一個分解輸入與輸出符號之間關係結構的好的方式。當句子是來自大量的真實文本並且個別的微規則不可靠的情況下,學習單詞向量也一樣能表現得很好。利用訓練好的模型預測新的事例時,一些概念比較相似的詞容易混淆,比如星期二(Tuesday)和星期三(Wednesday),瑞典(Sweden)和挪威(Norway)。這樣的表示方式被稱為分散式特徵表示,因為他們的元素之間並不互相排斥,並且他們的構造信息對應於觀測到的數據的變化。這些單詞向量是通過學習得到的特徵構造的,這些特徵不是由專家決定的,而是由神經網路自動發掘的。從文本中學習得單詞向量表示現在廣泛應用於自然語言中。
圖4 詞向量學習可視化
特徵表示問題爭論的中心介於對基於邏輯啟發和基於神經網路的認識。在邏輯啟發的範式中,一個符號實體表示某一事物,因為其唯一的屬性與其他符號實體相同或者不同。該符號實例沒有內部結構,並且結構與使用是相關的,至於理解符號的語義,就必須與變化的推理規則合理對應。相反地,神經網路利用了大量活動載體、權值矩陣和標量非線性化,來實現能夠支撐簡單容易的、具有常識推理的快速「直覺」功能。
在介紹神經語言模型前,簡述下標準方法,其是基於統計的語言模型,該模型沒有使用分散式特徵表示。而是基於統計簡短符號序列出現的頻率增長到N(N-grams,N元文法)。可能的N-grams的數字接近於VN,其中V是辭彙表的大小,考慮到文本內容包含成千上萬個單詞,所以需要一個非常大的語料庫。N-grams將每個單詞看成一個原子單元,因此不能在語義相關的單詞序列中一概而論,然而神經網路語言模型可以,是因為他們關聯每個詞與真是特徵值的向量,並且在向量空間中語義相關的詞彼此靠近(圖4)。
遞歸神經網路
首次引入反向傳播演算法時,最令人興奮的便是使用遞歸神經網路(recurrent neural networks,下文簡稱RNNs)訓練。對於涉及到序列輸入的任務,比如語音和語言,利用RNNs能獲得更好的效果。RNNs一次處理一個輸入序列元素,同時維護網路中隱式單元中隱式的包含過去時刻序列元素的歷史信息的「狀態向量」。如果是深度多層網路不同神經元的輸出,我們就會考慮這種在不同離散時間步長的隱式單元的輸出,這將會使我們更加清晰怎麼利用反向傳播來訓練RNNs(如圖5,右)。
圖5 遞歸神經網路
RNNs是非常強大的動態系統,但是訓練它們被證實存在問題的,因為反向傳播的梯度在每個時間間隔內是增長或下降的,所以經過一段時間後將導致結果的激增或者降為零。
由於先進的架構和訓練方式,RNNs被發現可以很好的預測文本中下一個字元或者句子中下一個單詞,並且可以應用於更加複雜的任務。例如在某時刻閱讀英語句子中的單詞後,將會訓練一個英語的「編碼器」網路,使得隱式單元的最終狀態向量能夠很好地表徵句子所要表達的意思或思想。這種「思想向量」(thought vector)可以作為聯合訓練一個法語「編碼器」網路的初始化隱式狀態(或者額外的輸入),其輸出為法語翻譯首單詞的概率分布。如果從分布中選擇一個特殊的首單詞作為編碼網路的輸入,將會輸出翻譯的句子中第二個單詞的概率分布,並直到停止選擇為止。總體而言,這一過程是根據英語句子的概率分布而產生的法語辭彙序列。這種簡單的機器翻譯方法的表現甚至可以和最先進的(state-of-the-art)的方法相媲美,同時也引起了人們對於理解句子是否需要像使用推理規則操作內部符號表示質疑。這與日常推理中同時涉及到根據合理結論類推的觀點是匹配的。
類比於將法語句子的意思翻譯成英語句子,同樣可以學習將圖片內容「翻譯」為英語句子(如圖3)。這種編碼器是可以在最後的隱層將像素轉換為活動向量的深度卷積網路(ConvNet)。解碼器與RNNs用於機器翻譯和神經網路語言模型的類似。近來,已經掀起了一股深度學習的巨大興趣熱潮(參見文獻[86]提到的例子)。
RNNs一旦展開(如圖5),可以將之視為一個所有層共享同樣權值的深度前饋神經網路。雖然它們的目的是學習長期的依賴性,但理論的和經驗的證據表明很難學習並長期保存信息。
為了解決這個問題,一個增大網路存儲的想法隨之產生。採用了特殊隱式單元的LSTM(long short-termmemory networks)被首先提出,其自然行為便是長期的保存輸入。一種稱作記憶細胞的特殊單元類似累加器和門控神經元:它在下一個時間步長將擁有一個權值並聯接到自身,拷貝自身狀態的真實值和累積的外部信號,但這種自聯接是由另一個單元學習並決定何時清除記憶內容的乘法門控制的。
LSTM網路隨後被證明比傳統的RNNs更加有效,尤其當每一個時間步長內有若干層時,整個語音識別系統能夠完全一致的將聲學轉錄為字元序列。目前LSTM網路或者相關的門控單元同樣用於編碼和解碼網路,並且在機器翻譯中表現良好。
過去幾年中,幾位學者提出了不同的提案用於增強RNNs的記憶模塊。提案中包括神經圖靈機,其中通過加入RNNs可讀可寫的「類似磁帶」的存儲來增強網路,而記憶網路中的常規網路通過聯想記憶來增強。記憶網路在標準的問答基準測試中表現良好,記憶是用來記住稍後要求回答問題的事例。
除了簡單的記憶化,神經圖靈機和記憶網路正在被用於那些通常需要推理和符號操作的任務,還可以教神經圖靈機「演算法」。除此以外,他們可以從未排序的輸入符號序列(其中每個符號都有與其在列表中對應的表明優先順序的真實值)中,學習輸出一個排序的符號序列。可以訓練記憶網路用來追蹤一個設定與文字冒險遊戲和故事的世界的狀態,回答一些需要複雜推理的問題。在一個測試例子中,網路能夠正確回答15句版的《指環王》中諸如「Frodo現在在哪?」的問題。
深度學習的未來展望
無監督學習對於重新點燃深度學習的熱潮起到了促進的作用,但是純粹的有監督學習的成功蓋過了無監督學習。在本篇綜述中雖然這不是我們的重點,我們還是期望無監督學習在長期內越來越重要。無監督學習在人類和動物的學習中佔據主導地位:我們通過觀察能夠發現世界的內在結構,而不是被告知每一個客觀事物的名稱。
人類視覺是一個智能的、基於特定方式的利用小或大解析度的視網膜中央窩與周圍環繞區域對光線採集成像的活躍的過程。我們期望未來在機器視覺方面會有更多的進步,這些進步來自那些端對端的訓練系統,並結合ConvNets和RNNs,採用增強學習來決定走向。結合了深度學習和增強學習的系統正處在初期,但已經在分類任務中超過了被動視頻系統,並在學習操作視頻遊戲中產生了令人印象深刻的效果。
在未來幾年,自然語言理解將是深度學習做出巨大影響的另一個領域。我們預測那些利用了RNNs的系統將會更好地理解句子或者整個文檔,當它們選擇性地學習了某時刻部分加入的策略。
最終,在人工智慧方面取得的重大進步將來自那些結合了複雜推理表示學習(representation learning )的系統。儘管深度學習和簡單推理已經應用於語音和手寫字識別很長一段時間了,我們仍需要通過操作大量向量的新範式來代替基於規則的字元表達式操作。
參考文獻詳見原文。
下載地址:
https://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf