我什么时候应该使用遗传算法而不是神经网络?

是否有一个经验法则(或一组例子)来决定何时使用遗传算法而不是神经网络(反之亦然)来解决问题?

我知道在某些情况下可以混合使用这两种方法,但是我正在寻找这两种方法之间的高级比较。

79645 次浏览

GAs 在您定义的结构中生成新的模式。

NN 根据您提供的训练数据对现有模式进行分类(或识别)。

遗传算法在有效搜索大量解的状态空间和收敛于一个或多个好的解,但不一定是“最佳”解方面表现良好。

神经网络可以学习识别模式(通过训练) ,但是众所周知,要弄清楚他们学到了什么是非常困难的,也就是说,一旦训练完成,就要从中提取知识,然后在其他(非神经网络)中重用这些知识。

他们之间有很多相似之处,所以我只会尝试概述他们的 分歧

神经网络

能够分析在线模式(随时间变化的模式)。一般来说,这是一个需要匹配和预测的时变样本。

例子 :

  • 图表推断
  • 面部识别

遗传算法

当您可以编写您认为可能导致特定的、不变的问题的属性时使用。重点在于能够编写这些属性(有时你知道它们是什么) ,问题在很大程度上是不变的(否则进化不会收敛)。

例子 :

  • 安排飞机/航运
  • 时间表。
  • 在人工环境中寻找简单智能体的最佳特征
  • 用随机多边形绘制图像的近似

遗传算法(尽管名字很性感)在大多数情况下是 最优化技术。它主要归结为你有一些变量,并希望找到这些变量的值的最佳组合。它只是借用了自然进化的技术。

神经网络对 识别模式是有用的。他们遵循一个简单的大脑模型,通过改变它们之间的权重,试图根据输入来预测输出。

它们是两个完全不同的实体,但有时它们能够解决的问题是重叠的。

遗传算法(通常)处理离散数据(枚举、整数范围等)。遗传算法的一个典型应用程序是在一个离散的空间中搜索“足够好”的解决方案,而唯一可用的替代方案是暴力搜索法(评估所有组合)。

另一方面,神经网络(通常)处理连续的数据(浮点数等)。一个典型的神经网络应用是函数逼近的,你有一组 X 的输入和一组 Y 的相关输出,但是分析函数 f: x & rarr; Y。

当然,这两者有成千上万种变体,所以它们之间的界限有些模糊。

您可以使用遗传算法来替代 反向传播算法反向传播算法来更新神经网络中的权重。这方面的一个例子是: Http://www.ai-junkie.com/ann/evolved/nnt1.html.

你在比较两件完全不同的事情。

神经网络用于回归/分类-给定一组(x,y)例子,你想要回归一些给定 x 的未知 y。

遗传算法是一种优化技术,给定一个函数 f (x) ,你需要确定使 f (x)最小化/最大化的 x。

没有经验法则。在许多情况下,你可以明确你的问题来利用它们中的任何一个。机器学习仍然是一个活跃的研究领域,使用哪种学习模型是有争议的。

GA 从进化中获得了性感的语言,但是你正在等待你的计算机通过一个随机的过程偶然发现一个解决方案。研究你的数据,做出正确的假设,尝试知道你想要什么,并选择一种方法可以很好地利用这些。如果你的第一个选择给出了糟糕的结果,知道为什么会这样,并改进算法本身或者选择一个更好的。