一致的适应度值对于有效推进进化算法是必要的。想象一下极端情况:如果对候选人的适应度评估始终是 100% 随机的,那么您的算法将执行随机搜索(效率不高)。
如果你的适应度评估不一致,通常意味着你没有成功抽象出问题中“价值”的含义(这有时很难!)或者它可能是随机因素的结果(更类似于什么我从你的描述中理解)。这些通常通过平均来抵消。
如果在您的情况下,这些随机输入确实具有优势,请考虑进行一些平均,这可能会使适应度评估更加一致,即使速度较慢。
但是,简而言之,缓慢的评估是不好的(你是对的),不一致的适应度值也不是。最后,请随意找到自己的平衡点。
编辑基于 cmets:
想象一下人工神经网络 (ANN) 必须重现一个函数的任务,例如 f(x) = x(其中 ANN 只有一个输入 x 和一个输出 f(x),但也许更复杂的情况需要许多隐藏单元)。
我们可以想象总是使用一组点来测试适应度,例如,对于 x = {0.2, 0.4, 0.6, 0.8} 测试 f(x)。在每种情况下,f(x) 越接近预期的 f(x) = x,适应度就越高。这将是一致的,但可能会导致过度拟合,如图所示:
解决方案在测试点附近非常好,但在其他地方无法预测。由于一致的评估,搜索算法可能会很有效,但结果可能并不好。
另一种方法是在每次迭代时使用一组随机测试点,例如 x = {0.13, 0.19, 0.56, 0.99}。因为每次的测试点都不一样,所以结果肯定到处都是好的。缺点是评价不一致,如图:
相同的候选解在测试集 A 上似乎很好,而在测试集 B 上则相当糟糕。在这种情况下,搜索算法可能效率更低,但在我们想要的值范围内,解会更好。
根据我们的具体情况,我们可以通过更多的迭代、更大的测试集(更好的平均值)或尝试中间解决方案来改进事情。例如,可以考虑始终测试三个随机点,其中第一个始终介于 0 和 1/3 之间,第二个始终介于 1/3 和 2/3 之间,第三个介于 2/3 和 1 之间。可能性真的很大没完没了,更好的选择取决于每个问题。
注意很多任务根本不会有这个问题。例如,在经典的 XOR 中,我们只需要测试 {X1 = 0, X2 = 0; X1 = 1,X2 = 0; X1 = 0,X2 = 1; X1 = 1,X2 = 1}。当然,测试所有四种情况会很快!