感知器是乙個用來做模式識別最簡單的模型,由於僅有乙個神經元,所以只能用來處理線性可分的兩類模式識別。 u=∑
i=1i
=nwi
xi+b
u = \sum_^ w_x_ + b
u=i=1∑
i=n
wix
i+b
y =s
gn(u
)y = sgn (u)
y=sgn(
u)sgn階躍函式,當u>=0時,y=1;當u<0時,y=0。
設輸入為x=,若:y=f
(w,x
,b)=
1y=f(w,x,b) =1
y=f(w,
x,b)
=1則認為x屬於類l1。若:y=f
(w,x
,b)=
0y=f(w,x,b) =0
y=f(w,
x,b)
=0則認為x屬於類l2。
分類原理就是通過一種演算法,不斷調整w、b的引數,使得對應輸入樣本滿足期望的輸出。
設輸入為x,經過神經元後得到輸出y,稱y為實際輸出或目標輸出,對於輸入x其實我們希望輸出為d,稱d為期望輸出。期望輸出與目標輸出存在誤差,用e表示。
e (n
)=y(
n)−d
(n)e(n) = y(n) - d(n)
e(n)=y
(n)−
d(n)
通過不斷的調整神經元內部引數(w,b)使得誤差e最小化,就完成了學習的過程。每次調整的量可表示為:
δ w(
n)=η
e(n)
x(n)
\delta w(n) = \eta e(n)x(n)
δw(n)=
ηe(n
)x(n)δb
(n)=
ηe(n
)\delta b(n) = \eta e(n)
δb(n)=
ηe(n
)調整後引數可表示為:
w (n
+1)=
w(n)
+δw(
n)w(n+1) = w(n)+ \delta w(n)
w(n+1)
=w(n
)+δw
(n)b(n
+1)=
b(n)
+δb(
n)b(n+1) = b(n)+\delta b(n)
b(n+1)
=b(n
)+δb
(n)邏輯與的規則為:
0 and 0 is 0即當輸入x = (1,1),期望輸出為1,其餘輸入,期望輸出為00 and 1 is 0
1 and 0 is 0
1 and 1 is 1
設感知器有兩個輸入端x1和x2 ,則:
u =w
1x1+
w2x2
+bu = w_x_ + w_x_+b
u=w1x
1+w
2x2
+b實際輸出為:
y =s
gn(u
)(u>=0
,y=1
;u<0,
y=0)
y= sgn(u) (u>=0,y=1;u<0,y=0)
y=sgn(
u)(u
>=0
,y=1
;u<0,
y=0)
通過多次迭代,通過不斷的調整w1、w2、b引數,使得誤差e逐漸減小。即實際輸出不斷逼近期望值。
import numpy as np
import matplotlib.pyplot as plt
# 定義輸入資料,有4種輸入情況
x = np.array([[
0,0]
,[0,
1],[
1,0]
,[1,
1]])
# 輸出期望值
d = np.array([0
,0,0
,1])
# 初始化w、b引數,w1=0.2,w2=0.6,b=1;
w = np.array([[
0.2,
0.6]])
b =1
;# 定義學習速率
t =0.03
# 定義sgn函式
defstep
(a):
if a>0:
return
1else
:return
0# w、b更新
# dat 輸入資料
# lable 輸入對應的期望
defupdatepar
(dat,lable)
:global w,b
# 實際輸出 y = wx+b ,wx為矩陣相乘
y = step(np.dot(w,np.array(dat)
.t)+ b)
# 計算實際輸出與期望之差
e = lable - y
# 調整w、b引數
w = w + t*e*dat
b = b + t*e
# 訓練全部輸入
deftrain()
:for index in
range(4
):updatepar(x[index]
,d[index]
)# 準確度
accuracy =
# 測試
# 返回0~1之間的數,等於1時表示準確率100%
deftest()
: k =0;
for index in
range(4
):y = step(np.dot(w,np.array(x[index]
).t)
+ b)
if(y == d[index]):
k = k +
10.25
)# 訓練、測試
for index in
range(30
):train(
) test(
)# 列印最終w,b的值
print
(str
(w)+
"---"
+str
(b))
plt.rcparams[
'font.sans-serif']=
['simhei'
]plt.rcparams[
'axes.unicode_minus']=
false
plt.xlabel(
"迭代次數"
)plt.ylabel(
"準確率"
)plt.plot(accuracy)
plt.show(
)
結果:
學習筆記 感知器 單層感知器舉例
在人體神經網路中,神經細胞是有著基本處理訊號功能的基本單元,單層感知器就是人工神經網路中模擬人體神經細胞的基本單元。單層感知器 單層感知器是最簡單的神經網路,它包含輸入層和輸出層,訊號先經過線性組合器處理然後再經過啟用函式,最後輸出結果。1 輸入節點 input 輸入節點是訊號的輸入端,感知器可以有...
單層感知器python 深度學習之單層感知器(一)
當我們最初學習機器學習時候,了解到最簡單的神經網路可能便是單層感知器,他也是監督學習的最簡單一種。本文章就通過 人工神經網路理論 設計及應用 書中介紹的單層感知器一節,進行python的 實現。單層感知器的網路結構如下 上圖便是乙個單層感知器,很簡單的乙個結構,圖中說明我們有個3維的輸入值分別是x1...
單層感知器(附demo)
一 引言 感知器神經網路是一種典型的前饋神經網路,具有分層結果,資訊叢輸入層進入網路,逐層向前傳遞至輸出層。根據感知器神經元轉移函式 隱層數以及權值調整規則的不同,可以形成具有各種功能特點的神經網路 二 定義與理解 單層感知器 1958年,美國心理學家frank rosenblatt 提出一種具有單...