Nature:Hinton、LeCun、Bengio三巨頭權威科普深度學習
Hinton、LeCun、Bengio
是深度學習的最權威的科學家。文中介紹的網路是深度學習中最為成熟,經典的部分。讀這篇文章可以對深度學習的核心模組有一個最快的認識。
背景
藉助深度學習,多處理層組成的計算模型可通過多層抽象來學習資料表徵( representations)。這些方法顯著推動了語音識別、視覺識別、目標檢測以及許多其他領域(比如,藥物發現以及基因組學)的技術發展。利用反向傳播演算法(backpropagation algorithm)來顯示機器將會如何根據前一層的表徵改變用以計算每層表徵的內部引數,深度學習發現了大資料集的複雜結構。深層卷積網路(deep convolutional nets)為影象、視訊和音訊等資料處理上帶來突破性進展,而遞迴網路(recurrent nets )也給序列資料(諸如文字、語言)的處理帶來曙光。
機器學習為現代生活諸多方面帶來巨大動力:從網頁搜尋到社交網路內容過濾再到電商網商推薦,在相機、智慧手機等消費品中也越來越多見。機器學習系統被用來識別影象中的物體、將語音轉為文字,根據使用者興趣自動匹配新聞、訊息或產品,挑選相關搜尋結果。這類被應用程式越來越多地採用的技術,叫做深度學習。
傳統機器學習技術在處理原始輸入的自然資料方面能力有限。幾十年來,建構模式識別或機器學習系統需要利用嚴謹的工程學和相當豐富的專業知識設計出一個特徵提取器,它能將原始資料(例如影象畫素值)轉化成適於內部描述或表徵的向量( vector ),在提取器中,學習子系統(通常是一個分類器)可以檢測或分類輸入模式。
表徵學習(representation learning)是這樣一套學習方法:輸入原始資料後,機器能夠自動發現檢測或分類所需的表徵資訊。深度學習是一種多層描述的表徵學習,通過組合簡單、非線性模組來實現,每個模組都會將最簡單的描述(從原始輸入開始)轉變成較高層、較為抽象的描述。通過積累足夠多的上述表徵轉化,機器能學習非常複雜的函式。就分類任務來說,更高層的表徵會放大輸入訊號的特徵,而這對區分和控制不相關變數非常關鍵。比如,圖片最初以畫素值的方式出現,第一特徵層級中,機器習得的特徵主要是影象中特定方位、位置邊沿之有無。第二特徵層級中,主要是通過發現特定安排的邊緣來檢測圖案,此時機器並不考慮邊沿位置的微小變化。第三層中會將區域性影象與物體相應部分匹配,後續的層級將會通過把這些區域性組合起來從而識別出整個物體。深度學習的關鍵之處在於:這些特徵層級並非出自人類工程師之手;而是機器通過一個通用(general-purpose)學習程式,從大量資料中自學得出。
某些根深蒂固的問題困擾了人工智慧從業者許多年,以至於人們最出色的嘗試都無功而返。而深度學習的出現,讓這些問題的解決邁出了至關重要的步伐。深度學習善於在高維度的資料中摸索出錯綜複雜的結構,因此能應用在許多不同的領域,比如科學、商業和政府。此外,除了影象識別和語音識別,它還在許多方面擊敗了其他機器學習技術,比如預測潛在藥物分子的活性、分析粒子加速器的資料、重構大腦回路、預測非編碼DNA的突變對基因表達和疾病有何影響等。也許,最讓人驚訝的是,在自然語言理解方面,特別是話題分類、情感分析、問答系統和語言翻譯等不同的任務上,深度學習都展現出了無限光明的前景。
在不久的將來,我們認為深度學習將取得更多成就,因為它只需要極少的人工參與,所以它能輕而易舉地從計算能力提升和資料量增長中獲得裨益。目前正在開發的用於深層神經網路的新型學習演算法和體系結構必將加速這一程序。
監督式學習
不管深度與否,機器學習最普遍的形式都是監督式學習(supervised learning)。比如說,我們想構造一個系統,它能根據特定元素對圖片進行分類,例如包含一棟房子、一輛車、一個人或一隻寵物。首先,我們要收集大量包含有房子、車、人或寵物的圖片,組成一個數據集(data set),每張圖片都標記有它的類別。在訓練時,每當我們向機器展示一張圖片,機器就會輸出一個相應類別的向量。我們希望的結果是:指定類別的分數最高,高於其他所有類別。然而,如果不經過訓練,這將是不可能完成的任務。為此,我們通過一個目標函式來計算實際輸出與期望輸出之間的誤差或距離。接下來,為了減小誤差,機器會對其內部可調引數進行調整。這些可調引數常被稱為「權重」(weight),是實數,可看做定義機器輸入-輸出功能的「門把手」。在一個典型的深度學習系統中,可能存在著成千上億的可調權重及用以訓練機器的標記樣本。
為了正確地調整權重向量( weight vector),學習演算法會計算出一個梯度向量( gradient vector)。對每一個權重,這個梯度向量都能指示出,當權重略微增減一點點時,誤差會隨之增減多少量。接著,權重向量就會往梯度向量的反方向進行調整。
從所有訓練範例之上,平均看來,目標函式( objective function)可被視為一片崎嶇的山地,坐落於由權重組成的高維空間。梯度向量為負值的地方,意味著山地中最陡峭的下坡方向,一路接近最小值。這個最小值,也就是平均輸出誤差最小之處。
在實踐中,大多數業內人士都是用一種被稱為「隨機梯度下降」(SGD - Stochastic Gradient Descent)的演算法(梯度下降Grident Descent 是「最小化風險函式」以及「損失函式」的一種常用方法,「隨機梯度下降」是此類下的一種通過迭代求解的思路——譯者注)。每一次迭代包括以下幾個步驟:獲取一些樣本的輸入向量( input vector),計算輸出結果和誤差,計算這些樣本的平均梯度,根據平均梯度調整相應權重。這個過程在各個從整個訓練集中抽取的小子集之上重複,直到目標函式的平均值停止下降。它被稱做隨機(Stochastic)是因為每個樣本組都會給出一個對於整個訓練集( training set)的平均梯度(average gradient)的噪音估值(noisy estimate)。較於更加精確的組合優化技術,這個簡單的方法通常可以神奇地快速地找出一個權重適當的樣本子集。訓練過後,系統的效能將在另外一組不同樣本(即測試集)上進行驗證,以期測試機器的泛化能力( generalization ability) ——面對訓練中從未遇過的新輸入,機器能夠給出合理答案。
很多當今機器學習的實際應用都在人工設定的特徵上使用「線性分類」(linear classifiers)。一個「二元線性分類器」(two-class linear classifier)可以計算出特徵向量的「加權和」(weighted sum)。如果「加權和」高於閾值,該輸入樣本就被歸類於某個特定的類別。
二十世紀六十年代以來,我們就知道線性分類只能將輸入樣本劃分到非常簡單的區域中,即被超平面切分的半空間。但是,對於類似影象及語音識別等問題,要求「輸入-輸出函式」(input–output function)必須對輸入樣本的無關變化不敏感,比如,圖片中物體的位置,方向或者物體上的裝飾圖案,又比如,聲音的音調或者口音;與此同時「輸入-輸出函式」又需要對某些細微差異特別敏感(比如,一匹白色的狼和一種長得很像狼的被稱作薩摩耶的狗)。兩隻薩摩耶在不同的環境裡擺著不同姿勢的照片從畫素級別來說很可能會非常地不一樣,然而在類似背景下襬著同樣姿勢的一隻薩摩耶和一隻狼的照片在畫素級別來說很可能會非常相像。一個「線性分類器」(linear classifier),或者其他基於原始畫素操作的「淺層(shallow)」分類操作是無論如何也無法將後者中的兩隻區分開,也無法將前者中的兩隻分到同樣的類別裡的。這也就是為什麼「淺層」「分類器(classifiers)」需要一個可以出色地解決「選擇性-恆常性困境」( selectivity–invariance dilemma)的「特徵提取器」(feature extractor)—— 提取出對於辨別圖片內容有意義的資訊,同時忽略不相關的資訊,比如,動物的姿勢。我們可以用一些常規的非線性特徵來增強「分類器」(classifiers)的效果,比如「核方法」(kernel methods),但是,這些常規特徵,比如「高斯核」(Gaussian Kernel)所找出來的那些,很難泛化( generalize )到與訓練集差別別較大的輸入上。傳統的方法是人工設計好的「特徵提取器」,這需要相當的工程技巧和問題領域的專業知識。但是,如果好的「特徵提取器」可以通過「通用學習程式(General-Purpose learning procedure)」完成自學習,那麼這些麻煩事兒就可以被避免了。這就是深度學習的重要優勢。
圖1| 多層神經網路和反向傳播。
a. 一個多層神經網路(如圖所示相互連線的點)能夠整合(distort)輸入空間(圖中以紅線與藍線為例)讓資料變得線性可分。注意輸入空間的規則網格(左側)如何轉被隱藏單元(中間)轉換的。例子只有兩個輸入單元、兩個隱藏單元和一個輸出單元,但事實上,用於物件識別和自然語言處理的網路通常包含了數十或成千上萬個單元。(本節引用改寫自 C. Olah (http://colah.github.io/).)
b. 導數的鏈式法則告訴我們,兩個微小增量(即x關於y的增量,以及y關於z的增量)是如何構成的。x的增量Δx導致了y的增量Δy,這是通過乘以∂y/∂x來實現的(即偏導數的定義)。同樣,Δy的變化也會引起Δz的變化。用一個方程代替另一個方程引出了導數的鏈式法則( the chain rule of derivatives),即增量Δx如何通過與∂y/∂x及 ∂z/∂x相乘使得z也發生增量Δz。當x,y 和 z都是向量時這一規律也同樣適用(使用雅克比矩陣)。
c. 這個公式用於計算在包含著兩個隱層和一個輸出層的神經網路中的前向傳輸,每個層面的逆向傳遞梯度都構成了一個模組。在每一層,我們首先計算面向每個單元的總輸入值z,即上一層的輸出單元的加權和;然後,通過將一個非線性函式f(.)應用於z來得出這個單元的輸出。為了簡化流程,我們忽略掉一些閾值項(bias terms)。在神經網路中使用的非線性函式包含了近些年較為常用的校正線性單元(ReLU) f(z) = max(0,z),以及更傳統的 sigmoid函式,比如,雙曲線正切函式, f(z) = (exp(z) − exp(−z))/(exp(z) + exp(−z)) 和 邏輯函式f(z) = 1/(1 + exp(−z)).
d. 該公式用於計算反向傳遞。在每一個隱藏層中,我們都會計算每個單元輸出的導數誤差,即上述層中上一層所有單元輸入的導數誤差的加權總和。 然後,將關於輸出的導數誤差乘以函式f(z)的梯度(gradient),得到關於輸入的導數誤差。 在輸出層中,通過對成本函式進行微分計算,求得關於輸出單元的誤差導數。因此我們得出結論 yl - tl 如果對應於單元l的成本函式是 0.5(yl - tl) 2 (注意tl是目標值)。一旦∂E/∂zk已知,那麼,就能通過yj ∂E/∂zk調整單元j的內星權向量wjk。
圖2 | 卷積網路的內部。一個典型的卷積網路架構的每一層(水平)輸出(不是過濾器)應用到一個薩摩耶犬的影象(圖2左下方,RGB輸入(紅綠藍),下方右側)。 每一個長方形圖片都是一張對應於學習到的輸出特徵的特徵地圖,這些特徵可以在圖片的各個位置被偵測到。資訊流是從下往上的,低階的特徵充作導向性邊際檢測因子( edge detectors),每個輸出影象類都會被計算出一個分值。ReLU,整流線性單元。
深度學習架構由簡單模組多層堆疊而成,全部(或絕大部分)模組都從事學習,大部分會計算非線性的輸入輸出對映。堆疊架構中的每個模組都會轉換它的輸入,同時增強可選擇性和所呈現狀態的一致性。 通過多個非線性層面(例如,深度5-20層),系統可以實現對於輸入資料的極其微小細節的敏感性功能 --- 例如,區別開白色的狼和薩摩耶犬 --- 並且對於較大的無關變數會不敏感(例如,主體周圍的環境、姿勢、光照條件和周圍物體。)
訓練多層架構的反向傳播演算法
從最早的模式識別開始,研究者們就一直試圖用可訓練的多層網路代替人工設計特徵,儘管這種解決方案很簡單,直到20世紀80年代中期,它才得到人們的廣泛認可。事實證明,多層架構可以通過簡單的隨機梯度下降法得以訓練。只要模組是由它們的輸入值及其內部權重構成的相對平滑的函式(relatively smooth functions),人們就可以使用反向傳播演算法來計算梯度。20世紀70至80年代,幾個不同的研究小組分別發現這一方法確實可行、有用。
計算一個目標函式關於一個多層堆疊模組的權重梯度的反向傳播過程,只不過是導數鏈式法則的一個實際應用。其中關鍵之處在於,關於模組輸入值的函式的導數(或梯度),可以藉助關於該模組的輸出值(或序列模組的輸入值)的梯度反向計算出來(圖1)。反向傳播方程可在所有模組中傳播梯度時被反覆應用,從頂部(top)(神經網路產生預測的那一層)輸出開始,一直到底部(bottom)(被接收外部輸入的那一層)。這些梯度一經計算,就可直接計算出關於每個模組權重的梯度。
深度學習的許多應用,都會使用前饋神經網路架構( feedforward neural network architectures)(圖1)——該架構可學習將一個固定大小的輸入對映到(例如,一幅影象)到一個固定大小的輸出上(例如,每種分類的概率)。從一層到下一層,單元組計算其前一層輸入的加權總和,並通過一個非線性函式輸出結果。目前,最受歡迎的非線性函式是整流線性單元(ReLU),一個簡單的半波整流器f(z) = max(z, 0)。在過去的幾十年裡,神經網路使用的是更平滑的非線性,比如,tanh(z)或1 /(1 + exp(−z)),但ReLU在多層網路中的學習速度通常更快,可允許在沒有無監督預訓練(without unsupervised pre-training)的情況下進行深度監督網路訓練。不在輸入或輸出層中的單元通常被稱為隱層單元(hidden units)。隱層可被看作是以非線性方式變換輸入,從而使所有類別在最後一層變得線性可分( linearly separable by the last layer)(圖1)。
20世紀90年代末,神經網路和反向傳播被機器學習社群大量遺棄,同時也被計算機視覺和語音識別領域忽略。人們普遍認為,學習有用的、多層級的、幾乎不靠先驗知識的特徵提取器並不現實可行。尤其是,人們通常認為簡單的梯度下降法會深陷區域性極小的泥潭——在這種權重配置當中,除非進行大的改動,否則很難降低平均誤差。
實踐中,對大型網路而言,區域性極小幾乎不構成問題。無論初始條件如何,系統基本總能得到質量非常相似的解決方案。最近的理論和實證研究結果均有力地表明,總的來說,區域性極小不是一個嚴重問題。相反,解空間( landscape)充滿了大量梯度為0的鞍點( saddle points ),且在多數維度中表面向上彎曲,少數維度中表面向下彎曲。分析結果似乎表明,向下彎曲的鞍點在整體中佔比相對較小,但這些鞍點的目標函式值大多相近。因此,演算法陷入這些鞍點(不能繼續尋優),無關緊要。
2006年前後,加拿大高階研究所(CIFAR)聚集了一批研究人員,他們重燃了人們對深度前饋網路的興趣。這些研究人員引入無監督學習程式——無需標記資料便可建立特徵檢測器層。各層特徵檢測器的學習目標便是在下一層重構或模擬特徵檢測器(或原始輸入)的活動。利用這種重構學習目標來「預訓練(pre-training)」幾層複雜度遞增的特徵檢測器,深層網路的權重可以被初始化為合理值。接著,最終層的輸出單元可被新增到網路頂端,整個深度系統可被微調至使用標準的反向傳播。在識別手寫數字或檢測行人時,特別是當標記的資料量非常有限的時候,這一程式非常有效。
這種預訓練的方法的首次重要應用是在語音識別上,這之所以可行歸功於便於程式設計的GPUs的誕生,它讓研究人員可以用10到20倍的速度訓練神經網路。2009年,這個方法被用來計算一段聲音取樣中提取短時係數視窗對應的一系列概率值,這些概率值反映出由視窗中幀表示語音各個段落的可能性。在小詞彙表的標準語音識別測試上,這種方法的訓練效果打破紀錄,很快它又發展到打破大詞彙表的標準語音測試紀錄。
到2012年,2009年以來的各種深度網路一直的得到多個主要語音研究小組持續開發並被佈局在安卓手機上。對於較小資料集來說,無監督預訓練有助於防止過擬合( overfitting), 當標註資料樣本小( number of labelled examples is small)或需要遷移( in a transfer setting )——有很多源領域的標註資料樣本但缺少目標領域的標註資料樣本——的時候,深度網路的泛化( generalization)效果顯著提升。深度學習重新獲得認識,人們發現,預訓練階段只是小規模資料集的必需品。
然而,還有一種特殊型別的深度前饋網路( deep feedforward network),不僅更易訓練而且泛化能力要比那些相鄰兩層完全相連的神經網路強大很多。這就是卷積神經網路 (ConvNet)。 在神經網路「失寵 」的日子裡,卷積神經網路在實踐運用中獲得許多成功,最近已被計算機視覺領域廣泛採用。
卷積神經網路
卷積神經網路最初是用來處理多維陣列資料,比如,一張由三個2D陣列組成、包含三個彩色通道畫素強度的彩色影象。大量的資料模式都是多個數組形式:1D用來表示訊號和序列訊號包括人類語言;2D用來表示圖片或聲音;3D代表視訊或有聲音的影象。卷積神經網路利用自然訊號特徵的核心理念是:區域性連線(local connections),權重共享,池化(pooling)和多網路層的使用。
典型的卷積神經網路的架構(圖二)包括一系列階段:最初的幾個階段由卷積層和池化層組成,卷積層的單元被組織到特徵圖(feature map)中,每個單元通過一組被稱作濾波器(filter bank)的權值被連線到前一層的特徵圖的區域性資料塊。接下來,得到的區域性加權和會傳遞至一個非線性函式,例如ReLU。同一個特徵圖中的所有單元共享相同的濾波器,不同特徵圖使用不同濾波器。採用這種架構有兩方面的原因。首先,在諸如影象這樣的陣列資料中,數值與附近數值之間通常是高度相關的,容易生成易被探測到的區域性特徵(motif)。其次,影象和其他類似訊號的區域性統計特徵通常又與位置無關,易言之,出現在某處的某個特徵也可能出現在其他任何地方,因此,不同位置的單元會共享同樣的權值並且可以探測相同模式。數學上,由一個特徵圖完成的過濾操作是一個離線的卷積,卷積神經網路由此得名。
和卷積層用來探測前一層中特徵之間的區域性連線不同,池化層的作用則是對語義相似的特徵進行合併。由於構成區域性主題的特徵之間的相對位置關係不是一成不變的,可以通過粗粒度檢測每個特徵的位置來實現較可靠的主題識別。一個池化層單元通常會計算一個或幾個特徵圖中一個區域性塊的最大值,相鄰的池化單元則會移動一列或一行從小塊讀取輸入,這種設計不僅減少了資料表徵需要的維數,而且也能對資料小規模的偏移、扭曲保持不變。兩到三個卷積層,非線性層和池化層被疊加起來,後面再加上更多的卷積和全連線層。在卷積神經網路的反向傳播演算法和在一般深度網路上一樣簡單,能讓所有濾波器中的權值得到訓練。
多數自然訊號都是分級組合而成,通過對較低層訊號組合能夠獲得較高層的訊號特徵,而深度神經網路充分利用了上述特性。在影象中,線條組合形成圖案,圖案形成部件,部件組成物體。類似的層次結構存在於由聲音到電話中的語音及文字形成過程,音素組成音節,音節組成單詞,單片語成句子。當輸入資料在前一層中的位置有變化的時候,池化操作讓這些特徵表示對變化具有魯棒性。
卷積神經網路中的層次的卷積和匯聚的靈感直接來源於視覺神經科學中的簡單細胞和複雜細胞的經典概念,並且其整體架構讓人想起視覺皮層腹側通路的LGN-V1-V2-V4-IT層次結構。當向卷積神經網路模型和猴子同時展示相同的畫面時,卷積神經網路的高階單元被啟用,解釋了猴子顳下皮層隨機設定的160個神經元的變化。卷積神經網路有著神經認知機的基礎,兩者的體系結構有些類似,但是,卷積神經網路沒有諸如反向傳播的那種端對端的監督學習演算法。原始的1D卷積神經網路被稱為「延時神經網路(time-delay neural net )」,用於識別語音和簡單的單詞。
早在20世紀90年代初,卷積網路就已有非常廣泛的應用 ,最開始延時神經網路被用在語音識別和文件閱讀上。文字閱讀系統使用了受過訓練的延時神經網路以及一個實現了語言約束的概率模型。到20世紀90年代末,該系統能夠讀取美國超過十分之一的支票。隨後,微軟發明了許多基於卷積神經網路的光學字元識別和手寫識別系統。卷積神經網路在20世紀90年代初就被嘗試用於包括臉、手、面部識別的自然影象目標檢測中。
使用深層卷積網路進行影象識別
從21世紀初開始,卷積神經網路就被成功用於檢測、分割和物體識別以及影象各區域。這些應用都使用了豐富的標籤資料,比如,交通標誌識別、生物影象(特別是神經連結組學方面)分割、面部探測、文字、行人和自然影象中的人體的檢測。近些年來,卷積神經網路的一項重要成功應用就是人臉識別。
值得注意的是,影象可以在畫素級別上被標記,這樣就能被用於諸如自主移動機器人(autonomous mobile robots)和無人駕駛汽車等技術中。像Mobileye和NVIDIA 這些公司正在將這些基於卷積神經網路的方法應用於即將面世的汽車視覺系統中。其他重要的應用程式涉及到自然語言理解和語音識別。
儘管取得了這些成就,但在2012年ImageNet競爭之前,卷積神經網路在很大程度上並未獲得主流計算機視覺和機器學習團體的青睞。當深層卷積網路被應用於來源於包含1000個不同型別約100萬個影象的資料集中,它們取得了驚人的成果,錯誤率僅是當時最佳方法的一半。該成功源於高效利用了GPUs和ReLUs、一項新的被稱為「dropout 」的正規化技術( regularization technique )以及分解現有樣本產生更多訓練樣本的技術。成功給計算機視覺領域帶來一場革命。如今,卷積神經網路幾乎覆蓋所有識別和探測任務,在有些任務中,其表現接近人類水平。最近一個令人震驚的例子,利用卷積神經網路結合遞迴網路模組來生成影象標題( image captions )(如圖3)。
圖3 |從影象到文字。將遞迴神經網路(RNN)生成的標題作為額外輸入,深度卷積神經網路(CNN)會從測試圖片中提取表徵,再利用訓練好的RNN將影象中高階( high-level )表徵「翻譯成 」標題(上圖)。當RNN一邊生成單詞(黑體所示),一邊能將注意力集中在輸入影象的不同位置(中間和底部;塊狀越亮,給予的注意力越多)的時候,我們發現,它能更好地將影象「翻譯成」標題。
當前的卷積神經網路由10~20層ReLUs,數百萬個權值及數十億個連線組成。兩年前,訓練如此龐大的網路可能需要數週時間,而隨著硬體、軟體和演算法並行化(algorithm parallelization)的進步,訓練時間已經縮短至幾個小時。
卷積神經網路的視覺系統良好表現促使包括谷歌、Facebook、微軟、IBM、雅虎、推特和Adobe在內的多數主要科技公司以及數量激增的創業公司開始啟動研發專案,部署基於卷積神經網路的影象識別產品和服務。
卷積神經網路易於在晶片或現場可程式設計門列陣(FPGA)中得以高效實現。為了實現智慧手機、相機、機器人和無人駕駛汽車上的實時視覺應用,NVIDIA、Mobileye、因特爾、高通和三星等許多公司都正在開發卷積神經網路晶片。
分散式表徵和語言處理
深度學習理論顯示,與不適用分散式表徵的經典學習演算法相比,深度網路有兩處異常明顯的優勢。這些優勢源於節點權重(the power of composition)以及底層資料生成分佈具有適當的組成結構。第一,學習分散式表徵能夠將通過訓練而學習獲得的特性值泛化為新的組合(例如,n元特徵有2n 組合可能)。第二,深度網路中的表徵層相互組合帶來了另一個指數級優勢的潛力(指數性的深度)。
多層神經網路的隱藏層學會以一種易於預測目標輸出的方式來再現網路輸入。一個很好的示範就是訓練多層神經網路根據區域性文字中的前述語句預測下一個詞。文字的每個詞表示成網路中的N分之一向量,也就是說,每個成分的值為1,餘下的為0。在第一層中,每個字建立一個不同模式的啟用或單詞向量(如圖4所示)。在語言模型中,網路中的其他層學習如何將輸入的單詞向量轉化成輸出單詞向量來預測下一個單詞,也能用來預測詞彙表中單詞作為文字中下一個單詞出現的概率。正如學習分佈表徵符號文字最初展示的那樣,網路學習了包含許多啟用節點(active components )、且每一個節點都可被解釋成一個單詞獨立特徵的單詞向量。這些語義學特徵並沒有在輸入時被清晰表現出來。而是在學習過程中被發現的,並被作為將輸入與輸出符號結構化關係分解為微規則(micro-rules)的好方法。當詞序列來自一個大的真實文字語料庫,單個微規則並不可靠時,學習單詞向量也一樣表現良好。當網路被訓練用於預測新文字中的下一個詞時,一些單詞向量非常相似,比如Tuesday和Wednesday,Sweden和Norway 。這種表徵被稱為分散式表徵,因為它們的元素(特性)並非相互排斥,且它們構造資訊與觀測到的資料變化相對應。這些單詞向量由所習得的特性組成,這些特性並非由科學家們事先決定而是由神經網路自動發現。現在,從文字中習得的單詞向量表徵被非常廣泛地使用於自然語言應用。
表徵問題是邏輯啟發與神經網路啟發認知正規化爭論的核心問題。在邏輯啟發正規化中,一個符號實體表示某一事物,因為其唯一的屬性與其他符號實體相同或者不同。它並不包含與使用相關的內部結構,而且為理解符號含義,就必須與審慎選取的推理規則的變化相聯絡。相比之下,神經網路使用大量活動載體( big activity vectors)、權重矩陣和標量非線性,實現一種快速「直覺 」推斷,它是輕鬆常識推理的基礎。
在介紹神經語言模型前,語言統計模型的標準方法並沒有使用分散式表徵:它是基於計算短符號序列長度N(稱為N-grams,N元文法)出現的頻率。N-grams可能出現的次數與VN一致,這裡的V指的是詞彙量的大小,考慮到詞彙量大的文字,因此需要更龐大的一個語料庫。N-grams把每一個詞作為一個原子單位,因此它不能在語義緊密相關的單詞序列中,一概而論,但是,神經語言模型可以實現上述功能,因為它們將每個單詞與真實特徵值的向量關聯起來,並且語義相關的單詞在該向量空間中更為貼近。(如圖4)。
圖4|已完成學習的單詞向量的視覺化展現。左邊介紹了為了建模語言而習得的詞彙表徵,通過使用 t-SNE演算法[103]非線性對映至二維空間中以便於觀察。右邊是一個由實現英-法互翻的遞迴神經網路學習短語的二維空間表示。由圖可知,語義或排序相似的單詞表徵對映較為接近 。詞彙的分散式表徵通過使用反向傳播獲得,以此來學習每個單詞的表徵形式及預測目標數量的功能,比如序列中的後續單詞(如語言建模)或者翻譯文字的全部序列(機器翻譯)。
遞迴神經網路
最初引入反向傳播時,最令人激動的應用便是訓練遞迴神經網路(簡稱RNNs)。對於那些需要序列連續輸入的任務(比如,語音和語言),RNNs是上乘之選(圖5)。RNNs一次處理一個輸入序列元素,同時維護隱式單元中隱含著該序列過去所有元素的歷史資訊的「狀態向量」。當我們考慮隱式單元在不同的離散時間步長的輸出,就好像它們是在多層網路深處的不同神經元的輸出(圖五,右)如何利用反向傳播訓練RNNs,一目瞭然。
RNNs是非常強大的動力系統,但訓練它們也被證實存在一些問題,因為反向傳播梯度在每個時間間隔內或增長或下降,因此,一段時間之後通常會導致結果激增或者降為零。
因先進的架構和訓練的方式,RNNs不僅被證實擅長預測文字中下一個字元或句子中下一個單詞,還可應用於更加複雜的任務。例如,某時刻閱讀英文句子中的單詞後,一個英語的「編碼器」網路將被生成,從而幫助隱式單元的最終狀態向量很好地表徵句子所傳達的思想。這種「思想向量(thought vector)」可以作為一個集大成的法語「編碼器」網路的初始化隱式狀態(或額外的輸入),其輸出為法語翻譯首單詞的概率分佈。如果從概率分佈中選擇一個特定首單詞作為編碼網路的輸入,將會輸出翻譯句子中第二個單詞的概率分佈,依此類推,直到停止選擇為止。總體而言,這一過程是根據英語句子的概率分佈而生成的法語單詞序列。這種近乎直接的機器翻譯方法的表現很快和最先進(state-of-the-art)的方法不相上下,同時引發人們對於理解句子是否需要使用推理髮掘內部符號表示質疑。這與日常推理中涉及到根據合理結論類推的觀點是匹配的。
除了將法語句子翻譯成英語句子,還可以學習將圖片內容「翻譯」為英語句子(如圖3)。編碼器是一種在最後隱層將畫素轉換為活動向量的深度卷積網路。解碼器是一種類似機器翻譯和神經網路語言模型的遞迴神經網路。近年來,引發了人們對深度學習該領域的熱議。RNNs一旦展開(如圖5),可被視作是所有層共享同樣權值的深度前饋神經網路。雖然它們的主要目的是長期學習的依賴性,但有關理論和經驗的例證表明很難學習並長期儲存資訊。
為了解決這一問題,一個擴充套件網路儲存的想法出現。第一種方案是採用了特殊隱式單元的LSTM,該自然行為便是長期的儲存輸入。一種類似累加器和門控神經元的稱作記憶細胞的特殊單元:它通過在下一個時間步長擁有一個權值並聯接到自身,從而拷貝自身狀態的真實值和累積外部訊號,但這種自聯接是另一個學習並決定何時清除記憶內容的單元的乘法門所操控。
LSTM網路最終被證明比傳統的遞迴神經網路(RNNs)更為有效,尤其是,每一個時間步長內有若干層時,整個語音識別系統能夠完全一致地將聲學轉錄為字元序列。目前,LSTM網路及其相關形式的門控單元同樣也用於編碼與解碼網路,並在機器翻譯中表現良好。
過去幾年裡,幾位學者提出一些不同的方案來增強RNNs儲存器模組。這些建議包括,神經圖靈機——通過加入RNNs可讀可寫的“類似磁帶”的儲存來增強網路,而記憶網路中的常規網路通過聯想記憶來增強。記憶網路在標準的問答基準測試中表現良好,記憶是用來記住稍後要求回答問題的事例。
除了簡單記憶化、神經圖靈機和記憶網路被用於通常需要推理和符號操作的任務以外,還可以教神經圖靈機「演算法」。除此以外,他們可以從未排序的輸入符號序列(其中每個符號都有與其在列表中對應的表明優先順序的真實值)中,學習輸出一個排序的符號序列。可以訓練記憶網路用來追蹤一個設定與文字冒險遊戲和故事的世界的狀態,回答一些需要複雜推理的問題。在一個測試例子中,網路能夠正確回答15句版的《指環王》中諸如「Frodo現在在哪?」的問題。
圖5 |一個遞迴神經網路在時間中展開的計算和涉及的相關計算。人工神經元(例如,隱式樣單元分組節點在時間t的標準值下)獲得其他神經元的輸入——在之前的步驟中(黑色區域呈現,代表一步延遲,如左)。這樣,一個遞迴神經網路可由xt的輸入序列元素,對映到一個輸出序列與元素ot,每次ot值取決於所有前面的xtʹ(tʹ≤t)。相同的引數(U,V矩陣W)在每步中使用。許多其他結構是可行的,包括一個變體的網路可以生成的輸出序列(例如,詞語),每一個都作為下次的輸入步驟。反向傳播演算法(圖1)可以直接應用於計算機圖形展開網路,並對所有的標準陳述和引數,計算其總誤差的導數(例如,生成正確的輸出序列的對數概率)。
深度學習的未來
無監督學習促進了人們重燃對深度學習的興趣,但是,有監督學習的成功蓋過了無監督學習。雖然我們沒有關注這方面的評論,但是,從長遠來看,我們還是期望無監督學習能夠變得更加重要。(因為)人類和動物的學習方式大多為無監督學習:我們通過觀察世界來發現它的結果,而不是被告知每個物件的名稱。
人類視覺是一個智慧的、基於特定方式的利用小或大解析度的視網膜中央窩與周圍環繞區域對光線採集成像的活躍的過程。我們希望機器視覺能夠在未來獲得巨大進步,這些進步來自於那些端對端的訓練系統,並集合卷積神經網路(ConvNets)和遞迴神經網路(RNNs),利用強化學習來決定走向。結合了深度學習和強化學習的系統尚處在嬰兒期,但是,在分類任務上,它們已經超越了被動視覺系統,並在嘗試學習操作視訊遊戲方面,產生了令人印象深刻的結果。
未來幾年,理解自然語言會是深度學習產生巨大影響的另一個領域。我們預測,當它們學習了某時刻選擇性地加入某部分的策略,那些使用遞迴神經網路(RNNs)的系統將會更好地理解句子或整個文件。
最終,人工智慧的重大進步將來自將表徵學習與複雜推理結合起來的系統。儘管深度學習和簡單推理已經用於語音和手寫識別很長一段時間了,我們仍需要通過大量向量操作的新正規化替換基於規則的字元表達操作。