close

image

本專項課程的第二堂課為 Advanced Learning Algorithms,

前三週介紹現今最主流的一種演算法: Neural Network 類神經網路,

最後一週介紹 Decision Tree 決策樹。

 

講到 Neural Network,必然先解決它的起源。

雖然類神經網路是在近期才廣為世人所知,它事實上是數十年前的產物,

在20世紀時科學家就想創造一種能像大腦一般運作的演算法,也就是大家常講的「人工智慧」,

類神經網路做為一個模擬腦細胞作用機制的架構便應運而生,

但是類神經網路的複雜性導致大家在1990年後期對它失去了興趣,

一直到2005年才再度興起,並在2015年開始迎來大爆發,不管是語言辨識、圖像辨識、文字寫作等都少不了它的身影。

image

 

上面所示的就是一個簡單的比擬來示範類神經網路是如何模擬大腦的。

左邊是腦細胞,一個腦細胞有許多樹突來接收來自四面八方的訊號,

而這樣的訊號會在腦細胞處理完後,交給軸突轉遞出去。

類神經網路的基本架構便是一個個的人工神經元,同樣也是接收來自各方的input後,在神經元內部做處理再output出去。

 

image

那為何要一直拖到2010年代才終於迎來類神經網路的黃金時期呢? 

在紙筆記綠還是主流的年代,資料難以收集,因此像linear regression 這樣的機器學習算法就能有效解決問題,

另外,在計算技術還不夠先進時,太複雜的演算法跑起來曠日廢時,自然而然就不受到大家的喜愛。

但是隨著電腦與網路技術的普及與發達,資料的收集變得簡單起來,

隨著資料量不斷增加,簡單的演算法就達到其能力上限,更複雜的類神經網路才能有效解釋資料之間的關係,

再加上計算能力隨著摩爾定律的發展而不斷進步、GPU與平行運算技術的發展,

讓大家能使用越來越大型的neural network 解決更複雜的問題,

像是人像辨識、語音辨識、語言翻譯等過去傳統演算法表現不佳的領域,neural network 都帶來突破,

以其為主的機器學習技術才正式崛起。

 

接下來要介紹類神經網路的作用原理。

image

以決定衣服是否會是暢銷款為例,這是一個典型的分類問題,適用 logistic regression,

input 是價格,output 則是透過sigmoid function算出成為暢銷款的機率,

再透過decision boundary 決定要分類成Y/N,

而這樣的一個迴歸其實用一個神經元 (nueuron) 也表現得出來,

這時 sigmoid function 被叫做 activation function (活化函數), 同樣是把input X 丟進來作運算得到機率再output。

 

image

不過當然真實的世界是沒有這麼單純,必然有許多因素在影響一款衣服的暢銷程度,

比方說,價格、行銷、材料等等,

在人類的行為中,會試圖把這一些簡單的資訊組合成更有意義的指標,來幫助自己判斷一件事情的成因。

在類神經網路中,負責執行這一項任務需要許多神經元一起通力合作,這些神經元就組合成 Hidden Layer 隱藏層,

這些神經元裡面都有一個activation function 在處理輸入進來的資訊,

而這些處理完的資訊會再丟給 output layer 輸出層,輸出層同樣擁有activation function,

它會把隱藏層解讀完成的資料再組合起來形成最後的結果,然後再輸出。

以上就是一個典型的類神經網路的運作流程: input layer --> hidden layer --> output laye。

由於類神經網路有透過隱藏層來重新解讀 input 資訊的能力,

所以它幾乎不需要像 linear regression 那樣依賴人工的特徵工程 (feature eningeering)來協助加強信號,

理想上,藏層會自己幫我們判斷什麼樣的特徵工程是最能把 input 與 output 連結起來

 

既然光是一層hidden layer 就能帶來這樣的效果,那把加入更多層或許能再一步加強類神經網路的性能,

這樣就形成不只一個隱藏層的類神經網路,又被稱為 multi layer perceptron (MLP),

image

MLP在本質的運作上並沒有什麼不同,就是多了一層隱藏層來處理前一層解讀完的資訊而已,

要放幾個隱藏層、每個隱藏層要放多少神經元,是建立一個類神經網路之前要思考的問題,

這並沒有一定的答案,而是要搭配手上的資料數量、資料品質、資料類型等來決定。

 

最後就利用一些生活上的例子來解釋為何需要 MLP。

image

image

以臉部辨識來說,照片會先被解讀成一個一個的像素,每一個像素都有屬於自己的顏色,可以用色碼來表示,

所以如果是用最原始的類神經網路,基本上就是把照片分解成無數代表顏色的數字,

然後再把這些數字跟output 建立起關聯。

 

當這些數字被餵給類神經網路後,試圖把每一層學到的東西給具像化,

我們或許可以發現第一層隱藏層在學習一些基本的線條與邊緣,

第二層會開始組合這些線條與邊緣,因而形成人臉的一小部分 (某個器官), 

第三層會再把這些部分給組合成一個人臉,最後再把這些結果丟到output layer,

讓model了解每一個人臉以及其相對應的身份,如此一來便大功告成,

要注意的是,每一個隱藏層該學些什麼,完全是由演算法自己來決定。

以上便結束類神經網路的基本介紹。

 

 

 

arrow
arrow

    William.Echoes 發表在 痞客邦 留言(0) 人氣()