神經網路(一) 單層感知機

2021-10-02 09:25:07 字數 2988 閱讀 8034

感知機是乙個二類分類的線性分類模型,用來做分類的,類別用+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∣∣

1​xi

​∈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∑​

yi​x

i​w的迭代函式就為

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模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速 可靠地解決線性可分的問題。單層感知器由乙個線...