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

我无法理解遗传编程的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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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