---
# System prepended metadata

title: 'Chapter 3 : An Illustrative Example'
tags: [Neural Network Design]

---

# Chapter 3 : An Illustrative Example
## 1. 目的
* 本章給出一個模式來識別簡單的問題，並說明如何用三種不同結構的神經網路來求解這個問題。
* 本章會給出三種network : 
    * 前饋神經網路 (feedforward networks)
    * 競爭式類神經網路 (competitive networks) : **以Hamming network為代表**
    * 遞迴聯想儲存網路 (recurrent associative memory networks) : **以Hopfield network為代表**
## 2. 理論和實例
### 2.1 問題描述
* 商販有一個儲存各種水果的蔬菜的貨倉，當水果放進貨艙時，不同類型的水果可能會混在一起，因此商販非常希望有一台可以自動把水果分類的機器。假設從水果卸車的地方到貨艙之間有一條傳送帶。傳送帶通過一組特定的傳感器(Sensor)(Sensor)，這組傳感器可以分別測量水果的三個特徵:<font color="#f00">**外型(Shape)**</font>、<font color="#f00">**品質(texture)**</font>和<font color="#f00">**重量(weight)**</font>。
    * 若水果是<font color =“＃1032EE”> **圓的**</font>，傳感器(Sensor)輸出為1，反之為-1
    * 若水果<font color =“＃1032EE”> **表面光滑**</font>，傳感器(Sensor)輸出為1，反之為-1
    * 若水果重量<font color =“＃1032EE”> **超過於1磅**</font>，傳感器(Sensor)輸出為1，反之為-1
:::spoiler **水果分類流程圖**
![](https://i.imgur.com/z2wD1IU.png =x250)

---
:::
* 傳感器(Sensor)的輸出會以三維向量來表示，再輸入到神經網路，來去分辨是何種水果。
$$
p = \left[
\begin{array}{cccc}
Shape \\
Texture \\
Weight \\
\end{array}
\right]
$$
* 因此一個橘子可以表示為:
$$
p_1 = \left[
\begin{array}{cccc}
1 \\
-1 \\
-1 \\
\end{array}
\right]
$$
* 一個標準的蘋果可以表示為:
$$
p_2 = \left[
\begin{array}{cccc}
1 \\
1 \\
-1 \\
\end{array}
\right]
$$
* 對輸送帶上的每種水果，神經網路都可以接收到一個三維輸入向量，並且要判斷是橘子($p_1$)還是蘋果($p_2$)。
### 2.2 感知器 (Perceptron)
* 第一個要討論的network是Perceptron，下圖是採用hardlims的單層感知機。
![](https://i.imgur.com/rwXhBuL.png =x200)
#### 兩輸入的情況(Two-Input Case)
* 研究一下兩輸入單神經元感知機($R=2$)的能力。用下圖示方法對其進行分析。
![](https://i.imgur.com/GHAFB2H.png =x200)
* 單神經元感知機可以將輸入向量分成兩類。例如，對一個兩輸入perceptron而言，$w_{1,1} = -1$，且 $w_{1,2} = 1$ 則 :
$$
a = hardlims(n) = hardlims(\left[
\begin{array}{cccc}
-1 &1\\
\end{array}
\right]p + b)
$$
* 若權重矩陣($w$) 與輸入向量($p$) 的內積<font color =“＃1032EE”> **大於等於**</font> $-b$，perceptron的輸出為1;
* 若權重矩陣($w$) 與輸入向量($p$) 的內積<font color =“＃1032EE”> **小於**</font> $-b$，perceptron的輸出為-1;
* 這就將輸入空間劃分為兩個部分
* 下圖顯示當 $b = -1$ 的情況下，該perceptron輸入空間的劃分情況，圖中斜線表示淨輸入*n*等於0的各點 : 
$$
n = \left[
\begin{array}{cccc}
-1 &1\\
\end{array}
\right]p-1 = 0
$$
* 藍色線為 $n=0$
* 判定的邊界(藍色線)總是與權重矩陣($W$)正交，且邊界位置(藍色線)亦會隨著b的改變而上下移動
![](https://i.imgur.com/Kuq7QO9.png =x250)
* single-neuron perceptron的關鍵性質是能夠將輸入向量分為兩類。類與類間的判定邊界由下是給定:
$$
Wp + b = 0
$$
* <font color="#f00">**邊界必須是線性的，所以單層的perceptron只能用於識別一些線性可分的模式。**</font>
#### 模式識別實例 (Pattern Recognition Example)
* 回到蘋果、橘子模式的問題，因為僅僅只有兩個類別，所以採用單神經元感知器(single-neuron perceptron)。向量輸入是三維的($R=3$)，該perceptron的輸入/輸出關係由下式所描述:
$$
a = hardlims(\left[
\begin{array}{cccc}
w_{1,1} &w_{1,2} &w_{1,3} \\
\end{array}
\right] \left[
\begin{array}{cccc}
p_{1} \\
p_{2} \\
p_{3} \\
\end{array}
\right] +b )
$$
* 用perceptron的1跟-1來區分蘋果跟橘子，一樣要找到一個線性邊界把兩種水果區分開。
* 兩個標準向量的空間表示如下圖，下圖可能出對稱區分這兩個向量的線性邊界是 $p_1$ 和 $p_3$ 兩個平面。
![](https://i.imgur.com/6n1uJEG.png =x300)
* $p_1$和$p_3$兩個平面就是所求的判定邊界，可以將其分別表示為 : 
$$
p_2 = 0
$$

或

$$
\left[
\begin{array}{cccc}
0 &1 &0 \\
\end{array}
\right] \left[
\begin{array}{cccc}
p_{1} \\
p_{2} \\
p_{3} \\
\end{array}
\right] -0 = 0
$$
* 由此可知權重矩陣($W$)和bias值分別為$\left[
\begin{array}{cccc}
0 &1 &0 \\
\end{array}
\right] 和 0$。
* 當輸入是橘子時，有
$$
a = hardlims (\left[
\begin{array}{cccc}
0 &1 &0 \\
\end{array}
\right] \left[
\begin{array}{cccc}
1 \\
-1 \\
-1 \\
\end{array}
\right] + 0) = -1 (橘子)
$$
* 當輸入是蘋果時，有
$$
a = hardlims (\left[
\begin{array}{cccc}
0 &1 &0 \\
\end{array}
\right] \left[
\begin{array}{cccc}
1 \\
1 \\
-1 \\
\end{array}
\right] + 0) = 1 (蘋果)
$$
* <font color="#f00">**單層感知機(single-neurou perceptron)關鍵特性是它構造了一個線性判定邊界對輸入向量進行分類。**</font>但若輸入類別不能用線性邊界進行劃分的話將會再Chapter 11做討論。
### 2.3 Hamming Network
* 能夠求解任意複雜分類問題的多層感知器(multilayer perceptron)
* 此網路是專門求解**二值(binary)** 模式問題而設計的。(問題中輸入向量的每個元素只能是兩個可能值中的一個，這裡取-1和+1兩個值)。
* Hamming Network是使用Chapter 2 的前饋層(Feedforward Layer)與遞迴層(Recurrent Layer)，因此此網路也特別的特性。
* Hamming network的目標是判定哪個標準向量最接近於輸入向量。判定結果由遞迴層輸出來表示。<br>　→　prototype vector is closest to the input vector.
 ![](https://i.imgur.com/icpOR6f.png =x250)
#### 1. 前饋層(feedforward layer)
* 前饋層在每個原型模式(prototype patterns)和輸入模式之間執行相關或內積運算。
* 為了使前饋層能完成其功能，將由連接矩陣 $W_1$ 表示的前饋層中權重矩陣的行設置為原型模式。對於我們的蘋果換橘子範例，代表著:
$$
W_1 = \left[
\begin{array}{cccc}
p^{T}_{1}\\
p^{T}_{2}\\
\end{array}
\right] = \left[
\begin{array}{cccc}
1 & -1 &-1\\
1 & 1 &-1\\
\end{array}
\right]
$$
* 前饋層採用的是linear transfer function，Bias向量中的每個元素等於R，R是輸入向量中的元素個數，在此範例中，將Bias向量設置為:
$$
b^1 = \left[
\begin{array}{cccc}
3\\
3\\
\end{array}
\right]
$$
* 用權重矩陣和偏移值(Bias)向量的這些選擇，前饋層的輸出為:
$$
a^1 = W^1p + b^1 = \left[    
\begin{array}{cccc}
p^{T}_{1}\\
p^{T}_{2}\\
\end{array}
\right]p + \left[
\begin{array}{cccc}
3\\
3\\
\end{array}
\right] = \left[
\begin{array}{cccc}
p^{T}_{1} p+3\\
p^{T}_{2}p+3\\
\end{array}
\right]
$$
* 注意，前饋層的輸出等於每個原型模式的內部乘積加上輸入
#### 2. 遞迴層 (Recurrent Layer)
* 此層就是所謂的"競爭"層。該層的神經元用前饋層的輸出進行初始化，此輸出表示標準模式和輸入向量之間的關係。
* 遞迴層的神經元相互競爭來決定誰是勝利者，競爭後只有一個輸出值不等於0。
* 淨爭取勝的神經元就表示提供給網路的輸入類別(以例子來說，就是蘋果和橘子兩種類別)，描述競爭的等式為 : 
$$
a^2(0) = a^1 (初始條件)
$$
和
$$
a^2(t+1) = poslin(W^2a^2(t))
$$
* 上標表示第二層，而不是2次冪。poslin的transfer function對正值而言是線性函數，對負值而言取值為0。權重矩陣 $W^2$ 的形式為 : 
$$
W^2 = \left[
\begin{array}{cccc}
1 & -\varepsilon\\
-\varepsilon & 1\\
\end{array}
\right]
$$
    * 其中 $\varepsilon$ 為小於 1/(S-1) 的一個數 ， S為遞迴層的神經元的個數。
* 遞迴層每次疊代過程可以用下式表示 : 
$$
a^2(t+1) = posline(\left[
\begin{array}{cccc}
1 & -\varepsilon\\
-\varepsilon & 1\\
\end{array}
\right]a^2(t)) = posline(\left[
\begin{array}{cccc}
a^{2}_{1}(t) & -\varepsilon a^{2}_{2}(t)\\
a^{2}_{2}(t) & -\varepsilon a^{2}_{1}(t)\\
\end{array}
\right])
$$
* 由上式可以看出，向量中每個元素都減去另一個元素的一部分，而減少的比例相同，均為$\varepsilon$。
* 由此可知，就有較大值的元素減去的量較少，而具有就小值的元素減去的量較大。
* 再次將前面測試感知機的橢圓橘子為例進一步說明Hamming網路的原理。一個**橢圓形橘子**可以用向量表示為:
$$
p = \left[
\begin{array}{cccc}
-1 \\
-1 \\
-1 \\
\end{array}
\right]
$$
    * 前饋層的輸出為 : 
$$
a^1 = \left[
\begin{array}{cccc}
1&-1&-1 \\
1&1&-1 \\
\end{array}
\right]\left[
\begin{array}{cccc}
-1 \\
-1 \\
-1 \\
\end{array}
\right]+\left[
\begin{array}{cccc}
3 \\
3 \\
\end{array}
\right]= \left[
\begin{array}{cccc}
(1+3) \\
(-1+3) \\
\end{array}
\right]=\left[
\begin{array}{cccc}
4 \\
2 \\
\end{array}
\right] 
$$
    * 以上就是遞迴層的初始化條件。
* 遞迴層的權重矩陣由上式的$W^2$ 給出，其中$\varepsilon = 1/2$ (實際上，這裡可以採用其他任何小於1的數)。遞迴層第一次疊代得到 : 
![](https://i.imgur.com/Vw9qvWT.png =x150)
第二次疊到結果為:
![](https://i.imgur.com/8FbN8Vi.png =x150)
* 由於後面的疊代過程中得到的都是同樣的結果，這表示網路已經收斂。
### Hopfield Network
* Hopfield Network 類似於Hamming Network遞迴層的一種遞迴網路，但它能有效的實現Hamming Network的兩層所完成的工作。
![](https://i.imgur.com/afrip9s.png =x250)
* 上圖為標準Hopfield network的一種變形，此模型比較簡單，同時也有闡明一些基本概念。
* 此網路利用輸入向量對網路中的神經元進行初始化，然後網路不斷疊代直到收斂。
* 若網路運行正確，最終的輸出結果將是一個標準向量。
* <font color="#f00">**因此，Hamming Network是用取值不為0的神經元來選擇哪個標準模式，而Hopfield Network則是生成一個標準模式作為其輸出。**</font>
* 描述該網路操作的等式為 : 
$$
a(0) = p
$$
或
$$
a(t+1)= satlins(Wa(t)+b)
$$
    * 其中 $satlins$ 為 [-1,1] 區間上的線上的liner transfer function;當輸入大於1時，函數輸出恆為1;當輸入小於-1時，函數輸出恆為-1。
* 說明該Network的運作過程，指定一個可以解決蘋果跟橘子識別問題的權重矩陣和Bias矩陣。它們由下式給出:
$$
W = \left[
\begin{array}{cccc}
0.2&0&0 \\
0&1.2&0 \\
0&0&0.2 \\
\end{array}
\right] , b = \left[
\begin{array}{cccc}
0.9 \\
0 \\
-0.9 \\
\end{array}
\right]
$$
    * 計算Hopfield Network的權重和Bias的過程並不是本章要討論的內容，但可以看出為甚麼可以解決蘋果/橘子問題的一些特徵。
    * 用上式所給的$W$ 跟 $b$，可以將Hopfield Network的操作等式寫成 : 
$$
a_1(t+1) = satlins(0.2a_1(t) + 0.9)
$$
$$
a_2(t+1) = satlins(1.2a_2(t))
$$
$$
a_3(t+1) = satlins(0.2a_3(t) - 0.9)
$$
    * 無論$a_i(0)$的初始值為何，第一個元素的值將不斷噌家值到最後的值為1，第三個元素將不斷減少值到最後的值為-1。
    * $(W,b)$的取值並不是唯一的。
* 將橢圓形的橘子對Hopfield Network進行測試。前三個疊代過程結束時，Hopfield Network的輸出分別為 : 
![](https://i.imgur.com/qvl4GtC.png =x100)

* 儘管與Hamming Network和感知機網路的工作方式不相同，但Hopfield Network同樣最終收斂于橘子模式。
## 3. 結論
* 以Hamming Network為代表的競爭網路有兩個主要特點 : 
    1. 計算出以儲存的標準模式和輸入模式間的距離測度。
    2. 通過競爭決定哪一個神經元表示的標準模式最接近于輸入模式。
* 以Hopfield來說的話:
    1. 主要用於聯想儲存中，其儲存的數據能由相關輸入數據回憶出來，而不需要用一個地址對其存取。
###### tags: `Neural Network Design`



<font color="#C60DAD ">**** </ font> 
<font color =“＃1032EE”> ****</font>  
<font color="#f00">**</font> 
<font color="#0A9C0C "></font> 
<font color="#FCA117"></font>