1. 程式人生 > >雙輸入感知器(Perceptron)的決策空間

雙輸入感知器(Perceptron)的決策空間

感知器(Perceptron)

感知器是一種二元分類器,它是神經網路的基石。感知器是對神經細胞的模擬,如權量(突觸)、偏置(閾值)及啟用函式(細胞體)。

輸入以向量的形式表示 x=(x_0, x_1, x_2),你可以把它們理解為不同的特徵維度,其中的 x_0 是偏置單元(bias unit), 相當於線性迴歸中的常數項。在經過 “神經元”(啟用函式)的計算後,感知器會輸出一個大於 0 或小於 0 的數。箭頭上的數字代表每個特徵的權量(weights),相當於線性迴歸模型的引數,是收集資訊的神經突觸。

例如,上圖列出了每個特徵的權量,於是我們有這樣的模型:

hθ(x)=-3+2*x_1+2*x_2

當 x_1 和 x_2 同時為 1 時,輸出為 1,而不同時都將得到負數。這實際上就是邏輯與或稱為與門。

我們的感知器將根據輸出大於或小於 0 來對輸入進行分類:

這是一個單層的感知器。通過修改權量,我們也可以建立或門(weights=[2,2], bias=-1)、非門(weights=[-2],bias=1,只有一個輸入端)。但是,無論如何,你都無法通過一個單層的感知器來建立 “異或門”(XOR),即兩個輸入相同時輸出 1,否則輸出 0。這種情況下,我們就需要更復雜的神經網路了,即多層神經網路,也被稱為前饋神經網路(feedforward neural network)。

前饋神經網路

前饋神經網路是多個感知器的組合,這些感知器以不同的方式產生連線,並由不同的啟用函式控制啟用。

圖 6: 前饋神經網路示意圖 

我們來認識下前饋神經網路:

  • 它包括輸入層(input layer)、輸出層(output layer)和一個或多個隱藏層(hidden layers)。上圖的神經網路由 3 個單元的輸入層,4 個單元的隱藏層和 2 個單元的輸出層組成。單元等於感知器。

  • 輸入層的單元是隱藏層單元的輸入,隱藏層單元的輸出是輸出層單元的輸入。

  • 兩個感知器之間的連線有一個權量。

  • 第 t 層的每個感知器與第 t-1 層的每個感知器相互關聯。當然,你也可以設定權量為 0,從而在實質上取消連線。

  • 在加工輸入資料時,你將輸入資料賦予輸入層的每個單元,而隱藏層的每個單元是輸入層每個單元的加權求和。也就是說,輸入層的資料會被前向傳播到隱藏層的每個單元。同理,隱藏層的輸出作為輸入會前向傳播到輸入層,計算得到最後的輸出,即神經網路的輸出。

  • 多個隱藏層的神經網路同理。

超越線性

在 “感知器” 中我們談到,單層感知器雖然可以建立與門、或門、非門等,但無法建立更為複雜的異或門(XOR),即兩個輸入相同時輸出 1,否則輸出 0。

為了更為直觀地理解這個問題,我們可以看下圖:

圖 7: 雙輸入感知器的決策空間

模型有兩個輸入(input1 和 input2),我們可以線性地區分或門的兩類情況:即同時為 0 時在左下角,其它情況在右上角;與門的情況也可以線性地區分,即輸出同時為 1 時在右上角,其它情況在左下角。但異或門呢?這種情況是無法作出線性區分的,也就是說,單層感知器無法實現異或門。

多層感知器嗎?

先來分析輸入和輸出的情況。最左邊兩列列出了輸入的 4 種情況。異或門的輸出是最右邊一列的情況,即兩個輸入相同時輸出 1,否則為 0。我們在輸入層和輸出層之間加入兩個單元的隱藏層,那麼,它給輸出層的輸入應該是什麼呢?答案如下圖。你可以發現,對於隱藏層的 a_1 單元(上標 2 代表這是第 2 層)來說,它實際上是且門(都為 1 時才輸出 1);對 a_2 單元來說,它的邏輯是 (not x_1) and (not x_2),即同時為 0 時才輸出 1。而從隱藏層到輸出層,是邏輯或。前饋神經網路可以實現異或門!

圖 8: 異或門輸入輸出下推導隱藏層

於是我們建立如下的神經網路,但是其輸出並非我們想要。為什麼?

圖 9: 線性啟用函式下的前饋神經網路

這是因為上面感知器的啟用函式是線性函式。這種情況下,神經網路的輸出也只是輸入的某種線性函式,只不過是通過網路的形式來進行加權。線性函式的線性組合仍然是線性函式。也就是說,即便是多層的感知器,啟用函式為線性時也無法實現輸入 00 和輸入 11 時的輸出比輸入 01 和 10 時大,即非線性。

如果啟用函式是線性函式,前饋神經網路將不會比單層感知器強大多少,不管它有多少層。

我們需要 logistic 函式的幫助。大部分神經網路會使用非線性啟用函式,比如 logistic 函式(也被稱為 Sigmoid 函式,這是就其形狀而言的)。此外,由於訓練神經網路要使用微積分,而要使用微積分,就得使用光滑函式(在反向傳播時我們會詳細講解)。logistic 函式也滿足這一要求。

在 logistic 函式的作用下,線性函式的輸出值將被轉化到 0 到 1 之間。從下圖右上角的 logistc 曲線可以看到,輸入值越大,輸出越接近 1,輸入為 4 時輸出為 0.99;輸入值越小,輸出越接近 0,輸入值為 - 4 時,輸出為 0.01。

下圖是單層感知器的啟用函式為 logitic 函式時與門的示例。

圖 10: 啟用函式為 logitic 函式時的與門單層感知器

綜上,我們可以通過前饋神經網路和 logistic 函式解決異或門的問題:

圖 11: 非線性神經網路實現異或門