【问题标题】:How can genetic algorithms evolve solutions with numerical data?遗传算法如何利用数值数据演化解决方案?
【发布时间】:2020-07-21 15:04:40
【问题描述】:

我熟悉字符串或文本上下文中的 GA,但不熟悉数字数据。

对于字符串,我了解交叉和变异如何应用:

ParentA = abcdef
ParentB = uvwxyz

Using one-point crossover:
ChildA = abwxyz (pivot after 2nd gene)
ChildB = uvcdef

Using random gene mutation (after crossover):
ChildA = abwgyz (4th gene mutated)
ChildB = uvcdef (no genes mutated)

对于字符串,我有一个离散的字母表可以去掉,但是这些运算符如何应用于连续的数值数据?

例如,染色体表示为 4 空间中的点(每个轴是一个基因):

ParentA = [19, 58, 21, 54]
ParentB = [65, 21, 59, 11]

通过为后代切换父母双方的轴来应用交叉是否合适?

ChildA = [19, 58, 59, 11] (pivot after 2nd gene)
ChildB = [65, 21, 21, 54]

我觉得这看起来不错,但我对突变、随机化基因的幼稚想法似乎并不正确:

ChildA = [12, 58, 59, 11] (1st gene mutated)
ChildB = [65, 89, 34, 54] (2nd and 3rd genes mutated)

我只是不确定如何将遗传算法应用于这样的数字数据。我知道 GA 需要什么,但不知道如何应用运算符。例如,考虑在 4 维中最小化 Rastrigin 函数的问题:搜索空间在每个维度上是 [-512, 512],适应度函数是 Rastrigin 函数。我不知道我在这里描述的运算符如何帮助找到更合适的染色体。

对于它的价值,精英选择和种群初始化似乎很简单,我唯一的困惑来自交叉和变异算子。

赏金更新

我使用我在此处描述的突变和交叉率对连续数值数据进行了 GA 实现。优化问题是二维的 Styblinski-Tang 函数,因为它易于绘图。我也在使用标准的精英和锦标赛选择策略。

我发现总体最佳适应度确实可以很好地收敛到一个解决方案,而平均适应度则不然。

这里我绘制了十代以上的搜索空间:黑点是候选解,红色“x”是全局最优解:

我所描述的交叉算子似乎工作得很好,但变异算子(随机化染色体的 x 或 y 位置,或两者都不随机)似乎创建了十字准线和交叉影线模式。

我在 50 个维度上运行以延长收敛时间(因为在二维中它会在一代中收敛)并绘制它:

这里的 y 轴表示解决方案与全局最优值的接近程度(因为最优值已知),它只是actual output / expected output 的一小部分。这是一个百分比。绿线是人口最佳(大约 96-97% 的目标),蓝色是人口平均值(波动 65-85% 的目标)。

这验证了我的想法:变异算子并没有真正对总体产生最佳影响,但确实意味着总体平均值永远不会收敛,并且会上下波动。

所以我对赏金的问题是,除了基因的随机化之外,还可以使用哪些变异算子?

补充一下:我问这个问题是因为我对使用 GA 来优化神经网络权重来训练网络而不是反向传播感兴趣。如果您对此有所了解,任何可以回答我的问题的详细资料来源。

【问题讨论】:

    标签: machine-learning numeric genetic-algorithm


    【解决方案1】:

    您可以考虑使用多项式变异,这是非常流行的NSGA-II 算法和其他几种实数编码遗传算法中的默认运算符。我也广泛使用它。你可以找到它的完整描述here(见第2节)和python实现here(搜索mutPolynomialBounded)。

    本质上,多项式概率分布用于扰动父母附近的解决方案。它有参数η,控制突变体接近父母的可能性。突变体与亲本相似的可能性随着 η 的降低而降低。 [20, 100] 是 η 的常用范围。

    您还可以考虑使用非均匀变异算子,其中,随着代数的增加,变异解会在更靠近父代的位置生成,以实现更好的收敛。 Here 就是一个例子(第 21 页)。

    【讨论】:

    • 这很有趣!我尝试了两种不同的非均匀变异算子:一种变异率随着时间的推移而降低,另一种如你所描述的那样。我想突变程度应该随着时间的推移而降低,因为早期突变确实促进了多样性,但是当找到最佳值时就不需要了。后代的低(或无)突变可能使种群平均适应度也接近最佳值。
    • 对。另一种保持多样性的方法是多种群遗传算法。不是您在这里要求的变异算子,但仍具有防止过早收敛的类似目的。实码版示例及演示here
    【解决方案2】:

    我想您可以采用很多不同的方式,这取决于您的特定用例。

    您对基因的随机化对我来说似乎并没有什么特别的错误。尽管更微妙的方法可能是仅添加或删除预定义的n(或范围),而不是将其更改为全新的随机数。

    在本文中,它们会按照您的建议进行变异,使用随机生成器:Genetic Algorithm for Solving Simple Mathematical Equality Problem

    【讨论】:

    • 这不是一个糟糕的主意:与其将轴随机化到整个搜索空间中的任何位置,不如在半径内设置一个位置。
    • 我认为,这应该是一个一般性评论,而不是对这个陈述良好且详细的问题的回答。
    • 问题已被编辑;请看历史。
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2019-10-30
    相关资源
    最近更新 更多