深度學習1感知機及實現簡單反向傳播網路

2021-09-29 06:45:44 字數 1735 閱讀 8386

感知機是什麼?

感知機接受多個輸入訊號,輸出乙個訊號

感知機的訊號只有「流/不流」兩種取值,0對應「不傳遞訊號」,1對應「傳遞訊號」。

輸入訊號在被送往神經元時,會被分別乘以固定的權重。神經元會計算傳送過來的訊號的總和,只有當這個總和超過某個界限值時,才會輸出1。這也稱為「神經元被啟用」。

上述內容用數學式來表示,就是:

y=0(w1x1+w2x2<=θ)

1 (w1x1+w2x2>θ)

簡單邏輯電路

與門and gate:與門是具有兩個輸出和乙個輸入的閘電路。 與門僅在兩個輸入均為1時輸出1,其他時候輸出0

與非門nand gate

或門

感知機的實現

與門的實現

def and(x1,x2):

w1,w2,theta = 0.5,0.5,0.7

tmp = w1*x1+w2*x2

if tmp <= theta:

return 0

elif tmp > theta:

return 1

匯入權重和偏置y=0(b+w1x1+w2x2<=0)

1(b+w1x1+w2x2>0)

偏置的值決定了神經元被啟用的容易程度

感知機的侷限性

異或門,僅當x1和x2中的一方為1時,才會輸出1.

一條直線無法分開 真值表中的4個點

曲線分割的空間稱為非線性空間,直線分割的空間稱為線性空間。

多層感知機

異或門的實現

and函式。nand函式。or函式。疊加

def xor(x1, x2):

s1= nand(x1,x2)

s2= or(x1,x2)

y=and(s1,s2)

return y

反向傳播網路

#定義啟用函式

import numpy as np

def sigmoid(x, deriv=flase)

if deriv==true:

return x*(1-x)

return 1/(1+np.exp(-x))

#網路結構

w0 = np.random.random(( , ))

w1 = np.random.random(( , ))

#前向傳播

l0 = x

l1 = sigmoid(np.dot(l0, w0))

l2 = sigmoid(np.dot(l1,w1))

l2_error = l2 - y

#反向傳播

l2_delta = l2_error * sigmode(l2, deriv=true)

l1_error = np.dot(l2_delta, w1.t)

l1_delta = l1_error*sigmode(l1, deriv=true)

#更新引數

w1-=l1.t .dot( l2_delta)

w0-=l0.t .dot( l1_delta)

pyTorch深度學習多層感知機的實現

目錄 前兩節實現的linear model 和 softmax model 是單層神經網路,只包含乙個輸入層和乙個輸出層,因為輸入層不對資料進行transformation,所以只算一層輸出層。多層感知機 mutilayer preceptron 加入了隱藏層,將神經網路的層級加深,因為線性層的串聯...

機器學習演算法實現(1) 感知機

演算法實現 import pandas as pd import numpy as np from sklearn.datasets import load iris import matplotlib.pyplot as plt iris load iris df pd.dataframe iri...

感知機學習演算法的簡單實現(Python)

演算法 原始形式,出自李航博士的統計學習方法 輸入 t 其中xi x rn,yi y i 1,2 n,學習速率為 輸出 w,b 感知機模型f x sign w x b 1.初始化w0,b0 2.在訓練資料集中選取 xi,yi 3.如果yi w xi b 0 w w yixi b b yi 4.轉至2...