Monte-Carlo Method和Evolutionary Algorithms之间的关系是什么?从表面上看,它们似乎是用于解决复杂问题的无关模拟方法。哪种问题最适合?他们能解决同样的问题吗?两者之间的关系是什么(如果有的话)?
答案 0 :(得分:17)
如果您的函数表现良好(无论您从哪个输入开始,都会有一个全局最小值),那么最好使用确定最小化技术,例如共轭梯度法。许多机器学习分类技术涉及找到最小化超平面相对于训练集的最小平方误差的参数。在这种情况下被最小化的功能是在n维空间中平滑,表现良好的抛物面。计算坡度并滚下坡。容易腻。
但是,如果您的输入参数是离散的(或者如果您的适应度函数具有不连续性),则无法再准确计算梯度。如果使用一个或多个变量的表格数据计算适应度函数,则会发生这种情况(如果变量X小于0.5,则使用此表,否则使用该表)。或者,您可能拥有一个从NASA获得的程序,该程序由作为批处理作业运行的不同团队编写的20个模块组成。你提供输入,它会吐出一个数字(想想黑盒子)。根据您开始使用的输入参数,最终可能会出现错误的最小值。全局优化技术试图解决这些类型的问题。
进化算法形成一类global optimization技术。全局优化技术通常涉及某种“爬山”(接受具有更高(更差)适应度函数的配置)。这种爬坡通常涉及一些随机性/随机性/蒙特卡罗。通常,这些技术在早期更可能接受不太优化的配置,并且随着优化的进展,它们不太可能接受劣质配置。
进化算法松散地基于进化类比。模拟退火基于金属退火的类比。粒子群技术也受到生物系统的启发。在所有情况下,您应该将结果与简单的随机(a.k.a.“monte carlo”)配置抽样进行比较......这通常会产生相同的结果。
我的建议是开始使用基于确定性梯度的技术,因为它们通常比随机/蒙特卡罗技术需要更少的功能评估。当你听到蹄声时,认为马不是斑马。从几个不同的起点运行优化,除非你正在处理一个特别讨厌的问题,你应该最终得到大致相同的最小值。如果没有,那么你可能有斑马,应该考虑使用全局优化方法。
答案 1 :(得分:3)
我认为蒙特卡罗方法是这些方法的总称 使用随机数来解决优化问题。通过这种方式, 即使是进化算法也是一种蒙特卡罗方法 使用随机数(实际上他们这样做)。
其他蒙特卡罗方法是:大都市,王 - 兰,平行回火等