---
# System prepended metadata

title: 'Chpater 2: Neuron Model and Network Architectures'
tags: [Neural Network Design]

---

# 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>