1、什麼是感知機?網絡
感知機最先由計算科學家Rosenblatt在1958年提出,他是一種單層(注意,輸入層並不計算在內)神經網絡。如圖爲一個二元輸入的感知機模型。函數
其中x1,x2爲輸入,b爲偏置,激活函數被稱爲符號函數(sign function),咱們將激活函數的輸出記爲,其函數表達式及圖像以下所示。學習
2、感知機能夠用來幹什麼?優化
感知機能夠用來處理線性可分類問題,線性可不可分簡單來講,就是可不能夠用一條直線把圖上兩類點劃分開。如第二張圖所示,不管怎麼畫直線都沒法將兩類點分區開。spa
線性可分blog
線性不可分ci
對於線性不可分問題通常用多層神經網絡,SVM來處理。it
3、感知機如何實現線性分類?io
咱們舉一個最最最簡單的分類問題,邏輯運算(這裏咱們用「與」運算)而且結合matlab代碼來講明感知機如何實現線性分類。table
X1 |
X2 |
y |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
也就是說,咱們要在平面上找到這樣一條直線,把點(1,1)與其它點劃分開,而這條直線的方程爲(decision boundary),若是把符號激活函數向右平移1各單位,那麼這條直線方程則爲。
轉化爲最優化問題,那如何找這麼一個函數來描述優化程度?由於激活函數不平滑,沒法用偏差的形式來描述。
這裏咱們提出一種點到直線距離的描述方法J=,對誤分類點而言,J>0;
咱們對數據集中的訓練點逐一進行判別,訓練權重,直至無誤分類點。
權重訓練方法採用的是梯度降低法。
matlab代碼:
close all;clear;w=[1 0.5];b=0;%隨機設置初始權值與閾值%p,t爲給定的訓練樣本,p爲輸入,t爲對應的輸出%And計算網絡迭代訓練五次p=[0 0;0 1;1 0;1 1];t=[-1;-1;-1;1];p1=[p;p;p;p;p];t1=[t;t;t;t;t];%訓練過程傳遞函數爲階躍函數for i=1:size(p1,1) n=0.5;%學習率 a=unitstep(p1(i,1:2)*w'+b); if t1(i)*(p1(i,1:2)*w'+b)<0 w=w+n*p1(i,1:2)*t1(i); b=b+n*t1(i); figure(1) plot(i,w(1),'*'); hold on; figure(2) plot(i,w(2),'^'); hold on; figure(3) x1=0:0.1:1; x2=(-w(1)/w(2))*x1-b/w(2); plot(x1,x2) plot([0 0 1 1],[0 1 0 1],'^'); axis([0 1 0 1]) hold on; end end%網絡輸出a=unitstep(p(1:4,1:2)*w'+b)