前篇引導:數據分析專題(四):機器學習的衰頹興盛:從類神經網路到淺層學習
前述:人工智慧與機器學習的演進
下述故事是我們在【人工智慧的黃金年代:機器學習】與【機器學習的衰頹興盛:從類神經網路到淺層學習】文章中已向大家介紹過一遍,若有想要回顧相關技術名詞的讀者歡迎參閱。
1950年代電腦發明以來,科學家便希冀著利用電腦創造出人工智慧。然而當時的人工智慧理論採用的是邏輯推理方法,需要百分之百確定的事實配合、在實務上不容易使用;再加上當時的硬體效能低落、數據量不足,隨著通用問題解決機(General Problem Solver)、日本第五代電腦等研究計畫的失敗,人工智慧陷入了第一次的寒冬。
人工智慧「現代鍊金術」的惡名,一直到1980年代開始才又復興。此時科學家不再使用傳統的邏輯推理方法,取而代之的是結合機率學、統計學等大量統計理論,讓電腦能透過資料自行學會一套技能,並根據新給的數據、自行更正預測錯誤的地方、不斷地優化該項技能,稱為「機器學習」。
機器學習方法有許多種不同的數學模型,包括隨機森林、類神經網路、感知器…族繁不及備載。此間爆發了兩種不同的機器學習模型浪潮,第一波興盛的模型為「類神經網路」、又稱人工神經網路。
機器學習一直在嘗試解決現實中複雜的資料切分問題。線性關係的資料能用一條直線表示,比如食量和肥胖度成正比;非線性關係的資料則無法用一條直線表達,比如指數成長的人口是一個指數函數;第一代神經網路單層感知機是線性模型,無法解決線性不可分的問題,因此早期的感知機神經網路也不受重視。
直到1986年,學者包括Rumelhart、Hinton等人提出「反向傳播算法」(Backpropagation)訓練神經網路, 使的具備非線性學習能力的多層感知機 (Multi-Layer Perceptron)的可能露出一絲曙光。讓神經網路紅極一時。
還記得我們提過的類神經網路的基本原理嗎?先讓資料訊號通過網路,輸出結果後、計算其與真實情況的誤差;再將誤差訊號反向傳播回去、對每一個神經元都往正確的方向調整一下權重;如此來回個數千萬遍後,機器就學會如何辨識一隻貓了。
反向傳播時,資料科學家會設定更正錯誤的方法──「代價函數」(Cost Function)。代價函數是預測結果和真實結果之間的差距。代價函數的優化(Optimization)是機器學習的重要研究目標,也就是:如何找到優化的最佳解(誤差的最小值)?如何用更快的方式逼近最佳解?
如何逼近最佳解有很多種不同的演算法,最典型的方法是採用隨機梯度下降法(Stochastic Gradient Descent)。當線性關係資料的代價函數為凸函數,找到最佳解不是問題;然而問題在於非線性關係的資料:其代價函數為非凸函數,求解時容易陷入局部最佳解、而非全域(3067-TW)最佳解,這個問題叫做梯度消失問題(Vanishing Gradient)。
更糟的是,梯度消失問題會隨著神經網路層數的增加而更加嚴重,意即,隨著梯度逐層不斷消散、導致神經網路對其神經元權重調整的功用越來越小,所以只能轉而處理淺層結構(比如2層)的網路,從而限制了性能。
單層感知機失敗的原因乃不能切分非線性關係的資料;雖然1986年的學界提出了反向傳播算法,卻仍無法解決非線性資料的優化問題,多層感知機仍然無法實踐。這使得類神經網路在剛出現時雖大為火紅、卻在不久後又沒落了下去。
經歷了單層感知機、和多層感知機的兩次失敗,當時的學界只要看到出現「神經網路」字眼的論文或研究計畫,便會立刻貶斥,認為:多層的神經網路是不可能的。然而若採用僅有兩層的神經網路,不如使用其他理論更完備也更好實踐、同樣只有兩層的「淺層」機器學習模型。因此在1990年代,支持向量機(Support Vector Machine)等「淺層機器學習模型」成為主流技術,此為機器學習的第二波浪潮。
接下來,讓我們來繼續談談類神經網路是如何再度復甦。
2006年,Hinton帶著「深度學習」回歸幕前
若是沒有一個關鍵人物,那麼類神經網路的故事可能也就到此為止了。
Hinton教授作為反向傳播算法的發明人之一,即使不被學界重視,30多年來、對於神經網路研究仍然不離不棄。Hinton教授的苦心鑽研,終於在2006年時有了成果,成功解決了反向傳播的優化問題。
他是怎麼成功訓練神經網路的呢? Hinton提出了限制玻爾茲曼機和深度信念網路兩個概念:
- 限制玻爾茲曼機 (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教授為了美國郵政部開發的手寫數字圖片資料庫, 可參考: http://yann.lecun.com/exdb/mnist/)
每個輸入值 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來提取資料的特徵。
- 深度信念網路 (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函數」。
ReLU函數近年來有取代傳統sigmoid函數神經元的趨勢。
不過在2006年,Hinton以深度信念網路第一個提出「深度神經網路可行」的說法,讓學界把眼光重新放回神經網路這個領域。可以說RBM只是深度學習浪潮的一個開端。
真正讓深度學習徹底的火爆起來,還是2012年那年10月發生了一件大事,從此革命火勢一發不可收拾。到2016年的今天,深度學習儼然成為未來十年內最重要的技術。究竟是發生了什麼事情呢?
下篇,就讓我們來看看,NVIDIA的GPU是如何和深度學習技術相輔相成,成為時下最熱門的硬軟體技術應用。
【延伸閱讀】