遗传编程中的实数(常数)

我无法理解遗传编程的AI如何确定最终方程中应该出现常数。如果我使用公式F(m) = ma;F(m) = m9.8,AI如何知道9.8这个实数的实际值?我明白,与其在二叉树中直接放入最终数字,不如放入一个描述常数的符号,然后再以某种方式计算或猜测其值。

谢谢


回答:

给定一组预定义的常数(终端集的一部分),它们将被组合形成新的常数(使用树表示法,任何只有数字常数作为叶子的子树本身可以被视为一个新的数字常数)。

即使只有一个常数(c),系统也会创建:

  • 1.0常数(常数除以自身:c / c);
  • 2.0常数(1.0 + 1.0c / c + c / c);
  • 0.5常数(1.0 / 2.0c / c / (c / c + c / c));
  • 以这种方式会创建许多常数(如果幸运的话… 9.8)。

有时会使用称为“短暂随机常数”(Koza)的特殊终端。对于初始种群中的每个短暂常数,会生成一个在指定范围内的随机数。然后这些随机常数会被移动和组合。

无论如何,即使使用了短暂随机常数,遗传编程在生成正确常数方面仍然可能面临挑战(Koza说“寻找数字常数是遗传编程的骷髅在衣橱里”)。

因此,在进化过程中或之后可以使用其他技术,例如数字突变、爬山法…

这些混合系统通常在成功率上会有显著的改进(至少对于回归问题)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注