【发布时间】: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