智慧型控制 Intelligent Control

向量輸入的神經元與多層網路

向量輸入的神經元 Neuron With Vector Input

(原講義為 Matlab 手冊的英文截圖,以下改寫為中文。)一個神經元可以有 R 個輸入 \(p_1, p_2, \dots, p_R\),各乘上權值 \(w_{1,1}, w_{1,2}, \dots, w_{1,R}\) 後送到加總點。它們的和就是單列矩陣 \(\mathbf W\) 與向量 \(\mathbf p\) 的內積 \(\mathbf{Wp}\):

輸入向量輸入的神經元p1​p2​p3​pR​⋮w1,1​w1,R​Σb1nfaa = f(Wp + b)R=輸入向量的元素個數 $$n = w_{1,1}p_1 + w_{1,2}p_2 + \cdots + w_{1,R}p_R + b = \begin{bmatrix} w_{1,1} & w_{1,2} & \cdots & w_{1,R} \end{bmatrix}\begin{bmatrix} p_1 \\ p_2 \\ \vdots \\ p_R \end{bmatrix} + b = \mathbf{Wp} + b$$

在 Matlab 中可以直接寫成 n = W*p + b。不過實際使用時很少寫到這麼底層,因為建立與模擬整個網路的函數已經內含這些計算。兩個輸入的情形可以在 簡單神經元頁的互動動畫中實驗(原講義建議的 Matlab 示範為 nnd2n2)。

權值 \(w_{i,j}\) 的兩個下標:第一個 \(i\) 是接收的神經元,第二個 \(j\) 是來源的輸入。所以 \(w_{1,2}\) 是第 2 個輸入到第 1 個神經元的連結強度。

一層神經元 A Layer of Neurons

R 個輸入、S 個神經元的單層網路如下。每個輸入都接到每個神經元,所以權值排成 S × R 的矩陣 \(\mathbf W\):

輸入一層神經元p1​p2​p3​pR​⋮Σb1​n1​fa1​Σb2​n2​fa2​ΣbS​nS​faS​⋮⋮w1,1​wS,R​a = f(Wp + b)R=輸入元素個數S=這一層的神經元個數第 i 個神經元:ai​ = f(wi,1​p1​ + … + wi,R​pR​ + bi​) $$\mathbf W = \begin{bmatrix} w_{1,1} & w_{1,2} & \cdots & w_{1,R} \\ w_{2,1} & w_{2,2} & \cdots & w_{2,R} \\ \vdots & & & \vdots \\ w_{S,1} & w_{S,2} & \cdots & w_{S,R} \end{bmatrix},\qquad \mathbf a = \mathbf f(\mathbf{Wp} + \mathbf b)$$

神經元很多時,改用簡化畫法:輸入向量 \(\mathbf p\) 畫成一條粗線,權值、偏權值各畫成一個方塊,方塊下方標出矩陣大小(列 × 行)。

輸入一層神經元RpR × 1WS × RbS × 11+n​S × 1f​SaS × 1a = f(Wp + b)方塊下的數字是矩陣(向量)大小:列數 × 行數

多層網路 Multiple Layers of Neurons

網路可以有好幾層,每一層有自己的權值矩陣、偏權值向量與輸出向量,以上標表示層號。第 1 層接收外部輸入,它的權值稱為輸入權值 \(\mathbf{IW}^{1,1}\);其他層接收前一層的輸出,權值稱為層間權值,例如第 1 層到第 2 層為 \(\mathbf{LW}^{2,1}\)。三層網路的簡化畫法:

Rp第 1 層IW1,1​S¹ × Rb1​S¹ × 11+n1​S¹ × 1f1​S¹a1​第 2 層LW2,1​S² × S¹b2​S² × 11+n2​S² × 1f2​S²a2​第 3 層LW3,2​S³ × S²b3​S³ × 11+n3​S³ × 1f3​S³a3​IW=輸入權值(input weight) LW=層間權值(layer weight) 上標=層號 $$\mathbf a^1 = \mathbf f^1(\mathbf{IW}^{1,1}\mathbf p + \mathbf b^1),\quad \mathbf a^2 = \mathbf f^2(\mathbf{LW}^{2,1}\mathbf a^1 + \mathbf b^2),\quad \mathbf a^3 = \mathbf f^3(\mathbf{LW}^{3,2}\mathbf a^2 + \mathbf b^3)$$ $$\mathbf y = \mathbf a^3 = \mathbf f^3\!\left(\mathbf{LW}^{3,2}\,\mathbf f^2\!\left(\mathbf{LW}^{2,1}\,\mathbf f^1(\mathbf{IW}^{1,1}\mathbf p + \mathbf b^1) + \mathbf b^2\right) + \mathbf b^3\right)$$

輸出就是網路結果的那一層稱為輸出層,其餘稱為隱藏層。(補充)只要隱藏層使用 S 形這類非線性轉移函數,兩層網路在隱藏層神經元夠多時,就能以任意精度近似有界區域上的連續函數;若每一層都是線性的,多層相乘後仍等於一層線性網路,多加層數沒有好處。

原圖對照(取自 Matlab 手冊)
原圖
原圖
原圖
原圖
原圖
原圖
原圖