很感激在之前的文章下,有小夥伴評論,建議我我對代碼和一些名詞做出更多的解釋,我認為呢,對概念和程序增強理解最好的方法就是實戰, 所以今天我們就從一個非常簡單的機器識別的小案例入手,我們的感知器。
一. 創建單層感知器
由於我們只是做演示,本來應該是對從0-9中所有的數字都要進行識別,但是現在只拿0和1做示例,同學們了解了ANN感知器模型是如何分類0與1的,自然也就明白了分類器是如何識別0-9這十個數字的。
眾所周知,感知器的功能絕不止是二分類,但是由於其傳遞函數的特殊性,感知器大多是用來當作線性分類器使用的。當它作為一種線性分類器使用的時候,感知器結構簡單,但是能夠學習並解決相當複雜的問題。本文中,我們就拿結構最簡單的單層感知器模型進行講解。
1.1 單層感知器MATLAB模擬設計流程
- 創建感知器
首先根據需要解決的問題,確定輸入向量的取值範圍和維數。其次,確定網路層神經元個個數、傳遞函數和學習函數等。最後,創建初始化後的感知器神經網路。
2. 訓練創建的樣本
建立訓練樣本集,確定每個樣本的輸入向量和目標向量,訓練已創建好的感知器神經網路,並根據訓練的情況決定是否調整訓練參數,一得到滿足誤差性能指標的感知器神經網路,並儲存訓練好的感知器神經網路參數。
3. 對訓練好的感知器進行模擬
建立測試樣本集,載入訓練後的網路,對測試樣本進行模擬,檢測訓練好的網路性能。
1.2 感知器工具箱的函數介紹
1. 感知器常用函數
函數類別 名稱 用途
創建函數 newp 創建一個感知器網路
顯示函數 plotpc 在感知器向量中繪製分界線
plotpv 繪製感知器的輸入向量和目標向量
性能函數 mae 平均絕對誤差函數
2. 感知器函數使用說明
感知器生成函數newp用於創建一個感知器網路,調用格式如下所示:
net=newp
net=newp(pr,s,tf,lf)
%其中,net表示生成的包含返回參數的感知器網路
%pr表示一個R*2的矩陣(R為輸入向量的個數),由輸入向量的最大值和最小值組成
%s表示神經元的個數
%tf表示感知器的傳遞函數,默認的函數為hardlim
%lf表示感知器的學習函數,默認的函數為learnp
分界線繪製函數plotpc用於繪製感知器向量圖中的分界線,調用格式如下所示:
plotpc(W,B) %返回的是繪製分界線的控制權
plotpc(W,B,H) %包含從前一次調用中返回的句柄。他在畫新分界線之前,刪除舊線。
%W表示一個S*R的加權矩陣(R不大於3)
%B表示一個S*1的閾值向量
%H表示最後一次繪製分界線的句柄
輸入/目標向量繪製函數plotpv用於繪製感知器的輸入向量和目標向量,調用格式如下:
plotpv(P,T) %以T為標尺,繪製P的列向量
plotpv(P,T,V) %在V的範圍內,以T為標尺,繪製P的列向量
%P表示2*n或者3*n的矩陣
%T表示一個樣本點的類別,是一個n維的向量
%V表示設置坐標值範圍的一個向量,這個向量由輸入向量的最大值和最小值組成
1.3 利用感知器完成邏輯分類
嘗試建立一個感知器模型,實現電路中「或」門的功能,從而實現對輸入的分類。
給出輸入和輸出的關係: