學習筆記 感知器 單層感知器舉例

2021-10-03 05:14:44 字數 3095 閱讀 1109

在人體神經網路中,神經細胞是有著基本處理訊號功能的基本單元,單層感知器就是人工神經網路中模擬人體神經細胞的基本單元。

單層感知器

單層感知器是最簡單的神經網路,它包含輸入層和輸出層,訊號先經過線性組合器處理然後再經過啟用函式,最後輸出結果。

1、輸入節點(input)

輸入節點是訊號的輸入端,感知器可以有很多個訊號輸入,也就是可以有很多個輸入節點。通常會多設定乙個輸入節點,它的輸入值為偏置因子,權重為1,便於矩陣的運算。

2、輸出節點(output)

輸出節點是訊號經過感受器處理後輸出的結果。

3、權重(weight)

在人體神經細胞結構中,每個樹突的訊號強度可能會有所不同,在單層感受器中,給每個輸入節點的輸入的訊號新增權重,很好的模擬了人體神經細胞的結構和功能。

4、線性組合器

在單層感知器中,將各輸入節點與各自權重的乘積求和這個演算法就是線性組合器。

5、啟用函式(activation function)

在單層感知器中,啟用函式是乙個二值閾值元件,在訊號經過線性組合器組合之後,通過這個啟用函式判斷當前的訊號強度是否滿足啟用的條件,一般來說如果滿足則輸出1,不滿足則輸出-1.

6、學習率(learning rate)例、構建神經網路將平面座標系上的點按標籤分類。6個點:(3,3),(3,4),(4,3),(2,2),(1,2),(2,1),標籤分別為:1,1,1,-1,-1,-1

輸入節點:3個(橫座標乙個,縱座標乙個,偏置因子乙個)

輸入資料:(1,3,3),(1,3,4),(1,4,3),(1,2,2),(1,1,2),(1,2,1)每組資料中的第乙個資料為我們設定為1的偏執因子。對應的標籤為(1,1,1,-1,-1,-1)

初始化權值:w0,w1,w2取-1到1的隨機數。

學習率:設定為0.11

啟用函式:sign(x)=1(x>0),-1(x<0)

import numpy as np#匯入numpy科學計算庫

import matplotlib.pyplot as plt#匯入matplotlib二維繪相簿

x=np.array([[

1,3,

3],[

1,3,

4],[

1,4,

3],[

1,2,

2],[

1,1,

2],[

1,2,

1],]

)#6x3資料矩陣

y=np.array([[

1],[

1],[

1],[

-1],

[-1]

,[-1

]])#6x1標籤矩陣

w=(np.random.random([3

,1])

-0.5)*

2#權值初始化,取0到1的隨機數,將得到的隨機數-0.5範圍變成-0.5到0.5,再乘以2,最後範圍變成我們需要的範圍-1到1

print

(w)#將生成的隨機數列印出來

lr=0.11

#設定學習率(learning rate)為0.11o=0

#神經網路的輸出(output)初始化為0

defupdate()

:#迭代函式

global x,y,w,lr

o=np.sign(np.dot(x,w)

)#將輸入和其對應的權重進行相乘得到6x1的輸出矩陣,矩陣中每行對應輸入資料中每一組資料的輸入節點與其權重的乘積之和。

w_c=lr*

(x.t.dot(y-o))/

int(x.shape[0]

)#權值的改變量=學習率*(預期標籤-實際算出的標籤)/資料的組數

#x.shape[0]是x矩中的行數,x.shape[1]是x矩陣中的列數,在輸入資料矩陣中的一行為一組輸入資料,輸入資料矩陣的行數就是資料的組數,因此在這用的是x.shape[0]

w=w+w_c#對權值矩陣進行調整

for i in

range

(100):

update(

)print

(w)print

("第",i,

"次迭代"

) o=np.sign(np.dot(x,w)

)#計算當前的輸出

if(o==y)

.all()

:print

("finished"

)#網路的實際輸出的標籤等於預期的標籤,模型收斂,迴圈結束

print

("epoch:"

,i)#輸出迭代次數

break

#畫圖x1=[3

,3,4

]#標籤為1的資料組

y1=[3,

4,3]

x2=[2,

1,2]

#標籤為-1的資料組

y2=[2,

2,1]

k=-w[1]

/w[2

]#斜率

d=-w[0]

/w[2

]#截距

print

('k='

,k)print

('d='

,d)xdata=(0

,5)#設定顯示出來的座標軸的x軸顯示範圍為0到5

plt.figure(

)#初始化圖形

plt.plot(xdata,xdata*k+d,

'r')

#畫出直線,顏色為紅色

plt.scatter(x1,y1,c=

'b')

#畫出標籤為1的點,顏色為藍色

plt.scatter(x2,y2,c=

'y')

#畫出標籤為-1的點,顏色為黃色

plt.show(

)

結果:

結果不唯一

單層感知器python 深度學習之單層感知器(一)

當我們最初學習機器學習時候,了解到最簡單的神經網路可能便是單層感知器,他也是監督學習的最簡單一種。本文章就通過 人工神經網路理論 設計及應用 書中介紹的單層感知器一節,進行python的 實現。單層感知器的網路結構如下 上圖便是乙個單層感知器,很簡單的乙個結構,圖中說明我們有個3維的輸入值分別是x1...

單層感知器(附demo)

一 引言 感知器神經網路是一種典型的前饋神經網路,具有分層結果,資訊叢輸入層進入網路,逐層向前傳遞至輸出層。根據感知器神經元轉移函式 隱層數以及權值調整規則的不同,可以形成具有各種功能特點的神經網路 二 定義與理解 單層感知器 1958年,美國心理學家frank rosenblatt 提出一種具有單...

深度學習PART I 單層感知器

單層感知器的原始形式如下 如果把偏置項當作特殊權值,則單層感知器可以改為如下形式 感知器的學習規則 學習率 1 學習率太大,容易造成權值調整不穩定。2 學習率太小,權值調整太慢,迭代次數太多。收斂條件 1 誤差小於某個預先設定的較小的值。2 兩次迭代之間的權值變化已經很小。3 設定最大迭代次數,當迭...