向量輸入的神經元與多層網路
向量輸入的神經元 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}\):
$$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\):
$$\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\) 畫成一條粗線,權值、偏權值各畫成一個方塊,方塊下方標出矩陣大小(列 × 行)。
多層網路 Multiple Layers of Neurons
網路可以有好幾層,每一層有自己的權值矩陣、偏權值向量與輸出向量,以上標表示層號。第 1 層接收外部輸入,它的權值稱為輸入權值 \(\mathbf{IW}^{1,1}\);其他層接收前一層的輸出,權值稱為層間權值,例如第 1 層到第 2 層為 \(\mathbf{LW}^{2,1}\)。三層網路的簡化畫法:
$$\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 形這類非線性轉移函數,兩層網路在隱藏層神經元夠多時,就能以任意精度近似有界區域上的連續函數;若每一層都是線性的,多層相乘後仍等於一層線性網路,多加層數沒有好處。






