這一節的標題是
10.3 Putting the "Network" in Neural Network
因為方格子標題字數限制,所以沒完整顯現
單一一個感知器雖然能解一些問題,但能解的問題範圍極其有限。說得更精確一點,單一一個感知器,就只能解「線性可分」(linearly separable)的問題。
什麼是線性可分呢?簡單來說,如果一個資料集是線性可分的,那就表示可以用一條直線或一個超平面將資料點區分為兩類。先前介紹感知器時所用的水生、旱生植物資料集,就是線性可分的;因為可以用一條直線將資料點區分為水生植物及旱生植物兩個部分。另外,邏輯運算中的AND及OR,也是線性可分的問題,因為它們的真值表可以用一條直線區分成T及F兩部分。以input1 AND input2來說,四種輸入方式為(input1, input2) = (T, T)、(T, F)、(F, T)、(F, F),除了(T, T)的輸出為T之外,其他輸入的輸出都是F,所以根據輸出的值,可以用一條直線把四個輸入值的點區分成兩部分。至於OR,除了(F, F)的輸出是F之外,其他的輸出都是T,同樣也可以根據輸出的值,用一條直線將四個輸入值的點區分成兩部分。畫圖來看會更清楚一些:

非線性可分問題最簡單的例子之一是XOR (exclusive or)。要將XOR的真值表區分為T及F兩部分,用一條直線辦不到,非得用曲線不可;如下圖:

單一一個感知器只能解線性可分的問題,那碰到像XOR這種非線性可分的問題時,該怎麼辦呢?
俗話說,人多好辦事、三個臭皮匠勝過一個諸葛亮,一個不行,那就多用幾個唄。原書提到,因為XOR運算等價於(OR) AND (NOT AND),而OR及NOT AND都是線性可分的,所以可以結合兩個感知器,一個處理OR、一個處理NOT AND,這樣就可以解決XOR運算的問題了。不過,實際在做的時候,應該要用三個感知器才夠;第三個感知器要用來處理AND運算,也就是處理前面兩個感知器的輸出,這樣最後得到的輸出,才會是XOR的運算結果。
所以,從解XOR運算問題就可以知道,單一一個感知器能力有限,但如果把多個感知器組合,形成一個多層感知器(multilayer perceptron, MLP),那這個由多個神經元所組成的網路,將可以解決更複雜、更困難的問題。
一個多層感知器通常會有輸入層(input layer)、隱藏層(hidden layer)、輸出層(output layer)等三層。在輸入層的神經元負責接收輸入;介於輸入層和輸出層之間的神經元屬於隱藏層;在輸出層的神經元則負責輸出最後的結果。隱藏層可以不止一層,下圖是一個只有單一隱藏層的多層感知器:

組成多層感知器的神經元,其運作方式和單一一個感知器的運作方式完全一樣:神經元分別將各個輸入乘上對應的權重後加總,接著由啟動函數將其轉成輸出。
多層感知器的學習方式和感知器一樣,也是透過調整權重來進行。不過,由於多層感知器各層的神經元間都有連結,因此有不少的權重需要調整。想要調整那麼多會互相影響的權重來得到正確的輸出,那可比調整單一一個感知器的權重要複雜多了。
多層感知器調整權重是透過倒傳遞(backpropagation, BP)的方式來進行的。倒傳遞,顧名思義,就是把誤差反向傳遞到網路中,據此來決定各個權重要怎麼調整。詳細的公式推導牽涉到複雜的數學運算,這已超出原書的範圍,所以就此打住。









