淺談“類神經網絡”的源起和邏輯迴歸

狹義的解釋深度學習,便是指多層的類神經網絡。迄今,類神經網絡的架構愈來愈複雜,包括在傳統一層一層的架構上,添加一到多個模組。這個模組可以單純如多個不同大小的平行卷積層或複雜如小型的

Attention 網絡。

類神經網絡的表現,仰賴著一個適宜的架構和一個最佳化的演算法。在這一系列介紹類神經網絡的文章中,我們會先從架構切入,在未來的文章中,再對演算法深入介紹。

淺談“類神經網絡”的源起和邏輯迴歸

感知器(Perceptron)

就如同所有自然生物的起源,都可追溯源頭至單細胞生物。現在最火熱的機械學習演算法,以類神經為主的深度學習,也從一個單一的神經元開始。

在1943年McCulloch 和Pitts 仿造人類的神經細胞結構,設計了第一個以軟體實現的人工神經元。此時的神經元就如同數位邏輯電路里的邏輯閘一樣, 所有的輸入都依照神經元的計算邏輯,輸出相對應的計算結果。

只不過這個輸出結果,比較近似於房間使用的開關:若計算的結果超過某一個給定值後,神經元的輸出就會等於1(on 的狀態),若沒有超過這個給定值,則為零(off 的狀態)。

淺談“類神經網絡”的源起和邏輯迴歸


這個神經元並沒有任何學習的方法,直到1950年,Rosenblatt 才提出了一個名為感知器(Perceptron )的學習演算法,將神經元帶入了人工智慧的領域中,也造就今日深度學習的廣泛應用。

在這篇的源起篇,我們就來看看這個只能輸出0和1的神經元,在結合了感知器的學習方法後,如何進行模式辨認並完成分類工作,以及它如何啟發之後的類神經網絡(Neural Network)方法和它的遠房兄弟Support Vector Machine (SVM)

一個簡單的Perceptron 網絡的架構如下:

淺談“類神經網絡”的源起和邏輯迴歸

左圖:一個二維二元Perceptron 分類器。右圖:一個多維(R)輸入的Perception 分類器。

▲左圖:一個二維二元Perceptron 分類器。右圖:一個多維(R)輸入的Perception 分類器。圖中使用hardlim 當作activation function,該function 即是一個step function,輸入值在給定threshold 值以上,輸出1。

這個架構可以看成一個只擁有一個輸出神經元,且不含有隱藏層的Feed Forward 類神經網絡。Perceptron 和僅有輸入和輸出層的Feed Forward 類神經網絡結構相比較:除了activation function 換成了擁有hard threshold ,只能輸出0和1,或-1和1的函式外,並沒有太大的差異。

坦白而言,一個感知器網絡,其實只是一個線性的分類器,比起深度類神經網絡,如多個隱藏層的Feed Forward 類神經網絡,感知器所能表示的函式範圍卻遠遠少於Feed Forward 深度類神經網絡。就能表示各種複雜函式的能力,感知器簡直是差多了!

雖然架構簡單,但感知器,卻蘊含了兩個類神經重要的觀念,一是非線性的activation function ,以及透過糾錯學習的方式,習得最佳分類直線。感知器學習演算法會藉著迭代的方式,逐一改變線性方程式的權重值,最終(希望)找到能夠正確分類所有訓練例子的線性函式,此函式又被稱為decision line decision plane

接下來就是感知學習器演算法的圖解步驟解說,為了方便視覺呈現,這裡用二維的例子來做說明:

淺談“類神經網絡”的源起和邏輯迴歸

一個簡單的Perceptron 學習實例


上圖中,黑點的分類標籤被標註為1,而白點的分類標籤被標註為-1。藍色實線為該步驟所計算得到的decision line 和它的法線(藍色箭頭)。

在這個簡單的例子,我們不考慮bias。bias 為零,decision line 就必須通過原點。一個能夠正確分類這三點,且通過原點的decision line ,其法線,或與decision line 正交的向量,w ,必須要和黑點的座標向量同向,或內積為正(夾角小於90度),和白點的座標向量反向,或內積為負(夾角大於90度)。

現將該演算法的步驟簡述如下:

步驟1. 任意初始化decision line 的法線向量(

normal vector )。(對應上圖為Step 1

步驟2. 開始對所有的訓練例子,以下面的原則,逐一比較decision line 的輸出後,更新decision line 的正交向量。

步驟2a. 若訓練例子為黑點,且分類錯誤,則將decision line 的正交向量往靠近分類錯誤的訓練例子的方向移動。在此是利用向量加法的方式移往黑點所在方向(對應上圖為Step 2 )。   

步驟2b. 若訓練例子為白點,且分類錯誤,則將decision line 的正交向量往遠離分類錯誤的訓練例子的方向移動。在此是利用向量減法的方式遠離白點所在方向(對應上圖為 Step 3-4 )。   

步驟2c. 若沒有分類錯誤,則decision line 的正交向量維持不動。

步驟3. 重複步驟二,直到所有的訓練實例都已經分類正確,或超過最大迭代數目。

這個簡單的學習方法,有一個致命的缺點:由Minsky 指出,那就是感知器無法學習過於線性不可分的例子,如兩種類別呈XOR 的分佈。下圖,就是根據線性可分和不可分(XOR )所構建的兩個例子。

淺談“類神經網絡”的源起和邏輯迴歸

左上圖為線性可分的訓練實例(紅點為分類標註為1,藍點為分類標註為-1)

▲左上圖為線性可分的訓練實例(紅點為分類標註為1,藍點為分類標註為-1)。右上圖為線性不可分的訓練實例。下圖則利用Least-square 方法,計算出的decision line 的正交向量(綠實線)和decision line (黑實線)

XOR (上圖右)的例子分佈像棋盤格,上圖下方則是用迴歸分析或least square 方法得到的decision line (黑線)和其法線(綠色箭頭)。而下圖,則是使用scikit-learn Perceptron來進行分類。從圖中可以看到,只能做線性分類的Perceptron 網絡,並沒有足夠的模型能力來對非線性分佈的實例進行分類。

淺談“類神經網絡”的源起和邏輯迴歸

使用Scikit-learn 的Perceptron 對同樣的例子做分類。


多層感知分類器

一個最簡單的類神經網絡,可被稱為多層感知分類器(Multiple Layer Perceptron ),又多以簡寫MLP 出現在文件。名稱是對應的一開始所介紹的感知器(Perceptron )而取的名字,但實際上,兩者除了使用具有激發功能(activation function )的神經元外,並沒有太大的關係。

類神經網絡的架構中,多層感知分類器,是屬於Feed Forward 網絡的一種。Feed Forward 類神經網絡,每一層中包含許多各自獨立的神經元,這些位於同一層的神經元彼此之間並沒有任何連結,但對位於上下兩層的每一個神經元,都有相對應的連結。也就是,下層的每一個神經元,對上層的每一個神經元,都會學習到一個權重值,來表達上下兩層神經元連結的強度。這個連結的強度,對於分類任務而言,可能是屬於某一類別的獨有特徵。

淺談“類神經網絡”的源起和邏輯迴歸

一個僅有兩層隱藏層的多重感知器,或Feed Foward 類神經網絡。


因為Feedforward 類神經網絡中,上下兩層之間中的神經元具有全連結性質,所以這樣的網絡有經常被稱為Fully-Connected Layer

,又因為像三明治被輸入和輸出層夾在中間,所以又可稱為隱藏層(Hidden Layer );相對於,影像識別中經常使用的卷積層Convolution Layer)Feedforward Layer 中的連結分佈更為緊密,所以又常被稱為Dense layer 。關於卷積類神經網絡Feedforward 類神經網絡的差別,會在往後的文章中更深入的討論。

相較感知器而言,能夠在輸入和輸出層,堆積多層Feedforward Layer 的類神經網絡,藉由多層的非線性activation function 疊加,並透過學習而得到一個非線性的decision boundary,具有能力去表示各種複雜函示,亦能將幾乎所有訓練例子正確地分類。知道何為多重感知器(MLP)我們現在可以應用一個真正的類神經網絡來解決線性不可分的XOR

問題了。

下圖擷取自由Ian Goodfellow , Yoshua Bengio Aaron Courville 共同撰寫的深度學習的教科書。在第六章,Deep Feedforward Networks 特別以一個簡單的實例表示一個簡單的類神經網絡如何解決XOR 問題。

如下圖左下所示,現在正向的訓練例子被分配到1的值,而0的值則分配給負向的訓練例子。相較於,之前從XOR 的分佈取樣,圖中Original x space 只有四個例子,例子位於第一,三象限被標註為0,而在二,四象限則為1 (亦可對應XOR的輸出來看)。類神經網絡的結構,則如下圖左上所示,只具有一層hidden layer ,該層只具有兩個hidden units:h1 h2 (下圖右上則是左上網絡架構的簡圖)。

該類神經網絡的hidden layer ,可將位在斜對角,具同分類標籤的子區域內的訓練實例,映射到新的特徵維度中。在這個新的特徵維度中,分類標籤為1的點,會映射到相同的座標位置(見下圖右下,Learned h space )。也就是說,hidden layer 藉由多重映射非線性函式,學到新的特徵向量,此新組合的特徵向量足以代表該分類的獨特之處,而能分辨其他類別。

淺談“類神經網絡”的源起和邏輯迴歸

▲建構一個僅有一層的Feed foward 類神經網絡,在hidden layer 使用兩個神經元(圖上方),便可將原來線性不可分的XOR 訓練例子(圖左下方),映射到新的特徵空間,而成為可分(圖右下方)。

藉由學習分類函式本身,而達到精準分類的結果,是類神經網絡的中心思想。在往後的文章,我們會看到,如何加深網絡的層級以期達到decision function 本身複雜度,以致於能學習更復雜,更高維的訓練例子分佈。

感知器學習演算法,雖然是個古老又簡單的方法,但在大多數的實際應用上,仍舊有它的一席之地。由於該演算法的簡易快速,在超級巨量資料的學習,有時還是會應用上簡單又快速的感知器來做Online 的學習(一次喂進一個訓練資料),而類神經網絡就像只慢工出細活的烏龜般,軟體業推崇的fast fail 在這方面目前就完全使不上力了。

不過,談到這裡,讓我們先稍微提及類神經網絡的遠親,SVM ,其理論同樣也是架構在Perceptron 線性分類器之上發展出來,但以不同的方法來解決線性不可分的問題?

支持向量機器(Support Vector Machine)

SVM 是一個線性方法,但會透過一種稱為Kernel 的方法,將訓練例子映射到新的特徵向量空間,在此空間,維度會增加而使所有的訓練例子皆是可分的。

淺談“類神經網絡”的源起和邏輯迴歸

使用不同Kernel (左為最高次為三次的多項式函數,右則為radial kernel)的SVM產生的decision boundary


同樣XOR 的訓練分佈中,SVM 會藉由加入描述hyperbolic 函式的新變數,建構成較高維的特徵空間,而變得可分。SVM 自己也是一門廣大精深的學問,已經超出了此係列的範圍,有興趣的人可以找相關領域的專家或書籍來學習。

談完了類神經網絡的源起,我們還得提到另外一個線性模型分類器,才能真正的開始進入深度學習的領域中。這個線性模型分類器,就是邏輯迴歸(Logistic Regression)

邏輯迴歸分類器(Logistic Regression)

分類器和迴歸的最大不同處,在於迴歸的response variable ,或y 值若給定線性方程式為,y = Wx,

為沒有限制的實數值。所以在迴歸中,誤差表示可以考慮mean squared error ,因為希望結果能離真實的實數值愈接近愈好,無論是多出或少於真實的值(因此取平方)。但,若是要訓練一個分類器,就必須考慮此時的response variable 是離散的值,線性迴歸的mean squared error 損失,因為分類標籤的離散性和使用log 函式的緣故就不適用了,因為我們現在在乎的是預測的不確定性,並不在意離真正的值有多近。

邏輯迴歸(Logistic Regression)也是一個線性模型,但這個線性的關係是建立在透過log 函式對預測結果做轉換上。在這個線性關係上,原本應該是連續數值的response variable 則為兩分類預測機率的log-odds ratio log-odds ratio 可看做預測為1對預測為0的比例,再取log 值)可看到下圖右下角方程式,線性迴歸的

y ',則為兩分類預測機率的比,也是線性迴歸中的輸出(方程式右方)。而原來線性迴歸的輸出y (下圖右上角方程式),則透過非線性轉換輸入,z ,得到近於機率的輸出。

相較於線性迴歸上使用的mean squared error 的損失函式,cross-entropy 是更佳的選擇。因為這種近似於線性迴歸的特性,對mean squared error 損失函式做最佳化的演算法都能使用在Logistic Regression 上。

從另外一個觀點來看,Logistic Regression 可以看做一個沒有hidden layer 的類神經網絡,其輸出則是藉由非線性的sigmoid function 來限制在0與1之間,以符合機率值的數值域。在過去類神經網絡,廣泛使用sigmoid function 作為activation function ,在那個架構深度達到兩三層就能算是深度網絡的時代,都會遭遇到所謂

gradient vanishing gradient explosion 問題。

這是因為sigmoid function 本身的特性,會將輸入位於兩端的極值,壓縮到相當相當靠近於0或1的值,而造成沒有gradient 或極小gradient 的結果。這類具有極限值的函式特性,在英文文獻中通常被稱為“saturate” ,中文則用“飽和” 這個翻譯,可捕捉到因為達到極限值而無法繼續訓練的性質。

淺談“類神經網絡”的源起和邏輯迴歸

▲左方是一個sigmoid function,右方則是sigmoid function 的數學式子。可以看到,sigmoid function 在靠近0 的地方(輸出為0.5)近似於線性,然而在兩側,遠離0 的數值,輸出皆為平緩的直線,並近似於0 或1。圖右方上方數學式是sigmoid function 的方程式,而下方的方程式則是以log odds-ratio 的方式來建立與原輸入建立起線性關係。

實際上,類神經網絡其實有一陣子相當沒落,那些執意進行類神經網絡相關研究的學者,包括現在被人所廣知的Geoffrey Hinton ,都被主流的研究學者稱呼為傻瓜。

但當時堅持研究類神經網絡,包括之前提到的Geoffrey Hinton Yann LeCun Yoshua Bengio 都得到相當於計算機科學的諾貝爾獎,圖靈獎的殊榮了!那麼,當時主流的研究都在做些什麼呢?原來就是SVM 最為熱門。反觀今日,因為大數據興起,造成類神經網絡的熱門,但也沒有造成SVM 式微。只能說「天下沒有免費的午餐」吧!

當然這對吃了一頓完全免費晚餐,賭注的見證人例外。


分享到:


相關文章: