【城北徐公之機器學習】感知機模型

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)

相關文章
相關標籤/搜索