1. 程式人生 > >感知器 簡單概念

感知器 簡單概念

轉載至:http://blog.163.com/[email protected]/blog/static/16255468420107875552606/

感知器是由美國電腦科學家羅森布拉特(F.Roseblatt)於1957年提出的。感知器可謂是最早的人工神經網路。單層感知器是一個具有一層神經元、採用閾值啟用函式的前向網路。通過對網路權值的訓練,可以使感知器對一組輸人向量的響應達到元素為0或1的目標輸出,從而實現對輸人向量分類的目的。圖4.1給出了單層感知器神經元模型圖。

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

                                                           圖4.1  感知器神經元模型

其中,每一個輸入分量嚴pj(j=1,2…,r)通過一個權值分量wj,進行加權求和,並作為閾值函式的輸人。偏差b的加入使得網路多了一個可調引數,為使網路輸出達到期望的目標向量提供了方便。感知器特別適合解決簡單的模式分類問題。F.Roseblatt已經證明,如果兩類模式是線性可分的(指存在一個超平面將它們分開),則演算法一定收斂。

感知器特別適用於簡單的模式分類問題,也可用於基於模式分類的學習控制中。

感知器實際上是在MP模型的基礎上加上學習功能,使其權值可以調節的產物。羅森布拉特研究了單層的以及具有一個隱含層的感知器。但在當時他只能證明單層感知器可以將線性可分輸入向量進行正確劃分,所以本書中所說的感知器是指單層的感知器。多層網路因為要用到後面將要介紹的反向傳播法進行權值修正,所以把它們均歸類為反向傳播網路之中。

4.1  感知器的網路結構

感知器的網路是由單層的s個感知神經元,通過一組權值{ωij}(i=1,2…s;j=l,2…r)與r個輸入相連組成。對於具有輸入向量Pr×q和目標向量Ts×q的感知器網路的簡化結構,如圖4.2所示。

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

                                                 圖4.2 感知器簡化結構圖

根據網路結構,可以寫出第i個輸出神經元(i=1,2,…,s)的加權輸入和ni及其輸出ai為:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步                              (4-1)

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步                           (4-2)

感知器的輸出值是通過測試加權輸入和值落在閾值函式的左右來進行分類的,即有:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步                (4-3)

 閾值啟用函式如圖4.3所示。

由圖4.3可知:當輸入ni十bi大於等於0,即有ni≥-bi時,感知器的輸出為1,否則輸出ai為0。利用偏差bi的使用,使其函式可以左右移動,從而增加了一個自由調整變數和實現網路特性的可能性。

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

                                                                        圖4.3 閾值啟用函式

4.2 感知器的圖形解釋

由感知器的網路結構,我們可以看出感知器的基本功能是將輸入向量轉化成0或1的輸出。這一功能可以通過在輸人向量空間裡的作圖來加以解釋。為了簡單起見,以下取s=1,即輸出為一個節點的網路的情況來進行作圖解釋。

由感知器的輸從輸出的關係式(4.3)可知,感知器的輸出只有1或0兩個狀態,其他值由W*P+b的值大於、等於或小於零來確定。當網路的權值W和b確定後,在由各輸入向量pj(j=1,2…,r)為座標軸所組成的輸入向量空間裡,可以畫出W*P+b=0的軌跡,對於任意給定的一組輸入向量P,當通過感知器網路的權值W和b的作用,或落在輸入空間W*P+b=0的軌跡上,或落在W*P+b=0軌跡的上部或下部,而整個輸入向量空間是以W*P+b=0為分割界,即不落在W*P+b=0軌跡上的輸入向量,不是屬於W*P+b>0,就是使W*P+b<0。因而感知器權值引數的設計目的,就是根據學習法則設計一條W*P+b=0的軌跡,使其對輸入向量能夠達到期望位置的劃分。

以輸入向量r=2為例,對於選定的權值w1、w2和b,可以在以p1和p2分別作為橫、縱座標的輸入平面內畫出W*P+b=w1 p1十w2 p2十b=0的軌跡,它是一條直線,此直線上的及其線以上部分的所有p1、p2值均使w1 p1十w2 p2十b>0,這些點若通過由w1、w2和b構成的感知器則使其輸出為1;該直線以下部分的點則使感知器的輸出為0。所以當採用感知器對不同的輸入向量進行期望輸出為0或1的分類時,其問題可轉化為:對於已知輸入向量在輸人空間形成的不同點的位置,設計感知器的權值W和b,將由W*P+b=0的直線放置在適當的位置上使輸入向量按期望輸出值進行上下分類。(幾何圖形)

閾值函式通過將輸入向量的r維空間分成若干區域而使感知器具有將輸入向量分類的能力。輸出向量的0或1,取決於對輸入的分類。

圖4.4給出了感知器在輸入平面中的圖形,從中可以清楚看出:由直線W*P十b=0將由輸人向量p1和p2組成的平面分為兩個區域,此線與權重向量W正交可根據偏差b進行左右平移。直線上部的輸人向量使閾值函式的輸入大於0,所以使感知器神經元的輸出為1。直線下部的輸入向量使感知器神經元的輸出為0。分割線可以按照所選的權值和偏差上下左右移動到期望劃分輸入平面的地方。

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

                                               圖4.4輸入向量平面圖(此圖橫座標有問題)

感知器神經元不帶偏差時,得到的是通過原點的分類線。有些可以用帶偏差解決的問題,不帶偏差的網路則解決不了。

熟悉圖形解釋有助於我們理解和掌握感知器的工作原理。當然在實際應用時,權值的求解全都是由計算機來完成的。

4.3  感知器的學習規則

學習規則是用來計算新的權值矩陣W及新的偏差B的演算法。感知器利用其學習規則來調整網路的權值,以便使該網路對輸人向量的響應達到數值為0或1的目標輸出。

對於輸入向量P,輸出向量A,目標向量為T的感知器網路,感知器的學習規則是根據以下輸出向量可能出現的幾種情況來進行引數調整的。

1) 如果第i個神經元的輸出是正確的,即有:ai=ti,那麼與第i個神經元聯接的權值wij和偏差值bi保持不變;

2)如果第i個神經元的輸出是0,但期望輸出為1,即有ai=0,而ti=1,此時權值修正演算法為:新的權值wij為舊的權值wij加上輸人向量pj;類似的,新的偏差bi為舊偏差bi加上它的輸入1;

3)  如果第i個神經元的輸出為1,但期望輸出為0,即有ai=1,而ti=0,此時權值修正演算法為:新的權值wij等於舊的權值wij減去輸入向量pj;類似的,新的偏差bi為舊偏差bi減去1。

由上面分析可以看出感知器學習規則的實質為:權值的變化量等於正負輸入向量。具體演算法總結如下。

對於所有的i和j,i=l,2,…,s;j=1,2,…,r,感知器修正權值公式為:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步  (4-4)

用向量矩陣來表示為

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步            (4-5)

此處,E為誤差向量,有E=T-A。

感知器的學習規則屬於梯度下降法,該法則已被證明:如果解存在,則演算法在有限次的迴圈迭代後可以收斂到正確的目標向量。

上述用來修正感知器權值的學習演算法在MATLAB神經網路工具箱中已編成了子程式,成為一個名為1earnp.m的函式。只要直接呼叫此函式,即可立即獲得權值的修正量。此函式所需要的輸人變數為:輸入、輸出向量和目標向量:P、A和T。呼叫命令為:

[dW,dB]=learnp(P,A,T);

4.4  網路的訓練

要使前向神經網路模型實現某種功能,必須對它進行訓練,讓它逐步學會要做的事情,並把所學到的知識記憶在網路的權值中。人工神經網路權值的確定不是通過計算,而是通過網路的自身訓練來完成的。這也是人工神經網路在解決問題的方式上與其他方法的最大不同點。藉助於計算機的幫助,幾百次甚至上千次的網路權值的訓練與調整過程能夠在很短的時間內完成。

感知器的訓練過程如下:

在輸入向量P的作用下,計算網路的實際輸出A,並與相應的目標向量T進行比較,檢查A是否等於T,然後用比較後的誤差量,根據學習規則進行權值和偏差的調整;重新計算網路在新權值作用下的輸入,重複權值調整過程,直到網路的輸出A等於目標向量T或訓練次數達到事先設定的最大值時訓練結束。

若網路訓練成功,那麼訓練後的網路在網路權值的作用下,對於被訓練的每一組輸入向量都能夠產生一組對應的期望輸出;若在設定的最大訓練次數內,網路未能夠完成在給定的輸入向量P的作用下,使A=T的目標,則可以通過改用新的初始權值與偏差,並採用更長訓練次數進行訓練,或分析一下所要解決的問題是否屬於那種由於感知器本身的限制而無法解決的一類。

感知器設計訓練的步驟可總結如下:

1)對於所要解決的問題,確定輸入向量P,目標向量T,並由此確定各向量的維數以及確定網路結構大小的神經元數目:r,s和q;

2)引數初始化:

a)賦給權向量w在(—l,1)的隨機非零初始值;

b)給出最大訓練迴圈次數max_epoch;

3)網路表示式:根據輸人向量P以及最新權向量W,計算網路輸出向量A;

4)檢查:檢查輸出向量A與目標向量T是否相同,如果是,或已達最大迴圈次數訓練結束,否則轉入5);

5)學習:根據(4.5)式感知器的學習規則調整權向量,並返回3)。

4. 5 感知器神經網路應用的侷限性

由於感知器神經網路在結構和學習規則上的限制,其應用也有一定的侷限性。

首先,感知器的輸出只能取0或1。

其次,單層感知器只能對線性可分的向量集合進行分類。

4. 6 感知器神經網路設計例項

下面給出例題來進一步瞭解感知器解決問題的方式,掌握設計訓練感知器的過程。

[例4.1]考慮一個簡單的分類問題。

設計一個感知器,將二維的四組輸入向量分成兩類。

輸入向量為:P=[-0.5  -0.5   0.3  0;

-0.5   0.5  -0.5  1];

目標向量為:T=[1.0  l.0  0  0],

解:

通過前面對感知器圖解的分析可知,感知器對輸入向量的分類實質是在輸入向量空間用W*P十b=0的分割界對輸人向量進行切割而達到分類的目的。根據這個原理,對此例中二維四組輸人向量的分類問題,可以用下述不等式組來等價表示出:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

實際上可以用代數求解法來求出上面不等式中的引數w1、w2和w3。經過迭代和約簡,可得到解的範圍為:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

一組可能解為:

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

而當採用感知器神經網路來對此題進行求解時,意味著採用具有閾值啟用函式的神經網路,按照問題的要求設計網路的模型結構,通過訓練網路權值W=[w11,w12]和b,並根據學習演算法和訓練過程進行程式程式設計,然後執行程式,讓網路自行訓練其權向量,直至達到不等式組的要求。

鑑於輸入和輸出目標向量已由問題本身確定,所以所需實現其分類功能的感知器網路結構的輸人節點r,以及輸出節點數,已被問題所確定而不能任意設定。

根據題意,網路結構圖如圖4.5所示。

第04講 感知器(Perceptron) - zzz - 追逐春天的腳步

                                                                           圖4.5 網路結構圖

由此可見,對於單層網路,網路的輸入神經元數r和輸出神經元數s分別由輸入向量P和目標向量T唯一確定。網路的權矩陣的維數為:Ws×r,Bs×1權值總數為s×r個,偏差個數為s個。

在確定了網路結構並設定了最大迴圈次數和賦予權值初始值後,設計者可方便地利用MATLAB,根據題意以及感知器的學習、訓練過程來編寫自己的程式。下面是對[例4.1]所編寫的網路權值訓練用的MATLAB程式:

P=[-0.5 -0.5 0.3 0; -0.5 0.5 -0.5 1];     T=[1 1 0 0];

[R Q]=size(P);       [S Q]=size(T);

W=rands(S, R);      B=rands(S, 1);

max_epoch = 20;

A=hardlim(netsum(W*P, B));

for epoch=1:max_epoch

  if all (A==T)

     break; 

  end

格式: [dw db]=learnp(p1, e1) [dw db]=learnp(p1, a1, t1).

  e = T-A;

  [dW, dB] = learnp(P(:,1+mod(epoch-1,Q)), e(1+mod(epoch-1,Q)))

  W = W + dW;

  B = B + dB;

  A = hardlim(netsum(W*P, B));

end

clf;

plotpv(P,T);

% plot the deviding line/plane: W*P'+b=0

if (R==2)                       % 二維樣本繪圖

    x1=[-2:0.1:4];

    x2=-(W(1)*x1+B)/W(2);

    hold on;

    plot(x1,x2,'-b','LineWidth',2);

end

以上就是根據前面所闡述的感知器訓練的三個步驟:表示式、檢查和學習而編寫的MATLAB網路設計的程式。4.7  感知器的侷限性

由於感知器自身結構的限制,使其應用被限制在一定的範圍內。所以在採用感知器解決具體問題時,必須時刻考慮到其特點。一般來說,感知器有以下侷限性:

1)由於感知器的啟用函式採用的是閥值函式,輸出向量只能取0或1,所以只能用它來解決簡單的分類問題;

2)感知器僅能夠線性地將輸入向量進行分類。如果用一條直線或一個平面把一組輸入向量正確地劃分為期望的類別,則稱該輸入/輸出向量是對線性可分的,否則為線性不可分。那麼,利用感知器將永遠也達不到期望輸出的網路權矩陣。所以用軟體設計感知器對權值進行訓練時,需要設定一個最大迴圈次數。如果在達到該最大迴圈次數後,還沒有達到期望的目標,訓練則停止,以便不使不可分的向量佔用無限迴圈的訓練時間。不過應當提醒的是,理論上已經證明,只要輸人向量是線性可分的,感知器在有限的時間內總能達到目標向量;

3)感知器還有另外一個問題,當輸入向量中有一個數比其他數都大或小得很多時,可能導致較慢的收斂速度。

感知器在解決實際問題時,必須在輸入向量是線性可分時才有效,這是很難得到的情形。雖然感知器有上述侷限性,但它在神經網路研究中有著重要的意義和地位。它提出了自組織自學習的思想。對能夠解決的問題有一個收斂的演算法,並從數學上給出了嚴格的證明。對這種演算法性質的研究仍是至今存在的多種演算法中最清楚的演算法之一。因此它不僅引起了眾多學者對人工神經網路研究的興趣,推動了人工神經網路研究的發展,而且後來的許多種網路模型都是在這種指導思想下建立起來並改進推廣的。