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

人工智慧軟體

Written by:

本篇是『機器學習專題』的第六篇文。


下述前導故事是我們在第三集第四集第五集的文章中已向大家介紹過一遍,若尚未讀過先前文章、或有想要回顧相關技術名詞的讀者,建議在閱讀本文前能先行參閱。

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 是如何和深度學習技術相輔相成,成為時下最熱門的硬軟體技術應用。

 

點我看下一集:2012年令深度學習和NVIDIA股價火爆起來的真正關鍵──GPU

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

  1. sim 說:

    請問可以舉個程式例子(或哪裡有現成的),最簡單的例子,abc入門等級的數字辨識程式例子,讓我們自己訓練(或已經訓練好的),來實際操作一次,叫電腦回答,這樣比較有AI感覺

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *