# Chpater 2: Neuron Model and Network Architectures ## 1. 目的 * 本章介紹簡化的神經元數學模型,並解釋人工神經元如何相連接形成各種網路架構。 ## 2. 理論與實例 ### 2.1 符號 * 標量(Scalars) --- 小寫的斜體(*italic*)字母,如 *a* , *b* , *c* * 向量(Vectors) --- 小寫的黑正體(**nonitalic**)字母,如 **a** , **b** , **c** * 矩陣(Matrices) --- 大寫的黑正體(**nonitalic**)字母,如 **A** , **B** , **C** ### 2.2 神經元模型 * Weight 權重 * Bias 偏移量 * Net Input 淨輸入 * Transfer Function 傳出函數 #### 1. 單輸入神經元(Single-Input-Neuron) * 標量(Scalars)輸入 *p* 乘上標量權重 *w* 得到 *wp* ,再將其送入累加器($Σ$)。 * 另一個輸入 1 乘上bias *b* ,再將其送入累加器($Σ$)。 * 累加器($Σ$)輸出 *n* 通常被稱為淨輸入,其會送入transfer function *f* 。 * 在 *f* 中產生神經元的標量輸出 *a* 。 * 對應於Chapter 1的生物神經元 : * weight *w* → **突觸**的連接強度 * 累加器($Σ$)和傳輸函數 *f* → **細胞體** * 神經元輸出 *a* → **軸突**的訊號 ![](https://i.imgur.com/XZEqYwU.png =x250) * 實際的輸出 *a* 取決於所選擇的特定傳輸函數 *f*,下面將討論傳輸函數。 * *w* 和 *b* 是神經元的可調整標量參數。設計者可以選擇特定的傳輸函數,在一些學習規則中調整參數,以滿足特定的需要。 #### 2. 傳輸函數(transfer function) * 傳輸函數可以是n的**線性**和**非線性**函數。可以用特定的傳輸函數滿足神經元要解決的特定問題。 * 本小節有許多transfer fuction,以下介紹三種: * <font color="#f00">**Hard Limit Transfer Function**</font> * 當函數的自變量小於0時,函數輸出為0 * 當函數的自變量大於或等於0時,函數輸出為1 * 下右圖描述使用了Hard Limit Transfer Function的單輸入神經元的特徵曲線,從中可以看出weight和Bias的影響。 ![](https://i.imgur.com/xOx5dfZ.png =x200) * <font color="#f00">**Linear Transfer Function**</font> * 輸出等於其輸入 *a* = *n* ![](https://i.imgur.com/576ZmQc.png =x200) * <font color="#f00">**Log-Sigmoid Transfer Function**</font> * transfer fuction的輸入在($-∞$ , $∞$)間取值,輸出則在0到1之間取值,其數學表達是為 : $$ a = \dfrac{1}{1+e^{-n}} $$ * 某種程度上,Log-Sigmoid函數是可微的,所以用於反向傳播算法訓練的多層network才採用此transfer fuction。 ![](https://i.imgur.com/8rqV3d5.png =x200) :::spoiler **可參考其他的Transfer Function** ![](https://i.imgur.com/aLPYtwn.png =x650) --- ::: #### 3. Multiple-Input Neuron(多輸入神經元) * 一個神經元不只有一個輸入,具有R個輸入的神經元。 * 其輸入$p_1 , p_2 , ... , p_R$ 分別對應權重矩陣(Weight Matrix) $W$ 的元素 $w_{1,1} , w_{1,2} ,..., w_{1,R}$。 ![](https://i.imgur.com/9gZ7e1Y.png =x250) * 神經元的 Bias *b*,他與所有輸入的加權和累加,從而形成淨輸入 *n* : $$ n = w_{1,1}p_{1} + w_{1,2}p_{2} + ... + w_{1,R}p_{R} + b $$ * 此表達式也可以寫成矩陣形式: $$ n = Wp + b $$ * 其單個神經元的權重矩陣 **W** 只有一列元素。 * 神經元的輸出可以寫成: $$ a = f(Wp + b) $$ ### 2.3 網路結構 * 一般來說多個輸入的單個神經元並不能滿足實際應用的要求。 * 實際應用中需要有多個並行操作的神經元,其組合稱之為"層"。 #### 1. 神經元的層(A Layer of Neurons) * 下圖是由S個神經元組成的單層網路(single-layer network),R個輸入中的每一個輸入均與每個神經元相連,權重矩陣目前有S行。 ![](https://i.imgur.com/wOlCyVK.png =x350) * 輸入向量 $p$ 的每個元素均通過權重矩陣 $W$ 和每個神經元相連。美個神經元有一個bias $b_i$,一個累加器($Σ$),一個傳輸函數 *f* 和一個輸出 $a_i$ 。將所有個神經元輸出結合,可以得到一個輸出向量 $a$。 * <font color="#f00">**每層的輸入個數並不等於該層中神經元的數目(即是 $R≠S$)**</font> * 同一層的神經元不一定會有相同的transfer function,可以把兩個併行操作網路組合在一起定義一種不同transfer function的的單個神經元(複合)。 * 輸入向量通過權重矩陣 $W$ 進入network : $$ W = \left[ \begin{array}{cccc} w_{1,1} & w_{1,2} & ... & w_{1,R} \\ w_{2,1} & w_{2,2} & ... & w_{2,R} \\ . & . & ... & . \\ . & . & ...& . \\ w_{S,1} & w_{S,2} & ... & w_{S,R} \\ \end{array} \right] $$ * 簡化圖如下,具有S個神經元、R個輸入的單層網路。 ![](https://i.imgur.com/uAYI2c1.png =x250) #### 2. Multiple Layers of Neurons 多層神經網路 * 每層都有自己權重矩陣 $W$, bias向量 **b** ,淨輸入向量 **n**和一個輸出向量 $a$。 * 這裡需要引入額外的符號來區分這些層次,每個變量附加一個*上標*來表示其所處層次。 * 第一層的權重矩陣可寫成 $W^1$, 第二層的權重矩陣可以些成 $W^2$。 ![](https://i.imgur.com/q8JQB3s.png =x350) * 如上圖所示,第一層有$R$個輸入、$S^1$個神經元,第二層有$S^2$個神經元,<font color="#f00">**不同層可以有不同數目的神經元**</font>。 ![](https://i.imgur.com/rK8AKDh.png) * 右上圖來看,第一層和第二層分別為第二層和第三層的輸入。 * 第二層它有$R=S^1$個輸入, $S=S^2$個神經元, 和一個$S^1*S^2$維的權重矩陣 $W^2$。其輸入是 $a^1$, 輸出是 $a^2$。 * 若有四個外部便量作為網路輸入,那網路就有4個輸入。 * 若有網路七個輸出,那網路的**輸出層**就應該有七個神經元。 * 輸出信號所期望的特徵有助於選擇輸出層的transfer function。若輸出層要的是-1,不然就是1個話,那麼該輸出神經元就可以用Symmetrical Hard Limit。 * 是否使用Bias是可以選擇的: * Bias給網路提供額外的變量,從而使網路具有更強的能力。 * 例如 : 若沒有bias,當網路輸入$p$為0時,一個神經元的淨輸入 $n$總是為0,這是不希望出現的情況,因此可以通過用bias來避免。 #### 3. Recurrent Networks 遞迴網路 * 介紹遞迴網路前,首先介紹一些簡單的構造模塊,第一種是延時模塊(delay block) * 延遲輸出(delay output) $a(t)$由輸入 $u(t)$ 根據下式計算得到 : $$ a(t) = u(t-1) $$ * 輸出是延遲了一個time step的輸入 ![](https://i.imgur.com/wpijKBD.png =x250) --- * 另一種用於<font color="#f00">**連續時間**</font>遞迴網路的構造模塊是<font color="#f00">**積分器**</font>。 * 積分器的輸出 $a(t)$ 由輸入 $u(t)$ 根據下式計算得到 : $$ a(t) = \int_{0}^{t}u(τ)dτ + a(0) $$ * 初始條件 $a(0)$由指向積分器模塊底部的箭頭來表示。 ![](https://i.imgur.com/7CR7dhv.png =x250) --- * 利用上述模塊就可以構造出遞迴網路,遞迴網路是一個反饋(feedback)的網路,它的部分輸出會連接到它的輸入。 * 這與前面所討論沒有backward連接的feedforward network 有很大的不同。 ![](https://i.imgur.com/Y0HZ0TU.png =x350) * 向量 $p$ 給出了其初始條件(即 $a(0)=p$)。網路根據前一次輸入計算當前的輸出: $$ a(1) = satlines(Wa(0) + b) , a(2) = satlins(Wa(1)+b), ... $$ * 遞迴網路比feedforward network在本質上具有更強的能力,它可以表現出時間性行為。 ## 3. 小節 如何選取一種網路架構?! * 應用問題的苗式從如下幾個方面非常有助於定義網路的結構: 1. 網路的輸入個數 = 應用問題的輸入數 ; 2. 輸出層神經元的數目 = 應用問題的輸出數目 ; 3. 輸出層的傳輸函數選擇至少部分依賴於應用問題的輸出描述 ###### tags: `Neural Network Design` <font color="#C60DAD ">**** </ font> <font color =“#1032EE”> ****</font> <font color="#f00">**</font> <font color="#0A9C0C "></font> <font color="#FCA117"></font>