神經網絡專題 (一) 感知器

人工神經網絡,簡稱神經網絡,它是一種算法,來源是模擬人的生物神經元工作機制。其實不需要去詳細瞭解生物神經網絡的細節原理,大概知道些關鍵名詞即可,對以後神經網絡的理解沒什麼影響。神經網絡算法的主要功能是預測、分類、識別。神經網絡有:感知器、線性神經網絡、BP神經網絡、RBF神經網絡、Hopfield神經網絡、RNN卷積神經網絡等。感知器是最簡單的神經網絡,線性神經網絡在線性處理上很有用,BP神經網絡是應用最廣泛的網絡,Hopfield神經網絡是反饋型神經網絡,RNN卷積神經網絡在人工智能研究領域新興起來的網絡。

感知器一般指單層感知器,它是指只含有輸入層和輸出層的神經網絡,模型如下:

輸入層爲p1、p2、... 、pn個神經元輸入和對應的權值w1、w2、... 、wn。輸入層用向量表示爲:\small P=\begin{bmatrix} p1, p2, ... ,pn \end{bmatrix}T,\small W=\begin{bmatrix} w1,w2,...,wn \end{bmatrix}T。輸出層包含一個求和操作和函數f映射,其中y爲感知器的輸出(多輸入,單輸出),a爲輸入加權求和的結果,b爲偏置,f爲一種對a的傳遞函數,對於感知器來說,f一般爲符號函數,即輸出結果只有-1和1(每次輸入,對應一個單值的輸出;多次輸入,得到輸出向量),輸出層可以表示爲:

             \small a=\sum_{i=1}^{i=n}pi\cdot wi +b     

             \small y=f(a)

瞭解了神經網絡的基本結構和計算流程之後,再對其工作原理進行分析。

首先是感知器的學習規則(梯度下降法):對於輸入爲P,輸出爲y,目標輸出爲T的感知器,誤差爲e=T-y。則感知器的權值和偏置的修正公式爲:

            \small \Delta w(i,j)=[T(i)-y(i)]\cdot P(j)=e(i)\cdot P(j)

            \small \Delta b=[T(i)-y(i)]\cdot 1=e(i)

公式說明:P爲多次輸入的向量,y爲多次輸入對應的輸出向量,T爲期望結果(目標向量),e爲網絡誤差。i表示輸出向量的維數(i=1,2,...,D),j爲神經元的個數(j=1,2,...,n)。

 更新之後的權值:

             \small w(i,j)=w(i,j)+\Delta w(i,j)

              \small b(i)=b(i)+\Delta b(i)

接下來就是利用感知器的學習規則進行訓練:

      step1:  初始化網絡,計算實際輸出和目標輸出之間的誤差,利用學習規則修正權值和偏置。

      step2:計算在新的權值和偏置下的誤差,繼續修正權值和偏置。

      step3:當達到一定的誤差要求或者滿足最大迭代次數時,訓練結束,得到感知器模型。

下面介紹matlab神經網絡工具箱中的關於感知器的相關函數:

     newp:  創建一個感知器

     sim: 仿真函數

     train:訓練函數

     plotpc: 在感知器向量中繪製分界線

     plotpv:  繪製感知器的輸入向量和目標向量

     mae:計算平均絕對誤差

下面簡單舉例說明各種函數的用法:

   例1:利用單層感知器實現與門電路的邏輯功能

P=[0 0 1 1;0 1 0 1];
T=[0 0 0 1];
figure(1)
plotpv(P,T)
net=newp(minmax(P),1);
y=sim(net,P);
net.trainParam.epochs=50;
net=train(net,P,T);
Y=sim(net,P);
perf=mae(Y-T);
plotpc(net.IW{1,1},net.b{1})

輸出Y=[0 0 0 1]

輸入向量P爲4個輸入向量:[0 0],[0 1],[1 0],[1 1],目標輸出:[0]、[0]、[0]、[1]

newp函數:net=newp(pr,ps,tf,lf),pr爲輸入向量每行的最大最小值組成的多行兩列的矩陣,ps爲感知器的層數,tf爲傳遞函數,默認是hardlim還有hardlims,lf爲學習函數,默認是learnp還有learnpn。

minmax函數:求矩陣每行的最大最小值,返回一個多行兩列的矩陣。

sim函數:對模型進行仿真。

train函數:根據網絡、輸入、目標輸出,訓練網絡得到輸出。


感知器主要是實現簡單的線性可分的分類問題,在實際應用中應當根據面對的問題,轉化爲感知器能夠處理的情況。

另外,多層感知器在機器學習、人工智能方面有着非常重要的作用,感知器的研究在人工智能領域具有很多的研究意義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章