进化优化——如何为不同的测试函数选择精度水平?

Evolutionary optimization - how to Choose level of accuracy for different test functions?

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

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

示例Schwefel 测试函数的所有输入的输入范围为 (-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,因为它的范围是 Schwefel 的 1/100 范围。

PS:停止条件为"maximum number of generations",所有情况的维数均为45。


编辑:

如答案中所述,由于比较了结果的 goodness,因此使用简单的 LOA 不是合适的方法。

Edited Goal(示例):平均而言,当使用 "Population size" of 500(所有 hyper参数通过测试是一致的)。
考虑到优度是由 运行 具有相同功能的相同 GA 100 次并找出有多少次猜测的答案比 epsilon 更接近真实答案,我仍然需要调整这个 epsilon 因此,所有十个测试函数的平均值可以得出更广泛的结论。

PSepsilon本身应该是我定义的。

这是一个很好的观察。你在这里真正得到的是,在优化时,你选择的收敛标准会产生一些影响。

How should I decide on LOA value? Should it be related to input range of the function being tested?

静态 epsilon 标准(在您的情况下,不同于 LOA),根据 size(输入组合) 和 space 的 shape(实现该 epsilon 的输入是多还是少?)

有一些替代方法:

  1. 按照您的建议进行操作,并将 epsilon 与 space 的大小相关联。但是,这可能会导致 space 大小不同但形状相似的问题。考虑一个 space(大致)形状像 -v-(一个有凹陷的圆盘——如果你愿意,你可以让圆盘在 v 外缓缓向内倾斜,在 v 内急剧向内倾斜)——最优最小点是 v 的底部。如果我也有一个 space ----v---- 具有相同大小 v 但更大的磁盘,我应该使用更大的 epsilon 来解释更大的 space ?在某些时候,例如----------v---------- 磁盘上的任何 点在 vepsilon 范围内,如果 epsilon 随着大小不断增长。

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

    • 时间:只让算法运行"for a while",然后停止。
    • 改进率:如果 t 的结果是 r,而 t-1 的结果是 r',让 x 成为百分比从 r' 变为 r。如果x < n%,停止。否则,继续。这可以扩展到考虑例如如果您希望您的结果随着时间的推移非单调地变得更好,则相对于尾随系列 t-1t-2t-3... 的平均改进率。

... determine the effects of hyper parameters on the algorithm

这不是很明确。您是否正在尝试以某种方式在所有函数中找到一组 "optimal" 的超参数?最适合 each 函数的集合?这些是优化任务。

如果您正在尝试对 "what are the effects" 进行更广泛的评估,如您的问题所述,您可能只想 运行 每个函数都有不同的功能超参数值,并查看 hp 值和结果的 goodness 之间的 相关性 (来自 LOA 的增量)。明确地说,您可能 不想 通过它们是否在 epsilon 内产生结果来分析超参数,而是您想通过它们改进的程度来分​​析它们(或没有)结果。