BP(back propagation,反向傳播)神經網絡功能及其MATLAB實現。
反向傳播指誤差函數會由輸出端向前反向傳播,隱含層藉此調整權值來縮小誤差。
結構圖:
W爲權值,b爲閾值。
1. 數據輸入:數據輸入時需先使用傳遞函數進行變化,變換方法包括閾值(階躍)函數、分段線性變換、歸一化函數(mapminmax)、對數S形變換(logsig)、正切S形變換(tansig)。
2. 神經網絡創建:
創建函數newcf,該函數創建級聯前向BP神經網絡。
Description
newcf(P,T,[S1 S2...S(N-1)],{TF1 TF2...TFN},BTF,BLF,PF,IPF,OPF,DDF)takes,
P - RxQ1 matrix of Q1representative R-element input vectors.
T - SNxQ2 matrix of Q2representative SN-element target vectors.
Si - Sizes of N-1 hidden layers,S1 to S(N-1), default = [].
(Output layer size SN is determined from T.)
TFi - Transfer function of ith layer. Default is 'tansig' for
hidden layers, and 'purelin' for output layer.
BTF - Backprop network training function, default = 'trainlm'.
BLF - Backprop weight/bias learning function, default = 'learngdm'.
PF - Performance function,default = 'mse'.
IPF - Row cell array of input processing functions.
Default is {'fixunknowns','remconstantrows','mapminmax'}.
OPF - Row cell array of output processing functions.
Default is {'remconstantrows','mapminmax'}.
DDF - Data division function, default = 'dividerand';
and returns an N layer cascade-forward backprop network.
net = newcf(P,T,[S1 S2...S(N-1)],{TF1TF2...TFN},BTF,BLF,PF,IPF,OPF,DDF)
PR:每組輸入(共有R組輸入)元素的最大值和最小值組成的R*2維矩陣;
Si:第i層的長度,共計N層;
TFi:第i層的傳遞函數,默認隱含層爲tansig,輸出層爲purelin,輸入爲兩個字符串構成的矩陣,取值範圍:
BTF:BP網絡的訓練函數,默認爲trainlm,即Lecenberg-Marquardt函數,可設置爲traingd,梯度下降BP算法訓練函數,traindm,動量反傳的梯度下降BP算法訓練函數,trainda,動態自適應學習速率的梯度下降BP算法訓練函數,traindx,動量反傳和動態自適應學習速率的梯度下降BP算法訓練函數。
BLF:權值和閾值的BP學習算法,默認爲learngdm,帶動量項,可設置爲learngd,不帶動量項。
PF:網絡的性能函數,即訓練誤差的計算方法,默認爲mse,即均方差,可設置爲mae,均值絕對誤差。
IPF:輸入處理函數。
OPF:輸出處理函數。
DDF:驗證數據劃分函數。
後面三個參數一般不設置,取系統默認即可。
創建函數newff,該函數創建前向神經網絡。
Description
newff(P,T,S) takes,
P - RxQ1 matrix of Q1representative R-element input vectors.
T - SNxQ2 matrix of Q2representative SN-element target vectors.
Si - Sizes of N-1 hidden layers,S1 to S(N-1), default = [].
(Output layer size SN is determined from T.)
and returns an N layer feed-forward backprop network.
newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) takes optional inputs,
TFi - Transfer function of ith layer. Default is 'tansig' for
hidden layers, and 'purelin' for output layer.
BTF - Backprop network training function, default = 'trainlm'.
BLF - Backprop weight/bias learning function, default = 'learngdm'.
PF - Performance function,default = 'mse'.
IPF - Row cell array of input processing functions.
Default is {'fixunknowns','remconstantrows','mapminmax'}.
OPF - Row cell array of output processing functions.
Default is {'remconstantrows','mapminmax'}.
DDF - Data division function, default = 'dividerand';
and returns an N layer feed-forward backprop network.
P:輸入數據矩陣;
T:目標數據矩陣;
S:隱含層節點數;
其他參數同newcf。
傳遞函數
Logsig
Tansig
學習函數
Learngd函數
[dW,LS] =learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
W:權值矩陣;
P:層輸入向量;
Z:層輸入經過加權函數變換後的加權輸入矢量;
N:加權輸入經過輸入函數計算後得到的神經元傳遞函數的輸入矢量;
A:該層神經元輸出矢量;
T:目標矢量;
E:誤差矢量;
gW:網絡性能對於權值的梯度矢量;
gA:網絡性能對於該層輸出梯度矢量;
D:神經元的距離矩陣;
LP:學習參數,learngd函數的學習參數是由學習速率LP.lr構成的,默認值爲0.01;
LS:學習狀態,初始值爲[],函數返回閾值調整量dW和當前學習狀態LS。
Learndm函數
參數同上。
訓練函數
Trainbfg準牛頓BP算法函數
[net,TR =trainbfg(Net,Tr,trainV,valV,testV)
Net:待訓練的神經網咯;
Tr:有延遲的輸入網絡;
trainV:訓練向量;
valV:驗證向量;
testV測試向量;
net:訓練後的神經網絡;
TR:每步訓練的有關信息,包括:
TR.epoch:時刻點;
TR.perf:訓練性能;
TR.vperf:確認性能;
TR.tperf:檢驗性能。
info=trainfg(‘info‘);返回函數的有用信息。
常規參數:
net.trainParam.epochs:訓練次數,默認值爲100.
net.trainParam.goal:網絡性能目標,默認值爲0。
net.trainParam.max_fail:最大驗證失敗次數,默認值爲5.
net.trainParam.min_grad:性能函數的最小梯度,默認值爲1e-6.
net.trainParam.show:兩次顯示之間的訓練次數,默認值爲25。
net.trainParam.time:最大訓練時間(秒),默認值爲INF。