【问题标题】:Why do Genetic Algorithms require more memory than other machine learning techniques?为什么遗传算法比其他机器学习技术需要更多的内存?
【发布时间】:2014-07-11 15:46:35
【问题描述】:

我目前正在研究遗传算法。有一个问题问“为什么遗传算法比决策树等其他机器学习技术需要更多的内存?”即使通过谷歌搜索,我也找不到任何答案。任何人都可以给出并解释答案吗?

【问题讨论】:

  • 遗传算法运行模拟,其中很多。除非您一个接一个地创建后代(非标准),否则您将拥有大量人口,全部在内存中(除非您写入文件)。在这些后代上运行模拟可能非常密集,尤其是当您有许多要测试的功能时。
  • 它在Wikipedia article 中。请参阅“限制”下的第二个项目符号段落,该段落以“遗传算法不能很好地扩展复杂性”开头。后面那句话就是答案。

标签: genetic-algorithm genetic-programming


【解决方案1】:

遗传算法模仿自然选择的过程,以“进化”解决一个困难的优化问题。通常,该算法首先生成一些随机的“个体”(即您试图解决的问题的解决方案)并使用适应度函数计算它们的“适应度”。然后选择更适合的个体生存并可能通过“繁殖”交换“DNA”以产生下一代个体。然后重复此过程,直到达到停止条件,这可能是达到了足够的适应度水平或达到了最大代数。适应度函数通常是非常复杂的函数,因为它们必须处理个人的所有“特征”并输出适应度(可能作为标量)。对于许多问题,从算法复杂性的角度来看这是不可能的,因此使用适应度近似代替。无论哪种方式,GA 的迭代性质、适应度函数的复杂性以及在任何给定时刻大量个体都表示在 RAM 中的事实使得算法要求很高。

【讨论】:

    【解决方案2】:

    模拟退火等其他技术在时间和内存方面需要更少的资源。在模拟退火的特定情况下,您仅使用突变作为唯一运算符的元素。对于 SA,通常情况下,内存不是问题。显然,计算时间取决于问题的性质。

    GA 更灵活,但 SA 是一种很好的技术,可以很好地解决使用低资源的许多问题。

    【讨论】:

      【解决方案3】:

      遗传算法需要更多内存的主要原因是它们需要维护整个解决方案群体。其他搜索方法,例如爬山法、禁忌搜索、光束搜索和模拟退火,一次只处理一种解决方案。因此,例如,如果一个解决方案需要 1 兆字节的 RAM 来表示,那么人口规模为 100 的 GA 将需要 100 兆字节的 RAM 来表示其解决方案的人口。

      正如 Treker 所提到的,您还经常需要评估总体中的所有解决方案这一事实可能会增加额外的内存成本。

      【讨论】:

        猜你喜欢
        • 2020-12-05
        • 2011-10-07
        • 2015-07-31
        • 2011-07-23
        • 2020-11-16
        • 1970-01-01
        • 2015-01-16
        • 2020-07-12
        • 2017-01-14
        相关资源
        最近更新 更多