遗传算法是优化方法的一种形式。通常,随机梯度下降及其导数是函数优化的最佳选择,但有时仍会使用遗传算法。例如,NASA ST5航天器的天线是使用遗传算法创建的:
什么时候比最常见的梯度下降方法更好的选择是遗传优化方法?
遗传算法是优化方法的一种形式。通常,随机梯度下降及其导数是函数优化的最佳选择,但有时仍会使用遗传算法。例如,NASA ST5航天器的天线是使用遗传算法创建的:
什么时候比最常见的梯度下降方法更好的选择是遗传优化方法?
Answers:
遗传算法(GA)是一个启发式方法家族,在很多情况下,它们在经验上都擅长提供一个不错的答案,尽管它们很少是给定领域的最佳选择。
您提到了基于导数的算法,但是即使没有导数,也有很多无导数优化算法的性能要比GA更好。看到这个和这个答案的一些想法。
什么许多标准的优化算法的共同点(甚至衍生物-自由的方法)是假设底层空间是平滑歧管(也许有几个离散的尺寸),并且该函数以优化是有些表现良好。
但是,并非所有功能都在平滑歧管上定义。有时您想对图形或其他离散结构进行优化(组合优化)-这里有专用的算法,但是GA也可以。
您越倾向于使用复杂的,离散的结构定义的功能,则GA越有用,尤其是当您找到一个表示遗传算子能够最佳发挥作用的表示形式时(这需要大量的手工调整和领域知识)。
当然,未来可能会导致完全忘记GA并开发将离散空间映射到连续空间并使用我们在连续表示上使用的优化机制的方法。
当梯度下降致力于单准则优化时,遗传方法非常适合多准则优化。当存在导数并且只有一个最优解(如果我们除局部极小值之外)时,梯度下降允许找到最小的函数。遗传算法可用于多准则问题,并导致解决方案的连续性,每个解决方案都是从初始种群进化而来的。要优化的值是个体的表型,并且可以有几种表型。通常,没有一个人同时具有每种表型的更好的价值,因此不仅只有一种解决方案。最终总体中的所有个体都是优化的解决方案,它们是“帕累托阵线”的一部分,并标记为“帕累托排名第一” 个人。这意味着,与在每种表型上表现相同的其他每个人相比,他们在一个表型上至少比其他表型更好。
在哪个意义上最好?
以我的经验,GA是最实用的优化器之一。尽管许多更精确的算法需要时间和精力来形式化数学世界中的实际问题,但GA可以处理具有复杂规则和约束的任何成本函数(GA毕竟是通过执行方法而不是通过特定的计算来关联)。这个过程很简单,您可以尝试许多方法进行探索性工作。
我也很高兴为将来的运行重新注入算法的过去解决方案的可能性,这对于重复任务很有用。
从概念上讲,遗传算法可以用功能和适合的哈希表表示,因此像Clojure这样的功能语言也可以很快地取得巨大的成绩。
遗传算法也可以嵌套:一个遗传算法的成本函数可以是遗传算法!这些算法利用了现代硬件和基础架构的优势,这些硬件和基础架构使它们能够计算非常大的数量,因此,即使使用简单的突变/选择操作,您仍然可以获得良好的结果。
即使对于诸如找到波动函数最小值的简单问题,GA也不是那么糟糕,并且可以在可接受的时间内达到不错的精度。
所以,是的,分析解决方案可能具有更快的执行时间和精度,但是产生超重所需的时间通常是预期的收益!那什么时候?几乎对我而言,至少对于元优化而言。