MATLAB が提供する IRIS データベースを使用して、フィットネス関数として平均二乗誤差 (MSE) を使用して粒子群最適化 (PSO) によってトレーニングされた 4 入力および 3 出力のニューラル ネットワークがあります。フィットネス関数は 50 回評価されます。実験は特徴を分類することです。いくつか疑問があります
(1) PSO 反復/世代 = 適合度関数が評価される回数ですか?
(2) 多くの論文で、MSE 対世代のトレーニング曲線がプロットされているのを見てきました。写真の左側のグラフ(a)はNNに似たモデルです。4 入力 0 隠れ層 3 出力認知マップです。グラフ (b) は、同じ PSO によってトレーニングされた NN です。この論文の目的は、(a) の新しいモデルが NN に対して有効であることを示すことでした。
しかし、彼らは実験が行われていると述べており、世代 = 300 でサイクル = 100 回と言っています。その場合、(a) と (b) のトレーニング曲線は、MSE 対 PSO 世代ではなく、MSE 対サイクルである必要があります。たとえば、Cycle1 : PSO 反復 1-50 --> Result(Weights_1,Bias_1, MSE_1, Classification Rate_1)。サイクル 2: PSO 反復 1 ~ 50 --> 結果 (重み_2、バイアス_2、MSE_2、分類率_2) など、100 サイクル。(a)、(b) の X 軸が異なるのはなぜですか? また、それらは何を意味するのでしょうか?
(3) 最後に、プログラムを個別に実行するたびに (m ファイルをコンソールから個別に数回実行する)、同じ分類率 (CR) または同じ重みのセットを取得することはありません。具体的には、最初にプログラムを実行すると、W (重み) 値と CR = 100% が得られます。Matlab コード プログラムを再度実行すると、CR = 50% と別の重みのセットが得られる場合があります!! 以下に例を示します。
%Run1 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
0
Classification rate = 25
FinalWeightsBias =
-0.1156 0.2487 2.2868 0.4460 0.3013 2.5761
%Run2 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
1
Classification rate = 100
%Run3 (PSO generaions 1-50)
>>PSO_NN.m
Correlation =
-0.1260
Classification rate = 37.5
FinalWeightsBias =
-0.1726 0.3468 0.6298 -0.0373 0.2954 -0.3254
正しい方法は何ですか?では、最終的にどの重みセットを使用する必要があり、ネットワークがトレーニングされたとどのように言えますか? ランダム性による進化的アルゴリズムが同じ答えを与えることはないことは承知していますが、ネットワークがトレーニングされていることを確認するにはどうすればよいですか? 明確にする義務がある。