进化优化-如何为不同的测试功能选择准确度



我在具有不同超参数的不同测试函数上使用基本遗传算法(GA)来确定超参数对算法的影响。

标准:GA猜测的答案(最小值)与真实答案足够接近
"足够接近"由"准确度"或LOA决定
if |guessed answer - real answer | < LOA => guessed answer is considered correct
问题:不同的函数有不同的输入范围,对所有测试函数使用静态LOA似乎是不对的
问题:我应该如何决定LOA值?它应该和被测函数的输入范围有关吗?

示例Schweefel测试函数的所有输入的输入范围为(-500,500),最小值为0。如果GA猜测的最小值是0.08并且LOA是0.1,则该猜测的答案是正确的,因为|0 - 0.08| < 0.1,但是如果猜测的答案为0.12,则认为是错误的
Rastrigin测试函数的所有输入范围为(-5.12, 5.12)。对Rastrigin使用相同的LOA似乎是不对的,因为它的范围非常小,并且相同的GA超参数在这里使用相同的LOA会做得更好
LOA是否应与范围相关?例如0.001的LOA是否应用于Rastrigin,因为其范围是Schweefel的1/100范围。

PS:停止条件为"最大世代数",所有情况下尺寸数均为45。


编辑:

如答案中所述,由于结果的优度是比较的,因此使用简单的LOA不是一种合适的方式。

编辑目标(示例):当使用500的"总体大小"时,在10个不同的测试函数上使用GA的平均结果有多好(所有超参数在测试中都是一致的)
考虑到优度是通过用相同的函数运行相同的GA 100次来确定的,并找出猜测的答案比epsilon更接近真实答案的时间,我仍然需要调整这个epsilon,这样所有十个测试函数的平均值会得出更广泛的结论。

PSepsilon本身应该由我定义。

这是一个很好的观察结果。您真正了解的是,在优化时,您选择的收敛标准会带来一些影响。

我应该如何决定LOA值?它应该和被测函数的输入范围有关吗?

基于空间的大小(输入组合)和形状,静态epsilon标准(在您的情况下,与LOA的差异)将相对更容易实现,而更难实现(是否有许多输入或很少输入实现ε?)

有一些替代方案:

  1. 按照你的建议,将ε与空间大小联系起来。不过,这可能会导致大小不同但形状相似的空间出现问题。考虑一个形状(大致)类似-v-的空间(一个有凹陷的圆盘——如果你愿意,你可以让圆盘在v外缓慢向内倾斜,在v内急剧向内倾斜)——最佳的最小点是v的底部。如果我还有一个空间----v----,大小与v相同,但磁盘要大得多,我应该使用更大的epsilon来解释更大的空间吗?在某个点,例如----------v----------,如果epsilon随大小不断增长,则磁盘上的任何点都在vepsilon内。

  2. 使用不同的度量(不是epsilon来定义收敛)。非常受欢迎的是1时间和2改善率。即

    • 时间:让算法运行"一段时间",然后停止
    • 改善率:如果在时间t处的结果是r,并且在t-1处的结果为r',则设x为从r'r的%变化。如果是x < n%,则停止。否则,继续。这可以扩展到考虑,例如,如果你期望你的结果随着时间的推移非单调地更好,那么在尾随序列t-1t-2t-3...上的平均改进率

。。。确定超参数对算法的影响

这不是很明确。你是否试图在所有功能中找到一组以某种方式"最优"的超参数?对于每个函数来说是最优的集合?这些都是优化任务。

如果你想对"效果是什么"进行更广泛的评估,正如你的问题所说,你可能只想用不同的超参数值运行每个函数,看看hp值和结果的优度之间的相关性是什么(LOA中的delta)。明确地说,您可能不想通过超参数是否在epsilon中产生结果来分析超参数,而是想通过它们在多大程度上改善(或不改善)结果来分析它们。

最新更新