20

我试图了解各类机器学习算法之间的区别。

我知道进化算法的实现与神经网络的实现有很大不同。

然而,它们似乎都倾向于从一组潜在嘈杂的训练/历史数据中确定输入和输出之间的相关性。

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

我浏览了一些建议以互补方式使用它们的文章。有没有一个像样的用例示例?

4

7 回答 7

19

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

a) 模型(功能类等)

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

神经网络是一个模型:给定布局和权重设置,神经网络会产生一些输出。存在一些拟合神经网络的规范方法,例如反向传播、对比散度等。但是,神经网络的重要之处在于,如果有人给了你“正确”的权重,你就会在这个问题上做得很好。

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

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

于 2009-03-10T01:44:08.580 回答
4

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

大多数其他进化算法以一种爬山模式在现场“计算”一个临时解决方案。

同样正如另一个答案中所指出的,在运行时,ANN 可以比大多数其他进化算法“计算”更快地“猜测”。但是必须小心,因为 ANN 只是“猜测”,它可能是错误的。

于 2009-03-10T00:52:15.210 回答
4

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

然而,有一种特殊情况是进化算法比神经网络更适用:当解空间不可微时

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

如果您的解决方案空间是不可微分的(即,您可以选择解决方案 A、B 或 C,但中间没有 0.5% A + 0.5% B,因此某些解决方案是不可能的),那么您正在尝试去拟合一个不可微的函数,然后神经网络就不能工作了。

(旁注:离散状态空间部分共享相同的问题,因此对于大多数算法来说是一个常见问题,但通常会做一些工作来解决这些问题,例如决策树可以轻松处理分类变量,而其他模型(如 svm)有更多的困难,通常需要将分类变量编码为连续值)。

在这种情况下,进化和遗传算法是完美的,甚至可以说是上帝派来的,因为它们可以毫无问题地从一个解决方案“跳跃”到下一个解决方案。他们不关心某些解决方案是不可能的,也不关心可能状态空间子集之间的差距是大是小,进化算法可以随机跳远或靠近,直到找到合适的解决方案。

另外值得一提的是,进化算法不像任何其他机器学习算法(包括神经网络)那样受到维度的诅咒。这似乎有点违反直觉,因为不能保证收敛到全局最大值,并且该过程似乎发展为一个好的解决方案似乎很慢,但实际上选择过程工作得很快并且收敛到一个好的局部最大值。

这使得进化算法成为一种非常通用和通用的工具,可以天真地解决任何问题,并且是处理不可微函数、离散函数或天文高维数据集的极少数工具之一。

于 2018-04-06T03:29:42.063 回答
2

看看神经进化。(东北)

目前最好的方法是Kenneth Stanley 的NEATHyperNEAT

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

它可以学习的内容没有太多限制。但这当然需要时间。神经拓扑必须通过通常的变异和交叉以及权重更新来进化。不可能有反向传播。

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

于 2011-04-08T07:07:55.150 回答
1

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

于 2009-03-09T22:41:18.940 回答
1

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

进化算法部署随机波束搜索,这意味着您的进化算子开发候选者以通过其适应度进行测试和比较。这些运算符通常是非确定性的,您可以对其进行设计,以便它们既可以找到靠近的候选者,也可以找到参数空间中更远的候选者,以克服陷入局部最优的问题。

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

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

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

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

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

于 2009-06-05T08:09:32.040 回答
1

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

但是神经元网络对于试图最大化或最小化某些结果的建模系统也很有用,其公式很难在数学上建模。例如,神经元网络可以控制机器人的肌肉来实现跑步。在每个不同的时间范围内,模型必须根据来自各种传感器的输入来确定机器人身体的每块肌肉中应该存在多少张力。提供这样的训练数据是不可能的。EA 仅通过提供一种模型评估方式来允许训练。对于我们的示例,我们将惩罚跌倒并奖励穿过表面的行进距离(在固定的时间范围内)。EA 只会选择在这个意义上做得最好的模型。第一代很糟糕,但令人惊讶的是,在几百代之后,这些人取得了非常大的成就。”

于 2016-10-13T09:44:00.263 回答