BP神經網路1(理論 鴛尾花分類Demo)

2021-08-14 23:33:42 字數 2656 閱讀 8470

一 簡介

bp演算法的基本思想是,學習過程由訊號的正向傳播與誤差的反向傳播兩個過程組成。

正向傳播時:輸入樣本從輸入層傳入,經各隱層逐層處理後,傳向輸出層。若輸出層的實際輸出與期望的輸出不符,則轉入誤差的反向傳播階段。

反向傳播時:誤差反傳是將輸出誤差以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差訊號,此誤差訊號即作為修正各單元權值的依據。

這種訊號正向傳播與誤差反向傳播的各層權值調整過程是周而復始地進行的,權值不斷調整的過程,也就是網路的學習訓練過程。此過程一直進行到網路輸出的誤差減少到可以接受的程度,或者進行到預先設定的學習次數為止。

二 bp神經網路模型

採用bp演算法的多層感知器是至今為止應用最廣泛的神經網路,在多層感知器的應用中,以圖一

所示的單隱層網路的應用最為普遍。一般習慣將單隱層感知器稱為三層感知器,包含輸入層、隱層、輸出層。

轉移函式為:圖二

f(x)具有連續、可導的特點,如圖三:

根據應用需要,也可以採用雙極性sigmoid函式(或稱雙曲線正切函式):如圖

三 bp演算法的過程與流程

下面以三層感知器為例介紹bp學習演算法,然後將所得結論推廣到一般多層感知器的情況。

1 網路誤差定義與權值調整思路

當網路輸出與期望輸出不等時,存在輸出誤差e,定義如下:圖五

將以上誤差定義式展開至隱層,有:圖六

進一步展開至輸入層,有:圖七

2 調整權值的原則是使誤差不斷的減小,因此應使權值的調整量與誤差的梯度下降成正比,即:圖八

式中的負號表示梯度下降。

3 bp演算法的程式實現流程圖,如下圖:圖九

四    bp神經網路的例子

1 鴛尾花資料集是乙個很出名的資料集,可以通過sklearn庫載入資料集,資料集中有4中花,每種花有4個屬性,一共150條資料,我們這裡取兩種花,給兩種花做分類

from sklearn.datasets import load_iris

datasets = load_iris()

x = np.array(datasets.data) #花的葉片資料

y = np.array(datasets.target) #花的種類資料

y = y.reshape(1, 150)

x = x[0 : 75, :] #一共150條資料四種花,取其中兩種花的屬性資料

y = y[:, 0 : 75] #只取兩種花的分類

資料預處理:(為了輸入層的偏置)

x1 = np.ones(x.shape[0])

x = np.insert(x, 0, values=x1, axis= 1) #把1插入到屬性資料的第0列,為了後面的偏置值

2 **與步驟

輸入層的神經元個數的確定:每種花四個屬性,那麼有4個神經元,每個神經元有個誤差項,也叫偏置,多加乙個偏置值的神經元,因為輸入層神經元個數為5

神經網路設定為3層的網路,因此隱層的取值矩陣為(5,3)的矩陣:

v = np.random.random((5, 3))*2 - 1

輸出層神經元的確定:我們選擇了兩種花,輸出層有兩種類別,加上偏置,因此輸出層有3個神經元,輸出層的權值為(3, 1)

w = np.random.random((3, 1))*2 - 1

根據上面講的,圖二中的轉移函式的公式,也稱為啟用函式有:

def sigmoid(x):

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

根據圖三中,轉移函式的可導性有:

def dsigmoid(x):

return x*(1-x)

則:隱層與輸出層權值的調整有:

l2_delta = (y.t - l2) * dsigmoid(l2)

l1_delta = l2_delta.dot(w.t)* dsigmoid(l1)

w_c = lr * l1.t.dot(l2_delta)

v_c = lr * x.t.dot(l1_delta)

w = w + w_c

v = v + v_c

神經網路鳶尾花分類

import tensorflow as tf import numpy as np from sklearn import datasets import pandas as pd import matplotlib.pyplot as plt 從sklearn包datasets中讀入資料集 返回...

BP神經網路之理論推導

在19世紀,人們發現了人腦神經細胞傳導興奮的規律,計算機科學家們由此受到啟發,提出來人工神經網路,希望用這個模型來模擬人腦。神經元細胞有幾個重要組成 軸突,樹突,細胞體。軸突能將神經元的興奮傳遞給其連線的神經元,而樹突能夠接收其他神經元傳遞過來的興奮。神經元細胞根據接收到的興奮決定是否將興奮傳遞給下...

基於BP神經網路的分類

使用的是乙個簡單的資料集fisheriris,該資料集資料類別分為3類,setosa,versicolor,virginica。每類植物有50個樣本,共150個樣本代表150朵花瓣。每個樣本有4個屬性,分別為花萼長,花萼寬,花瓣長,花瓣寬。其中meas是150 4的矩陣代表著有150個樣本每個樣本有...