人工神經網路 Artificial Neural Network

簡稱 ANN,又稱類神經網路(Neural Network,NN)。其核心概念是人類希望用計算模型再現生物的學習系統,當紅的深度學習演算法便是基於這個觀念演化而來。

--

前言

Background photo created by starline — www.freepik.com

早在1943年就出現《A logical calculus of the ideas immanent in nervous activity》這篇論文,有學者用數學搭配閥值(Threshold)邏輯來描述生物大腦的運作過程,論文中提出了「ANN的概念」和「神經元數學模型」。

隨後在1949年,心理學家發表一篇名為《The Organization of Behavior》的論文,文中闡述了神經元的「學習法則」,被後世稱為赫布理論(Hebbian theory)

基於前人提出的想法,Frank Rosenblatt在1957年時,發明了人類史上第一個能模擬人類感知的神經網絡,名為「感知器(Perceptron)」,要理解這個演算法之前,我們必須要先有一點關於「神經元」的生物知識。

神經元(Neural)

神經元(Neurons)是生物神經系統的結構單位,其功能是用於感知環境變化,再將查覺到的訊息傳給其他神經元後做出集體反應。一個神經元的各部位的功能:

  • 樹突(Dendrites):用來接收其他神經元的訊號
  • 細胞體(Soma):是神經元主要結構,用於處理感知到的訊息
  • 軸突(Axon): 傳輸此神經元的動作電位(可說是這個 Neuron 的 output)
  • 突觸(Synapse): 用來連接其他神經元的接頭

基本上單個細胞的運作是這樣的:先從樹突(Dendrites)接收其他細胞傳來的資訊,透過細胞體(Soma)處理資訊再透過軸突(Axon)傳給突觸(Synapse)之後傳遞給其他細胞。

而人類透過一些實驗才了解,生物神經系統是透過無數個細胞相連,並在接收到外界刺激之後迅速作出反應,這個過程對應到數學上來說,是非常高維度的平行運算。

ANN就是受到這種思維啟發才誕生的,人類開始思考如何給予程式高維度的輸入,然後透過設置變數來模擬神經元分布,讓資訊在經過變數的時候,乘上權重(Weight)、加上偏置(Bias)來模仿細胞體處理資訊的過程,最後用一個閥值模擬細胞體決定是否將訊息傳遞給下一個神經元,就這樣出現了「感知器(Perceptron)」!

這樣形容可能有點抽象,接下來我用幾張圖說帶入數學符號來說明 Perceptron 這個想法。

感知器(Perceptron)

Linear threshold unit ( LTU )

Perceptron 可以接收高維度的資料當作輸入(X),在乘上權重(W)、加上偏置(X0*W0)之後經過一個激勵函數(S)進行判定才傳值給下一個神經元,這個過程也被稱為前饋(Feedforward)。寫成數學式則是這樣:

s 這個激勵函數除了表面上決定此神經元是否「活躍」的功能之外,也是為了讓整個 function 變成非線性的函式。

現在了解了 Perceptron 的 neuron 如何向前傳遞資訊,那接下來就可以進一步理解它如何像生物一樣「學習」。

感知器學習算法(Perceptron Learning Rule)

通常生物在學習每一件事情的時候,會有一個不斷嘗試並修正的過程,Perceptron Learning Rule 就是把這個反覆嘗試、修正的過程用數學的角度重現一次。

若把神經網絡當作一個函式用h( )表示,那學習的過程主要分成 4 個步驟:

  1. 給予資料集之中的其中一筆資料(以h( X )表示)
  2. 比對每次 neuron 的計算結果與真實值(標籤,Label,以 y 表示)的差異,就可以得到誤差值(y-h(x)
  3. 用誤差乘上一個自定義常數(學習率,Learning rate,常用 η 表示)和變數本身(X)就可以得到變量(常用 ΔW 表示)
  4. 更新權重(常用 W + ΔW

接下來就不斷重複這些步驟,再給一筆新的資料、乘上新的權重、得到新的誤差、繼續修正權重......

直到不管代入任一筆資料集中的資料,得到的誤差都是 0 ,那神經網絡就訓練完了。寫成數學式就是這樣:

這邊舉一個數字比較簡單的例子,來說明 Perceptron 學習的過程是如何修正決策邊界(Decision boundary)。首先假設數據已經過前處理階段,feature只有 2 種(X1, X2)且都是數字,其 Label 我以橘紅色(+1) & 藍色(-1)表示,我們挑出其 4 幾筆 data 來做 2 維平面上的可視化:

那接下來我們隨機初始化一條 Decision boundary,其 weight 為[ 0.25, -0.1, 0.5 ],示意圖:

代入變數並化簡之後可得:

這個方程式在二維平面上的狀態:

透過這張圖可以很直覺看到,如果特徵值代入計算後得到 > 0 的結果會是Decision boundary 的上方;反之,若代入計算後得到 < 0 的結果,則會在Decision boundary 的下方

接下來我們開始代入第一筆資料 A 計算:

在得到新的權重之後,再代入變數並化簡可得:

這時來看看這條 Decision boundary 在二維平面上的變化:

接下來就開始重複代入、修正的運算,這次我們代入資料 B 計算:

一樣把新權重代入變數並化簡可得:

這時的 Decision boundary 在二維平面上的位置:

這次代入資料 C 計算:

一樣把新權重代入變數並化簡可得:

其對應的二維空間位置:

這次運算結果的 Decision boundary 基本上已經收斂(Converge)完了,但還沒計算過原本就分對邊的案例,所以最後仍帶入資料 D 來計算看看會發生甚麼事:

透過資料 D 的計算可以發現,如果原本就已經被 Decision boundary 分對邊,那變量(ΔW)會為 0 ,所以權重()就不會更新。

如果 Data set 是線性可分的(Linear separable),那 Perceptron 理論上是可以收斂(Converge)在那無限多組解的其中一組。但如果不是線性可分呢?

稍微想像一下前面的例子,神經網路在面對前兩筆資料時,基本上會不斷修正,如果最終找不到一個 Linear separable 的地方切開,那 Perceptron 很有可能在接近 Decision boundary 的位置,陷入永無止境的反覆修正

針對這個問題,後來有人提出了「梯度下降學習法(Gradient Decent Learning Rule)」,歡迎透過連結跳轉去另一篇文章,繼續了解神經網路的後續發展。

--

--

Ken Huang
人工智慧,倒底有多智慧?

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。