1.演算法執行效果圖預覽
(完整程式執行後無水印)
2.演算法執行軟體版本
MATLAB2022a
3.部分核心程式
while(Index<=Max_iteration) Index jj=1; error2 = zeros(Len,KER); while(jj<=Len) for k=1:No; d(k)=T(jj); end for i=1:NI; x(i)=P(jj,i); end %整合多個BP神經網路 for bpj = 1:KER for j=1:Nh%BP前向 net=0; for i=1:NI net=net+x(i)*W0(i,j,bpj); %加權和∑X(i)V(i) end y(j)=1/(1+exp(-net)); end for k=1:No net=0; for j=1:Nh net=net+y(j)*W(j,k,bpj); end %輸出值 o(k)=1/(1+exp(-net)); end RRR(jj,1) = round(o); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% errortmp=0.0; for k=1:No errortmp=errortmp+(d(k)-(o(k)))^2;%傳統的誤差計算方法 end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% error2(jj,bpj)=0.5*errortmp/No; for k=1:No%BP反向計算 yitao(k)=(d(k)-o(k))*o(k)*(1-o(k));%偏導 end for j=1:Nh tem=0.0; for k=1:No tem=tem+yitao(k)*W(j,k,bpj); end yitay(j)=tem*y(j)*(1-y(j));%偏導 end for j=1:Nh%權值更新 for k=1:No deltaW(j,k,bpj) = Learning_Rate*yitao(k)*y(j); W(j,k,bpj) = W(j,k,bpj)+deltaW(j,k,bpj); end end for i=1:NI for j=1:Nh deltaW0(i,j,bpj) = Learning_Rate*yitay(j)*x(i); W0(i,j,bpj) = W0(i,j,bpj)+deltaW0(i,j,bpj); end end end jj=jj+1; end %BP訓練結束 error = sum(mean(error2)); Index = Index+1; ERR = [ERR,error]; end
4.演算法理論概述
基於負相關誤差函式(Negative Correlation Learning, NCL)的整合學習方法應用於BP(Backpropagation)神經網路,旨在透過訓練多個相互獨立且在預測上具有負相關的模型,提高整體模型的泛化能力和穩定性。這種方法結合了神經網路的強大表達能力和整合學習的思想,以提高預測精度和魯棒性。
整合學習是機器學習領域的一種重要策略,它透過組合多個弱學習器來構建一個強學習器。NCL在整合學習框架下的應用,特別是與BP神經網路結合時,其核心思想是促使每個神經網路模型學習到不同的模式,從而減少整體模型之間的錯誤相關性。當模型間的預測錯誤呈現負相關時,即一個模型在某些樣本上犯錯時,其他模型能在這些樣本上正確預測,整個整合系統的錯誤率會顯著降低。
負相關誤差函式的公式:
可知,當λ=0時,後面的懲罰項為0,相當於是網路單獨訓練,也就是傳統的整合方式,當λ取大於0的值時為負相關整合,所以,以下對λ取值分別為0和其他值進行比較.
基於負相關誤差函式的整合BP神經網路,透過鼓勵模型間預測的負相關性,有效提升了模型的泛化能力。