我有一个通过粒子群优化 (PSO) 训练的 4 输入和 3 输出神经网络,使用 MATLAB 提供的 IRIS 数据库以均方误差 (MSE) 作为适应度函数。适应度函数被评估 50 次。实验是对特征进行分类。我有几个疑问
(1) PSO 迭代次数/代数是否 = 评估适应度函数的次数?
(2) 在许多论文中,我看到 MSE 与世代的训练曲线正在绘制。图中,左边的图(a)是一个类似于NN的模型。它是一个 4 输入 0 隐藏层 3 输出认知图。图 (b) 是由同一 PSO 训练的 NN。本文的目的是展示新模型在 (a) 中对 NN 的有效性。
但他们提到该实验是说 Cycles = 100 次,Generations = 300。在这种情况下,(a)和(b)的训练曲线应该是 MSE vs Cycles 而不是 MSE vs PSO 代?例如,Cycle1 : PSO 迭代 1-50 --> Result(Weights_1,Bias_1, MSE_1, Classification Rate_1)。Cycle2:PSO 迭代 1- 50 -->Result(Weights_2,Bias_2, MSE_2, Classification Rate_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
正确的方法应该是什么?那么,我最终应该采用哪个权重集,如何说网络已经训练好?我知道进化算法由于它们的随机性永远不会给出相同的答案,但是我如何确保网络已经过训练?有义务澄清。