バタフライ アルゴリズムに基づいて最適化された 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/107855860
バタフライ アルゴリズムのパラメーターは次のように設定されます。
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 です。
2 番目の層のしきい値番号は 10*1 = 10、つまり hiddennum * Outputnum; です。
2 番目の層の重みの数は 1、つまり、outputnum です。
したがって、最適化された次元は次のようになります。 inputnum * hiddennum + hiddennum*outputnum + hiddennum + Outputnum = 41;
フィットネス関数値の設定:
この論文では、適応度関数は次のように設定されます。
フィットネス_ _ _ _=a r g min ( m se (トレーニングデータエラー) _ _ _ _ _ _+m es ( T est D a ta Error ))ここで、TrainDataError と TestDataError は、それぞれトレーニング セットとテスト セットの
予測誤差です。mse は平均二乗誤差関数を見つけることであり、適合度関数は、最終的に必要なネットワークがテスト セットとトレーニング セットの両方でより良い結果を得ることができるネットワークであることを示します。
4. テスト結果:
バタフライ アルゴリズムの収束曲線から、全体的な誤差が継続的に減少していることがわかり、バタフライ アルゴリズムが最適化された役割を果たしていることがわかります。