基於負相關誤差函式的4整合BP神經網路matlab建模與模擬

简简单单做算法發表於2024-07-07

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神經網路,透過鼓勵模型間預測的負相關性,有效提升了模型的泛化能力。

相關文章