나방불꽃 알고리즘(예측 응용) 기반으로 최적화된 BP 신경망 - 코드 포함
기사 디렉토리
개요: 이 기사에서는 BP 신경망을 최적화하는 방법과 이를 나방 화염 알고리즘을 사용한 예측에 적용하는 방법을 주로 소개합니다.
1. 데이터 소개
이 경우에는 2000개의 데이터 세트가 있으며 그 중 1900개 세트는 훈련에 사용되고 100개 세트는 테스트에 사용됩니다. 데이터의 입력은 2차원 데이터이고 예측 출력은 1차원 데이터입니다.
2. BP 신경망을 최적화하기 위해 나방을 불태우다
2.1 BP 신경망 매개변수 설정
신경망 매개변수는 다음과 같습니다.
%% 构造网络结构
%创建神经网络
inputnum = 2; %inputnum 输入层节点数 2维特征
hiddennum = 10; %hiddennum 隐含层节点数
outputnum = 1; %outputnum 隐含层节点数
2.2 나방의 화염 알고리즘 적용
나방 퇴치 알고리즘의 원리를 참고하세요: https://blog.csdn.net/u011835903/article/details/107764895
나방-화염 알고리즘의 매개변수는 다음과 같이 설정됩니다.
popsize = 20;%种群数量
Max_iteration = 20;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
% inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
% hiddennum + outputnum 为权值的个数
dim = inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;% inputnum * hiddennum + hiddennum*outputnum维度
여기서 신경망의 임계값 수는 다음과 같이 계산된다는 점에 유의해야 합니다.
이 네트워크에는 2개의 레이어가 있습니다.
첫 번째 레이어의 임계값 수는 2*10 = 20, 즉 inputnum * Hiddennum;
첫 번째 레이어의 가중치 수는 10, 즉 Hiddennum입니다.
두 번째 레이어의 임계값 수는 10*1 = 10, 즉 Hiddennum *outputnum입니다.
두 번째 레이어의 가중치 수는 1, 즉 출력 번호입니다.
따라서 최적화된 차원은 다음과 같습니다. inputnum * Hiddennum + Hiddennum*outputnum + Hiddennum + Outputnum = 41;
피트니스 기능 값 설정:
본 논문에서는 피트니스 함수를 다음과 같이 설정한다:
Fitness = argmin ( mse ( T rain Data Error ) + mes ( T est Data Error ) ) Fitness = argmin(mse(TrainDataError) + mes(TestDataError))적합성 _ _ _ _=a r g min ( m se ( 훈련 데이터 오류 ) _ _ _ _ _ _+m es ( T es t Data Error )) 여기서 TrainDataError 및 TestDataError 는 각각
훈련 세트와 테스트 세트의 예측 오류 입니다 . mse는 평균 제곱 오차 함수를 찾는 것이며, 피트니스 함수는 우리가 최종적으로 원하는 네트워크가 테스트 세트와 훈련 세트 모두에서 더 나은 결과를 얻을 수 있는 네트워크임을 보여줍니다.
4. 테스트 결과:
나방불꽃 알고리즘의 수렴 곡선에서 전체 오류가 지속적으로 감소하는 것을 볼 수 있으며 이는 나방불꽃 알고리즘이 최적화된 역할을 했음을 나타냅니다.