耗時三十年,深度學習之父Hinton是怎麼讓一度衰頹的類神經網路重迎曙光的呢?

1950 年代電腦發明以來,科學家便希冀著利用電腦創造出人工智慧。然而當時的人工智慧理論採用的是邏輯推理方法,需要百分之百確定的事實配合、在實務上不容易使用;再加上當時的硬體效能低落、數據量不足,隨著通用問題解決機 (General Problem Solver)、日本第五代電腦等研究計畫的失敗,人工智慧陷入了第一次的寒冬。

人工智慧「現代鍊金術」的惡名,一直到 1980 年代開始才又復興。此時科學家不再使用傳統的邏輯推理方法,取而代之的是結合機率學、統計學等大量統計理論,讓電腦能透過資料自行學會一套技能,並根據新給的數據、自行更正預測錯誤的地方、不斷地優化該項技能,稱為「機器學習」。

機器學習方法有許多種不同的數學模型,包括隨機森林、類神經網路、感知器… 族繁不及備載。此間爆發了兩種不同的機器學習模型浪潮,第一波興盛的模型為「類神經網路」、又稱人工神經網路。

機器學習一直在嘗試解決現實中複雜的資料切分問題。線性關係的資料能用一條直線表示,比如食量和肥胖度成正比;非線性關係的資料則無法用一條直線表達,比如指數成長的人口是一個指數函數;第一代神經網路單層感知機是線性模型,無法解決線性不可分的問題,因此早期的感知機神經網路也不受重視。

直到 1986 年,學者包括 Rumelhart、Hinton 等人提出「反向傳播算法」(Backpropagation) 訓練神經網路, 使的具備非線性學習能力的多層感知機 (Multi-Layer Perceptron) 的可能露出一絲曙光。讓神經網路紅極一時。

還記得我們提過的類神經網路的基本原理嗎?先讓資料訊號通過網路,輸出結果後、計算其與真實情況的誤差;再將誤差訊號反向傳播回去、對每一個神經元都往正確的方向調整一下權重;如此來回個數千萬遍後,機器就學會如何辨識一隻貓了。

反向傳播時,資料科學家會設定更正錯誤的方法──「代價函數」(Cost Function)。代價函數是預測結果和真實結果之間的差距。代價函數的優化 (Optimization) 是機器學習的重要研究目標,也就是:如何找到優化的最佳解(誤差的最小值)?如何用更快的方式逼近最佳解?

如何逼近最佳解有很多種不同的演算法,最典型的方法是採用隨機梯度下降法 (Stochastic Gradient Descent) 。當線性關係資料的代價函數為凸函數,找到最佳解不是問題;然而問題在於非線性關係的資料:其代價函數為非凸函數,求解時容易陷入局部最佳解、而非全域最佳解,這個問題叫做梯度消失問題 (Vanishing Gradient)

更糟的是,梯度消失問題會隨著神經網路層數的增加而更加嚴重,意即,隨著梯度逐層不斷消散、導致神經網路對其神經元權重調整的功用越來越小,所以只能轉而處理淺層結構(比如 2 層)的網路,從而限制了性能。

單層感知機失敗的原因乃不能切分非線性關係的資料;雖然 1986 年的學界提出了反向傳播算法,卻仍無法解決非線性資料的優化問題,多層感知機仍然無法實踐。這使得類神經網路在剛出現時雖大為火紅、卻在不久後又沒落了下去。

經歷了單層感知機、和多層感知機的兩次失敗,當時的學界只要看到出現「神經網路」字眼的論文或研究計畫,便會立刻貶斥,認為:多層的神經網路是不可能的。然而若採用僅有兩層的神經網路,不如使用其他理論更完備也更好實踐、同樣只有兩層的「淺層」機器學習模型。因此在 1990 年代,支持向量機 (Support Vector Machine, SVM) 等「淺層機器學習模型」成為主流技術,此為機器學習的第二波浪潮。

接下來,讓我們來繼續談談類神經網路是如何成功再度復甦。

 

2006年,Hinton帶著「深度學習」回歸幕前

若是沒有一個關鍵人物,那麼類神經網路的故事可能也就到此為止了。

Hinton 教授作為反向傳播算法的發明人之一,即使不被學界重視,30 多年來、對於神經網路研究仍然不離不棄。Hinton 教授的苦心鑽研,終於在 2006 年時有了成果,成功解決了反向傳播的優化問題。

他是怎麼成功訓練神經網路的呢? Hinton 提出了限制玻爾茲曼機和深度信念網路兩個概念:

1. 限制玻爾茲曼機 (RBM)

限制玻爾茲曼機 (Restricted Boltzmann Machines, RBM) 為僅有 2 層結構的淺層神經網路,第一層稱為可視層 (visible layer)、第二層稱為隱藏層 (hidden layer)。

玻爾茲曼機模型中,同一層之間的神經元也會連結在一起;然而為了降低複雜度,我們設計讓同一層的神經元彼此間沒有連結,這也是為什麼稱為「限制」玻爾茲曼機的意思。不同層的神經元彼此間會連接在一起,並採取隨機決策 (stochastic decisions) 來決定一個神經元要傳導或不傳導。

RBM 作為一種神經網路,其設計當然也包括了前向傳導和反向傳導兩個步驟:

(1) 前向傳導 (forward)

丟入一筆資料進行運算時,在可視層、每個神經元都會接收到一個資料的低層級特徵。比如當我們丟入一堆灰階的圖片,每個可視層的神經元會接收到每張圖片的每一個像素 (pixel) 。

以手寫數字辨識資料庫 MNIST 為例,MNIST 圖像共有 784 個像素,故 RBM 神經網路在處理 MNIST 資料時,在可視層就必須有 784 個輸入的神經元。(註:MNIST 數字是 1998 年由紐約大學的 LeCun 教授為了美國郵政部開發的手寫數字圖片資料庫)

每個輸入值 x (input) 都會乘以一個權重 w (weight)、加總後再加上一個偏差值 b (bias);由於神經網路中的神經元有些可能會傳遞、有些不會,加上偏差值的目的是為了至少讓某些神經元能被激發起來。最後在隱藏層輸出結果 a。

也就是說各個神經元的激發函數公式為:

激發函數 f( (權重 w * 輸入值 x) + 偏差值 b ) = 輸出結果 a

(2) 重建(Reconstruction)

RBM 的目標是為了重建原始的輸入值 x、且還原的越精確越好。在反向傳導的過程中,剛剛的輸出結果 a在隱藏層作為新的輸入值,同樣乘上權重 w、加上一個偏差值,最終在可視層輸出資料重建的結果 r。

接下來,我們在可視層比較一開始輸入值 x和重建值 r的差異,以分辨重建資料的精確度。RBM 使用一種叫做「KL Divergence」的方法來衡量網路重建資料的準確度。

整個網路會不斷向前傳遞過去、再向後傳導將原始資料重建回來,期間來回數次、不斷調整每個神經元的權重和偏差值,直到「原始資料」和「重建後資料值」兩者差異被優化到最小值為止。也就是說,我們盡量讓重建回去的資料值和原始資料接近一模一樣。

關於 RBM 背後的機率理論相當複雜,在此略過不提,歡迎有興趣的讀者自行查閱。簡單來說,藉由 RBM 試圖「重建」原有資料的過程,讓神經網路能自行發覺資料隱含的規律。看起來很眼熟?沒錯,放入沒有被標籤過的資料、我們可以利用 RBM 來做無監督學習 (unsupervised-learning)。

甚至在重建的過程中,可以發現為了將資料重建回去、資料最關鍵的特徵是什麼。也就是說,我們能知道「用到哪些關鍵的特徵」就可以成功重建,得以利用 RBM 來提取資料的特徵。

 

2. 深度信念網路 (DBN)

接下來 Hinton 使用了一個很聰明的技巧——將 RBM 堆疊起來、建立一個多層的神經網路,稱為深度信念網路 (Deep Belief Network)

訓練時,深度信念網路會一次訓練 2 層網路、而這 2 層正是 RBM 模型;將數個 RBM 模型堆疊起來,每一層模型的輸出值即為下一層模型的輸入值,直到抵達最後一層輸出層為止,由於我們直接將無標籤 (unlabeled data) 資料放入網路中,因此深度信念網路是一個無監督學習過程。

學習到最後,我們可以結合半監督學習——透過一些少量的標籤資料 (labeled data),對深度信念網路的神經元權重和偏差值進行微調 (Fine-Tune),讓精確度更高。預先訓練完後,在最後一層才放「分類器」。

也就是說,不直接將資料放進分類器中,而是將資料預先經過 RBM 模型的訓練。藉由這樣無監督或半監督、逐層的預訓練 (unsupervised/semi-supervised, layer-wise pre-training) 的過程,深度信念網路能找到輸入資料隱含的規律、具備優異的特徵學習能力。就像逐漸聚焦的相機鏡頭,深度信念網路讓資料越來越清晰。

但這跟我們想解決的梯度消失 (vanishing gradient) 問題有什麼關係呢?

在線性回歸當中,使用隨機梯度下降法、從任意一個點出發搜索,最終必然是下降到全域最小值 (global minimum)。所以初始值可以任意設為 0。

問題是非線性回歸——陷入局部最小值是多層神經網路揮之不去的陰影。隨著層數的增加,非凸的代價函數越來越複雜、局部最小值點成倍增長。

傳統的神經網路隨機初始化網路中的權值,導致網路很容易收斂到局部最小值。因而,如何避免一開始就倒霉地被吸到一個超淺的盆中呢?比起隨機選擇初始值、或是將初始值設為零,如果能找到一個理想的起始點開始梯度下降,將能夠更快、更容易找到全局最小值。

從 1980 年代到 2006 年的十多年間,機器學習領域以支持向量機 (SVM) 等簡單高效的分類方法為主,這些方法在處理非線性關係的資料時,多依賴資料科學家將資料分段、採用局部線性逼近;然而這相當仰賴資料科學家本身的經驗。

更甚地,研究人員還依據經驗或相關知識,設計了許多「人造特徵」。比如在圖像識別領域, SIFT、HOG、Gabor 等人工設計的特徵被用來描述圖像的梯度或紋理性質。雖然在很多問題上取得了還不錯的性能,但人造特徵無法廣泛的並用、且設計新特徵需要強大的經驗和知識。最重要的是,面對大數據時,難以自然找到其中蘊含的規律。

深度神經網路可以自動學習特徵,而不必像以前那樣還要請專家以人工建造特徵,大大推進了智能自動化。

 

首次起飛的深度學習卻遇到瓶頸

2006 年可以說是深度學習起飛的一年。經過了三十年的研究,Hinton在《Science》等期刊發文,指出「具備多層隱藏層的神經網路具有更為優異的特徵學習能力,且其在訓練上的複雜度可以通過逐層初始化來有效緩解」。

這篇驚世駭俗之作名為《Reducing the dimensionality of data with neural networks》。在這篇論文中, Hinton 提出深度信念網路、使用無監督預訓練方法優化網路權值的初始值,再進行權值微調 (Fine-Tune),讓多層神經網路能夠真正被實踐。

又由於神經網路的研究在過去被棄置已久,故 Hinton 教授又將深度神經網路重新換上「深度學習」(Deep Learning) 的名字捲土重來,Hinton也因此被稱為「深度學習之父」。

話說回來,目前已經沒什麼人在使用 RBM 或深度信念網路了;後來的研究發現,簡單的初始化和激發函數的調整,才是解決 Vanishing Gradient Problem 最好的方法。現今最為廣泛被使用的方法是「多層感知器 (MLP) + ReLU函數」。

不過在 2006 年,Hinton 以深度信念網路第一個提出「深度神經網路可行」的說法,讓學界把眼光重新放回神經網路這個領域。可以說 RBM 只是深度學習浪潮的一個開端。

真正讓深度學習徹底的火爆起來,還是 2012 年那年 10 月發生了一件大事,從此革命火勢一發不可收拾。到 2016 年的今天,深度學習儼然成為未來十年內最重要的技術。究竟是發生了什麼事情呢?

下篇,就讓我們來看看,NVIDIA 的 GPU 是如何和深度學習技術相輔相成,成為時下最熱門的硬軟體技術應用。