感知機是乙個二類分類的線性分類模型,用來做分類的,類別用+1和-1表示。
樣本中的各個特徵組成了空間中的不同的點,點被分成兩類,+1和-1。我們的目的就是找到乙個超平面將這兩類點分開。超平面可以用wx+b表示,或者將b改寫成w
0w_0
w0,將x的第一列加上偏置項(全1)。那麼我們就可以用wx來表示這個超平面。將樣本資料x代入,若所得wx>0,則說明該點在此超平面上方,<0則說明在此超平面下方。大於0時我們將輸出值設定為1,小於0時我們將輸出值設定為0。這個操作用數學來表達就是
f (x
)=si
gn(w
x+b)
f(x)=sign(wx+b)
f(x)=s
ign(
wx+b)si
gn(x
)=+1,x\geq0\\ -1,x<0 \end
sign(x
)=d=
∣∣w∣
∣∣wx
0+b
∣我們假設x
0x_0
x0是乙個誤分類的點,那麼公式就可以轉化為:
d =−
y0(w
x0+b
)∣∣w
∣∣d=\frac
d=∣∣w∣
∣−y0
(wx
0+b
)就是去個絕對值,因為y
0y_0
y0是取正負一。
假設所有誤分類的點都在集合m中,那麼所有誤分類的點到超平面的距離之和就可以寫成
− 1∣
∣w∣∣
∑xi∈
myi(
wxi+
b)-\frac1\sum_ y_i(wx_i+b)
−∣∣w∣∣
1xi
∈m∑
yi
(wxi
+b)
我們就是要讓這個值化為0,也就是說所有點都分對了。
於是損失函式就是這個
l (w
,b)=
−∑xi
∈myi
(wxi
+b)l(w,b)=-\sum_ y_i(wx_i+b)
l(w,b)
=−xi
∈m∑
yi
(wxi
+b)
或者l(w)
=−∑x
i∈my
i(wx
i)l(w)=-\sum_y_i(wx_i)
l(w)=−
xi∈
m∑y
i(w
xi)
我們對損失函式中的w求導可得
∇ l(
w)=−
∑xi∈
myix
i\nabla l(w)=-\sum_y_ix_i
∇l(w)=
−xi
∈m∑
yix
iw的迭代函式就為
w :=
w+ηy
xw:=w+\eta yx
w:=w+η
yx若我們將m擴充套件為所有點,則迭代公式還可以改寫成
w :=
w+η(
y−t)
xw:=w+\eta (y-t)x
w:=w+η
(y−t
)x其中η
\eta
η代表學習率,t代表上一次的輸出(分類)結果。
# encoding:utf-8
import numpy as np
import matplotlib.pyplot as plt
# 輸入資料
x = np.array([[
1,3,
3],[
1,4,
3],[
1,1,
1],[
1,0,
2]])
y = np.array([[
1],[
1],[
-1],
[-1]
])# 權值初始化到-1~1
w =(np.random.random([3
,1])
-0.5)*
2# 學習率
lr =
0.1# 臨時輸出
o =0
# 更新權值
defupdate()
:global x,y,w,lr
o = np.sign(np.dot(x,w)
) w_c = lr*
(x.t.dot(y-o)
)/x.shape[0]
w = w + w_c
# 迭代
for i in
range
(100):
update(
) o = np.sign(np.dot(x,w))if
(o == y)
.all()
:break
# 正樣本
x1 =[3
,4]y1 =[3
,3]# 負樣本
x2 =[1
,0]y2 =[1
,2]# 計算斜率和截距
神經網路學習筆記(一) 單層感知機
神經網路分為從傳播來講分為兩種 1.前饋神經網路 前向網路 2.反饋神經網路 前向網路沒有反饋機制,也就是自能向前傳播而不能反向傳播來調整權值引數。感知機就屬於前向網路。如上圖 乙個輸入層,乙個輸出層,中間的所有隱層都是向前傳播。感知機是美國學者f.rosenblatt提出的,他對最早提出的mp不一...
人工神經網路之單層感知機
人工神經網路 artificial neural network,ann 簡稱神經網路 nn 是基於生物學中神經網路的基本原理,在理解和抽象了人腦結構和外界刺激響應機制後,以網路拓撲知識為理論基礎,模擬人腦的神經系統對複雜資訊的處理機制的一種數學模型。該模型以並行分布的處理能力 高容錯性 智慧型化和...
神經網路(單層感知器)
感知器是神經網路中的乙個概念,在1950s由frank rosenblatt第一次引入。單層感知器是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。與最早提出的mp模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速 可靠地解決線性可分的問題。單層感知器由乙個線...