我目前正在研究遗传算法。有一个问题是“为什么遗传算法比决策树等其他机器学习技术需要更多的内存?”我找不到任何答案,即使是谷歌搜索。任何人都可以给出并解释答案吗?
答案 0 :(得分:2)
遗传算法模拟自然选择过程,以便“解决”困难优化问题的解决方案。通常,算法的工作原理是首先生成一些随机的“个体”(即您试图解决的问题的解决方案)并使用适应度函数计算它们的“适应度”。然后选择更适合的个体生存并可能通过“育种”交换“DNA”以产生下一代个体。然后重复该过程直到达到停止条件,这可能是达到足够的适应水平或达到最大代数。适应度函数通常是非常复杂的函数,因为它们必须处理所有个体的“特征”并输出适应度(可能作为标量)。对于许多问题,从算法复杂性的角度来看,这是不可能的,因此使用适应性近似。无论哪种方式,GA的迭代性质,适应度函数的复杂性,以及在RAM中表示大量个体的任何给定时刻的事实都是一种要求苛刻的算法。
答案 1 :(得分:0)
模拟退火等其他技术在时间和内存方面都需要较少的资源。在模拟退火的特定情况下,您只使用使用变异作为唯一运算符的元素。对于SA,通常情况下内存不是问题。显然,计算时间取决于问题的性质。
GA更灵活,但SA是一个很好的技术,适用于使用低资源的许多问题。
答案 2 :(得分:0)
遗传算法需要更多内存的主要原因是它们需要维护整个解决方案群体。其他搜索方法,例如爬山,禁忌搜索,波束搜索和模拟退火,一次只能处理一个解决方案。因此,例如,如果解决方案需要一兆字节的RAM来表示,则人口规模为100的GA将需要100兆字节的RAM来表示其解决方案的数量。
正如Treker所说,您经常需要评估人口中的所有解决方案这一事实会增加额外的内存成本。