我试图了解各种类型的机器学习算法之间的差异。

据我所知,进化算法的实现与神经网络的实现完全不同。

然而,它们似乎都在确定潜在噪声训练/历史数据集的输入和输出之间的相关性。

从定性的角度来看,与进化算法相比,是否存在作为神经网络更好目标的问题域?

我浏览了一些建议以互补的方式使用它们的文章。对于那个用例是否有一个很好的例子?

有帮助吗?

解决方案

这是交易:在机器学习问题中,您通常有两个组件:

a)模型(函数类等)

b)拟合模型的方法(优化算法)

神经网络是一个模型:给定布局和权重设置,神经网络产生一些输出。存在一些拟合神经网络的规范方法,例如反向传播,对比发散等。然而,神经网络的重点是如果有人给你“权利”权重,你就可以很好地解决问题。

进化算法解决了第二部分 - 拟合模型。同样,有一些规范模型与进化算法一起使用:例如,进化编程通常试图优化特定类型的所有程序。但是,EA本质上是一种为特定模型找到正确参数值的方法。通常,您以这样的方式编写模型参数:交叉操作是合理的操作,并转动EA曲柄以获得合理的参数设置。

现在,您可以使用进化算法训练神经网络,我相信它已经完成了。然而,EA需要工作的关键位是交叉操作必须是合理的事情 - 通过从一个合理的设置中获取部分参数而从其他合理设置中获取其余参数,您通常会得到一个甚至更好的参数设置。大多数时候使用EA,情况并非如此,它最终会像模拟退火一样,只会更加混乱和低效。

其他提示

需要“直觉”的问题更适合人工神经网络,例如手写识别。您训练具有大量输入的神经网络并对其进行评级直到您完成(这需要很长时间),但之后您有一个黑盒算法/系统可以“猜测”手写,所以你保持你的小脑子,并将其用作模块多年或其他什么。因为针对复杂问题培训质量人工神经网络可能需要几个月的时间,我才是最糟糕的情况,并且好运。

大多数其他进化算法“计算”一种特殊的解决方案,以某种爬山模式现场。

另外如在另一个答案中指出的那样,在运行期间,ANN可以“猜测”。比大多数其他进化算法更快“计算”。但是必须要小心,因为人工神经网络只是“猜测”。这可能是错的。

看看神经进化。 (NE)

目前最好的方法是 NEAT HyperNEAT

遗传算法只找到某种基因组;创建神经网络的基因组非常棒,因为你获得了神经网络的反应特性,而不仅仅是一堆静态基因。

它可以学到的东西并没有太多限制。但当然需要时间。必须通过通常的突变和交叉来演变神经拓扑,以及更新权重。没有反向传播。

此外,您可以使用健身功能训练它,因此当您不知道输出应该是什么时,它优于反向传播。非常适合学习您不了解任何最佳策略的系统的复杂行为。唯一的问题是它会学习你没有预料到的行为。通常这种行为可能非常陌生,尽管它确实完全是你在健身功能中所获得的奖励。因此,您将使用尽可能多的时间来推导健身函数,就像创建反向传播的输出集一样:P

进化的,或更一般的遗传算法,以及神经网络都可以用于类似的目标,其他答案可以很好地描述差异。

然而,有一个特定情况,其中进化算法比神经网络更明显:当解空间是非连续/离散

实际上,神经网络使用梯度下降来学习反向传播(或类似的算法)。梯度的计算依赖于导数,这需要一个连续的空间,换句话说,你可以逐渐地,逐步地从一个解决方案转移到另一个解决方案。

如果您的解决方案空间是离散的(即,您可以选择解决方案A,或B或C,但中间没有任何东西,如0.5%A + 0.5%B),那么您正在尝试适应非连续功能,然后神经网络无法工作。

在这种情况下,进化算法是完美的,人们甚至可以说上帝发送,因为它可以“跳跃”。从一个解决方案到下一个解决方案没有任何问题。

另外值得一提的是,进化算法不像任何其他机器学习算法那样受到维数的诅咒,包括神经网络。

这使得进化算法成为一种非常通用且通用的工具,可以很好地处理任何问题,并且是处理非连续函数或天文数据高维数据集的极少数工具之一。

在问题域方面,我将通过反向传播训练的人工神经网络与进化算法进行比较。

进化算法部署随机化的beamsearch,这意味着您的进化运算符会根据其适应性开发候选者进行测试和比较。这些操作员通常是非确定性的,你可以设计它们,这样他们就可以找到距离很近的候选人和参与空间更远的候选人,以克服陷入局部最优的问题。

然而,EA方法的成功在很大程度上取决于您开发的模型,这是高表达潜力(您可能过度拟合)与一般性(模型可能无法表达目标函数)之间的权衡。

因为神经网络通常是多层的,参数空间不是凸的并且包含局部最优,梯度下降算法可能会被卡住。梯度下降是一种确定性算法,通过非常接近的搜索。这就是为什么神经网络通常是随机初始化的原因,以及为什么你应该训练多个模型。

此外,您知道神经网络中的每个隐藏节点都定义了一个超平面,您可以设计一个神经网络,以便它很好地适应您的问题。有一些技术可以防止神经网络过度拟合。

总而言之,神经网络可以快速训练,并且只需很少的efford即可获得合理的结果(只需尝试一些参数)。理论上,足够大的神经网络能够逼近每个目标函数,而另一方面则使其易于过度拟合。进化算法要求您进行大量设计选择以获得良好的结果,最难的可能是要优化的模型。但EA能够搜索非常复杂的问题空间(以您定义的方式)并快速获得良好的结果。当问题(目标函数)随着时间的推移而变化时,AE甚至可以保持成功。

Tom Mitchell的机器学习书: http://www.cs.cmu.edu/~tom/mlbook.html

进化算法(EA)很慢,因为它们依赖于无监督学习:EA被告知某些解决方案比其他解决方案更好,但不是如何来改进它们。神经网络通常更快,是监督学习的一个实例:他们知道如何通过在某些参数上使用函数空间内的梯度下降来更好地解决问题;这使他们能够更快地达到有效的解决方案。当对其他方法无法解决问题的知识时,通常会使用神经网络。

进化算法(EA)代表训练模型的方式,其中神经网络(NN)是模型。在整个文献中,您会发现使用反向传播算法训练NN。这种方法对数学家非常有吸引力但是它要求你可以用数学公式表达模型的错误率。在您尝试近似的函数的大量输入和输出值的情况下就是这种情况。这个问题可以用数学方法建模,作为损失函数的最小化,这可以通过微积分来实现(这就是数学家喜欢它的原因)。

但神经网络也可用于建模系统,这些系统试图最大化或最小化某些结果,其公式很难以数学方式建模。例如,神经网络可以控制机器人的肌肉以实现跑步。在每个不同的时间范围内,模型必须根据各种传感器的输入确定在机器人身体的每个肌肉中应该存在多少张力。提供此类培训数据是不可能的。 EA仅通过提供对模型的评估方式来进行培训。对于我们的例子,我们将惩罚下降并奖励表面上的行进距离(在固定的时间范围内)。 EA只会选择在这个意义上做到最好的模型。令人惊讶的是,在几百代之后,这些人实现了非常“自然”的生活。运动并设法运行而不会脱落。这些模型也可以处理障碍和外部物理力量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top