BP神經網路

2021-08-03 08:15:21 字數 3208 閱讀 1885

bp神經網路屬於多層前向網路,是前向神經網路的核心部分,也是人工神經網路體系中的精華,主要應用於分類識別、逼近、回歸、壓縮等領域。
(1).bp神經網路拓撲圖

(2).bp神經網路的特點

1.網路由多層構成,層之間全連線,同層無連線。

2.bp網路的啟用函式必須可微,一般使用以下函式:

3.採用誤差反向傳播演算法進行學習

實現演算法:

由於bp神經網路採用有監督的學習,因此bp網路解決實際問題,首先需要乙個訓練集。bp網路的設計主要包括:網路層數、輸入層節點數、隱含層節點數、輸入層節點數及傳輸函式、訓練方法、訓練引數的設定等幾個方面。

1.網路層數

bp網路可以包含一到多個隱含層。理論上已經證明,單個隱含層可以通過適當增加神經元節點的個數實現任意非線性對映。對於大部分應用場合基本上可以滿足。但如果樣本較多,增加乙個隱含層可以明顯減少網路規模。

2.輸入層節點數

輸入層節點數取決於輸入向量的維數。如8*8的影象,輸入向量應為64維。

3.隱含層節點數

通常採用經驗公式給出的估計值:

4.輸出層神經元個數

輸出層神經元的個數同樣需要根據從實際問題得到抽象模型來確定。如輸出有4種情況,因此採用二維輸出即可覆蓋,00、01、10、11分別表示一種型別,使用輸出神經元的個數為4。

5.傳遞函式的選擇

一般隱含層使用sigmoid函式,而輸出層採用線性函式。

6.初始權值

bp網路採用迭代更新的方法確定權值,因此需要乙個初始值。一般初始值都是隨機給的。

7.訓練集歸一化

(1)容易形成區域性極小值而得不到全域性最優值。bp神經網路中極小值比較多,所以很容易陷入區域性極小值,這就要求對初始權值和閥值有要求,要使得初始權值和閥值隨機性足夠好,可以多次隨機來實現。

(2)訓練次數多使得學習效率低,收斂速度慢。

(3)隱含層的選取缺乏理論的指導。

(4)訓練時學習新樣本有遺忘舊樣本的趨勢。

%% i. 清空環境變數

clear all

clc%% ii. 訓練集/測試集產生%%%

1. 匯入資料

load spectra_data.mat%%%

2. 隨機產生訓練集和測試集

temp = randperm(size(nir,1));

% 訓練集——50個樣本

p_train = nir(temp(1

:50),:)';

t_train = octane(temp(1:50),:)';

% 測試集——10個樣本

p_test = nir(temp(51

:end),:)';

t_test = octane(temp(51:end),:)';

n = size(p_test,2);

%% iii. 資料歸一化

[p_train, ps_input] = mapminmax(p_train,0,1);

[t_train, ps_output] = mapminmax(t_train,0,1);

%% iv. bp神經網路建立、訓練及**測試%%%

1. 建立網路

net = newff(p_train,t_train,9);%%%

2. 設定訓練引數

net.trainparam.epochs = 1000;

net.trainparam.goal = 1e-3;

net.trainparam.lr = 0.01;%%%

3. 訓練網路

net = train(net,p_train,t_train);%%%

4. **測試

t_sim = sim(net,p_test);%%%

5. 資料反歸一化

t_sim = mapminmax('reverse',t_sim,ps_output);

%% v. 效能評價

%%% 1. 相對誤差error

error = abs(t_sim - t_test)./t_test;%%%

2. 決定係數r^2

r2 = (n * sum(t_sim .* t_test) - sum(t_sim) * sum(t_test))^2 / ((n * sum((t_sim).^2) - (sum(t_sim))^2) * (n * sum((t_test).^2) - (sum(t_test))^2)); %%%

3. 結果對比

result = [t_test

' t_sim' error']

%% vi. 繪圖

figure

plot(1:n,t_test,'

b:*',1:n,t_sim,'r-o')

legend('真實值','**值')

xlabel('**樣本')

ylabel('辛烷值')

string = ;

title(string)

BP神經網路

基本bp神經網路演算法包括 訊號的前向傳播 誤差的反向傳播 也即計算實際輸出時按照輸入到輸出的方向進行,權值閾值調整則相反。bp是一種多層前饋神經網路,由輸入層 隱含層和輸出層組成。層與層之間有兩種訊號在流動 一種是從輸入流向輸出的工作訊號,是輸入和權值的函式 另一種是輸入流向輸出的訊號,即誤差。隱...

BP神經網路

x 為輸入向量,y為隱藏層的神經元,z 為輸出層,d為目標真實值,本文預設 z 不經過sigmod處理。x y的權重為 w,y z的權重為 v yj ix iwij 1 oyi f y j 2 其中激勵函式f x 1 1 e x f x f x 1 f x 3 z k j f yj vjk 此時系統...

BP神經網路

bp是back propagation bp神經網路主要的演算法在於誤差反向傳播error backpropagation 有三層 輸入層 input 隱含層 hidden 輸出層 output 輸入層 n個神經元 隱含層 p個神經元 輸出層 q個神經元 輸入向量 x x1,x2,x n 隱含層輸入...