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